maestro-flow 0.4.20 → 0.4.21

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 (136) 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/aco.py +473 -0
  6. package/.agents/skills/team-adversarial-swarm/scripts/pheromone.py +144 -0
  7. package/.agents/skills/team-adversarial-swarm/scripts/scoring.py +92 -0
  8. package/.agents/skills/team-adversarial-swarm/scripts/test_aco.py +475 -0
  9. package/.agents/skills/team-adversarial-swarm/specs/ant-output-schema.md +115 -0
  10. package/.agents/skills/team-adversarial-swarm/specs/convergence-criteria.md +75 -0
  11. package/.agents/skills/team-adversarial-swarm/specs/pheromone-schema.md +90 -0
  12. package/.agents/skills/team-adversarial-swarm/specs/swarm-config-template.json +66 -0
  13. package/.agents/skills/team-adversarial-swarm/specs/swarm-protocol.md +105 -0
  14. package/.agents/skills/team-adversarial-swarm/workflows/wf-swarm-converge.js +197 -0
  15. package/.agents/skills/team-adversarial-swarm/workflows/wf-swarm-explore.js +194 -0
  16. package/.agents/skills/team-adversarial-swarm/workflows/wf-swarm-score.js +188 -0
  17. package/.agents/skills/team-adversarial-swarm/workflows/wf-swarm-synthesize.js +248 -0
  18. package/.agy/skills/maestro-ralph-execute/SKILL.md +2 -1
  19. package/.agy/skills/maestro-swarm-workflow/SKILL.md +27 -19
  20. package/.agy/skills/maestro-universal-workflow/SKILL.md +560 -0
  21. package/.agy/skills/team-adversarial-swarm/SKILL.md +244 -0
  22. package/.agy/skills/team-adversarial-swarm/scripts/aco.py +473 -0
  23. package/.agy/skills/team-adversarial-swarm/scripts/pheromone.py +144 -0
  24. package/.agy/skills/team-adversarial-swarm/scripts/scoring.py +92 -0
  25. package/.agy/skills/team-adversarial-swarm/scripts/test_aco.py +475 -0
  26. package/.agy/skills/team-adversarial-swarm/specs/ant-output-schema.md +115 -0
  27. package/.agy/skills/team-adversarial-swarm/specs/convergence-criteria.md +75 -0
  28. package/.agy/skills/team-adversarial-swarm/specs/pheromone-schema.md +90 -0
  29. package/.agy/skills/team-adversarial-swarm/specs/swarm-config-template.json +66 -0
  30. package/.agy/skills/team-adversarial-swarm/specs/swarm-protocol.md +105 -0
  31. package/.agy/skills/team-adversarial-swarm/workflows/wf-swarm-converge.js +197 -0
  32. package/.agy/skills/team-adversarial-swarm/workflows/wf-swarm-explore.js +194 -0
  33. package/.agy/skills/team-adversarial-swarm/workflows/wf-swarm-score.js +188 -0
  34. package/.agy/skills/team-adversarial-swarm/workflows/wf-swarm-synthesize.js +248 -0
  35. package/.claude/commands/maestro-ralph-execute.md +2 -1
  36. package/.claude/commands/maestro-swarm-workflow.md +27 -19
  37. package/.claude/commands/maestro-universal-workflow.md +561 -0
  38. package/.claude/skills/team-adversarial-swarm/SKILL.md +233 -0
  39. package/.claude/skills/team-adversarial-swarm/scripts/aco.py +473 -0
  40. package/.claude/skills/team-adversarial-swarm/scripts/pheromone.py +144 -0
  41. package/.claude/skills/team-adversarial-swarm/scripts/scoring.py +92 -0
  42. package/.claude/skills/team-adversarial-swarm/scripts/test_aco.py +475 -0
  43. package/.claude/skills/team-adversarial-swarm/specs/ant-output-schema.md +115 -0
  44. package/.claude/skills/team-adversarial-swarm/specs/convergence-criteria.md +75 -0
  45. package/.claude/skills/team-adversarial-swarm/specs/pheromone-schema.md +90 -0
  46. package/.claude/skills/team-adversarial-swarm/specs/swarm-config-template.json +66 -0
  47. package/.claude/skills/team-adversarial-swarm/specs/swarm-protocol.md +105 -0
  48. package/.claude/skills/team-adversarial-swarm/workflows/wf-swarm-converge.js +197 -0
  49. package/.claude/skills/team-adversarial-swarm/workflows/wf-swarm-explore.js +194 -0
  50. package/.claude/skills/team-adversarial-swarm/workflows/wf-swarm-score.js +188 -0
  51. package/.claude/skills/team-adversarial-swarm/workflows/wf-swarm-synthesize.js +248 -0
  52. package/dashboard/dist-server/dashboard/src/server/wiki/graph-analysis.js +1 -1
  53. package/dashboard/dist-server/dashboard/src/server/wiki/graph-analysis.js.map +1 -1
  54. package/dashboard/dist-server/dashboard/src/server/wiki/search.js +1 -1
  55. package/dashboard/dist-server/dashboard/src/server/wiki/search.js.map +1 -1
  56. package/dashboard/dist-server/dashboard/src/server/wiki/virtual-wiki-adapters.d.ts +1 -1
  57. package/dashboard/dist-server/dashboard/src/server/wiki/virtual-wiki-adapters.js +5 -5
  58. package/dashboard/dist-server/dashboard/src/server/wiki/virtual-wiki-adapters.js.map +1 -1
  59. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js +3 -3
  60. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js.map +1 -1
  61. package/dashboard/dist-server/src/graph/types.d.ts +111 -0
  62. package/dashboard/dist-server/src/graph/types.js +2 -0
  63. package/dashboard/dist-server/src/graph/types.js.map +1 -0
  64. package/dist/src/commands/install-backend.d.ts +0 -7
  65. package/dist/src/commands/install-backend.d.ts.map +1 -1
  66. package/dist/src/commands/install-backend.js +0 -14
  67. package/dist/src/commands/install-backend.js.map +1 -1
  68. package/dist/src/commands/install.d.ts.map +1 -1
  69. package/dist/src/commands/install.js +0 -18
  70. package/dist/src/commands/install.js.map +1 -1
  71. package/dist/src/commands/kg.d.ts +2 -2
  72. package/dist/src/commands/kg.d.ts.map +1 -1
  73. package/dist/src/commands/kg.js +150 -179
  74. package/dist/src/commands/kg.js.map +1 -1
  75. package/dist/src/graph/analyzers/fs-analyzer.d.ts +10 -0
  76. package/dist/src/graph/analyzers/fs-analyzer.d.ts.map +1 -0
  77. package/dist/src/graph/analyzers/fs-analyzer.js +959 -0
  78. package/dist/src/graph/analyzers/fs-analyzer.js.map +1 -0
  79. package/dist/src/graph/index.d.ts +6 -0
  80. package/dist/src/graph/index.d.ts.map +1 -0
  81. package/dist/src/graph/index.js +6 -0
  82. package/dist/src/graph/index.js.map +1 -0
  83. package/dist/src/graph/loader.d.ts +3 -0
  84. package/dist/src/graph/loader.d.ts.map +1 -0
  85. package/dist/src/graph/loader.js +12 -0
  86. package/dist/src/graph/loader.js.map +1 -0
  87. package/dist/src/graph/merger.d.ts +56 -0
  88. package/dist/src/graph/merger.d.ts.map +1 -0
  89. package/dist/src/graph/merger.js +896 -0
  90. package/dist/src/graph/merger.js.map +1 -0
  91. package/dist/src/graph/query.d.ts +7 -0
  92. package/dist/src/graph/query.d.ts.map +1 -0
  93. package/dist/src/graph/query.js +126 -0
  94. package/dist/src/graph/query.js.map +1 -0
  95. package/dist/src/graph/types.d.ts +112 -0
  96. package/dist/src/graph/types.d.ts.map +1 -0
  97. package/dist/src/graph/types.js +2 -0
  98. package/dist/src/graph/types.js.map +1 -0
  99. package/dist/src/i18n/locales/en.d.ts.map +1 -1
  100. package/dist/src/i18n/locales/en.js +0 -10
  101. package/dist/src/i18n/locales/en.js.map +1 -1
  102. package/dist/src/i18n/locales/zh.d.ts.map +1 -1
  103. package/dist/src/i18n/locales/zh.js +0 -10
  104. package/dist/src/i18n/locales/zh.js.map +1 -1
  105. package/dist/src/i18n/types.d.ts +0 -9
  106. package/dist/src/i18n/types.d.ts.map +1 -1
  107. package/dist/src/tui/install-ui/InstallConfirm.d.ts +0 -1
  108. package/dist/src/tui/install-ui/InstallConfirm.d.ts.map +1 -1
  109. package/dist/src/tui/install-ui/InstallConfirm.js +1 -1
  110. package/dist/src/tui/install-ui/InstallConfirm.js.map +1 -1
  111. package/dist/src/tui/install-ui/InstallExecution.d.ts +0 -1
  112. package/dist/src/tui/install-ui/InstallExecution.d.ts.map +1 -1
  113. package/dist/src/tui/install-ui/InstallExecution.js +0 -22
  114. package/dist/src/tui/install-ui/InstallExecution.js.map +1 -1
  115. package/dist/src/tui/install-ui/InstallFlow.d.ts +1 -1
  116. package/dist/src/tui/install-ui/InstallFlow.d.ts.map +1 -1
  117. package/dist/src/tui/install-ui/InstallFlow.js +5 -23
  118. package/dist/src/tui/install-ui/InstallFlow.js.map +1 -1
  119. package/dist/src/tui/install-ui/InstallHub.d.ts +0 -2
  120. package/dist/src/tui/install-ui/InstallHub.d.ts.map +1 -1
  121. package/dist/src/tui/install-ui/InstallHub.js +0 -6
  122. package/dist/src/tui/install-ui/InstallHub.js.map +1 -1
  123. package/dist/src/tui/install-ui/InstallResult.d.ts.map +1 -1
  124. package/dist/src/tui/install-ui/InstallResult.js +1 -1
  125. package/dist/src/tui/install-ui/InstallResult.js.map +1 -1
  126. package/dist/src/utils/update-notices.js +12 -0
  127. package/dist/src/utils/update-notices.js.map +1 -1
  128. package/package.json +1 -1
  129. package/workflows/swarm/wf-analyze.js +195 -34
  130. package/workflows/swarm/wf-brainstorm.js +225 -53
  131. package/workflows/swarm/wf-execute.js +199 -23
  132. package/workflows/swarm/wf-grill.js +181 -20
  133. package/workflows/swarm/wf-milestone-audit.js +178 -29
  134. package/workflows/swarm/wf-plan.js +288 -53
  135. package/workflows/swarm/wf-review.js +195 -80
  136. package/workflows/swarm/wf-verify.js +125 -28
@@ -1 +1 @@
1
- {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/commands/install.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+HzC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgD7D"}
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/commands/install.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8HzC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+C7D"}
@@ -13,7 +13,6 @@
13
13
  import { join, resolve } from 'node:path';
14
14
  import { homedir } from 'node:os';
15
15
  import { existsSync, readFileSync, writeFileSync } from 'node:fs';
16
- import { execSync } from 'node:child_process';
17
16
  import { initCliToolsConfigSync } from '../config/cli-tools-config.js';
18
17
  import { runInstallWizard, runInstallFlow } from '../tui/install-ui/index.js';
19
18
  import { paths } from '../config/paths.js';
@@ -108,7 +107,6 @@ export function registerInstallCommand(program) {
108
107
  .option('--codex-hooks <level>', 'Codex hook level for --force mode: none, minimal, standard, full')
109
108
  .option('--codex-mcp', 'Register Codex MCP server in --force mode')
110
109
  .option('--agy-hooks <level>', 'Agy (Antigravity) hook level for --force mode: none, minimal, standard, full')
111
- .option('--kg-vendor', 'Install KG vendor (Understand-Anything) in --force mode')
112
110
  .option('--components <ids>', 'Comma-separated component IDs to install (with --force)')
113
111
  .action(async (opts) => {
114
112
  const pkgRoot = getPackageRoot();
@@ -289,22 +287,6 @@ function forceInstall(pkgRoot, version, opts) {
289
287
  console.error(` Codex MCP: failed`);
290
288
  }
291
289
  }
292
- // KG Vendor (Understand-Anything)
293
- if (opts.kgVendor) {
294
- console.error(' KG Vendor: installing Understand-Anything...');
295
- try {
296
- const isWin = process.platform === 'win32';
297
- const scriptPath = join(pkgRoot, 'scripts', isWin ? 'ua-vendor-setup.ps1' : 'ua-vendor-setup.sh');
298
- const cmd = isWin
299
- ? `powershell -ExecutionPolicy Bypass -File "${scriptPath}" -Force`
300
- : `bash "${scriptPath}" --force`;
301
- execSync(cmd, { stdio: 'inherit', timeout: 600_000 });
302
- console.error(' KG Vendor: installed successfully');
303
- }
304
- catch (err) {
305
- console.error(` KG Vendor: failed — ${err instanceof Error ? err.message : String(err)}`);
306
- }
307
- }
308
290
  saveManifest(manifest);
309
291
  const parts = [`${totalStats.files} files`];
310
292
  if (totalStats.dirs > 0)
@@ -1 +1 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/commands/install.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/commands/install.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,10 @@
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
9
  import type { Command } from 'commander';
10
10
  export declare function registerKgCommand(program: Command): void;
@@ -1 +1 @@
1
- {"version":3,"file":"kg.d.ts","sourceRoot":"","sources":["../../../src/commands/kg.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4JzC,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgcxD"}
1
+ {"version":3,"file":"kg.d.ts","sourceRoot":"","sources":["../../../src/commands/kg.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiFzC,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmbxD"}
@@ -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