maestro-flow 0.5.3 → 0.5.31

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 (259) hide show
  1. package/.agents/skills/learn-follow/SKILL.md +114 -114
  2. package/.agents/skills/learn-investigate/SKILL.md +138 -139
  3. package/.agents/skills/learn-second-opinion/SKILL.md +105 -109
  4. package/.agents/skills/maestro/SKILL.md +2 -10
  5. package/.agents/skills/maestro-amend/SKILL.md +152 -152
  6. package/.agents/skills/maestro-analyze/SKILL.md +201 -252
  7. package/.agents/skills/maestro-blueprint/SKILL.md +175 -190
  8. package/.agents/skills/maestro-brainstorm/SKILL.md +196 -200
  9. package/.agents/skills/maestro-collab/SKILL.md +159 -159
  10. package/.agents/skills/maestro-companion/SKILL.md +517 -517
  11. package/.agents/skills/maestro-composer/SKILL.md +173 -164
  12. package/.agents/skills/maestro-execute/SKILL.md +169 -170
  13. package/.agents/skills/maestro-fork/SKILL.md +97 -96
  14. package/.agents/skills/maestro-grill/SKILL.md +161 -162
  15. package/.agents/skills/maestro-guard/SKILL.md +93 -92
  16. package/.agents/skills/maestro-impeccable/SKILL.md +296 -253
  17. package/.agents/skills/maestro-init/SKILL.md +117 -118
  18. package/.agents/skills/maestro-merge/SKILL.md +73 -66
  19. package/.agents/skills/maestro-milestone-audit/SKILL.md +4 -10
  20. package/.agents/skills/maestro-milestone-complete/SKILL.md +6 -7
  21. package/.agents/skills/maestro-milestone-release/SKILL.md +122 -131
  22. package/.agents/skills/maestro-next/SKILL.md +241 -245
  23. package/.agents/skills/maestro-overlay/SKILL.md +176 -166
  24. package/.agents/skills/maestro-plan/SKILL.md +211 -197
  25. package/.agents/skills/maestro-player/SKILL.md +167 -167
  26. package/.agents/skills/maestro-quick/SKILL.md +69 -63
  27. package/.agents/skills/maestro-ralph/SKILL.md +2 -36
  28. package/.agents/skills/maestro-ralph-beta/SKILL.md +861 -872
  29. package/.agents/skills/maestro-ralph-execute/SKILL.md +234 -234
  30. package/.agents/skills/maestro-roadmap/SKILL.md +159 -172
  31. package/.agents/skills/maestro-swarm-workflow/SKILL.md +229 -250
  32. package/.agents/skills/maestro-tools-execute/SKILL.md +108 -103
  33. package/.agents/skills/maestro-tools-register/SKILL.md +148 -143
  34. package/.agents/skills/maestro-ui-codify/SKILL.md +103 -86
  35. package/.agents/skills/maestro-universal-workflow/SKILL.md +534 -547
  36. package/.agents/skills/maestro-update/SKILL.md +109 -106
  37. package/.agents/skills/manage-codebase-rebuild/SKILL.md +73 -71
  38. package/.agents/skills/manage-harvest/SKILL.md +83 -81
  39. package/.agents/skills/manage-issue/SKILL.md +59 -60
  40. package/.agents/skills/manage-issue-discover/SKILL.md +70 -68
  41. package/.agents/skills/manage-kg-extractors/SKILL.md +130 -0
  42. package/.agents/skills/manage-knowhow/SKILL.md +70 -66
  43. package/.agents/skills/manage-knowhow-capture/SKILL.md +79 -69
  44. package/.agents/skills/manage-knowledge-audit/SKILL.md +91 -74
  45. package/.agents/skills/manage-status/SKILL.md +52 -42
  46. package/.agents/skills/manage-wiki/SKILL.md +69 -58
  47. package/.agents/skills/odyssey-debug/SKILL.md +445 -459
  48. package/.agents/skills/odyssey-improve/SKILL.md +477 -491
  49. package/.agents/skills/odyssey-planex/SKILL.md +576 -587
  50. package/.agents/skills/odyssey-review-test-fix/SKILL.md +400 -413
  51. package/.agents/skills/odyssey-ui/SKILL.md +431 -448
  52. package/.agents/skills/quality-auto-test/SKILL.md +140 -123
  53. package/.agents/skills/quality-debug/SKILL.md +145 -106
  54. package/.agents/skills/quality-refactor/SKILL.md +91 -53
  55. package/.agents/skills/quality-retrospective/SKILL.md +109 -63
  56. package/.agents/skills/quality-review/SKILL.md +141 -114
  57. package/.agents/skills/quality-sync/SKILL.md +74 -38
  58. package/.agents/skills/quality-test/SKILL.md +133 -103
  59. package/.agents/skills/security-audit/SKILL.md +217 -166
  60. package/.agents/skills/spec-add/SKILL.md +66 -59
  61. package/.agents/skills/spec-load/SKILL.md +68 -68
  62. package/.agents/skills/spec-remove/SKILL.md +42 -42
  63. package/.agents/skills/spec-setup/SKILL.md +38 -41
  64. package/.agy/skills/learn-follow/SKILL.md +114 -114
  65. package/.agy/skills/learn-investigate/SKILL.md +138 -139
  66. package/.agy/skills/learn-second-opinion/SKILL.md +105 -109
  67. package/.agy/skills/maestro/SKILL.md +2 -10
  68. package/.agy/skills/maestro-amend/SKILL.md +152 -152
  69. package/.agy/skills/maestro-analyze/SKILL.md +201 -252
  70. package/.agy/skills/maestro-blueprint/SKILL.md +175 -190
  71. package/.agy/skills/maestro-brainstorm/SKILL.md +196 -200
  72. package/.agy/skills/maestro-collab/SKILL.md +159 -159
  73. package/.agy/skills/maestro-companion/SKILL.md +517 -517
  74. package/.agy/skills/maestro-composer/SKILL.md +173 -164
  75. package/.agy/skills/maestro-execute/SKILL.md +169 -170
  76. package/.agy/skills/maestro-fork/SKILL.md +97 -96
  77. package/.agy/skills/maestro-grill/SKILL.md +161 -162
  78. package/.agy/skills/maestro-guard/SKILL.md +93 -92
  79. package/.agy/skills/maestro-impeccable/SKILL.md +296 -253
  80. package/.agy/skills/maestro-init/SKILL.md +117 -118
  81. package/.agy/skills/maestro-merge/SKILL.md +73 -66
  82. package/.agy/skills/maestro-milestone-audit/SKILL.md +4 -10
  83. package/.agy/skills/maestro-milestone-complete/SKILL.md +6 -7
  84. package/.agy/skills/maestro-milestone-release/SKILL.md +122 -131
  85. package/.agy/skills/maestro-next/SKILL.md +241 -245
  86. package/.agy/skills/maestro-overlay/SKILL.md +176 -166
  87. package/.agy/skills/maestro-plan/SKILL.md +211 -197
  88. package/.agy/skills/maestro-player/SKILL.md +167 -167
  89. package/.agy/skills/maestro-quick/SKILL.md +69 -63
  90. package/.agy/skills/maestro-ralph/SKILL.md +2 -36
  91. package/.agy/skills/maestro-ralph-beta/SKILL.md +861 -872
  92. package/.agy/skills/maestro-ralph-execute/SKILL.md +234 -234
  93. package/.agy/skills/maestro-roadmap/SKILL.md +159 -172
  94. package/.agy/skills/maestro-swarm-workflow/SKILL.md +229 -250
  95. package/.agy/skills/maestro-tools-execute/SKILL.md +108 -103
  96. package/.agy/skills/maestro-tools-register/SKILL.md +148 -143
  97. package/.agy/skills/maestro-ui-codify/SKILL.md +103 -86
  98. package/.agy/skills/maestro-universal-workflow/SKILL.md +534 -547
  99. package/.agy/skills/maestro-update/SKILL.md +109 -106
  100. package/.agy/skills/manage-codebase-rebuild/SKILL.md +73 -71
  101. package/.agy/skills/manage-harvest/SKILL.md +83 -81
  102. package/.agy/skills/manage-issue/SKILL.md +59 -60
  103. package/.agy/skills/manage-issue-discover/SKILL.md +70 -68
  104. package/.agy/skills/manage-kg-extractors/SKILL.md +130 -0
  105. package/.agy/skills/manage-knowhow/SKILL.md +70 -66
  106. package/.agy/skills/manage-knowhow-capture/SKILL.md +79 -69
  107. package/.agy/skills/manage-knowledge-audit/SKILL.md +91 -74
  108. package/.agy/skills/manage-status/SKILL.md +52 -42
  109. package/.agy/skills/manage-wiki/SKILL.md +69 -58
  110. package/.agy/skills/odyssey-debug/SKILL.md +445 -459
  111. package/.agy/skills/odyssey-improve/SKILL.md +477 -491
  112. package/.agy/skills/odyssey-planex/SKILL.md +576 -587
  113. package/.agy/skills/odyssey-review-test-fix/SKILL.md +400 -413
  114. package/.agy/skills/odyssey-ui/SKILL.md +431 -448
  115. package/.agy/skills/quality-auto-test/SKILL.md +140 -123
  116. package/.agy/skills/quality-debug/SKILL.md +145 -106
  117. package/.agy/skills/quality-refactor/SKILL.md +91 -53
  118. package/.agy/skills/quality-retrospective/SKILL.md +109 -63
  119. package/.agy/skills/quality-review/SKILL.md +141 -114
  120. package/.agy/skills/quality-sync/SKILL.md +74 -38
  121. package/.agy/skills/quality-test/SKILL.md +133 -103
  122. package/.agy/skills/security-audit/SKILL.md +217 -166
  123. package/.agy/skills/spec-add/SKILL.md +66 -59
  124. package/.agy/skills/spec-load/SKILL.md +68 -68
  125. package/.agy/skills/spec-remove/SKILL.md +42 -42
  126. package/.agy/skills/spec-setup/SKILL.md +38 -41
  127. package/.claude/commands/learn-follow.md +127 -127
  128. package/.claude/commands/learn-investigate.md +151 -152
  129. package/.claude/commands/learn-second-opinion.md +118 -122
  130. package/.claude/commands/maestro-amend.md +164 -164
  131. package/.claude/commands/maestro-analyze.md +215 -266
  132. package/.claude/commands/maestro-blueprint.md +189 -204
  133. package/.claude/commands/maestro-brainstorm.md +209 -213
  134. package/.claude/commands/maestro-collab.md +172 -172
  135. package/.claude/commands/maestro-companion.md +531 -531
  136. package/.claude/commands/maestro-composer.md +188 -179
  137. package/.claude/commands/maestro-execute.md +183 -184
  138. package/.claude/commands/maestro-fork.md +111 -110
  139. package/.claude/commands/maestro-grill.md +175 -176
  140. package/.claude/commands/maestro-guard.md +103 -102
  141. package/.claude/commands/maestro-impeccable.md +311 -268
  142. package/.claude/commands/maestro-init.md +130 -131
  143. package/.claude/commands/maestro-merge.md +87 -80
  144. package/.claude/commands/maestro-milestone-audit.md +4 -10
  145. package/.claude/commands/maestro-milestone-complete.md +6 -7
  146. package/.claude/commands/maestro-milestone-release.md +136 -145
  147. package/.claude/commands/maestro-next.md +253 -257
  148. package/.claude/commands/maestro-overlay.md +188 -178
  149. package/.claude/commands/maestro-plan.md +225 -211
  150. package/.claude/commands/maestro-player.md +182 -182
  151. package/.claude/commands/maestro-quick.md +83 -77
  152. package/.claude/commands/maestro-ralph-beta.md +875 -886
  153. package/.claude/commands/maestro-ralph-execute.md +247 -247
  154. package/.claude/commands/maestro-ralph.md +2 -36
  155. package/.claude/commands/maestro-roadmap.md +173 -186
  156. package/.claude/commands/maestro-swarm-workflow.md +243 -264
  157. package/.claude/commands/maestro-tools-execute.md +122 -117
  158. package/.claude/commands/maestro-tools-register.md +162 -157
  159. package/.claude/commands/maestro-ui-codify.md +117 -100
  160. package/.claude/commands/maestro-universal-workflow.md +548 -561
  161. package/.claude/commands/maestro-update.md +122 -119
  162. package/.claude/commands/maestro.md +2 -10
  163. package/.claude/commands/manage-codebase-rebuild.md +87 -85
  164. package/.claude/commands/manage-harvest.md +97 -95
  165. package/.claude/commands/manage-issue-discover.md +83 -81
  166. package/.claude/commands/manage-issue.md +72 -73
  167. package/.claude/commands/manage-kg-extractors.md +128 -0
  168. package/.claude/commands/manage-knowhow-capture.md +92 -82
  169. package/.claude/commands/manage-knowhow.md +83 -79
  170. package/.claude/commands/manage-knowledge-audit.md +105 -88
  171. package/.claude/commands/manage-status.md +62 -52
  172. package/.claude/commands/manage-wiki.md +82 -71
  173. package/.claude/commands/odyssey-debug.md +459 -473
  174. package/.claude/commands/odyssey-improve.md +491 -505
  175. package/.claude/commands/odyssey-planex.md +590 -601
  176. package/.claude/commands/odyssey-review-test-fix.md +414 -427
  177. package/.claude/commands/odyssey-ui.md +445 -462
  178. package/.claude/commands/quality-auto-test.md +153 -136
  179. package/.claude/commands/quality-debug.md +159 -120
  180. package/.claude/commands/quality-refactor.md +105 -67
  181. package/.claude/commands/quality-retrospective.md +123 -77
  182. package/.claude/commands/quality-review.md +155 -128
  183. package/.claude/commands/quality-sync.md +88 -52
  184. package/.claude/commands/quality-test.md +147 -117
  185. package/.claude/commands/security-audit.md +230 -179
  186. package/.claude/commands/spec-add.md +77 -70
  187. package/.claude/commands/spec-load.md +78 -78
  188. package/.claude/commands/spec-remove.md +55 -55
  189. package/.claude/commands/spec-setup.md +49 -52
  190. package/dist/src/cli.js +1 -1
  191. package/dist/src/cli.js.map +1 -1
  192. package/dist/src/commands/kg.d.ts.map +1 -1
  193. package/dist/src/commands/kg.js +11 -5
  194. package/dist/src/commands/kg.js.map +1 -1
  195. package/dist/src/graph/kg/extraction/code/code-extractor.d.ts +2 -0
  196. package/dist/src/graph/kg/extraction/code/code-extractor.d.ts.map +1 -1
  197. package/dist/src/graph/kg/extraction/code/code-extractor.js +32 -3
  198. package/dist/src/graph/kg/extraction/code/code-extractor.js.map +1 -1
  199. package/dist/src/graph/kg/extraction/code/plugin-engine.d.ts +35 -0
  200. package/dist/src/graph/kg/extraction/code/plugin-engine.d.ts.map +1 -0
  201. package/dist/src/graph/kg/extraction/code/plugin-engine.js +573 -0
  202. package/dist/src/graph/kg/extraction/code/plugin-engine.js.map +1 -0
  203. package/dist/src/graph/kg/extraction/code/plugin-types.d.ts +95 -0
  204. package/dist/src/graph/kg/extraction/code/plugin-types.d.ts.map +1 -0
  205. package/dist/src/graph/kg/extraction/code/plugin-types.js +5 -0
  206. package/dist/src/graph/kg/extraction/code/plugin-types.js.map +1 -0
  207. package/dist/src/graph/kg/extraction/orchestrator.d.ts.map +1 -1
  208. package/dist/src/graph/kg/extraction/orchestrator.js +17 -5
  209. package/dist/src/graph/kg/extraction/orchestrator.js.map +1 -1
  210. package/dist/src/graph/kg/schema.sql +16 -11
  211. package/dist/src/graph/kg/surface/cli.d.ts.map +1 -1
  212. package/dist/src/graph/kg/surface/cli.js +153 -56
  213. package/dist/src/graph/kg/surface/cli.js.map +1 -1
  214. package/dist/src/hooks/workspace.d.ts +4 -2
  215. package/dist/src/hooks/workspace.d.ts.map +1 -1
  216. package/dist/src/hooks/workspace.js +6 -2
  217. package/dist/src/hooks/workspace.js.map +1 -1
  218. package/package.json +91 -91
  219. package/workflows/analyze.md +25 -49
  220. package/workflows/auto-test.md +699 -699
  221. package/workflows/blueprint.md +403 -431
  222. package/workflows/brainstorm.md +54 -195
  223. package/workflows/business-test.md +570 -570
  224. package/workflows/claude-instructions.md +23 -51
  225. package/workflows/codex-instructions.md +27 -77
  226. package/workflows/coding-philosophy.md +69 -69
  227. package/workflows/command-authoring.md +823 -823
  228. package/workflows/debug.md +43 -98
  229. package/workflows/delegate-usage.md +39 -241
  230. package/workflows/execute.md +4 -53
  231. package/workflows/grill.md +12 -56
  232. package/workflows/harvest.md +22 -68
  233. package/workflows/init.md +148 -148
  234. package/workflows/instruction-authoring-guide.md +97 -0
  235. package/workflows/issue-execute.md +110 -110
  236. package/workflows/issue-gaps-analyze.codex.md +260 -260
  237. package/workflows/issue-gaps-analyze.md +216 -216
  238. package/workflows/issue-plan.md +110 -110
  239. package/workflows/issue.md +338 -346
  240. package/workflows/knowhow.md +0 -32
  241. package/workflows/learn.md +277 -277
  242. package/workflows/maestro-chain-execute.md +20 -20
  243. package/workflows/refactor.md +22 -44
  244. package/workflows/retrospective.md +16 -65
  245. package/workflows/review.md +446 -486
  246. package/workflows/roadmap.md +35 -132
  247. package/workflows/skill-authoring.md +265 -265
  248. package/workflows/spec-generate.md +470 -470
  249. package/workflows/specs-remove.md +104 -104
  250. package/workflows/sync.md +11 -41
  251. package/workflows/test-gen.md +226 -226
  252. package/workflows/test.md +385 -475
  253. package/workflows/ui-design.md +391 -391
  254. package/workflows/ui-style.md +199 -199
  255. package/workflows/wiki-connect.md +151 -151
  256. package/workflows/wiki-digest.md +178 -178
  257. package/workflows/wiki-manage.md +109 -109
  258. package/workflows/cli-tools-usage.md +0 -252
  259. package/workflows/delegate-protocol.codex.md +0 -65
@@ -0,0 +1,95 @@
1
+ import type { Language } from '../../db/types.js';
2
+ import type { ExtractedSymbol, ExtractedReference } from './tree-sitter-types.js';
3
+ export interface ExtractorPluginConfig {
4
+ version: 1;
5
+ defaults?: PluginDefaults;
6
+ plugins: PluginDefinition[];
7
+ }
8
+ export interface PluginDefaults {
9
+ timeoutMs?: number;
10
+ onError?: 'warn' | 'fail';
11
+ conflictPolicy?: ConflictPolicy;
12
+ }
13
+ export type ConflictPolicy = 'core-wins' | 'plugin-wins' | 'merge-metadata';
14
+ export interface PluginDefinition {
15
+ id: string;
16
+ description?: string;
17
+ enabled?: boolean;
18
+ languages: (Language | 'all')[];
19
+ filePatterns?: string[];
20
+ excludePatterns?: string[];
21
+ priority?: number;
22
+ mode: 'declarative' | 'script';
23
+ declarative?: DeclarativeSpec;
24
+ script?: ScriptSpec;
25
+ }
26
+ export interface DeclarativeSpec {
27
+ rules: PatternRule[];
28
+ }
29
+ export interface PatternRule {
30
+ id: string;
31
+ description?: string;
32
+ match: PatternMatch;
33
+ extract: ExtractSpec;
34
+ }
35
+ export type PatternMatchType = 'call' | 'assignment' | 'regex';
36
+ export type PatternScope = 'module' | 'class' | 'any';
37
+ export interface PatternMatch {
38
+ type: PatternMatchType;
39
+ pattern: string;
40
+ nameRegex?: string;
41
+ scope?: PatternScope;
42
+ }
43
+ export interface ExtractSpec {
44
+ kind: string;
45
+ name?: string;
46
+ qualifiedName?: string;
47
+ signature?: string;
48
+ visibility?: string;
49
+ isExported?: boolean;
50
+ isStatic?: boolean;
51
+ decorators?: string[];
52
+ metadata?: Record<string, string | boolean | number>;
53
+ }
54
+ export interface ScriptSpec {
55
+ module: string;
56
+ export?: string;
57
+ timeoutMs?: number;
58
+ }
59
+ export interface PluginExtractionResult {
60
+ symbols: PluginExtractedSymbol[];
61
+ references?: ExtractedReference[];
62
+ edges?: Array<{
63
+ source: string;
64
+ target: string;
65
+ kind: string;
66
+ line?: number;
67
+ col?: number;
68
+ }>;
69
+ }
70
+ export interface PluginExtractedSymbol extends ExtractedSymbol {
71
+ pluginMetadata?: Record<string, unknown>;
72
+ sourcePluginId?: string;
73
+ sourceRuleId?: string;
74
+ }
75
+ export interface PluginContext {
76
+ filePath: string;
77
+ language: Language;
78
+ sourceCode: string;
79
+ tree: unknown;
80
+ findAll(nodeType: string): AstNodeView[];
81
+ text(startLine: number, endLine: number): string;
82
+ makeSymbol(input: Partial<PluginExtractedSymbol>): PluginExtractedSymbol;
83
+ }
84
+ export interface AstNodeView {
85
+ type: string;
86
+ text: string;
87
+ startLine: number;
88
+ endLine: number;
89
+ startColumn: number;
90
+ endColumn: number;
91
+ children: AstNodeView[];
92
+ namedChildren: AstNodeView[];
93
+ childForFieldName(name: string): AstNodeView | null;
94
+ }
95
+ //# sourceMappingURL=plugin-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-types.d.ts","sourceRoot":"","sources":["../../../../../../src/graph/kg/extraction/code/plugin-types.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAMlF,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,CAAC,CAAC;IACX,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAED,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,aAAa,GAAG,gBAAgB,CAAC;AAM5E,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC,EAAE,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,aAAa,GAAG,QAAQ,CAAC;IAC/B,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB;AAMD,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,YAAY,CAAC;IACpB,OAAO,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,YAAY,GAAG,OAAO,CAAC;AAC/D,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,OAAO,GAAG,KAAK,CAAC;AAEtD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,gBAAgB,CAAC;IAIvB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC,CAAC;CACtD;AAMD,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAMD,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,qBAAqB,EAAE,CAAC;IACjC,UAAU,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAClC,KAAK,CAAC,EAAE,KAAK,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;CACJ;AAMD,MAAM,WAAW,qBAAsB,SAAQ,eAAe;IAC5D,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAMD,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,QAAQ,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,EAAE,CAAC;IACzC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACjD,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,qBAAqB,CAAC,GAAG,qBAAqB,CAAC;CAC1E;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,aAAa,EAAE,WAAW,EAAE,CAAC;IAC7B,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAAC;CACrD"}
@@ -0,0 +1,5 @@
1
+ // src/graph/kg/extraction/code/plugin-types.ts
2
+ // MaestroGraph extractor plugin system types
3
+ // Supports declarative (YAML rules) and script (.mjs) modes
4
+ export {};
5
+ //# sourceMappingURL=plugin-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-types.js","sourceRoot":"","sources":["../../../../../../src/graph/kg/extraction/code/plugin-types.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,6CAA6C;AAC7C,4DAA4D"}
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../../../../src/graph/kg/extraction/orchestrator.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE7D,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,UAAU,EAAE,CAAA;CAAE,GACnD,OAAO,CAAC,UAAU,EAAE,CAAC,CAoNvB"}
1
+ {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../../../../src/graph/kg/extraction/orchestrator.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE7D,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,UAAU,EAAE,CAAA;CAAE,GACnD,OAAO,CAAC,UAAU,EAAE,CAAC,CA+NvB"}
@@ -139,12 +139,13 @@ export async function syncKnowledgeGraph(projectPath, options) {
139
139
  if (shouldSync('codegraph')) {
140
140
  const startMs = Date.now();
141
141
  const removedCode = queries.deleteNodesBySourceType('codegraph');
142
- const candidateDirs = ['src', 'lib', 'app', 'packages', 'apps', 'dashboard/src'];
143
- const srcDirs = candidateDirs
142
+ const preferredDirs = ['src', 'lib', 'app', 'packages', 'apps', 'dashboard/src'];
143
+ const srcDirs = preferredDirs
144
144
  .map(d => resolve(projectPath, d))
145
145
  .filter(d => existsSync(d));
146
- if (srcDirs.length === 0)
147
- srcDirs.push(resolve(projectPath, 'src'));
146
+ if (srcDirs.length === 0) {
147
+ srcDirs.push(projectPath);
148
+ }
148
149
  let totalNodes = 0;
149
150
  let totalEdges = 0;
150
151
  for (const srcDir of srcDirs) {
@@ -152,12 +153,23 @@ export async function syncKnowledgeGraph(projectPath, options) {
152
153
  continue;
153
154
  const codeResult = await extractCode({
154
155
  srcDir,
156
+ projectRoot: projectPath,
155
157
  includeTests: false,
156
158
  maxFileSize: 500 * 1024,
157
159
  });
158
160
  for (const result of codeResult.results) {
159
161
  if (result.nodes.length > 0) {
160
- mg.insertExtractionResults(result);
162
+ try {
163
+ mg.insertExtractionResults(result);
164
+ }
165
+ catch {
166
+ // FK or unique constraint — insert nodes only, skip edges
167
+ try {
168
+ mg.getQueryBuilder().insertNodes(result.nodes);
169
+ mg.getQueryBuilder().upsertFile(result.fileRecord);
170
+ }
171
+ catch { /* skip this file entirely */ }
172
+ }
161
173
  }
162
174
  }
163
175
  totalNodes += codeResult.stats.nodesCreated;
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../../../../src/graph/kg/extraction/orchestrator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../../../../src/graph/kg/extraction/orchestrator.ts"],"names":[],"mappings":"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"}
@@ -151,13 +151,14 @@ CREATE INDEX IF NOT EXISTS idx_unresolved_from_name ON unresolved_refs(from_node
151
151
  -- knowledge_fts 使用 trigram (支持 CJK 子串匹配)
152
152
  -- ============================================================================
153
153
 
154
- -- 代码 FTS5
154
+ -- 代码 FTS5 (keywords 列存放 camelCase 分词,unicode61 自动按 JSON 标点拆分)
155
155
  CREATE VIRTUAL TABLE IF NOT EXISTS code_fts USING fts5(
156
156
  id,
157
157
  name,
158
158
  qualified_name,
159
159
  docstring,
160
160
  signature,
161
+ keywords,
161
162
  tokenize = 'unicode61 remove_diacritics 2',
162
163
  content = 'nodes',
163
164
  content_rowid = 'rowid'
@@ -178,8 +179,8 @@ CREATE VIRTUAL TABLE IF NOT EXISTS knowledge_fts USING fts5(
178
179
 
179
180
  -- FTS5 同步触发器 — 按 source_type 路由到不同索引 (D3.4: 移除 NULL 分支)
180
181
  CREATE TRIGGER IF NOT EXISTS nodes_ai AFTER INSERT ON nodes BEGIN
181
- INSERT INTO code_fts(rowid, id, name, qualified_name, docstring, signature)
182
- SELECT NEW.rowid, NEW.id, NEW.name, NEW.qualified_name, NEW.docstring, NEW.signature
182
+ INSERT INTO code_fts(rowid, id, name, qualified_name, docstring, signature, keywords)
183
+ SELECT NEW.rowid, NEW.id, NEW.name, NEW.qualified_name, NEW.docstring, NEW.signature, NEW.keywords
183
184
  WHERE NEW.source_type = 'codegraph';
184
185
 
185
186
  INSERT INTO knowledge_fts(rowid, id, name, definition, body, aliases, keywords)
@@ -188,22 +189,26 @@ CREATE TRIGGER IF NOT EXISTS nodes_ai AFTER INSERT ON nodes BEGIN
188
189
  END;
189
190
 
190
191
  CREATE TRIGGER IF NOT EXISTS nodes_ad AFTER DELETE ON nodes BEGIN
191
- INSERT INTO code_fts(code_fts, rowid, id, name, qualified_name, docstring, signature)
192
- VALUES ('delete', OLD.rowid, OLD.id, OLD.name, OLD.qualified_name, OLD.docstring, OLD.signature);
192
+ INSERT INTO code_fts(code_fts, rowid, id, name, qualified_name, docstring, signature, keywords)
193
+ SELECT 'delete', OLD.rowid, OLD.id, OLD.name, OLD.qualified_name, OLD.docstring, OLD.signature, OLD.keywords
194
+ WHERE OLD.source_type = 'codegraph';
193
195
 
194
196
  INSERT INTO knowledge_fts(knowledge_fts, rowid, id, name, definition, body, aliases, keywords)
195
- VALUES ('delete', OLD.rowid, OLD.id, OLD.name, OLD.definition, OLD.body, OLD.aliases, OLD.keywords);
197
+ SELECT 'delete', OLD.rowid, OLD.id, OLD.name, OLD.definition, OLD.body, OLD.aliases, OLD.keywords
198
+ WHERE OLD.source_type != 'codegraph';
196
199
  END;
197
200
 
198
201
  CREATE TRIGGER IF NOT EXISTS nodes_au AFTER UPDATE ON nodes BEGIN
199
- INSERT INTO code_fts(code_fts, rowid, id, name, qualified_name, docstring, signature)
200
- VALUES ('delete', OLD.rowid, OLD.id, OLD.name, OLD.qualified_name, OLD.docstring, OLD.signature);
201
- INSERT INTO code_fts(rowid, id, name, qualified_name, docstring, signature)
202
- SELECT NEW.rowid, NEW.id, NEW.name, NEW.qualified_name, NEW.docstring, NEW.signature
202
+ INSERT INTO code_fts(code_fts, rowid, id, name, qualified_name, docstring, signature, keywords)
203
+ SELECT 'delete', OLD.rowid, OLD.id, OLD.name, OLD.qualified_name, OLD.docstring, OLD.signature, OLD.keywords
204
+ WHERE OLD.source_type = 'codegraph';
205
+ INSERT INTO code_fts(rowid, id, name, qualified_name, docstring, signature, keywords)
206
+ SELECT NEW.rowid, NEW.id, NEW.name, NEW.qualified_name, NEW.docstring, NEW.signature, NEW.keywords
203
207
  WHERE NEW.source_type = 'codegraph';
204
208
 
205
209
  INSERT INTO knowledge_fts(knowledge_fts, rowid, id, name, definition, body, aliases, keywords)
206
- VALUES ('delete', OLD.rowid, OLD.id, OLD.name, OLD.definition, OLD.body, OLD.aliases, OLD.keywords);
210
+ SELECT 'delete', OLD.rowid, OLD.id, OLD.name, OLD.definition, OLD.body, OLD.aliases, OLD.keywords
211
+ WHERE OLD.source_type != 'codegraph';
207
212
  INSERT INTO knowledge_fts(rowid, id, name, definition, body, aliases, keywords)
208
213
  SELECT NEW.rowid, NEW.id, NEW.name, NEW.definition, NEW.body, NEW.aliases, NEW.keywords
209
214
  WHERE NEW.source_type != 'codegraph';
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../../../../src/graph/kg/surface/cli.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAczC,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+fzD"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../../../../src/graph/kg/surface/cli.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsFzC,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqiBzD"}
@@ -7,6 +7,65 @@ import { parseQuery } from '../query/search.js';
7
7
  import { findShortestPath } from '../query/traversal.js';
8
8
  import { syncKnowledgeGraph } from '../extraction/orchestrator.js';
9
9
  import { getKgDatabasePath } from '../db/connection.js';
10
+ function parseCsv(value) {
11
+ return value
12
+ ? value.split(',').map((s) => s.trim()).filter(Boolean)
13
+ : undefined;
14
+ }
15
+ function normalizeSources(value) {
16
+ return parseCsv(value);
17
+ }
18
+ function printSyncResults(results) {
19
+ let totalNodes = 0;
20
+ let totalEdges = 0;
21
+ for (const r of results) {
22
+ totalNodes += r.nodesAdded;
23
+ totalEdges += r.edgesAdded;
24
+ console.log(` ${r.source}: +${r.nodesAdded} nodes, +${r.edgesAdded} edges (${r.durationMs}ms)`);
25
+ }
26
+ console.log(`\nTotal: ${totalNodes} nodes, ${totalEdges} edges`);
27
+ }
28
+ async function syncProject(opts, label = 'Syncing MaestroGraph...') {
29
+ const projectRoot = resolve('.');
30
+ const sources = normalizeSources(opts.source);
31
+ if (!opts.json)
32
+ console.log(label);
33
+ const results = await syncKnowledgeGraph(projectRoot, {
34
+ full: opts.full,
35
+ sources,
36
+ });
37
+ if (opts.json) {
38
+ console.log(JSON.stringify(results, null, 2));
39
+ return;
40
+ }
41
+ printSyncResults(results);
42
+ }
43
+ async function openGraph() {
44
+ const projectRoot = resolve('.');
45
+ if (!MaestroGraph.isInitialized(projectRoot)) {
46
+ console.error('MaestroGraph not initialized for this project.');
47
+ console.error(' Run: maestro kg sync');
48
+ process.exit(1);
49
+ }
50
+ return MaestroGraph.open(projectRoot);
51
+ }
52
+ function formatNodeLabel(node) {
53
+ const loc = node.filePath ? ` ${node.filePath}:${node.startLine}` : '';
54
+ const detail = node.signature || node.definition;
55
+ const suffix = detail ? ` -- ${detail.substring(0, 80)}` : '';
56
+ return `[${node.sourceType}:${node.kind}] ${node.name}${loc}${suffix}`;
57
+ }
58
+ function resolveNodeOrExit(mg, query) {
59
+ const direct = mg.getNode(query);
60
+ if (direct)
61
+ return direct;
62
+ const matches = mg.searchUnified(query, { sourceTypes: ['codegraph'], limit: 5 }).directMatches;
63
+ if (matches.length === 0) {
64
+ console.error(`Node not found: ${query}`);
65
+ process.exit(1);
66
+ }
67
+ return matches[0].node;
68
+ }
10
69
  // ---------------------------------------------------------------------------
11
70
  // 注册 maestro kg 子命令
12
71
  // ---------------------------------------------------------------------------
@@ -36,22 +95,20 @@ export function registerKgCommands(program) {
36
95
  .option('--full', 'Full rebuild (ignore file hashes)')
37
96
  .option('--source <sources>', 'Comma-separated sources: domain,spec,knowhow,codebase,issue,codegraph')
38
97
  .option('--json', 'Output as JSON')
39
- .action(async (opts) => {
40
- const projectRoot = resolve('.');
41
- const sources = opts.source ? opts.source.split(',').map((s) => s.trim()) : undefined;
42
- console.log('Syncing MaestroGraph...');
43
- const results = await syncKnowledgeGraph(projectRoot, {
44
- full: opts.full,
45
- sources: sources, // eslint-disable-line @typescript-eslint/no-explicit-any
46
- });
47
- if (opts.json) {
48
- console.log(JSON.stringify(results, null, 2));
49
- return;
50
- }
51
- for (const r of results) {
52
- console.log(` ${r.source}: +${r.nodesAdded} nodes, +${r.edgesAdded} edges (${r.durationMs}ms)`);
53
- }
54
- });
98
+ .action(async (opts) => syncProject(opts));
99
+ kg
100
+ .command('sync-all')
101
+ .description('Compatibility alias for sync — sync all MaestroGraph sources')
102
+ .option('--full', 'Full rebuild (ignore file hashes)')
103
+ .option('--source <sources>', 'Comma-separated sources: domain,spec,knowhow,codebase,issue,codegraph')
104
+ .option('--json', 'Output as JSON')
105
+ .action(async (opts) => syncProject(opts, 'Syncing MaestroGraph (all knowledge sources)...'));
106
+ kg
107
+ .command('index')
108
+ .description('Compatibility alias for sync --source codegraph')
109
+ .option('--src <path>', 'Accepted for compatibility; MaestroGraph auto-detects source roots')
110
+ .option('--json', 'Output as JSON')
111
+ .action(async (opts) => syncProject({ source: 'codegraph', json: opts.json }, 'Indexing code with MaestroGraph...'));
55
112
  // ── query ─────────────────────────────────────────────────────────
56
113
  kg
57
114
  .command('query <text>')
@@ -94,21 +151,54 @@ export function registerKgCommands(program) {
94
151
  mg.close();
95
152
  }
96
153
  });
154
+ kg
155
+ .command('search <text>')
156
+ .description('Compatibility alias for query')
157
+ .option('--source <types>', 'Filter by source type (comma-separated)')
158
+ .option('--kind <types>', 'Filter by node kind')
159
+ .option('--limit <n>', 'Max results', '20')
160
+ .option('--json', 'Output as JSON')
161
+ .action(async (text, opts) => {
162
+ const mg = await openGraph();
163
+ try {
164
+ const parsed = parseQuery(text);
165
+ const sourceTypes = parseCsv(opts.source) ?? (parsed.sourceTypes.length > 0 ? parsed.sourceTypes : undefined);
166
+ const kinds = parseCsv(opts.kind) ?? (parsed.kinds.length > 0 ? parsed.kinds : undefined);
167
+ const effectiveText = parsed.text || text;
168
+ const output = mg.searchUnified(effectiveText, {
169
+ sourceTypes: sourceTypes,
170
+ kinds,
171
+ limit: Math.min(Number(opts.limit) || 20, 500),
172
+ });
173
+ if (opts.json) {
174
+ console.log(JSON.stringify({
175
+ query: text,
176
+ total: output.directMatches.length,
177
+ nodes: output.directMatches.map(r => ({ ...r.node, score: r.score })),
178
+ engine: 'maestrograph',
179
+ }, null, 2));
180
+ return;
181
+ }
182
+ console.log(`Search: "${effectiveText}" (${output.directMatches.length} results, MaestroGraph)`);
183
+ for (const r of output.directMatches) {
184
+ console.log(` ${r.node.id} ${formatNodeLabel(r.node)} (${r.score.toFixed(1)})`);
185
+ }
186
+ }
187
+ finally {
188
+ mg.close();
189
+ }
190
+ });
97
191
  // ── context ───────────────────────────────────────────────────────
98
192
  kg
99
- .command('context <node-id>')
100
- .description('Show full context for a node (all related layers)')
193
+ .command('context <node>')
194
+ .description('Show full context for a node id or symbol name (all related layers)')
101
195
  .option('--depth <n>', 'Graph traversal depth', '1')
102
196
  .option('--json', 'Output as JSON')
103
- .action(async (nodeId, opts) => {
104
- const mg = await MaestroGraph.open(resolve('.'));
197
+ .action(async (nodeQuery, opts) => {
198
+ const mg = await openGraph();
105
199
  try {
106
- const node = mg.getNode(nodeId);
107
- if (!node) {
108
- console.error(`Node not found: ${nodeId}`);
109
- process.exit(1);
110
- }
111
- const traversal = mg.traverse(nodeId, {
200
+ const node = resolveNodeOrExit(mg, nodeQuery);
201
+ const traversal = mg.traverse(node.id, {
112
202
  maxDepth: Math.min(Number(opts.depth) || 1, 10),
113
203
  });
114
204
  if (opts.json) {
@@ -118,9 +208,12 @@ export function registerKgCommands(program) {
118
208
  id: n.id, kind: n.kind, name: n.name, sourceType: n.sourceType,
119
209
  })),
120
210
  edges: traversal.edges,
211
+ resolvedFrom: nodeQuery,
121
212
  }, null, 2));
122
213
  return;
123
214
  }
215
+ if (node.id !== nodeQuery)
216
+ console.log(`Resolved "${nodeQuery}" -> ${node.id}`);
124
217
  console.log(`Node: [${node.sourceType}:${node.kind}] ${node.name}`);
125
218
  if (node.definition)
126
219
  console.log(` Definition: ${node.definition}`);
@@ -129,7 +222,7 @@ export function registerKgCommands(program) {
129
222
  if (traversal.nodes.size > 1) {
130
223
  console.log(`\nRelated (${traversal.nodes.size - 1}):`);
131
224
  for (const [id, related] of traversal.nodes) {
132
- if (id === nodeId)
225
+ if (id === node.id)
133
226
  continue;
134
227
  console.log(` [${related.sourceType}:${related.kind}] ${related.name}`);
135
228
  }
@@ -171,23 +264,24 @@ export function registerKgCommands(program) {
171
264
  });
172
265
  // ── callers ───────────────────────────────────────────────────────
173
266
  kg
174
- .command('callers <node-id>')
175
- .description('Show callers of a function/method')
267
+ .command('callers <node>')
268
+ .description('Show callers of a function/method by node id or symbol name')
176
269
  .option('--depth <n>', 'Traversal depth', '1')
177
270
  .option('--json', 'Output as JSON')
178
- .action(async (nodeId, opts) => {
179
- const mg = await MaestroGraph.open(resolve('.'));
271
+ .action(async (nodeQuery, opts) => {
272
+ const mg = await openGraph();
180
273
  try {
181
- const callers = mg.getCallers(nodeId, Math.min(Number(opts.depth) || 1, 10));
274
+ const node = resolveNodeOrExit(mg, nodeQuery);
275
+ const callers = mg.getCallers(node.id, Math.min(Number(opts.depth) || 1, 10));
182
276
  if (opts.json) {
183
- console.log(JSON.stringify(callers.map(c => ({
184
- id: c.node.id, name: c.node.name, kind: c.node.kind, edgeKind: c.edge.kind,
185
- })), null, 2));
277
+ console.log(JSON.stringify({ node: node.id, callers: callers.map(c => ({
278
+ id: c.node.id, name: c.node.name, kind: c.node.kind, edgeKind: c.edge.kind,
279
+ })) }, null, 2));
186
280
  return;
187
281
  }
188
- console.log(`Callers of ${nodeId} (${callers.length}):`);
282
+ console.log(`Callers of ${node.id} (${callers.length}):`);
189
283
  for (const { node, edge } of callers) {
190
- console.log(` [${node.kind}] ${node.name} --${edge.kind}-->`);
284
+ console.log(` ${formatNodeLabel(node)} --${edge.kind}-->`);
191
285
  }
192
286
  }
193
287
  finally {
@@ -196,23 +290,24 @@ export function registerKgCommands(program) {
196
290
  });
197
291
  // ── callees ───────────────────────────────────────────────────────
198
292
  kg
199
- .command('callees <node-id>')
200
- .description('Show callees of a function/method')
293
+ .command('callees <node>')
294
+ .description('Show callees of a function/method by node id or symbol name')
201
295
  .option('--depth <n>', 'Traversal depth', '1')
202
296
  .option('--json', 'Output as JSON')
203
- .action(async (nodeId, opts) => {
204
- const mg = await MaestroGraph.open(resolve('.'));
297
+ .action(async (nodeQuery, opts) => {
298
+ const mg = await openGraph();
205
299
  try {
206
- const callees = mg.getCallees(nodeId, Math.min(Number(opts.depth) || 1, 10));
300
+ const node = resolveNodeOrExit(mg, nodeQuery);
301
+ const callees = mg.getCallees(node.id, Math.min(Number(opts.depth) || 1, 10));
207
302
  if (opts.json) {
208
- console.log(JSON.stringify(callees.map(c => ({
209
- id: c.node.id, name: c.node.name, kind: c.node.kind, edgeKind: c.edge.kind,
210
- })), null, 2));
303
+ console.log(JSON.stringify({ node: node.id, callees: callees.map(c => ({
304
+ id: c.node.id, name: c.node.name, kind: c.node.kind, edgeKind: c.edge.kind,
305
+ })) }, null, 2));
211
306
  return;
212
307
  }
213
- console.log(`Callees of ${nodeId} (${callees.length}):`);
308
+ console.log(`Callees of ${node.id} (${callees.length}):`);
214
309
  for (const { node, edge } of callees) {
215
- console.log(` --${edge.kind}--> [${node.kind}] ${node.name}`);
310
+ console.log(` --${edge.kind}--> ${formatNodeLabel(node)}`);
216
311
  }
217
312
  }
218
313
  finally {
@@ -221,27 +316,29 @@ export function registerKgCommands(program) {
221
316
  });
222
317
  // ── impact ────────────────────────────────────────────────────────
223
318
  kg
224
- .command('impact <node-id>')
225
- .description('Show transitive impact radius')
319
+ .command('impact <node>')
320
+ .description('Show transitive impact radius by node id or symbol name')
226
321
  .option('--depth <n>', 'Max depth', '3')
227
322
  .option('--json', 'Output as JSON')
228
- .action(async (nodeId, opts) => {
229
- const mg = await MaestroGraph.open(resolve('.'));
323
+ .action(async (nodeQuery, opts) => {
324
+ const mg = await openGraph();
230
325
  try {
231
- const impact = mg.getImpact(nodeId, Math.min(Number(opts.depth) || 3, 10));
326
+ const node = resolveNodeOrExit(mg, nodeQuery);
327
+ const impact = mg.getImpact(node.id, Math.min(Number(opts.depth) || 3, 10));
232
328
  if (opts.json) {
233
329
  console.log(JSON.stringify({
330
+ node: node.id,
234
331
  nodeCount: impact.nodes.size,
235
332
  edgeCount: impact.edges.length,
236
333
  nodes: [...impact.nodes.values()].map(n => ({ id: n.id, kind: n.kind, name: n.name })),
237
334
  }, null, 2));
238
335
  return;
239
336
  }
240
- console.log(`Impact radius for ${nodeId}: ${impact.nodes.size} nodes, ${impact.edges.length} edges`);
241
- for (const node of impact.nodes.values()) {
242
- if (node.id === nodeId)
337
+ console.log(`Impact radius for ${node.id}: ${impact.nodes.size} nodes, ${impact.edges.length} edges`);
338
+ for (const related of impact.nodes.values()) {
339
+ if (related.id === node.id)
243
340
  continue;
244
- console.log(` [${node.sourceType}:${node.kind}] ${node.name}`);
341
+ console.log(` ${formatNodeLabel(related)}`);
245
342
  }
246
343
  }
247
344
  finally {