maestro-flow 0.4.20 → 0.4.22

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 (151) hide show
  1. package/.agents/skills/maestro-ralph-execute/SKILL.md +2 -1
  2. package/.agents/skills/maestro-swarm-workflow/SKILL.md +27 -19
  3. package/.agents/skills/maestro-universal-workflow/SKILL.md +563 -0
  4. package/.agents/skills/team-adversarial-swarm/SKILL.md +235 -0
  5. package/.agents/skills/team-adversarial-swarm/scripts/__pycache__/pheromone.cpython-313.pyc +0 -0
  6. package/.agents/skills/team-adversarial-swarm/scripts/__pycache__/scoring.cpython-313.pyc +0 -0
  7. package/.agents/skills/team-adversarial-swarm/scripts/aco.py +473 -0
  8. package/.agents/skills/team-adversarial-swarm/scripts/pheromone.py +144 -0
  9. package/.agents/skills/team-adversarial-swarm/scripts/scoring.py +92 -0
  10. package/.agents/skills/team-adversarial-swarm/scripts/test_aco.py +475 -0
  11. package/.agents/skills/team-adversarial-swarm/specs/ant-output-schema.md +115 -0
  12. package/.agents/skills/team-adversarial-swarm/specs/convergence-criteria.md +75 -0
  13. package/.agents/skills/team-adversarial-swarm/specs/pheromone-schema.md +90 -0
  14. package/.agents/skills/team-adversarial-swarm/specs/swarm-config-template.json +66 -0
  15. package/.agents/skills/team-adversarial-swarm/specs/swarm-protocol.md +105 -0
  16. package/.agents/skills/team-adversarial-swarm/workflows/wf-swarm-converge.js +197 -0
  17. package/.agents/skills/team-adversarial-swarm/workflows/wf-swarm-explore.js +194 -0
  18. package/.agents/skills/team-adversarial-swarm/workflows/wf-swarm-score.js +188 -0
  19. package/.agents/skills/team-adversarial-swarm/workflows/wf-swarm-synthesize.js +248 -0
  20. package/.agents/skills/team-swarm/scripts/aco.py +15 -15
  21. package/.agents/skills/team-swarm/scripts/pheromone.py +2 -2
  22. package/.agents/skills/team-swarm/scripts/scoring.py +1 -1
  23. package/.agy/skills/maestro-ralph-execute/SKILL.md +2 -1
  24. package/.agy/skills/maestro-swarm-workflow/SKILL.md +27 -19
  25. package/.agy/skills/maestro-universal-workflow/SKILL.md +560 -0
  26. package/.agy/skills/team-adversarial-swarm/SKILL.md +244 -0
  27. package/.agy/skills/team-adversarial-swarm/scripts/__pycache__/pheromone.cpython-313.pyc +0 -0
  28. package/.agy/skills/team-adversarial-swarm/scripts/__pycache__/scoring.cpython-313.pyc +0 -0
  29. package/.agy/skills/team-adversarial-swarm/scripts/aco.py +473 -0
  30. package/.agy/skills/team-adversarial-swarm/scripts/pheromone.py +144 -0
  31. package/.agy/skills/team-adversarial-swarm/scripts/scoring.py +92 -0
  32. package/.agy/skills/team-adversarial-swarm/scripts/test_aco.py +475 -0
  33. package/.agy/skills/team-adversarial-swarm/specs/ant-output-schema.md +115 -0
  34. package/.agy/skills/team-adversarial-swarm/specs/convergence-criteria.md +75 -0
  35. package/.agy/skills/team-adversarial-swarm/specs/pheromone-schema.md +90 -0
  36. package/.agy/skills/team-adversarial-swarm/specs/swarm-config-template.json +66 -0
  37. package/.agy/skills/team-adversarial-swarm/specs/swarm-protocol.md +105 -0
  38. package/.agy/skills/team-adversarial-swarm/workflows/wf-swarm-converge.js +197 -0
  39. package/.agy/skills/team-adversarial-swarm/workflows/wf-swarm-explore.js +194 -0
  40. package/.agy/skills/team-adversarial-swarm/workflows/wf-swarm-score.js +188 -0
  41. package/.agy/skills/team-adversarial-swarm/workflows/wf-swarm-synthesize.js +248 -0
  42. package/.agy/skills/team-swarm/scripts/aco.py +15 -15
  43. package/.agy/skills/team-swarm/scripts/pheromone.py +2 -2
  44. package/.agy/skills/team-swarm/scripts/scoring.py +1 -1
  45. package/.claude/commands/maestro-ralph-execute.md +2 -1
  46. package/.claude/commands/maestro-swarm-workflow.md +27 -19
  47. package/.claude/commands/maestro-universal-workflow.md +561 -0
  48. package/.claude/skills/team-adversarial-swarm/SKILL.md +233 -0
  49. package/.claude/skills/team-adversarial-swarm/scripts/__pycache__/pheromone.cpython-313.pyc +0 -0
  50. package/.claude/skills/team-adversarial-swarm/scripts/__pycache__/scoring.cpython-313.pyc +0 -0
  51. package/.claude/skills/team-adversarial-swarm/scripts/aco.py +473 -0
  52. package/.claude/skills/team-adversarial-swarm/scripts/pheromone.py +144 -0
  53. package/.claude/skills/team-adversarial-swarm/scripts/scoring.py +92 -0
  54. package/.claude/skills/team-adversarial-swarm/scripts/test_aco.py +475 -0
  55. package/.claude/skills/team-adversarial-swarm/specs/ant-output-schema.md +115 -0
  56. package/.claude/skills/team-adversarial-swarm/specs/convergence-criteria.md +75 -0
  57. package/.claude/skills/team-adversarial-swarm/specs/pheromone-schema.md +90 -0
  58. package/.claude/skills/team-adversarial-swarm/specs/swarm-config-template.json +66 -0
  59. package/.claude/skills/team-adversarial-swarm/specs/swarm-protocol.md +105 -0
  60. package/.claude/skills/team-adversarial-swarm/workflows/wf-swarm-converge.js +197 -0
  61. package/.claude/skills/team-adversarial-swarm/workflows/wf-swarm-explore.js +194 -0
  62. package/.claude/skills/team-adversarial-swarm/workflows/wf-swarm-score.js +188 -0
  63. package/.claude/skills/team-adversarial-swarm/workflows/wf-swarm-synthesize.js +248 -0
  64. package/.claude/skills/team-swarm/scripts/aco.py +15 -15
  65. package/.claude/skills/team-swarm/scripts/pheromone.py +2 -2
  66. package/.claude/skills/team-swarm/scripts/scoring.py +1 -1
  67. package/dashboard/dist-server/dashboard/src/server/wiki/graph-analysis.js +1 -1
  68. package/dashboard/dist-server/dashboard/src/server/wiki/graph-analysis.js.map +1 -1
  69. package/dashboard/dist-server/dashboard/src/server/wiki/search.js +1 -1
  70. package/dashboard/dist-server/dashboard/src/server/wiki/search.js.map +1 -1
  71. package/dashboard/dist-server/dashboard/src/server/wiki/virtual-wiki-adapters.d.ts +1 -1
  72. package/dashboard/dist-server/dashboard/src/server/wiki/virtual-wiki-adapters.js +5 -5
  73. package/dashboard/dist-server/dashboard/src/server/wiki/virtual-wiki-adapters.js.map +1 -1
  74. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js +3 -3
  75. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js.map +1 -1
  76. package/dashboard/dist-server/src/graph/types.d.ts +111 -0
  77. package/dashboard/dist-server/src/graph/types.js +2 -0
  78. package/dashboard/dist-server/src/graph/types.js.map +1 -0
  79. package/dist/src/commands/install-backend.d.ts +0 -7
  80. package/dist/src/commands/install-backend.d.ts.map +1 -1
  81. package/dist/src/commands/install-backend.js +0 -14
  82. package/dist/src/commands/install-backend.js.map +1 -1
  83. package/dist/src/commands/install.d.ts.map +1 -1
  84. package/dist/src/commands/install.js +0 -18
  85. package/dist/src/commands/install.js.map +1 -1
  86. package/dist/src/commands/kg.d.ts +2 -2
  87. package/dist/src/commands/kg.d.ts.map +1 -1
  88. package/dist/src/commands/kg.js +150 -179
  89. package/dist/src/commands/kg.js.map +1 -1
  90. package/dist/src/graph/analyzers/fs-analyzer.d.ts +10 -0
  91. package/dist/src/graph/analyzers/fs-analyzer.d.ts.map +1 -0
  92. package/dist/src/graph/analyzers/fs-analyzer.js +959 -0
  93. package/dist/src/graph/analyzers/fs-analyzer.js.map +1 -0
  94. package/dist/src/graph/index.d.ts +6 -0
  95. package/dist/src/graph/index.d.ts.map +1 -0
  96. package/dist/src/graph/index.js +6 -0
  97. package/dist/src/graph/index.js.map +1 -0
  98. package/dist/src/graph/loader.d.ts +3 -0
  99. package/dist/src/graph/loader.d.ts.map +1 -0
  100. package/dist/src/graph/loader.js +12 -0
  101. package/dist/src/graph/loader.js.map +1 -0
  102. package/dist/src/graph/merger.d.ts +56 -0
  103. package/dist/src/graph/merger.d.ts.map +1 -0
  104. package/dist/src/graph/merger.js +896 -0
  105. package/dist/src/graph/merger.js.map +1 -0
  106. package/dist/src/graph/query.d.ts +7 -0
  107. package/dist/src/graph/query.d.ts.map +1 -0
  108. package/dist/src/graph/query.js +126 -0
  109. package/dist/src/graph/query.js.map +1 -0
  110. package/dist/src/graph/types.d.ts +112 -0
  111. package/dist/src/graph/types.d.ts.map +1 -0
  112. package/dist/src/graph/types.js +2 -0
  113. package/dist/src/graph/types.js.map +1 -0
  114. package/dist/src/i18n/locales/en.d.ts.map +1 -1
  115. package/dist/src/i18n/locales/en.js +0 -10
  116. package/dist/src/i18n/locales/en.js.map +1 -1
  117. package/dist/src/i18n/locales/zh.d.ts.map +1 -1
  118. package/dist/src/i18n/locales/zh.js +0 -10
  119. package/dist/src/i18n/locales/zh.js.map +1 -1
  120. package/dist/src/i18n/types.d.ts +0 -9
  121. package/dist/src/i18n/types.d.ts.map +1 -1
  122. package/dist/src/tui/install-ui/InstallConfirm.d.ts +0 -1
  123. package/dist/src/tui/install-ui/InstallConfirm.d.ts.map +1 -1
  124. package/dist/src/tui/install-ui/InstallConfirm.js +1 -1
  125. package/dist/src/tui/install-ui/InstallConfirm.js.map +1 -1
  126. package/dist/src/tui/install-ui/InstallExecution.d.ts +0 -1
  127. package/dist/src/tui/install-ui/InstallExecution.d.ts.map +1 -1
  128. package/dist/src/tui/install-ui/InstallExecution.js +0 -22
  129. package/dist/src/tui/install-ui/InstallExecution.js.map +1 -1
  130. package/dist/src/tui/install-ui/InstallFlow.d.ts +1 -1
  131. package/dist/src/tui/install-ui/InstallFlow.d.ts.map +1 -1
  132. package/dist/src/tui/install-ui/InstallFlow.js +5 -23
  133. package/dist/src/tui/install-ui/InstallFlow.js.map +1 -1
  134. package/dist/src/tui/install-ui/InstallHub.d.ts +0 -2
  135. package/dist/src/tui/install-ui/InstallHub.d.ts.map +1 -1
  136. package/dist/src/tui/install-ui/InstallHub.js +0 -6
  137. package/dist/src/tui/install-ui/InstallHub.js.map +1 -1
  138. package/dist/src/tui/install-ui/InstallResult.d.ts.map +1 -1
  139. package/dist/src/tui/install-ui/InstallResult.js +1 -1
  140. package/dist/src/tui/install-ui/InstallResult.js.map +1 -1
  141. package/dist/src/utils/update-notices.js +12 -0
  142. package/dist/src/utils/update-notices.js.map +1 -1
  143. package/package.json +1 -1
  144. package/workflows/swarm/wf-analyze.js +195 -34
  145. package/workflows/swarm/wf-brainstorm.js +225 -53
  146. package/workflows/swarm/wf-execute.js +199 -23
  147. package/workflows/swarm/wf-grill.js +181 -20
  148. package/workflows/swarm/wf-milestone-audit.js +178 -29
  149. package/workflows/swarm/wf-plan.js +288 -53
  150. package/workflows/swarm/wf-review.js +195 -80
  151. package/workflows/swarm/wf-verify.js +125 -28
@@ -1,48 +1,28 @@
1
1
  /**
2
2
  * Knowledge Graph Command — CLI for querying codebase knowledge graphs.
3
3
  *
4
- * Subcommands: stats, query, explain, path, diff
4
+ * Subcommands: stats, query, explain, path, diff, diff-wiki
5
5
  *
6
6
  * Operates on `.workflow/codebase/knowledge-graph.json` generated by
7
- * Understand-Anything or compatible analyzers.
7
+ * compatible code analyzers.
8
8
  */
9
- import { readFileSync, existsSync } from 'node:fs';
9
+ import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'node:fs';
10
10
  import { resolve } from 'node:path';
11
11
  import { execSync } from 'node:child_process';
12
+ import { loadGraph } from '../graph/loader.js';
13
+ import { searchNodes, findPath, diffChanges, countBy, truncate } from '../graph/query.js';
14
+ import { FsAnalyzer } from '../graph/analyzers/fs-analyzer.js';
12
15
  import { WikiIndexer } from '#maestro-dashboard/wiki/wiki-indexer.js';
13
- // ── Helpers ────────────────────────────────────────────────────────────
14
- const KG_PATH = '.workflow/codebase/knowledge-graph.json';
15
- function loadGraph() {
16
- const fullPath = resolve(KG_PATH);
17
- if (!existsSync(fullPath)) {
18
- console.error(`Knowledge graph not found: ${fullPath}`);
19
- console.error(' Hint: generate one with Understand-Anything or a compatible analyzer');
20
- process.exit(1);
21
- }
16
+ function loadGraphOrExit() {
22
17
  try {
23
- const raw = readFileSync(fullPath, 'utf-8');
24
- return JSON.parse(raw);
18
+ return loadGraph();
25
19
  }
26
20
  catch (err) {
27
- console.error(`Failed to parse knowledge graph: ${err.message}`);
21
+ console.error(err.message);
22
+ console.error(' Hint: generate one with a compatible code analyzer');
28
23
  process.exit(1);
29
24
  }
30
25
  }
31
- function truncate(text, maxLen) {
32
- if (!text)
33
- return '';
34
- if (text.length <= maxLen)
35
- return text;
36
- return text.slice(0, maxLen - 3) + '...';
37
- }
38
- function countBy(items, keyFn) {
39
- const counts = {};
40
- for (const item of items) {
41
- const key = keyFn(item);
42
- counts[key] = (counts[key] ?? 0) + 1;
43
- }
44
- return counts;
45
- }
46
26
  // ── Wiki cross-reference ──────────────────────────────────────────────
47
27
  let _wikiIndexer = null;
48
28
  function getWikiIndexer() {
@@ -65,13 +45,11 @@ async function findRelatedWikiEntries(nodeId, filePath) {
65
45
  for (const e of index.entries) {
66
46
  if (seen.has(e.id))
67
47
  continue;
68
- // Match by KG node binding (uakg-* entries referencing this node)
69
- if (e.ext?.virtualKind === 'ua-kg-node' && e.ext?.kgNodeId === nodeId) {
48
+ if (e.ext?.virtualKind === 'kg-node' && e.ext?.kgNodeId === nodeId) {
70
49
  seen.add(e.id);
71
50
  matches.push({ id: e.id, type: e.type, title: e.title, matchReason: 'kg-node-entry' });
72
51
  continue;
73
52
  }
74
- // Match by codePaths containing the node's filePath
75
53
  if (filePath && Array.isArray(e.ext?.codeLocations)) {
76
54
  const locs = e.ext.codeLocations;
77
55
  const normFp = filePath.replace(/\\/g, '/').toLowerCase();
@@ -80,7 +58,8 @@ async function findRelatedWikiEntries(nodeId, filePath) {
80
58
  matches.push({ id: e.id, type: e.type, title: e.title, matchReason: 'codePath-match' });
81
59
  }
82
60
  }
83
- // Match by codePaths in ext.codePaths (knowhow entries)
61
+ if (seen.has(e.id))
62
+ continue;
84
63
  if (filePath && Array.isArray(e.ext?.codePaths)) {
85
64
  const paths = e.ext.codePaths;
86
65
  const normFp = filePath.replace(/\\/g, '/').toLowerCase();
@@ -107,7 +86,7 @@ export function registerKgCommand(program) {
107
86
  .description('Display knowledge graph statistics')
108
87
  .option('--json', 'Output as JSON')
109
88
  .action((_opts) => {
110
- const graph = loadGraph();
89
+ const graph = loadGraphOrExit();
111
90
  const nodesByType = countBy(graph.nodes, n => n.type);
112
91
  const edgesByType = countBy(graph.edges, e => e.type);
113
92
  const data = {
@@ -145,28 +124,16 @@ export function registerKgCommand(program) {
145
124
  .option('--type <nodeType>', 'Filter by node type')
146
125
  .option('--json', 'Output as JSON')
147
126
  .action((text, opts) => {
148
- const graph = loadGraph();
149
- const needle = text.toLowerCase();
127
+ const graph = loadGraphOrExit();
150
128
  const limit = Number(opts.limit) || 10;
151
- let matches = graph.nodes.filter(n => {
152
- const haystack = [
153
- n.name,
154
- n.summary,
155
- ...(n.tags ?? []),
156
- ].join(' ').toLowerCase();
157
- return haystack.includes(needle);
158
- });
159
- if (opts.type) {
160
- const typeFilter = opts.type.toLowerCase();
161
- matches = matches.filter(n => n.type.toLowerCase() === typeFilter);
162
- }
163
- const limited = matches.slice(0, limit);
129
+ const matches = searchNodes(graph, text, { limit, type: opts.type });
130
+ const total = searchNodes(graph, text, { limit: Infinity, type: opts.type }).length;
164
131
  if (opts.json) {
165
- console.log(JSON.stringify({ query: text, total: matches.length, nodes: limited }, null, 2));
132
+ console.log(JSON.stringify({ query: text, total, nodes: matches }, null, 2));
166
133
  return;
167
134
  }
168
- console.log(`Query: "${text}" (${limited.length}/${matches.length} results)`);
169
- for (const n of limited) {
135
+ console.log(`Query: "${text}" (${matches.length}/${total} results)`);
136
+ for (const n of matches) {
170
137
  console.log(` [${n.type}] ${n.id} -- ${truncate(n.summary, 80)}`);
171
138
  }
172
139
  });
@@ -177,7 +144,7 @@ export function registerKgCommand(program) {
177
144
  .option('--json', 'Output as JSON')
178
145
  .option('--no-wiki', 'Skip wiki cross-reference lookup')
179
146
  .action(async (nodeId, opts) => {
180
- const graph = loadGraph();
147
+ const graph = loadGraphOrExit();
181
148
  const node = graph.nodes.find(n => n.id === nodeId);
182
149
  if (!node) {
183
150
  console.error(`Node not found: ${nodeId}`);
@@ -238,89 +205,35 @@ export function registerKgCommand(program) {
238
205
  .description('Find shortest path between two nodes (BFS, undirected)')
239
206
  .option('--json', 'Output as JSON')
240
207
  .action((fromId, toId, opts) => {
241
- const graph = loadGraph();
242
- // Validate nodes exist
243
- const fromNode = graph.nodes.find(n => n.id === fromId);
244
- const toNode = graph.nodes.find(n => n.id === toId);
245
- if (!fromNode) {
246
- console.error(`Source node not found: ${fromId}`);
247
- process.exit(1);
248
- }
249
- if (!toNode) {
250
- console.error(`Target node not found: ${toId}`);
251
- process.exit(1);
252
- }
253
- // Build adjacency list (undirected)
254
- const adj = new Map();
255
- for (const e of graph.edges) {
256
- if (!adj.has(e.source))
257
- adj.set(e.source, []);
258
- if (!adj.has(e.target))
259
- adj.set(e.target, []);
260
- adj.get(e.source).push({ neighbor: e.target, edge: e });
261
- adj.get(e.target).push({ neighbor: e.source, edge: e });
262
- }
263
- // BFS
264
- const visited = new Set();
265
- const parent = new Map();
266
- const queue = [fromId];
267
- visited.add(fromId);
268
- let found = false;
269
- while (queue.length > 0) {
270
- const current = queue.shift();
271
- if (current === toId) {
272
- found = true;
273
- break;
274
- }
275
- for (const { neighbor, edge } of adj.get(current) ?? []) {
276
- if (!visited.has(neighbor)) {
277
- visited.add(neighbor);
278
- parent.set(neighbor, { node: current, edge });
279
- queue.push(neighbor);
208
+ const graph = loadGraphOrExit();
209
+ try {
210
+ const result = findPath(graph, fromId, toId);
211
+ if (!result.found) {
212
+ if (opts.json) {
213
+ console.log(JSON.stringify({ from: fromId, to: toId, path: null, message: 'No path found' }, null, 2));
214
+ }
215
+ else {
216
+ console.log(`No path found from ${fromId} to ${toId}`);
280
217
  }
218
+ return;
281
219
  }
282
- }
283
- if (!found) {
284
220
  if (opts.json) {
285
- console.log(JSON.stringify({ from: fromId, to: toId, path: null, message: 'No path found' }, null, 2));
221
+ console.log(JSON.stringify({ from: fromId, to: toId, length: result.length, steps: result.steps }, null, 2));
222
+ return;
286
223
  }
287
- else {
288
- console.log(`No path found from ${fromId} to ${toId}`);
224
+ console.log(`Path: ${fromId} -> ${toId} (${result.length} hops)`);
225
+ console.log('');
226
+ for (let i = 0; i < result.steps.length; i++) {
227
+ const step = result.steps[i];
228
+ console.log(` [${step.type ?? '?'}] ${step.node} -- ${truncate(step.name ?? '', 60)}`);
229
+ if (step.edgeToNext) {
230
+ console.log(` | ${step.edgeToNext}`);
231
+ }
289
232
  }
290
- return;
291
233
  }
292
- // Reconstruct path
293
- const pathNodes = [];
294
- const pathEdges = [];
295
- let cur = toId;
296
- while (cur !== fromId) {
297
- pathNodes.unshift(cur);
298
- const p = parent.get(cur);
299
- pathEdges.unshift(p.edge);
300
- cur = p.node;
301
- }
302
- pathNodes.unshift(fromId);
303
- if (opts.json) {
304
- const steps = pathNodes.map((nid, i) => {
305
- const n = graph.nodes.find(nd => nd.id === nid);
306
- return {
307
- node: nid,
308
- type: n?.type,
309
- name: n?.name,
310
- edgeToNext: i < pathEdges.length ? pathEdges[i].type : undefined,
311
- };
312
- });
313
- console.log(JSON.stringify({ from: fromId, to: toId, length: pathEdges.length, steps }, null, 2));
314
- return;
315
- }
316
- console.log(`Path: ${fromId} -> ${toId} (${pathEdges.length} hops)`);
317
- console.log('');
318
- for (let i = 0; i < pathNodes.length; i++) {
319
- const n = graph.nodes.find(nd => nd.id === pathNodes[i]);
320
- console.log(` [${n?.type ?? '?'}] ${pathNodes[i]} -- ${truncate(n?.name ?? '', 60)}`);
321
- if (i < pathEdges.length) {
322
- console.log(` | ${pathEdges[i].type}`);
323
- }
234
+ catch (err) {
235
+ console.error(err.message);
236
+ process.exit(1);
324
237
  }
325
238
  });
326
239
  // ── diff ───────────────────────────────────────────────────────────
@@ -330,8 +243,7 @@ export function registerKgCommand(program) {
330
243
  .option('--staged', 'Use staged changes only')
331
244
  .option('--json', 'Output as JSON')
332
245
  .action((opts) => {
333
- const graph = loadGraph();
334
- // Get changed files from git
246
+ const graph = loadGraphOrExit();
335
247
  let changedFiles;
336
248
  try {
337
249
  const cmd = opts.staged
@@ -353,46 +265,29 @@ export function registerKgCommand(program) {
353
265
  }
354
266
  return;
355
267
  }
356
- // Find direct nodes (filePath matches a changed file)
357
- const directNodes = graph.nodes.filter(n => n.filePath && changedFiles.some(f => n.filePath === f || n.filePath.endsWith('/' + f) || f.endsWith('/' + n.filePath)));
358
- const directIds = new Set(directNodes.map(n => n.id));
359
- // Expand 1 hop: find all directly connected nodes
360
- const impactedIds = new Set();
361
- for (const e of graph.edges) {
362
- if (directIds.has(e.source) && !directIds.has(e.target)) {
363
- impactedIds.add(e.target);
364
- }
365
- if (directIds.has(e.target) && !directIds.has(e.source)) {
366
- impactedIds.add(e.source);
367
- }
368
- }
369
- const impactedNodes = graph.nodes.filter(n => impactedIds.has(n.id));
268
+ const result = diffChanges(graph, changedFiles);
370
269
  if (opts.json) {
371
- console.log(JSON.stringify({
372
- changedFiles,
373
- direct: directNodes,
374
- impacted: impactedNodes,
375
- }, null, 2));
270
+ console.log(JSON.stringify(result, null, 2));
376
271
  return;
377
272
  }
378
273
  console.log(`Changed files: ${changedFiles.length}`);
379
274
  console.log('');
380
- console.log(`Direct (${directNodes.length}):`);
381
- if (directNodes.length === 0) {
275
+ console.log(`Direct (${result.direct.length}):`);
276
+ if (result.direct.length === 0) {
382
277
  console.log(' (no KG nodes match changed files)');
383
278
  }
384
279
  else {
385
- for (const n of directNodes) {
280
+ for (const n of result.direct) {
386
281
  console.log(` [${n.type}] ${n.id} -- ${truncate(n.summary, 60)}`);
387
282
  }
388
283
  }
389
284
  console.log('');
390
- console.log(`Impacted (${impactedNodes.length}):`);
391
- if (impactedNodes.length === 0) {
285
+ console.log(`Impacted (${result.impacted.length}):`);
286
+ if (result.impacted.length === 0) {
392
287
  console.log(' (no 1-hop neighbors found)');
393
288
  }
394
289
  else {
395
- for (const n of impactedNodes) {
290
+ for (const n of result.impacted) {
396
291
  console.log(` [${n.type}] ${n.id} -- ${truncate(n.summary, 60)}`);
397
292
  }
398
293
  }
@@ -404,7 +299,7 @@ export function registerKgCommand(program) {
404
299
  .option('--staged', 'Use staged changes only')
405
300
  .option('--json', 'Output as JSON')
406
301
  .action(async (opts) => {
407
- const graph = loadGraph();
302
+ const graph = loadGraphOrExit();
408
303
  let changedFiles;
409
304
  try {
410
305
  const cmd = opts.staged
@@ -426,28 +321,17 @@ export function registerKgCommand(program) {
426
321
  }
427
322
  return;
428
323
  }
429
- // Find direct + impacted KG nodes
430
- const directNodes = graph.nodes.filter(n => n.filePath && changedFiles.some(f => n.filePath === f || n.filePath.endsWith('/' + f) || f.endsWith('/' + n.filePath)));
431
- const directIds = new Set(directNodes.map(n => n.id));
432
- const impactedIds = new Set();
433
- for (const e of graph.edges) {
434
- if (directIds.has(e.source) && !directIds.has(e.target))
435
- impactedIds.add(e.target);
436
- if (directIds.has(e.target) && !directIds.has(e.source))
437
- impactedIds.add(e.source);
438
- }
324
+ const result = diffChanges(graph, changedFiles);
439
325
  // Collect all affected file paths from KG nodes
440
326
  const affectedPaths = new Set();
441
- for (const n of directNodes) {
327
+ for (const n of result.direct) {
442
328
  if (n.filePath)
443
329
  affectedPaths.add(n.filePath.replace(/\\/g, '/').toLowerCase());
444
330
  }
445
- for (const nid of impactedIds) {
446
- const n = graph.nodes.find(nd => nd.id === nid);
447
- if (n?.filePath)
331
+ for (const n of result.impacted) {
332
+ if (n.filePath)
448
333
  affectedPaths.add(n.filePath.replace(/\\/g, '/').toLowerCase());
449
334
  }
450
- // Also add raw changed files
451
335
  for (const f of changedFiles) {
452
336
  affectedPaths.add(f.replace(/\\/g, '/').toLowerCase());
453
337
  }
@@ -461,7 +345,6 @@ export function registerKgCommand(program) {
461
345
  for (const entry of index.entries) {
462
346
  if (seen.has(entry.id))
463
347
  continue;
464
- // Check codeLocations (codebase-component entries)
465
348
  if (Array.isArray(entry.ext?.codeLocations)) {
466
349
  const locs = entry.ext.codeLocations;
467
350
  for (const loc of locs) {
@@ -474,7 +357,6 @@ export function registerKgCommand(program) {
474
357
  }
475
358
  if (seen.has(entry.id))
476
359
  continue;
477
- // Check codePaths (knowhow entries)
478
360
  if (Array.isArray(entry.ext?.codePaths)) {
479
361
  const paths = entry.ext.codePaths;
480
362
  for (const p of paths) {
@@ -492,14 +374,14 @@ export function registerKgCommand(program) {
492
374
  if (opts.json) {
493
375
  console.log(JSON.stringify({
494
376
  changedFiles,
495
- directNodes: directNodes.length,
496
- impactedNodes: impactedIds.size,
377
+ directNodes: result.direct.length,
378
+ impactedNodes: result.impacted.length,
497
379
  affectedWiki,
498
380
  }, null, 2));
499
381
  return;
500
382
  }
501
383
  console.log(`Changed files: ${changedFiles.length}`);
502
- console.log(`KG direct: ${directNodes.length}, impacted: ${impactedIds.size}`);
384
+ console.log(`KG direct: ${result.direct.length}, impacted: ${result.impacted.length}`);
503
385
  console.log('');
504
386
  if (affectedWiki.length === 0) {
505
387
  console.log('No wiki entries affected by these changes.');
@@ -511,5 +393,94 @@ export function registerKgCommand(program) {
511
393
  }
512
394
  }
513
395
  });
396
+ // ── index ─────────────────────────────────────────────────────────
397
+ kg
398
+ .command('index')
399
+ .description('Scan codebase and generate knowledge graph')
400
+ .option('--src <path>', 'Source directory to scan', 'src')
401
+ .option('--json', 'Output stats as JSON after indexing')
402
+ .action(async (opts) => {
403
+ const srcPath = resolve(opts.src);
404
+ if (!existsSync(srcPath)) {
405
+ console.error(`Source directory not found: ${srcPath}`);
406
+ process.exit(1);
407
+ }
408
+ const analyzer = new FsAnalyzer();
409
+ console.log(`Scanning ${srcPath} ...`);
410
+ const graph = await analyzer.analyze(srcPath);
411
+ // If scanning a subdirectory, try to pick up project name from CWD
412
+ const cwdPkg = resolve('package.json');
413
+ if (existsSync(cwdPkg) && srcPath !== resolve('.')) {
414
+ try {
415
+ const pkg = JSON.parse(readFileSync(cwdPkg, 'utf-8'));
416
+ if (pkg.name)
417
+ graph.project.name = pkg.name;
418
+ // Also pick up frameworks from root package.json
419
+ const allDeps = { ...pkg.dependencies, ...pkg.devDependencies };
420
+ const fwChecks = [
421
+ ['react', 'React'], ['vue', 'Vue'], ['angular', 'Angular'],
422
+ ['express', 'Express'], ['fastify', 'Fastify'], ['next', 'Next.js'],
423
+ ['nuxt', 'Nuxt'], ['commander', 'Commander'], ['ink', 'Ink'],
424
+ ];
425
+ const frameworks = [];
426
+ for (const [dep, name] of fwChecks) {
427
+ if (allDeps?.[dep])
428
+ frameworks.push(name);
429
+ }
430
+ if (frameworks.length > 0)
431
+ graph.project.frameworks = frameworks;
432
+ }
433
+ catch { /* ignore */ }
434
+ }
435
+ // Ensure output directory exists
436
+ const outDir = resolve('.workflow', 'codebase');
437
+ mkdirSync(outDir, { recursive: true });
438
+ const outPath = resolve(outDir, 'knowledge-graph.json');
439
+ writeFileSync(outPath, JSON.stringify(graph, null, 2), 'utf-8');
440
+ // Collect stats
441
+ const nodesByType = {};
442
+ for (const n of graph.nodes) {
443
+ nodesByType[n.type] = (nodesByType[n.type] ?? 0) + 1;
444
+ }
445
+ const edgesByType = {};
446
+ for (const e of graph.edges) {
447
+ edgesByType[e.type] = (edgesByType[e.type] ?? 0) + 1;
448
+ }
449
+ const stats = {
450
+ project: graph.project.name,
451
+ languages: graph.project.languages,
452
+ frameworks: graph.project.frameworks,
453
+ nodes: { total: graph.nodes.length, byType: nodesByType },
454
+ edges: { total: graph.edges.length, byType: edgesByType },
455
+ layers: graph.layers.length,
456
+ tourSteps: graph.tour.length,
457
+ output: outPath,
458
+ };
459
+ if (opts.json) {
460
+ console.log(JSON.stringify(stats, null, 2));
461
+ return;
462
+ }
463
+ console.log('');
464
+ console.log(`Project: ${stats.project}`);
465
+ console.log(`Languages: ${stats.languages.join(', ') || 'none detected'}`);
466
+ if (stats.frameworks.length > 0) {
467
+ console.log(`Frameworks: ${stats.frameworks.join(', ')}`);
468
+ }
469
+ console.log('');
470
+ console.log(`Nodes: ${stats.nodes.total}`);
471
+ for (const [type, count] of Object.entries(nodesByType)) {
472
+ console.log(` ${type}: ${count}`);
473
+ }
474
+ console.log('');
475
+ console.log(`Edges: ${stats.edges.total}`);
476
+ for (const [type, count] of Object.entries(edgesByType)) {
477
+ console.log(` ${type}: ${count}`);
478
+ }
479
+ console.log('');
480
+ console.log(`Layers: ${stats.layers}`);
481
+ console.log(`Tour steps: ${stats.tourSteps}`);
482
+ console.log('');
483
+ console.log(`Written to: ${outPath}`);
484
+ });
514
485
  }
515
486
  //# sourceMappingURL=kg.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"kg.js","sourceRoot":"","sources":["../../../src/commands/kg.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kg.js","sourceRoot":"","sources":["../../../src/commands/kg.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { CodeAnalyzer, AnalyzerOptions, KnowledgeGraph } from '../types.js';
2
+ export declare class FsAnalyzer implements CodeAnalyzer {
3
+ readonly name = "fs-analyzer";
4
+ analyze(projectRoot: string, options?: AnalyzerOptions): Promise<KnowledgeGraph>;
5
+ /** Read project name from package.json or use directory name. */
6
+ private detectProjectName;
7
+ /** Detect frameworks from package.json dependencies. */
8
+ private detectFrameworks;
9
+ }
10
+ //# sourceMappingURL=fs-analyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs-analyzer.d.ts","sourceRoot":"","sources":["../../../../src/graph/analyzers/fs-analyzer.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EACV,YAAY,EACZ,eAAe,EACf,cAAc,EAMf,MAAM,aAAa,CAAC;AAirBrB,qBAAa,UAAW,YAAW,YAAY;IAC7C,QAAQ,CAAC,IAAI,iBAAiB;IAExB,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;IA4TtF,iEAAiE;IACjE,OAAO,CAAC,iBAAiB;IAWzB,wDAAwD;IACxD,OAAO,CAAC,gBAAgB;CA8BzB"}