@mrpatronz/nexusflow 1.9.0 → 2.0.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.
Files changed (182) hide show
  1. package/dist/agent/ProviderRegistry.d.ts +12 -1
  2. package/dist/agent/ProviderRegistry.d.ts.map +1 -1
  3. package/dist/agent/ProviderRegistry.js.map +1 -1
  4. package/dist/agent/ProviderRegistry.test.js +1 -0
  5. package/dist/agent/ProviderRegistry.test.js.map +1 -1
  6. package/dist/agent/adapters.d.ts +14 -0
  7. package/dist/agent/adapters.d.ts.map +1 -1
  8. package/dist/agent/adapters.js +39 -4
  9. package/dist/agent/adapters.js.map +1 -1
  10. package/dist/agent/adapters.test.d.ts +2 -0
  11. package/dist/agent/adapters.test.d.ts.map +1 -0
  12. package/dist/agent/adapters.test.js +49 -0
  13. package/dist/agent/adapters.test.js.map +1 -0
  14. package/dist/agent/cliAvailability.d.ts +48 -0
  15. package/dist/agent/cliAvailability.d.ts.map +1 -0
  16. package/dist/agent/cliAvailability.js +112 -0
  17. package/dist/agent/cliAvailability.js.map +1 -0
  18. package/dist/agent/cliAvailability.test.d.ts +2 -0
  19. package/dist/agent/cliAvailability.test.d.ts.map +1 -0
  20. package/dist/agent/cliAvailability.test.js +105 -0
  21. package/dist/agent/cliAvailability.test.js.map +1 -0
  22. package/dist/analyzers/detect-deps.d.ts.map +1 -1
  23. package/dist/analyzers/detect-deps.js +16 -19
  24. package/dist/analyzers/detect-deps.js.map +1 -1
  25. package/dist/analyzers/index.d.ts +0 -2
  26. package/dist/analyzers/index.d.ts.map +1 -1
  27. package/dist/analyzers/index.js +6 -9
  28. package/dist/analyzers/index.js.map +1 -1
  29. package/dist/commands/commands.test.js +4 -3
  30. package/dist/commands/commands.test.js.map +1 -1
  31. package/dist/commands/create.d.ts.map +1 -1
  32. package/dist/commands/create.js.map +1 -1
  33. package/dist/commands/knowledge.d.ts +10 -0
  34. package/dist/commands/knowledge.d.ts.map +1 -1
  35. package/dist/commands/knowledge.js +27 -1
  36. package/dist/commands/knowledge.js.map +1 -1
  37. package/dist/commands/knowledge.test.d.ts +2 -0
  38. package/dist/commands/knowledge.test.d.ts.map +1 -0
  39. package/dist/commands/knowledge.test.js +77 -0
  40. package/dist/commands/knowledge.test.js.map +1 -0
  41. package/dist/commands/refresh.d.ts +2 -4
  42. package/dist/commands/refresh.d.ts.map +1 -1
  43. package/dist/commands/refresh.js +4 -20
  44. package/dist/commands/refresh.js.map +1 -1
  45. package/dist/core/adapters/registry.d.ts.map +1 -1
  46. package/dist/core/adapters/registry.js +8 -3
  47. package/dist/core/adapters/registry.js.map +1 -1
  48. package/dist/core/adapters/storage.test.js +5 -24
  49. package/dist/core/adapters/storage.test.js.map +1 -1
  50. package/dist/core/analysis-cache.d.ts +15 -8
  51. package/dist/core/analysis-cache.d.ts.map +1 -1
  52. package/dist/core/analysis-cache.js +61 -10
  53. package/dist/core/analysis-cache.js.map +1 -1
  54. package/dist/core/analysis-cache.test.js +17 -4
  55. package/dist/core/analysis-cache.test.js.map +1 -1
  56. package/dist/core/config.d.ts.map +1 -1
  57. package/dist/core/config.js +5 -4
  58. package/dist/core/config.js.map +1 -1
  59. package/dist/core/doctor.d.ts.map +1 -1
  60. package/dist/core/doctor.js +9 -5
  61. package/dist/core/doctor.js.map +1 -1
  62. package/dist/core/knowledge.d.ts +14 -4
  63. package/dist/core/knowledge.d.ts.map +1 -1
  64. package/dist/core/knowledge.js +64 -14
  65. package/dist/core/knowledge.js.map +1 -1
  66. package/dist/core/knowledge.test.js +54 -2
  67. package/dist/core/knowledge.test.js.map +1 -1
  68. package/dist/core/locks.d.ts +43 -0
  69. package/dist/core/locks.d.ts.map +1 -0
  70. package/dist/core/locks.js +102 -0
  71. package/dist/core/locks.js.map +1 -0
  72. package/dist/core/locks.test.d.ts +2 -0
  73. package/dist/core/locks.test.d.ts.map +1 -0
  74. package/dist/core/locks.test.js +95 -0
  75. package/dist/core/locks.test.js.map +1 -0
  76. package/dist/core/ports/storage.d.ts +3 -3
  77. package/dist/core/ports/storage.d.ts.map +1 -1
  78. package/dist/core/refresh.d.ts +12 -13
  79. package/dist/core/refresh.d.ts.map +1 -1
  80. package/dist/core/refresh.js +14 -11
  81. package/dist/core/refresh.js.map +1 -1
  82. package/dist/core/refresh.test.js +17 -11
  83. package/dist/core/refresh.test.js.map +1 -1
  84. package/dist/core/scheduler.d.ts.map +1 -1
  85. package/dist/core/scheduler.js +2 -65
  86. package/dist/core/scheduler.js.map +1 -1
  87. package/dist/core/sync.js +3 -3
  88. package/dist/core/sync.js.map +1 -1
  89. package/dist/core/worktree.js +2 -2
  90. package/dist/core/worktree.js.map +1 -1
  91. package/dist/core/worktree.test.js +2 -2
  92. package/dist/core/worktree.test.js.map +1 -1
  93. package/dist/generators/base.d.ts +31 -2
  94. package/dist/generators/base.d.ts.map +1 -1
  95. package/dist/generators/base.js +174 -238
  96. package/dist/generators/base.js.map +1 -1
  97. package/dist/generators/base.test.js +231 -24
  98. package/dist/generators/base.test.js.map +1 -1
  99. package/dist/generators/claude.d.ts +19 -5
  100. package/dist/generators/claude.d.ts.map +1 -1
  101. package/dist/generators/claude.js +33 -11
  102. package/dist/generators/claude.js.map +1 -1
  103. package/dist/generators/index.d.ts +10 -9
  104. package/dist/generators/index.d.ts.map +1 -1
  105. package/dist/generators/index.js +103 -118
  106. package/dist/generators/index.js.map +1 -1
  107. package/dist/generators/plan-generator.d.ts.map +1 -1
  108. package/dist/generators/plan-generator.js +217 -193
  109. package/dist/generators/plan-generator.js.map +1 -1
  110. package/dist/generators/plan-generator.test.d.ts +2 -0
  111. package/dist/generators/plan-generator.test.d.ts.map +1 -0
  112. package/dist/generators/plan-generator.test.js +217 -0
  113. package/dist/generators/plan-generator.test.js.map +1 -0
  114. package/dist/gui/assets/{DashboardPage-C3NH97y2.js → DashboardPage-HNC3-OP0.js} +1 -1
  115. package/dist/gui/assets/{GettingStartedPage-og-Kv7Sm.js → GettingStartedPage-Dguoya_Z.js} +1 -1
  116. package/dist/gui/assets/{ProjectsPage-COqqadEr.js → ProjectsPage-DVR4j4sw.js} +1 -1
  117. package/dist/gui/assets/{ScaffoldRepoInline-DRipQsos.js → ScaffoldRepoInline-D-2ZeuDK.js} +1 -1
  118. package/dist/gui/assets/{SettingsPage-CpU3V9oU.js → SettingsPage-Bauo77q3.js} +1 -1
  119. package/dist/gui/assets/{StartWorkPage-DIND0hJy.js → StartWorkPage-DvuFEa5Y.js} +1 -1
  120. package/dist/gui/assets/{StrategiesPage-6LWOnKdk.js → StrategiesPage-Cizm0GWk.js} +1 -1
  121. package/dist/gui/assets/{WorkspacesPage-BUqgOhuy.js → WorkspacesPage-DYOVfZqy.js} +1 -1
  122. package/dist/gui/assets/{index-CyYbQwRf.js → index-BqeoAIB1.js} +6 -6
  123. package/dist/gui/index.html +1 -1
  124. package/dist/index.js +2 -4
  125. package/dist/index.js.map +1 -1
  126. package/dist/mcp/tools.d.ts.map +1 -1
  127. package/dist/mcp/tools.js +11 -15
  128. package/dist/mcp/tools.js.map +1 -1
  129. package/dist/resources/workflows/plan-implement-review.md +8 -0
  130. package/dist/resources/workflows/research-verify.md +6 -0
  131. package/dist/resources/workflows/solo-developer.md +3 -0
  132. package/dist/server.d.ts.map +1 -1
  133. package/dist/server.js +1 -2
  134. package/dist/server.js.map +1 -1
  135. package/dist/server.test.js +4 -2
  136. package/dist/server.test.js.map +1 -1
  137. package/dist/types.d.ts +0 -24
  138. package/dist/types.d.ts.map +1 -1
  139. package/dist/utils/prompts.js +2 -2
  140. package/dist/utils/prompts.js.map +1 -1
  141. package/dist/utils/resources.d.ts +28 -0
  142. package/dist/utils/resources.d.ts.map +1 -0
  143. package/dist/utils/resources.js +54 -0
  144. package/dist/utils/resources.js.map +1 -0
  145. package/dist/utils/workflow-advisor.d.ts.map +1 -1
  146. package/dist/utils/workflow-advisor.js +17 -27
  147. package/dist/utils/workflow-advisor.js.map +1 -1
  148. package/dist/utils/workflows.d.ts.map +1 -1
  149. package/dist/utils/workflows.js +6 -2
  150. package/dist/utils/workflows.js.map +1 -1
  151. package/package.json +5 -3
  152. package/resources/workflows/plan-implement-review.md +8 -0
  153. package/resources/workflows/research-verify.md +6 -0
  154. package/resources/workflows/solo-developer.md +3 -0
  155. package/dist/analyzers/detect-apis.d.ts +0 -19
  156. package/dist/analyzers/detect-apis.d.ts.map +0 -1
  157. package/dist/analyzers/detect-apis.js +0 -250
  158. package/dist/analyzers/detect-apis.js.map +0 -1
  159. package/dist/analyzers/messaging-analyzer.d.ts +0 -17
  160. package/dist/analyzers/messaging-analyzer.d.ts.map +0 -1
  161. package/dist/analyzers/messaging-analyzer.js +0 -229
  162. package/dist/analyzers/messaging-analyzer.js.map +0 -1
  163. package/dist/core/adapters/vault-storage.d.ts +0 -16
  164. package/dist/core/adapters/vault-storage.d.ts.map +0 -1
  165. package/dist/core/adapters/vault-storage.js +0 -77
  166. package/dist/core/adapters/vault-storage.js.map +0 -1
  167. package/dist/core/graph.d.ts +0 -35
  168. package/dist/core/graph.d.ts.map +0 -1
  169. package/dist/core/graph.js +0 -281
  170. package/dist/core/graph.js.map +0 -1
  171. package/dist/generators/diff-context.d.ts +0 -6
  172. package/dist/generators/diff-context.d.ts.map +0 -1
  173. package/dist/generators/diff-context.js +0 -70
  174. package/dist/generators/diff-context.js.map +0 -1
  175. package/dist/generators/map-generator.d.ts +0 -15
  176. package/dist/generators/map-generator.d.ts.map +0 -1
  177. package/dist/generators/map-generator.js +0 -514
  178. package/dist/generators/map-generator.js.map +0 -1
  179. package/dist/generators/map-generator.test.d.ts +0 -2
  180. package/dist/generators/map-generator.test.d.ts.map +0 -1
  181. package/dist/generators/map-generator.test.js +0 -147
  182. package/dist/generators/map-generator.test.js.map +0 -1
@@ -5,6 +5,7 @@
5
5
  */
6
6
  import chalk from 'chalk';
7
7
  import { writeWorkspaceFile } from '../core/storage.js';
8
+ import { findInterRepoDependencies } from '../analyzers/detect-deps.js';
8
9
  // ─── Dependency Graph Builder ─────────────────────────────────────────────
9
10
  /**
10
11
  * Build a dependency graph by analysing package dependencies
@@ -25,46 +26,26 @@ export function buildDependencyGraph(analysis, repos) {
25
26
  dependedOnBy: [],
26
27
  });
27
28
  }
28
- // Build a quick lookup: repo name ProjectAnalysis
29
- const analysisByName = new Map();
29
+ // ── Edges, from the one shared inference ─────────────────────────────
30
+ // This used to re-implement the package matching that
31
+ // `findInterRepoDependencies` already does, and the two drifted: the other
32
+ // copy grew a substring fallback, so `AGENTS.md` claimed "Start with `core`"
33
+ // for a workspace whose `nexusflow-plan.md` said no dependencies were
34
+ // detected at all. Two generated files contradicting each other is worse than
35
+ // either being wrong alone, because an assistant has no way to pick. One
36
+ // function now answers the question for both.
37
+ const inScope = new Map();
38
+ const repoNames = new Map();
30
39
  for (const repo of repos) {
31
40
  const a = analysis.get(repo.path);
32
- if (a)
33
- analysisByName.set(repo.name, a);
34
- }
35
- // ── 1. Produced/consumed package dependencies ──────────────────────────
36
- // Map each produced package name to the repo name that produces it
37
- const packageToRepo = new Map();
38
- for (const repo of repos) {
39
- const a = analysisByName.get(repo.name);
40
- if (!a)
41
- continue;
42
- // Map the repo name itself as a produced product (for direct matching)
43
- packageToRepo.set(repo.name.toLowerCase(), repo.name);
44
- if (a.produces) {
45
- for (const product of a.produces) {
46
- packageToRepo.set(product.name.toLowerCase(), repo.name);
47
- // Map basename (e.g. Hogia.EmploymentService.Client -> Client)
48
- const base = product.name.split('.').pop() ?? product.name;
49
- if (base && base.length > 3) {
50
- packageToRepo.set(base.toLowerCase(), repo.name);
51
- }
52
- }
41
+ if (a) {
42
+ inScope.set(repo.path, a);
43
+ repoNames.set(repo.path, repo.name);
53
44
  }
54
45
  }
55
- for (const repo of repos) {
56
- const a = analysisByName.get(repo.name);
57
- if (!a)
58
- continue;
59
- for (const dep of a.dependencies) {
60
- const depNameLower = dep.name.toLowerCase();
61
- // Direct match with a produced package
62
- if (packageToRepo.has(depNameLower)) {
63
- const targetRepo = packageToRepo.get(depNameLower);
64
- if (targetRepo !== repo.name) {
65
- addEdge(graph, repo.name, targetRepo);
66
- }
67
- }
46
+ for (const [consumer, providers] of findInterRepoDependencies(inScope, repoNames)) {
47
+ for (const provider of providers) {
48
+ addEdge(graph, consumer, provider);
68
49
  }
69
50
  }
70
51
  return graph;
@@ -157,182 +138,184 @@ export async function generateImplementationPlan(ctx, workspacePath) {
157
138
  // ── Build graph & sort ──────────────────────────────────────────────
158
139
  const graph = buildDependencyGraph(analysis, repos);
159
140
  const phases = topologicalSort(graph);
160
- // ── Render markdown ─────────────────────────────────────────────────
141
+ // ── What this plan can actually say ─────────────────────────────────
142
+ // Everything below describes cross-repo structure. With no dependency edges
143
+ // and no shared packages there is nothing to order, and this file used to
144
+ // say so five separate ways: a single-node diagram, a phase whose rationale
145
+ // claimed "other repos depend on them" when none did, an all-dashes table,
146
+ // a contracts table of packages nobody consumed, and a local-package loop
147
+ // for packages with no consumers. One honest sentence replaces all of it.
148
+ const hasEdges = [...graph.values()].some((n) => n.dependsOn.length > 0);
149
+ // Restricted to the repos the graph was built from. Derived from the whole
150
+ // analysis map, a stray entry could produce contracts with no matching edge,
151
+ // so the file promised a phase order it then never printed.
152
+ const contracts = findPackageRelations(analysis, repos).filter((rel) => rel.consumers.length > 0);
153
+ /** Repos in this phase that depend on another repo in the same phase. */
154
+ const cycleMembers = (phase) => {
155
+ const inPhase = new Set(phase);
156
+ return phase.filter((name) => (graph.get(name)?.dependsOn ?? []).some((dep) => inPhase.has(dep)));
157
+ };
161
158
  const md = [];
162
159
  md.push(`# Implementation Plan — ${feature.id}`);
163
160
  md.push('');
164
161
  md.push(`> **Generated At**: ${new Date().toISOString()} (UTC)`);
165
162
  md.push(`> **Regeneration Command**: Run \`nexusflow refresh\` to update this plan.`);
166
163
  md.push('');
164
+ if (!hasEdges && contracts.length === 0) {
165
+ // Worded per repo count: "between the single repo" and "from one of these
166
+ // repos to another" both read as nonsense for a one-repo workspace.
167
+ md.push(repos.length === 1
168
+ ? 'This workspace has one repo, so there is no cross-repo build order to describe.'
169
+ : `No package dependencies were detected between the ${repos.length} repos in this workspace, so no build order is forced — work in whichever order suits the task.`);
170
+ md.push('');
171
+ md.push(repos.length === 1
172
+ ? 'Add another repo with `nexusflow add-repo`, then run `nexusflow refresh`, and this plan will describe any order between them.'
173
+ : 'If you add a dependency from one of these repos to another, run `nexusflow refresh` and this plan will describe the resulting order.');
174
+ md.push('');
175
+ await writeWorkspaceFile(workspacePath, feature.id, 'nexusflow-plan.md', md.join('\n'));
176
+ console.log(chalk.green(' ✔'), 'Generated nexusflow-plan.md');
177
+ return;
178
+ }
167
179
  md.push('> Auto-generated by NexusFlow based on dependency analysis between repos.');
168
- md.push('> Follow the phase order to avoid blocking yourself on cross-repo dependencies.');
169
- md.push('');
170
- // ── Mermaid diagram ─────────────────────────────────────────────────
171
- md.push('## Dependency Diagram');
172
- md.push('');
173
- md.push('```mermaid');
174
- md.push('graph TD');
175
- const alias = buildAliasMap(graph);
176
- for (const [name, node] of graph) {
177
- if (node.dependsOn.length === 0 && node.dependedOnBy.length === 0) {
178
- // Isolated node — still show it
179
- md.push(` ${alias.get(name)}["${name}"]`);
180
- }
181
- for (const dep of node.dependsOn) {
182
- // Arrow: dependency → dependent (dep is built first)
183
- md.push(` ${alias.get(dep)}["${dep}"] --> ${alias.get(name)}["${name}"]`);
184
- }
180
+ if (hasEdges) {
181
+ // Promised only when the phases below actually exist. Gating this on having
182
+ // got past the early return instead meant a workspace with a shared package
183
+ // but no resolvable edge — two repos both claiming to publish it, so the
184
+ // only match is a repo on itself and no edge is added — was told to follow
185
+ // an order the file never printed.
186
+ md.push('> Follow the phase order to avoid blocking yourself on cross-repo dependencies.');
187
+ }
188
+ else {
189
+ md.push('> No build order could be resolved, so the packages below are listed without one.');
185
190
  }
186
- md.push('```');
187
- md.push('');
188
- md.push('> ⚠️ This diagram is derived from detected package dependencies (`package.json`, `.csproj`, etc.) only.');
189
- md.push('> If you changed a package, the producing repo must release/build before consumer repos can merge.');
190
- md.push('');
191
- // ── Phase descriptions ──────────────────────────────────────────────
192
- md.push('## Suggested Implementation Order');
193
191
  md.push('');
194
- for (let i = 0; i < phases.length; i++) {
195
- const phase = phases[i];
196
- const ordinal = ordinalWord(i + 1);
197
- md.push(`### Phase ${i + 1}`);
198
- md.push('');
199
- md.push(`**Repos:** ${phase.join(', ')}`);
192
+ if (hasEdges) {
193
+ // ── Mermaid diagram ───────────────────────────────────────────────
194
+ md.push('## Dependency Diagram');
200
195
  md.push('');
201
- if (i === 0) {
202
- md.push(`**Why first:** These repos have no dependencies on other workspace repos. Other repos depend on them.`);
203
- }
204
- else if (i === phases.length - 1) {
205
- md.push(`**Why ${ordinal}:** Depends on APIs and types from earlier phases.`);
206
- }
207
- else {
208
- const prevPhases = phases
209
- .slice(0, i)
210
- .flat()
211
- .join(', ');
212
- md.push(`**Why ${ordinal}:** Depends on Phase ${i === 1 ? '1' : `1–${i}`} repos (${prevPhases}). Build these before the consumers.`);
196
+ md.push('```mermaid');
197
+ md.push('graph TD');
198
+ const alias = buildAliasMap(graph);
199
+ for (const [name, node] of graph) {
200
+ if (node.dependsOn.length === 0 && node.dependedOnBy.length === 0) {
201
+ // Isolated node — still show it
202
+ md.push(` ${alias.get(name)}["${name}"]`);
203
+ }
204
+ for (const dep of node.dependsOn) {
205
+ // Arrow: dependency → dependent (dep is built first)
206
+ md.push(` ${alias.get(dep)}["${dep}"] --> ${alias.get(name)}["${name}"]`);
207
+ }
213
208
  }
209
+ md.push('```');
214
210
  md.push('');
215
- }
216
- // ── Dependency table ────────────────────────────────────────────────
217
- md.push('## Dependency Table');
218
- md.push('');
219
- md.push('| Repo | Depends On | Depended On By |');
220
- md.push('|:---|:---|:---|');
221
- // Sort repos by phase order for a natural reading experience
222
- const orderedNames = phases.flat();
223
- for (const name of orderedNames) {
224
- const node = graph.get(name);
225
- const deps = node.dependsOn.length > 0 ? node.dependsOn.join(', ') : '—';
226
- const rdeps = node.dependedOnBy.length > 0 ? node.dependedOnBy.join(', ') : '—';
227
- md.push(`| ${name} | ${deps} | ${rdeps} |`);
228
- }
229
- md.push('');
230
- // ── Contracts & Clients Table ───────────────────────────────────────
231
- md.push('## 📦 Contracts & Clients');
232
- md.push('');
233
- md.push('| Package | Contributing Projects | Producing Repo | Consuming Repos (Version) | Feed Source | Type |');
234
- md.push('|:---|:---|:---|:---|:---|:---|');
235
- const packageRelations = [];
236
- // Find all produced packages
237
- for (const [repoPath, a] of analysis) {
238
- if (a.produces) {
239
- for (const product of a.produces) {
240
- // Find consumers
241
- const consumers = [];
242
- for (const [otherPath, otherA] of analysis) {
243
- if (otherPath === repoPath)
244
- continue;
245
- for (const dep of otherA.dependencies) {
246
- if (dep.name.toLowerCase() === product.name.toLowerCase()) {
247
- consumers.push({ repoName: otherA.name, version: dep.version });
248
- }
249
- }
250
- }
251
- packageRelations.push({
252
- pkgName: product.name,
253
- contributing: product.contributing,
254
- producer: a.name,
255
- consumers,
256
- type: product.type,
257
- feeds: a.nugetFeeds,
258
- });
211
+ md.push('> ⚠️ This diagram is derived from detected package dependencies (`package.json`, `.csproj`, etc.) only.');
212
+ md.push('> If you changed a package, the producing repo must release/build before consumer repos can merge.');
213
+ md.push('');
214
+ // ── Phase descriptions ────────────────────────────────────────────
215
+ md.push('## Suggested Implementation Order');
216
+ md.push('');
217
+ for (let i = 0; i < phases.length; i++) {
218
+ const phase = phases[i];
219
+ const ordinal = ordinalWord(i + 1);
220
+ md.push(`### Phase ${i + 1}`);
221
+ md.push('');
222
+ md.push(`**Repos:** ${phase.join(', ')}`);
223
+ md.push('');
224
+ // A phase containing repos that depend on each other came from the cycle
225
+ // fallback in topologicalSort, not from a resolved ordering. Saying so
226
+ // beats the positional rationale, which asserted "no dependencies on
227
+ // other workspace repos" about repos that plainly had them.
228
+ const cyclic = cycleMembers(phase);
229
+ if (cyclic.length > 0) {
230
+ md.push(`**Cycle:** ${cyclic.join(', ')} depend on each other, so no build order resolves this phase — break the cycle before relying on this plan.`);
231
+ }
232
+ else if (i === 0) {
233
+ // Only claim downstream consumers for the repos that actually have
234
+ // them. The old wording asserted it for every phase-1 repo.
235
+ const consumed = phase.filter((name) => (graph.get(name)?.dependedOnBy.length ?? 0) > 0);
236
+ md.push(consumed.length > 0
237
+ ? `**Why first:** No dependencies on other workspace repos, and ${consumed.join(', ')} ${consumed.length === 1 ? 'is' : 'are'} depended on by a later phase.`
238
+ : '**Why first:** No dependencies on other workspace repos.');
239
+ }
240
+ else if (i === phases.length - 1) {
241
+ md.push(`**Why ${ordinal}:** Depends on APIs and types from earlier phases.`);
259
242
  }
243
+ else {
244
+ const prevPhases = phases
245
+ .slice(0, i)
246
+ .flat()
247
+ .join(', ');
248
+ md.push(`**Why ${ordinal}:** Depends on Phase ${i === 1 ? '1' : `1–${i}`} repos (${prevPhases}). Build these before the consumers.`);
249
+ }
250
+ md.push('');
260
251
  }
261
- }
262
- if (packageRelations.length > 0) {
263
- for (const rel of packageRelations) {
264
- const contribStr = rel.contributing && rel.contributing.length > 0
265
- ? rel.contributing.map(c => `\`${c}\``).join(', ')
266
- : '—';
267
- const consumerStr = rel.consumers.length > 0
268
- ? rel.consumers.map(c => `\`${c.repoName}\` (${c.version || 'pinned'})`).join(', ')
269
- : '_None_';
270
- const feedStr = rel.feeds && rel.feeds.length > 0
271
- ? rel.feeds.map(f => `\`${f.name}\` (${f.url})`).join('<br>')
272
- : '—';
273
- md.push(`| \`${rel.pkgName}\` | ${contribStr} | \`${rel.producer}\` | ${consumerStr} | ${feedStr} | \`${rel.type}\` |`);
252
+ // ── Dependency table ──────────────────────────────────────────────
253
+ md.push('## Dependency Table');
254
+ md.push('');
255
+ md.push('| Repo | Depends On | Depended On By |');
256
+ md.push('|:---|:---|:---|');
257
+ // Sort repos by phase order for a natural reading experience
258
+ for (const name of phases.flat()) {
259
+ const node = graph.get(name);
260
+ const deps = node.dependsOn.length > 0 ? node.dependsOn.join(', ') : '';
261
+ const rdeps = node.dependedOnBy.length > 0 ? node.dependedOnBy.join(', ') : '—';
262
+ md.push(`| ${name} | ${deps} | ${rdeps} |`);
274
263
  }
264
+ md.push('');
275
265
  }
276
- else {
277
- md.push('| _No package relations detected_ | | | | | |');
278
- }
279
- md.push('');
280
- // ── Cross-Repo Messaging Roll-up ────────────────────────────────────
281
- md.push('## 📨 Cross-Repo Messaging');
282
- md.push('');
283
- md.push('| Publisher Repo | Message | → Subscriber Repo | Handler |');
284
- md.push('|---|---|---|---|');
285
- const crossRepoMessages = [];
286
- for (const [pubPath, pubA] of analysis) {
287
- if (!pubA.messaging || !pubA.messaging.publishers)
288
- continue;
289
- for (const pub of pubA.messaging.publishers) {
290
- // Find subscribers in other repos matching this contract type
291
- for (const [subPath, subA] of analysis) {
292
- if (subPath === pubPath)
293
- continue;
294
- if (!subA.messaging || !subA.messaging.subscribers)
295
- continue;
296
- for (const sub of subA.messaging.subscribers) {
297
- const pubContract = pub.contractType.toLowerCase().trim();
298
- const subContract = sub.contractType.toLowerCase().trim();
299
- if (pubContract === subContract && pubContract !== 'goservicebusmessage' && pubContract !== 'servicebusmessage') {
300
- crossRepoMessages.push({
301
- pubRepo: pubA.name,
302
- message: pub.contractType,
303
- subRepo: subA.name,
304
- handler: sub.handlerFile,
305
- });
306
- }
307
- }
266
+ // ── Contracts & Clients ─────────────────────────────────────────────
267
+ // Only packages a sibling repo actually consumes. A published package with
268
+ // no workspace consumer is not a cross-repo contract, and rendering it with
269
+ // "_None_" in the consumers column was the largest block of the old file.
270
+ if (contracts.length > 0) {
271
+ const anyContributing = contracts.some((c) => (c.contributing?.length ?? 0) > 0);
272
+ md.push('## 📦 Contracts & Clients');
273
+ md.push('');
274
+ md.push(anyContributing
275
+ ? '| Package | Contributing Projects | Producing Repo | Consuming Repos (Version) | Feed Source | Type |'
276
+ : '| Package | Producing Repo | Consuming Repos (Version) | Feed Source | Type |');
277
+ md.push(anyContributing ? '|:---|:---|:---|:---|:---|:---|' : '|:---|:---|:---|:---|:---|');
278
+ for (const rel of contracts) {
279
+ const cells = [`\`${rel.pkgName}\``];
280
+ if (anyContributing) {
281
+ cells.push(rel.contributing && rel.contributing.length > 0
282
+ ? rel.contributing.map((c) => `\`${c}\``).join(', ')
283
+ : '—');
308
284
  }
285
+ cells.push(`\`${rel.producer}\``);
286
+ cells.push(rel.consumers.map((c) => `\`${c.repoName}\` (${c.version || 'pinned'})`).join(', '));
287
+ cells.push(rel.feeds && rel.feeds.length > 0
288
+ ? rel.feeds.map((f) => `\`${f.name}\` (${f.url})`).join('<br>')
289
+ : '—');
290
+ cells.push(`\`${rel.type}\``);
291
+ md.push(`| ${cells.join(' | ')} |`);
309
292
  }
310
- }
311
- if (crossRepoMessages.length > 0) {
312
- for (const m of crossRepoMessages) {
313
- md.push(`| \`${m.pubRepo}\` | \`${m.message}\` | \`${m.subRepo}\` | \`${m.handler}\` |`);
293
+ md.push('');
294
+ // ── Local Package Development Loop ────────────────────────────────
295
+ // Gated on a shared package existing at all, and on the ecosystems those
296
+ // packages actually use. It used to emit both branches whenever the
297
+ // workspace merely contained the language, so a TypeScript-only workspace
298
+ // carried four .NET/NuGet steps — 47% of the plan, none of it applicable.
299
+ const types = new Set(contracts.map((c) => c.type));
300
+ md.push('## 💡 Local Package Development Loop');
301
+ md.push('');
302
+ md.push('When changing a shared package, verify its consumers against a local build before pushing:');
303
+ md.push('');
304
+ if (types.has('nuget')) {
305
+ md.push('### .NET / NuGet');
306
+ md.push('1. `dotnet pack -c Release -o ./local-packages` in the producing project.');
307
+ md.push('2. Point a local feed in the consumer\'s `NuGet.config` at `./local-packages`.');
308
+ md.push('3. Reference a local version (e.g. `3.41.0-local`) in the consuming `.csproj`.');
309
+ md.push('4. **Revert the version reference to the official release before merging.**');
310
+ md.push('');
311
+ }
312
+ if (types.has('npm')) {
313
+ md.push('### Node.js / npm');
314
+ md.push('1. `npm link` in the producing package, then `npm link <package-name>` in the consumer.');
315
+ md.push('2. **Unlink and reinstall the published version before committing.**');
316
+ md.push('');
314
317
  }
315
318
  }
316
- else {
317
- md.push('| _No cross-repo messaging detected_ | | | |');
318
- }
319
- md.push('');
320
- // ── Local Package Development Loop Tip ──────────────────────────────
321
- md.push('## 💡 Local Package Development Loop');
322
- md.push('');
323
- md.push('When making changes to a shared contract or client library package, follow this standard local feed loop to test and verify consumers before pushing:');
324
- md.push('');
325
- md.push('### For .NET / NuGet packages:');
326
- md.push('1. **Pack locally**: Run `dotnet pack -c Release -o ./local-packages` inside the producing project folder.');
327
- md.push('2. **Add local feed**: Configure a local feed in your consumer project\'s `NuGet.config` pointing to the `./local-packages` directory.');
328
- md.push('3. **Reference local version**: Reference the package with a local development version (e.g. `3.41.0-local`) in the consuming `.csproj`.');
329
- md.push('4. **Revert before merging**: Verify changes compile and tests pass, then **revert** the consuming project\'s package version reference to the official release before merging to master.');
330
- md.push('');
331
- md.push('### For Node.js / npm packages:');
332
- md.push('1. **Link locally**: Run `npm link` inside the producing package folder.');
333
- md.push('2. **Use link**: Run `npm link <package-name>` inside the consuming folder to link it.');
334
- md.push('3. **Revert before merging**: Uninstall the linked package and install the official package version before committing.');
335
- md.push('');
336
319
  // ── Write file ──────────────────────────────────────────────────────
337
320
  await writeWorkspaceFile(workspacePath, feature.id, 'nexusflow-plan.md', md.join('\n'));
338
321
  console.log(chalk.green(' ✔'), 'Generated nexusflow-plan.md');
@@ -342,7 +325,48 @@ export async function generateImplementationPlan(ctx, workspacePath) {
342
325
  console.error(chalk.red(' ✖'), `Failed to generate implementation plan: ${message}`);
343
326
  }
344
327
  }
345
- // ─── Helpers ──────────────────────────────────────────────────────────────
328
+ /**
329
+ * Pairs every produced package with the workspace repos that depend on it.
330
+ *
331
+ * Restricted to `repos` so this agrees with {@link buildDependencyGraph}, which
332
+ * also walks only those: derived from the whole analysis map, the two could
333
+ * disagree and the plan would claim a phase order it never printed.
334
+ *
335
+ * Consumers may be empty — the caller decides whether a package with no
336
+ * workspace consumer is worth reporting.
337
+ */
338
+ function findPackageRelations(analysis, repos) {
339
+ const inScope = [];
340
+ for (const repo of repos) {
341
+ const a = analysis.get(repo.path);
342
+ if (a)
343
+ inScope.push([repo.path, a]);
344
+ }
345
+ const relations = [];
346
+ for (const [repoPath, a] of inScope) {
347
+ for (const product of a.produces ?? []) {
348
+ const consumers = [];
349
+ for (const [otherPath, otherA] of inScope) {
350
+ if (otherPath === repoPath)
351
+ continue;
352
+ for (const dep of otherA.dependencies ?? []) {
353
+ if (dep.name.toLowerCase() === product.name.toLowerCase()) {
354
+ consumers.push({ repoName: otherA.name, version: dep.version });
355
+ }
356
+ }
357
+ }
358
+ relations.push({
359
+ pkgName: product.name,
360
+ contributing: product.contributing,
361
+ producer: a.name,
362
+ consumers,
363
+ type: product.type,
364
+ feeds: a.nugetFeeds,
365
+ });
366
+ }
367
+ }
368
+ return relations;
369
+ }
346
370
  /**
347
371
  * Add a directed edge: `from` depends on `to`.
348
372
  * Idempotent — duplicate edges are ignored.
@@ -1 +1 @@
1
- {"version":3,"file":"plan-generator.js","sourceRoot":"","sources":["../../src/generators/plan-generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plan-generator.js","sourceRoot":"","sources":["../../src/generators/plan-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=plan-generator.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan-generator.test.d.ts","sourceRoot":"","sources":["../../src/generators/plan-generator.test.ts"],"names":[],"mappings":""}