@vohongtho.infotech/code-intel 0.1.3 → 0.1.5

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 (382) hide show
  1. package/README.md +44 -6
  2. package/dist/cli/main.js +4738 -237
  3. package/dist/cli/main.js.map +1 -1
  4. package/dist/index.d.ts +396 -31
  5. package/dist/index.js +4832 -17
  6. package/dist/index.js.map +1 -1
  7. package/package.json +17 -12
  8. package/dist/call-graph/call-builder.d.ts +0 -6
  9. package/dist/call-graph/call-builder.d.ts.map +0 -1
  10. package/dist/call-graph/call-builder.js +0 -69
  11. package/dist/call-graph/call-builder.js.map +0 -1
  12. package/dist/call-graph/call-classifier.d.ts +0 -12
  13. package/dist/call-graph/call-classifier.d.ts.map +0 -1
  14. package/dist/call-graph/call-classifier.js +0 -11
  15. package/dist/call-graph/call-classifier.js.map +0 -1
  16. package/dist/call-graph/index.d.ts +0 -4
  17. package/dist/call-graph/index.d.ts.map +0 -1
  18. package/dist/call-graph/index.js +0 -3
  19. package/dist/call-graph/index.js.map +0 -1
  20. package/dist/cli/context-writer.d.ts +0 -18
  21. package/dist/cli/context-writer.d.ts.map +0 -1
  22. package/dist/cli/context-writer.js +0 -104
  23. package/dist/cli/context-writer.js.map +0 -1
  24. package/dist/cli/main.d.ts +0 -3
  25. package/dist/cli/main.d.ts.map +0 -1
  26. package/dist/cli/skill-writer.d.ts +0 -17
  27. package/dist/cli/skill-writer.d.ts.map +0 -1
  28. package/dist/cli/skill-writer.js +0 -249
  29. package/dist/cli/skill-writer.js.map +0 -1
  30. package/dist/clustering/community-detector.d.ts +0 -9
  31. package/dist/clustering/community-detector.d.ts.map +0 -1
  32. package/dist/clustering/community-detector.js +0 -67
  33. package/dist/clustering/community-detector.js.map +0 -1
  34. package/dist/clustering/index.d.ts +0 -3
  35. package/dist/clustering/index.d.ts.map +0 -1
  36. package/dist/clustering/index.js +0 -2
  37. package/dist/clustering/index.js.map +0 -1
  38. package/dist/flow-detection/entry-point-finder.d.ts +0 -14
  39. package/dist/flow-detection/entry-point-finder.d.ts.map +0 -1
  40. package/dist/flow-detection/entry-point-finder.js +0 -86
  41. package/dist/flow-detection/entry-point-finder.js.map +0 -1
  42. package/dist/flow-detection/index.d.ts +0 -3
  43. package/dist/flow-detection/index.d.ts.map +0 -1
  44. package/dist/flow-detection/index.js +0 -2
  45. package/dist/flow-detection/index.js.map +0 -1
  46. package/dist/graph/id-generator.d.ts +0 -4
  47. package/dist/graph/id-generator.d.ts.map +0 -1
  48. package/dist/graph/id-generator.js +0 -7
  49. package/dist/graph/id-generator.js.map +0 -1
  50. package/dist/graph/index.d.ts +0 -4
  51. package/dist/graph/index.d.ts.map +0 -1
  52. package/dist/graph/index.js +0 -3
  53. package/dist/graph/index.js.map +0 -1
  54. package/dist/graph/knowledge-graph.d.ts +0 -21
  55. package/dist/graph/knowledge-graph.d.ts.map +0 -1
  56. package/dist/graph/knowledge-graph.js +0 -126
  57. package/dist/graph/knowledge-graph.js.map +0 -1
  58. package/dist/http/app.d.ts +0 -5
  59. package/dist/http/app.d.ts.map +0 -1
  60. package/dist/http/app.js +0 -361
  61. package/dist/http/app.js.map +0 -1
  62. package/dist/http/index.d.ts +0 -2
  63. package/dist/http/index.d.ts.map +0 -1
  64. package/dist/http/index.js +0 -2
  65. package/dist/http/index.js.map +0 -1
  66. package/dist/index.d.ts.map +0 -1
  67. package/dist/inheritance/heritage-builder.d.ts +0 -9
  68. package/dist/inheritance/heritage-builder.d.ts.map +0 -1
  69. package/dist/inheritance/heritage-builder.js +0 -40
  70. package/dist/inheritance/heritage-builder.js.map +0 -1
  71. package/dist/inheritance/index.d.ts +0 -6
  72. package/dist/inheritance/index.d.ts.map +0 -1
  73. package/dist/inheritance/index.js +0 -4
  74. package/dist/inheritance/index.js.map +0 -1
  75. package/dist/inheritance/mro-walker.d.ts +0 -3
  76. package/dist/inheritance/mro-walker.d.ts.map +0 -1
  77. package/dist/inheritance/mro-walker.js +0 -80
  78. package/dist/inheritance/mro-walker.js.map +0 -1
  79. package/dist/inheritance/override-detector.d.ts +0 -4
  80. package/dist/inheritance/override-detector.d.ts.map +0 -1
  81. package/dist/inheritance/override-detector.js +0 -39
  82. package/dist/inheritance/override-detector.js.map +0 -1
  83. package/dist/languages/index.d.ts +0 -3
  84. package/dist/languages/index.d.ts.map +0 -1
  85. package/dist/languages/index.js +0 -2
  86. package/dist/languages/index.js.map +0 -1
  87. package/dist/languages/modules/c.d.ts +0 -3
  88. package/dist/languages/modules/c.d.ts.map +0 -1
  89. package/dist/languages/modules/c.js +0 -23
  90. package/dist/languages/modules/c.js.map +0 -1
  91. package/dist/languages/modules/cpp.d.ts +0 -3
  92. package/dist/languages/modules/cpp.d.ts.map +0 -1
  93. package/dist/languages/modules/cpp.js +0 -23
  94. package/dist/languages/modules/cpp.js.map +0 -1
  95. package/dist/languages/modules/csharp.d.ts +0 -3
  96. package/dist/languages/modules/csharp.d.ts.map +0 -1
  97. package/dist/languages/modules/csharp.js +0 -21
  98. package/dist/languages/modules/csharp.js.map +0 -1
  99. package/dist/languages/modules/dart.d.ts +0 -3
  100. package/dist/languages/modules/dart.d.ts.map +0 -1
  101. package/dist/languages/modules/dart.js +0 -30
  102. package/dist/languages/modules/dart.js.map +0 -1
  103. package/dist/languages/modules/go.d.ts +0 -3
  104. package/dist/languages/modules/go.d.ts.map +0 -1
  105. package/dist/languages/modules/go.js +0 -25
  106. package/dist/languages/modules/go.js.map +0 -1
  107. package/dist/languages/modules/java.d.ts +0 -3
  108. package/dist/languages/modules/java.d.ts.map +0 -1
  109. package/dist/languages/modules/java.js +0 -23
  110. package/dist/languages/modules/java.js.map +0 -1
  111. package/dist/languages/modules/kotlin.d.ts +0 -3
  112. package/dist/languages/modules/kotlin.d.ts.map +0 -1
  113. package/dist/languages/modules/kotlin.js +0 -22
  114. package/dist/languages/modules/kotlin.js.map +0 -1
  115. package/dist/languages/modules/php.d.ts +0 -3
  116. package/dist/languages/modules/php.d.ts.map +0 -1
  117. package/dist/languages/modules/php.js +0 -21
  118. package/dist/languages/modules/php.js.map +0 -1
  119. package/dist/languages/modules/python.d.ts +0 -3
  120. package/dist/languages/modules/python.d.ts.map +0 -1
  121. package/dist/languages/modules/python.js +0 -36
  122. package/dist/languages/modules/python.js.map +0 -1
  123. package/dist/languages/modules/ruby.d.ts +0 -3
  124. package/dist/languages/modules/ruby.d.ts.map +0 -1
  125. package/dist/languages/modules/ruby.js +0 -20
  126. package/dist/languages/modules/ruby.js.map +0 -1
  127. package/dist/languages/modules/rust.d.ts +0 -3
  128. package/dist/languages/modules/rust.d.ts.map +0 -1
  129. package/dist/languages/modules/rust.js +0 -23
  130. package/dist/languages/modules/rust.js.map +0 -1
  131. package/dist/languages/modules/swift.d.ts +0 -3
  132. package/dist/languages/modules/swift.d.ts.map +0 -1
  133. package/dist/languages/modules/swift.js +0 -21
  134. package/dist/languages/modules/swift.js.map +0 -1
  135. package/dist/languages/modules/typescript.d.ts +0 -4
  136. package/dist/languages/modules/typescript.d.ts.map +0 -1
  137. package/dist/languages/modules/typescript.js +0 -47
  138. package/dist/languages/modules/typescript.js.map +0 -1
  139. package/dist/languages/registry.d.ts +0 -5
  140. package/dist/languages/registry.d.ts.map +0 -1
  141. package/dist/languages/registry.js +0 -37
  142. package/dist/languages/registry.js.map +0 -1
  143. package/dist/languages/types.d.ts +0 -18
  144. package/dist/languages/types.d.ts.map +0 -1
  145. package/dist/languages/types.js +0 -2
  146. package/dist/languages/types.js.map +0 -1
  147. package/dist/mcp-server/index.d.ts +0 -2
  148. package/dist/mcp-server/index.d.ts.map +0 -1
  149. package/dist/mcp-server/index.js +0 -2
  150. package/dist/mcp-server/index.js.map +0 -1
  151. package/dist/mcp-server/server.d.ts +0 -5
  152. package/dist/mcp-server/server.d.ts.map +0 -1
  153. package/dist/mcp-server/server.js +0 -224
  154. package/dist/mcp-server/server.js.map +0 -1
  155. package/dist/multi-repo/cross-repo-search.d.ts +0 -3
  156. package/dist/multi-repo/cross-repo-search.d.ts.map +0 -1
  157. package/dist/multi-repo/cross-repo-search.js +0 -5
  158. package/dist/multi-repo/cross-repo-search.js.map +0 -1
  159. package/dist/multi-repo/group-config.d.ts +0 -10
  160. package/dist/multi-repo/group-config.d.ts.map +0 -1
  161. package/dist/multi-repo/group-config.js +0 -54
  162. package/dist/multi-repo/group-config.js.map +0 -1
  163. package/dist/multi-repo/group-manager.d.ts +0 -6
  164. package/dist/multi-repo/group-manager.d.ts.map +0 -1
  165. package/dist/multi-repo/group-manager.js +0 -42
  166. package/dist/multi-repo/group-manager.js.map +0 -1
  167. package/dist/multi-repo/index.d.ts +0 -5
  168. package/dist/multi-repo/index.d.ts.map +0 -1
  169. package/dist/multi-repo/index.js +0 -4
  170. package/dist/multi-repo/index.js.map +0 -1
  171. package/dist/parsing/ast-cache.d.ts +0 -13
  172. package/dist/parsing/ast-cache.d.ts.map +0 -1
  173. package/dist/parsing/ast-cache.js +0 -45
  174. package/dist/parsing/ast-cache.js.map +0 -1
  175. package/dist/parsing/index.d.ts +0 -5
  176. package/dist/parsing/index.d.ts.map +0 -1
  177. package/dist/parsing/index.js +0 -4
  178. package/dist/parsing/index.js.map +0 -1
  179. package/dist/parsing/parser-manager.d.ts +0 -7
  180. package/dist/parsing/parser-manager.d.ts.map +0 -1
  181. package/dist/parsing/parser-manager.js +0 -48
  182. package/dist/parsing/parser-manager.js.map +0 -1
  183. package/dist/parsing/queries/c.d.ts +0 -2
  184. package/dist/parsing/queries/c.d.ts.map +0 -1
  185. package/dist/parsing/queries/c.js +0 -32
  186. package/dist/parsing/queries/c.js.map +0 -1
  187. package/dist/parsing/queries/cpp.d.ts +0 -2
  188. package/dist/parsing/queries/cpp.d.ts.map +0 -1
  189. package/dist/parsing/queries/cpp.js +0 -45
  190. package/dist/parsing/queries/cpp.js.map +0 -1
  191. package/dist/parsing/queries/csharp.d.ts +0 -2
  192. package/dist/parsing/queries/csharp.d.ts.map +0 -1
  193. package/dist/parsing/queries/csharp.js +0 -55
  194. package/dist/parsing/queries/csharp.js.map +0 -1
  195. package/dist/parsing/queries/go.d.ts +0 -2
  196. package/dist/parsing/queries/go.d.ts.map +0 -1
  197. package/dist/parsing/queries/go.js +0 -46
  198. package/dist/parsing/queries/go.js.map +0 -1
  199. package/dist/parsing/queries/index.d.ts +0 -13
  200. package/dist/parsing/queries/index.d.ts.map +0 -1
  201. package/dist/parsing/queries/index.js +0 -13
  202. package/dist/parsing/queries/index.js.map +0 -1
  203. package/dist/parsing/queries/java.d.ts +0 -2
  204. package/dist/parsing/queries/java.d.ts.map +0 -1
  205. package/dist/parsing/queries/java.js +0 -46
  206. package/dist/parsing/queries/java.js.map +0 -1
  207. package/dist/parsing/queries/kotlin.d.ts +0 -2
  208. package/dist/parsing/queries/kotlin.d.ts.map +0 -1
  209. package/dist/parsing/queries/kotlin.js +0 -41
  210. package/dist/parsing/queries/kotlin.js.map +0 -1
  211. package/dist/parsing/queries/php.d.ts +0 -2
  212. package/dist/parsing/queries/php.d.ts.map +0 -1
  213. package/dist/parsing/queries/php.js +0 -60
  214. package/dist/parsing/queries/php.js.map +0 -1
  215. package/dist/parsing/queries/python.d.ts +0 -2
  216. package/dist/parsing/queries/python.d.ts.map +0 -1
  217. package/dist/parsing/queries/python.js +0 -47
  218. package/dist/parsing/queries/python.js.map +0 -1
  219. package/dist/parsing/queries/ruby.d.ts +0 -2
  220. package/dist/parsing/queries/ruby.d.ts.map +0 -1
  221. package/dist/parsing/queries/ruby.js +0 -36
  222. package/dist/parsing/queries/ruby.js.map +0 -1
  223. package/dist/parsing/queries/rust.d.ts +0 -2
  224. package/dist/parsing/queries/rust.d.ts.map +0 -1
  225. package/dist/parsing/queries/rust.js +0 -47
  226. package/dist/parsing/queries/rust.js.map +0 -1
  227. package/dist/parsing/queries/swift.d.ts +0 -2
  228. package/dist/parsing/queries/swift.d.ts.map +0 -1
  229. package/dist/parsing/queries/swift.js +0 -39
  230. package/dist/parsing/queries/swift.js.map +0 -1
  231. package/dist/parsing/queries/typescript.d.ts +0 -2
  232. package/dist/parsing/queries/typescript.d.ts.map +0 -1
  233. package/dist/parsing/queries/typescript.js +0 -84
  234. package/dist/parsing/queries/typescript.js.map +0 -1
  235. package/dist/parsing/query-runner.d.ts +0 -8
  236. package/dist/parsing/query-runner.d.ts.map +0 -1
  237. package/dist/parsing/query-runner.js +0 -16
  238. package/dist/parsing/query-runner.js.map +0 -1
  239. package/dist/pipeline/dag-validator.d.ts +0 -8
  240. package/dist/pipeline/dag-validator.d.ts.map +0 -1
  241. package/dist/pipeline/dag-validator.js +0 -88
  242. package/dist/pipeline/dag-validator.js.map +0 -1
  243. package/dist/pipeline/index.d.ts +0 -6
  244. package/dist/pipeline/index.d.ts.map +0 -1
  245. package/dist/pipeline/index.js +0 -4
  246. package/dist/pipeline/index.js.map +0 -1
  247. package/dist/pipeline/orchestrator.d.ts +0 -8
  248. package/dist/pipeline/orchestrator.d.ts.map +0 -1
  249. package/dist/pipeline/orchestrator.js +0 -47
  250. package/dist/pipeline/orchestrator.js.map +0 -1
  251. package/dist/pipeline/phases/cluster-phase.d.ts +0 -3
  252. package/dist/pipeline/phases/cluster-phase.d.ts.map +0 -1
  253. package/dist/pipeline/phases/cluster-phase.js +0 -52
  254. package/dist/pipeline/phases/cluster-phase.js.map +0 -1
  255. package/dist/pipeline/phases/flow-phase.d.ts +0 -3
  256. package/dist/pipeline/phases/flow-phase.d.ts.map +0 -1
  257. package/dist/pipeline/phases/flow-phase.js +0 -92
  258. package/dist/pipeline/phases/flow-phase.js.map +0 -1
  259. package/dist/pipeline/phases/index.d.ts +0 -6
  260. package/dist/pipeline/phases/index.d.ts.map +0 -1
  261. package/dist/pipeline/phases/index.js +0 -6
  262. package/dist/pipeline/phases/index.js.map +0 -1
  263. package/dist/pipeline/phases/parse-phase.d.ts +0 -3
  264. package/dist/pipeline/phases/parse-phase.d.ts.map +0 -1
  265. package/dist/pipeline/phases/parse-phase.js +0 -288
  266. package/dist/pipeline/phases/parse-phase.js.map +0 -1
  267. package/dist/pipeline/phases/resolve-phase.d.ts +0 -3
  268. package/dist/pipeline/phases/resolve-phase.d.ts.map +0 -1
  269. package/dist/pipeline/phases/resolve-phase.js +0 -388
  270. package/dist/pipeline/phases/resolve-phase.js.map +0 -1
  271. package/dist/pipeline/phases/scan-phase.d.ts +0 -4
  272. package/dist/pipeline/phases/scan-phase.d.ts.map +0 -1
  273. package/dist/pipeline/phases/scan-phase.js +0 -119
  274. package/dist/pipeline/phases/scan-phase.js.map +0 -1
  275. package/dist/pipeline/types.d.ts +0 -19
  276. package/dist/pipeline/types.d.ts.map +0 -1
  277. package/dist/pipeline/types.js +0 -2
  278. package/dist/pipeline/types.js.map +0 -1
  279. package/dist/resolver/binding-tracker.d.ts +0 -15
  280. package/dist/resolver/binding-tracker.d.ts.map +0 -1
  281. package/dist/resolver/binding-tracker.js +0 -22
  282. package/dist/resolver/binding-tracker.js.map +0 -1
  283. package/dist/resolver/import-resolver.d.ts +0 -16
  284. package/dist/resolver/import-resolver.d.ts.map +0 -1
  285. package/dist/resolver/import-resolver.js +0 -43
  286. package/dist/resolver/import-resolver.js.map +0 -1
  287. package/dist/resolver/index.d.ts +0 -5
  288. package/dist/resolver/index.d.ts.map +0 -1
  289. package/dist/resolver/index.js +0 -3
  290. package/dist/resolver/index.js.map +0 -1
  291. package/dist/resolver/strategies/namespace-alias.d.ts +0 -3
  292. package/dist/resolver/strategies/namespace-alias.d.ts.map +0 -1
  293. package/dist/resolver/strategies/namespace-alias.js +0 -15
  294. package/dist/resolver/strategies/namespace-alias.js.map +0 -1
  295. package/dist/resolver/strategies/package-lookup.d.ts +0 -3
  296. package/dist/resolver/strategies/package-lookup.d.ts.map +0 -1
  297. package/dist/resolver/strategies/package-lookup.js +0 -10
  298. package/dist/resolver/strategies/package-lookup.js.map +0 -1
  299. package/dist/resolver/strategies/relative-path.d.ts +0 -3
  300. package/dist/resolver/strategies/relative-path.d.ts.map +0 -1
  301. package/dist/resolver/strategies/relative-path.js +0 -12
  302. package/dist/resolver/strategies/relative-path.js.map +0 -1
  303. package/dist/resolver/strategies/types.d.ts +0 -11
  304. package/dist/resolver/strategies/types.d.ts.map +0 -1
  305. package/dist/resolver/strategies/types.js +0 -2
  306. package/dist/resolver/strategies/types.js.map +0 -1
  307. package/dist/resolver/strategies/wildcard-expand.d.ts +0 -3
  308. package/dist/resolver/strategies/wildcard-expand.d.ts.map +0 -1
  309. package/dist/resolver/strategies/wildcard-expand.js +0 -8
  310. package/dist/resolver/strategies/wildcard-expand.js.map +0 -1
  311. package/dist/scope-analysis/index.d.ts +0 -3
  312. package/dist/scope-analysis/index.d.ts.map +0 -1
  313. package/dist/scope-analysis/index.js +0 -2
  314. package/dist/scope-analysis/index.js.map +0 -1
  315. package/dist/scope-analysis/scope-builder.d.ts +0 -16
  316. package/dist/scope-analysis/scope-builder.d.ts.map +0 -1
  317. package/dist/scope-analysis/scope-builder.js +0 -19
  318. package/dist/scope-analysis/scope-builder.js.map +0 -1
  319. package/dist/search/embedder.d.ts +0 -14
  320. package/dist/search/embedder.d.ts.map +0 -1
  321. package/dist/search/embedder.js +0 -45
  322. package/dist/search/embedder.js.map +0 -1
  323. package/dist/search/index.d.ts +0 -7
  324. package/dist/search/index.d.ts.map +0 -1
  325. package/dist/search/index.js +0 -4
  326. package/dist/search/index.js.map +0 -1
  327. package/dist/search/text-search.d.ts +0 -12
  328. package/dist/search/text-search.d.ts.map +0 -1
  329. package/dist/search/text-search.js +0 -72
  330. package/dist/search/text-search.js.map +0 -1
  331. package/dist/search/vector-index.d.ts +0 -18
  332. package/dist/search/vector-index.d.ts.map +0 -1
  333. package/dist/search/vector-index.js +0 -70
  334. package/dist/search/vector-index.js.map +0 -1
  335. package/dist/shared/detection.d.ts +0 -4
  336. package/dist/shared/detection.d.ts.map +0 -1
  337. package/dist/shared/detection.js +0 -38
  338. package/dist/shared/detection.js.map +0 -1
  339. package/dist/shared/graph-types.d.ts +0 -22
  340. package/dist/shared/graph-types.d.ts.map +0 -1
  341. package/dist/shared/graph-types.js +0 -2
  342. package/dist/shared/graph-types.js.map +0 -1
  343. package/dist/shared/index.d.ts +0 -5
  344. package/dist/shared/index.d.ts.map +0 -1
  345. package/dist/shared/index.js +0 -3
  346. package/dist/shared/index.js.map +0 -1
  347. package/dist/shared/languages.d.ts +0 -17
  348. package/dist/shared/languages.d.ts.map +0 -1
  349. package/dist/shared/languages.js +0 -18
  350. package/dist/shared/languages.js.map +0 -1
  351. package/dist/shared/pipeline-types.d.ts +0 -21
  352. package/dist/shared/pipeline-types.d.ts.map +0 -1
  353. package/dist/shared/pipeline-types.js +0 -2
  354. package/dist/shared/pipeline-types.js.map +0 -1
  355. package/dist/storage/csv-writer.d.ts +0 -9
  356. package/dist/storage/csv-writer.d.ts.map +0 -1
  357. package/dist/storage/csv-writer.js +0 -77
  358. package/dist/storage/csv-writer.js.map +0 -1
  359. package/dist/storage/db-manager.d.ts +0 -12
  360. package/dist/storage/db-manager.d.ts.map +0 -1
  361. package/dist/storage/db-manager.js +0 -50
  362. package/dist/storage/db-manager.js.map +0 -1
  363. package/dist/storage/graph-loader.d.ts +0 -7
  364. package/dist/storage/graph-loader.d.ts.map +0 -1
  365. package/dist/storage/graph-loader.js +0 -71
  366. package/dist/storage/graph-loader.js.map +0 -1
  367. package/dist/storage/index.d.ts +0 -10
  368. package/dist/storage/index.d.ts.map +0 -1
  369. package/dist/storage/index.js +0 -7
  370. package/dist/storage/index.js.map +0 -1
  371. package/dist/storage/metadata.d.ts +0 -15
  372. package/dist/storage/metadata.d.ts.map +0 -1
  373. package/dist/storage/metadata.js +0 -23
  374. package/dist/storage/metadata.js.map +0 -1
  375. package/dist/storage/repo-registry.d.ts +0 -15
  376. package/dist/storage/repo-registry.d.ts.map +0 -1
  377. package/dist/storage/repo-registry.js +0 -34
  378. package/dist/storage/repo-registry.js.map +0 -1
  379. package/dist/storage/schema.d.ts +0 -6
  380. package/dist/storage/schema.d.ts.map +0 -1
  381. package/dist/storage/schema.js +0 -54
  382. package/dist/storage/schema.js.map +0 -1
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@vohongtho.infotech/code-intel",
3
- "version": "0.1.3",
3
+ "version": "0.1.5",
4
4
  "description": "Static code analysis platform — builds a Knowledge Graph from source code with Web UI, HTTP API, CLI, and MCP server",
5
5
  "license": "MIT",
6
6
  "type": "module",
7
7
  "main": "./dist/index.js",
8
8
  "types": "./dist/index.d.ts",
9
9
  "bin": {
10
- "code-intel": "./dist/cli/main.js"
10
+ "code-intel": "dist/cli/main.js"
11
11
  },
12
12
  "exports": {
13
13
  ".": "./dist/index.js"
@@ -31,33 +31,38 @@
31
31
  "homepage": "https://github.com/vohongtho/code-intel-platform",
32
32
  "repository": {
33
33
  "type": "git",
34
- "url": "https://github.com/vohongtho/code-intel-platform"
34
+ "url": "git+https://github.com/vohongtho/code-intel-platform.git"
35
35
  },
36
36
  "engines": {
37
37
  "node": ">=22.0.0"
38
38
  },
39
39
  "scripts": {
40
- "build": "tsc -b",
40
+ "build": "tsup --config tsup.config.ts && node scripts/add-shebang.mjs",
41
+ "typecheck": "tsc -b --noEmit",
41
42
  "prepublishOnly": "npm run build",
42
43
  "clean": "rm -rf dist dist-tests *.tsbuildinfo",
43
44
  "test": "tsc -b tsconfig.test.json && node --test dist-tests/tests/**/*.test.js"
44
45
  },
45
46
  "dependencies": {
46
- "code-intel-shared": "^0.1.0",
47
+ "@huggingface/transformers": "^4.2.0",
47
48
  "@ladybugdb/core": "^0.15.3",
48
49
  "@modelcontextprotocol/sdk": "^1.0.0",
49
- "@xenova/transformers": "^2.17.2",
50
- "commander": "^12.0.0",
50
+ "code-intel-shared": "^0.1.0",
51
+ "commander": "^14.0.3",
51
52
  "cors": "^2.8.5",
52
- "express": "^4.21.0",
53
- "graphology": "^0.25.4",
53
+ "express": "^5.2.1",
54
+ "graphology": "^0.26.0",
54
55
  "graphology-communities-louvain": "^2.0.1",
55
- "web-tree-sitter": "^0.24.0"
56
+ "web-tree-sitter": "^0.26.8",
57
+ "winston": "^3.19.0",
58
+ "winston-daily-rotate-file": "^5.0.0"
56
59
  },
57
60
  "devDependencies": {
58
61
  "@types/cors": "^2.8.17",
59
- "@types/express": "^4.17.21",
62
+ "@types/express": "^5.0.6",
60
63
  "@types/node": "^22.0.0",
61
- "typescript": "^5.5.0"
64
+ "esbuild": "^0.27.0",
65
+ "tsup": "^8.5.1",
66
+ "typescript": "^5.9.3"
62
67
  }
63
68
  }
@@ -1,6 +0,0 @@
1
- import type { CodeEdge } from '../shared/index.js';
2
- import type { KnowledgeGraph } from '../graph/knowledge-graph.js';
3
- import type { BindingTracker } from '../resolver/binding-tracker.js';
4
- import type { CallSite } from './call-classifier.js';
5
- export declare function buildCallEdges(callSites: CallSite[], graph: KnowledgeGraph, bindings: BindingTracker): CodeEdge[];
6
- //# sourceMappingURL=call-builder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"call-builder.d.ts","sourceRoot":"","sources":["../../src/call-graph/call-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAY,MAAM,oBAAoB,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAErE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAQrD,wBAAgB,cAAc,CAC5B,SAAS,EAAE,QAAQ,EAAE,EACrB,KAAK,EAAE,cAAc,EACrB,QAAQ,EAAE,cAAc,GACvB,QAAQ,EAAE,CA2DZ"}
@@ -1,69 +0,0 @@
1
- import { generateEdgeId } from '../graph/id-generator.js';
2
- export function buildCallEdges(callSites, graph, bindings) {
3
- const edges = [];
4
- const symbolIndex = buildSymbolIndex(graph);
5
- const tiers = [
6
- {
7
- name: 'same-file',
8
- confidence: 0.95,
9
- resolve(cs) {
10
- const key = `${cs.callerFilePath}:${cs.name}`;
11
- return symbolIndex.get(key) ?? null;
12
- },
13
- },
14
- {
15
- name: 'imported',
16
- confidence: 0.9,
17
- resolve(cs) {
18
- const binding = bindings.getBinding(cs.callerFilePath, cs.name);
19
- if (!binding)
20
- return null;
21
- const key = `${binding.sourcePath}:${binding.exportedName}`;
22
- return symbolIndex.get(key) ?? null;
23
- },
24
- },
25
- {
26
- name: 'global',
27
- confidence: 0.5,
28
- resolve(cs) {
29
- return globalSymbolIndex.get(cs.name) ?? null;
30
- },
31
- },
32
- ];
33
- const globalSymbolIndex = new Map();
34
- for (const node of graph.allNodes()) {
35
- if (['function', 'method', 'class', 'constructor'].includes(node.kind)) {
36
- if (!globalSymbolIndex.has(node.name)) {
37
- globalSymbolIndex.set(node.name, node.id);
38
- }
39
- }
40
- }
41
- for (const cs of callSites) {
42
- for (const tier of tiers) {
43
- const targetId = tier.resolve(cs);
44
- if (targetId && targetId !== cs.callerNodeId) {
45
- edges.push({
46
- id: generateEdgeId(cs.callerNodeId, targetId, 'calls'),
47
- source: cs.callerNodeId,
48
- target: targetId,
49
- kind: 'calls',
50
- weight: tier.confidence,
51
- label: cs.name,
52
- });
53
- break;
54
- }
55
- }
56
- }
57
- return edges;
58
- }
59
- function buildSymbolIndex(graph) {
60
- const index = new Map();
61
- for (const node of graph.allNodes()) {
62
- if (['function', 'method', 'class', 'constructor', 'variable'].includes(node.kind)) {
63
- const key = `${node.filePath}:${node.name}`;
64
- index.set(key, node.id);
65
- }
66
- }
67
- return index;
68
- }
69
- //# sourceMappingURL=call-builder.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"call-builder.js","sourceRoot":"","sources":["../../src/call-graph/call-builder.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAS1D,MAAM,UAAU,cAAc,CAC5B,SAAqB,EACrB,KAAqB,EACrB,QAAwB;IAExB,MAAM,KAAK,GAAe,EAAE,CAAC;IAC7B,MAAM,WAAW,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAE5C,MAAM,KAAK,GAAqB;QAC9B;YACE,IAAI,EAAE,WAAW;YACjB,UAAU,EAAE,IAAI;YAChB,OAAO,CAAC,EAAY;gBAClB,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC,cAAc,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;gBAC9C,OAAO,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;YACtC,CAAC;SACF;QACD;YACE,IAAI,EAAE,UAAU;YAChB,UAAU,EAAE,GAAG;YACf,OAAO,CAAC,EAAY;gBAClB,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,cAAc,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;gBAChE,IAAI,CAAC,OAAO;oBAAE,OAAO,IAAI,CAAC;gBAC1B,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;gBAC5D,OAAO,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;YACtC,CAAC;SACF;QACD;YACE,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,GAAG;YACf,OAAO,CAAC,EAAY;gBAClB,OAAO,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;YAChD,CAAC;SACF;KACF,CAAC;IAEF,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAkB,CAAC;IACpD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC;QACpC,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACvE,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;QAC3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAClC,IAAI,QAAQ,IAAI,QAAQ,KAAK,EAAE,CAAC,YAAY,EAAE,CAAC;gBAC7C,KAAK,CAAC,IAAI,CAAC;oBACT,EAAE,EAAE,cAAc,CAAC,EAAE,CAAC,YAAY,EAAE,QAAQ,EAAE,OAAO,CAAC;oBACtD,MAAM,EAAE,EAAE,CAAC,YAAY;oBACvB,MAAM,EAAE,QAAQ;oBAChB,IAAI,EAAE,OAAO;oBACb,MAAM,EAAE,IAAI,CAAC,UAAU;oBACvB,KAAK,EAAE,EAAE,CAAC,IAAI;iBACf,CAAC,CAAC;gBACH,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAqB;IAC7C,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IACxC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC;QACpC,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACnF,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5C,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -1,12 +0,0 @@
1
- export type CallKind = 'free' | 'member' | 'constructor';
2
- export interface CallSite {
3
- callerNodeId: string;
4
- callerFilePath: string;
5
- name: string;
6
- receiverText?: string;
7
- kind: CallKind;
8
- line: number;
9
- argCount: number;
10
- }
11
- export declare function classifyCall(name: string, hasReceiver: boolean, isNew: boolean): CallKind;
12
- //# sourceMappingURL=call-classifier.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"call-classifier.d.ts","sourceRoot":"","sources":["../../src/call-graph/call-classifier.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,aAAa,CAAC;AAEzD,MAAM,WAAW,QAAQ;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,OAAO,EACpB,KAAK,EAAE,OAAO,GACb,QAAQ,CAOV"}
@@ -1,11 +0,0 @@
1
- export function classifyCall(name, hasReceiver, isNew) {
2
- if (isNew)
3
- return 'constructor';
4
- if (hasReceiver)
5
- return 'member';
6
- if (name[0] === name[0].toUpperCase() && name[0] !== name[0].toLowerCase()) {
7
- return 'constructor';
8
- }
9
- return 'free';
10
- }
11
- //# sourceMappingURL=call-classifier.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"call-classifier.js","sourceRoot":"","sources":["../../src/call-graph/call-classifier.ts"],"names":[],"mappings":"AAYA,MAAM,UAAU,YAAY,CAC1B,IAAY,EACZ,WAAoB,EACpB,KAAc;IAEd,IAAI,KAAK;QAAE,OAAO,aAAa,CAAC;IAChC,IAAI,WAAW;QAAE,OAAO,QAAQ,CAAC;IACjC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QAC3E,OAAO,aAAa,CAAC;IACvB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,4 +0,0 @@
1
- export { buildCallEdges } from './call-builder.js';
2
- export { classifyCall } from './call-classifier.js';
3
- export type { CallSite, CallKind } from './call-classifier.js';
4
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/call-graph/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC"}
@@ -1,3 +0,0 @@
1
- export { buildCallEdges } from './call-builder.js';
2
- export { classifyCall } from './call-classifier.js';
3
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/call-graph/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC"}
@@ -1,18 +0,0 @@
1
- /**
2
- * Context file writer — upserts a <!-- code-intel:start/end --> block into
3
- * AGENTS.md and CLAUDE.md so AI assistants get accurate codebase stats,
4
- * CLI commands, and skill links immediately after analysis.
5
- */
6
- import type { SkillSummary } from './skill-writer.js';
7
- export interface ContextStats {
8
- nodes: number;
9
- edges: number;
10
- files: number;
11
- duration: number;
12
- }
13
- /**
14
- * Write AGENTS.md and CLAUDE.md at the workspace root.
15
- * Replaces any existing code-intel block; preserves all other content.
16
- */
17
- export declare function writeContextFiles(workspaceRoot: string, projectName: string, stats: ContextStats, skills: SkillSummary[]): void;
18
- //# sourceMappingURL=context-writer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context-writer.d.ts","sourceRoot":"","sources":["../../src/cli/context-writer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAKtD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,YAAY,EAAE,GACrB,IAAI,CAKN"}
@@ -1,104 +0,0 @@
1
- /**
2
- * Context file writer — upserts a <!-- code-intel:start/end --> block into
3
- * AGENTS.md and CLAUDE.md so AI assistants get accurate codebase stats,
4
- * CLI commands, and skill links immediately after analysis.
5
- */
6
- import fs from 'node:fs';
7
- import path from 'node:path';
8
- const BLOCK_START = '<!-- code-intel:start -->';
9
- const BLOCK_END = '<!-- code-intel:end -->';
10
- /**
11
- * Write AGENTS.md and CLAUDE.md at the workspace root.
12
- * Replaces any existing code-intel block; preserves all other content.
13
- */
14
- export function writeContextFiles(workspaceRoot, projectName, stats, skills) {
15
- const block = buildBlock(projectName, stats, skills);
16
- upsertFile(path.join(workspaceRoot, 'AGENTS.md'), block);
17
- upsertFile(path.join(workspaceRoot, 'CLAUDE.md'), block);
18
- }
19
- // ---------------------------------------------------------------------------
20
- // Block content
21
- // ---------------------------------------------------------------------------
22
- function buildBlock(projectName, stats, skills) {
23
- const skillRows = skills
24
- .map((s) => `| Work in \`${s.label}\` (${s.symbolCount} symbols) | \`.claude/skills/code-intel/${s.name}/SKILL.md\` |`)
25
- .join('\n');
26
- const skillTable = `| Task | Skill file |
27
- |------|------------|
28
- | Understand architecture / "How does X work?" | Load \`code-intel-exploring\` skill |
29
- | Blast radius / "What breaks if I change X?" | Load \`code-intel-impact\` skill |
30
- | Debugging / "Why is X failing?" | Load \`code-intel-debugging\` skill |
31
- ${skillRows ? skillRows + '\n' : ''}`;
32
- return `${BLOCK_START}
33
- # Code Intelligence — ${projectName}
34
-
35
- Indexed: **${stats.nodes.toLocaleString()} nodes** | **${stats.edges.toLocaleString()} edges** | **${stats.files} files** | analyzed in ${(stats.duration / 1000).toFixed(1)}s
36
-
37
- > If the index is stale, re-run: \`code-intel analyze\`
38
-
39
- ## Always Do
40
-
41
- - **Before editing any symbol**, run \`code-intel impact <symbol>\` and review blast radius.
42
- - **Before committing**, verify scope with \`code-intel inspect <symbol>\`.
43
- - Use \`code-intel search "<concept>"\` to find related symbols instead of grepping.
44
- - Warn the user if impact shows ≥ 5 direct callers (HIGH risk).
45
-
46
- ## Never Do
47
-
48
- - NEVER rename symbols with find-and-replace — use \`code-intel inspect\` to find all usages first.
49
- - NEVER ignore impact warnings — always report blast radius to the user.
50
-
51
- ## CLI Quick Reference
52
-
53
- \`\`\`bash
54
- code-intel analyze [path] # Build / refresh the knowledge graph
55
- code-intel serve [path] # Start HTTP API + Web UI on :4747
56
- code-intel search <query> # Text search across all symbols
57
- code-intel inspect <symbol> # Callers, callees, imports, cluster
58
- code-intel impact <symbol> # Blast radius (who breaks if this changes)
59
- code-intel status [path] # Index freshness and stats
60
- code-intel clean [path] # Remove index data
61
- \`\`\`
62
-
63
- ## Skills
64
-
65
- ${skillTable}
66
- ${BLOCK_END}`;
67
- }
68
- // ---------------------------------------------------------------------------
69
- // File upsert: create → replace block → append
70
- // ---------------------------------------------------------------------------
71
- function upsertFile(filePath, block) {
72
- if (!fs.existsSync(filePath)) {
73
- fs.writeFileSync(filePath, block + '\n', 'utf-8');
74
- return;
75
- }
76
- const existing = fs.readFileSync(filePath, 'utf-8');
77
- const startIdx = findLineMarker(existing, BLOCK_START);
78
- const endIdx = findLineMarker(existing, BLOCK_END, startIdx === -1 ? 0 : startIdx);
79
- if (startIdx !== -1 && endIdx !== -1 && endIdx > startIdx) {
80
- // Replace existing block
81
- const before = existing.slice(0, startIdx);
82
- const after = existing.slice(endIdx + BLOCK_END.length);
83
- fs.writeFileSync(filePath, (before + block + after).trimEnd() + '\n', 'utf-8');
84
- return;
85
- }
86
- // Append block
87
- fs.writeFileSync(filePath, existing.trimEnd() + '\n\n' + block + '\n', 'utf-8');
88
- }
89
- /**
90
- * Find a marker that stands alone on its own line (not embedded in prose).
91
- */
92
- function findLineMarker(content, marker, startFrom = 0) {
93
- let idx = content.indexOf(marker, startFrom);
94
- while (idx !== -1) {
95
- const atStart = idx === 0 || content[idx - 1] === '\n';
96
- const end = idx + marker.length;
97
- const atEnd = end === content.length || content[end] === '\n' || content[end] === '\r';
98
- if (atStart && atEnd)
99
- return idx;
100
- idx = content.indexOf(marker, idx + 1);
101
- }
102
- return -1;
103
- }
104
- //# sourceMappingURL=context-writer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context-writer.js","sourceRoot":"","sources":["../../src/cli/context-writer.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env node
2
- export {};
3
- //# sourceMappingURL=main.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":""}
@@ -1,17 +0,0 @@
1
- /**
2
- * Skill file writer — generates .claude/skills/code-intel/ SKILL.md files
3
- * from the knowledge graph clusters, giving AI assistants structured,
4
- * high-accuracy context for each functional area of the codebase.
5
- */
6
- import type { KnowledgeGraph } from '../graph/knowledge-graph.js';
7
- export interface SkillSummary {
8
- name: string;
9
- label: string;
10
- symbolCount: number;
11
- fileCount: number;
12
- }
13
- export declare function writeSkillFiles(graph: KnowledgeGraph, workspaceRoot: string, projectName: string): Promise<{
14
- skills: SkillSummary[];
15
- outputDir: string;
16
- }>;
17
- //# sourceMappingURL=skill-writer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skill-writer.d.ts","sourceRoot":"","sources":["../../src/cli/skill-writer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAGlE,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAiBD,wBAAsB,eAAe,CACnC,KAAK,EAAE,cAAc,EACrB,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC;IAAE,MAAM,EAAE,YAAY,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAyBxD"}
@@ -1,249 +0,0 @@
1
- /**
2
- * Skill file writer — generates .claude/skills/code-intel/ SKILL.md files
3
- * from the knowledge graph clusters, giving AI assistants structured,
4
- * high-accuracy context for each functional area of the codebase.
5
- */
6
- import fs from 'node:fs';
7
- import path from 'node:path';
8
- // ---------------------------------------------------------------------------
9
- // Public API
10
- // ---------------------------------------------------------------------------
11
- export async function writeSkillFiles(graph, workspaceRoot, projectName) {
12
- const outputDir = path.join(workspaceRoot, '.claude', 'skills', 'code-intel');
13
- const areas = buildAreaMap(graph, workspaceRoot);
14
- if (areas.length === 0)
15
- return { skills: [], outputDir };
16
- fs.rmSync(outputDir, { recursive: true, force: true });
17
- fs.mkdirSync(outputDir, { recursive: true });
18
- const skills = [];
19
- const usedNames = new Set();
20
- for (const area of areas) {
21
- const kebab = uniqueKebab(area.label, usedNames);
22
- usedNames.add(kebab);
23
- const content = renderSkill(area, projectName, kebab);
24
- const dir = path.join(outputDir, kebab);
25
- fs.mkdirSync(dir, { recursive: true });
26
- fs.writeFileSync(path.join(dir, 'SKILL.md'), content, 'utf-8');
27
- skills.push({ name: kebab, label: area.label, symbolCount: area.nodes.length, fileCount: area.files.size });
28
- }
29
- return { skills, outputDir };
30
- }
31
- // ---------------------------------------------------------------------------
32
- // Build area map from cluster nodes
33
- // ---------------------------------------------------------------------------
34
- function buildAreaMap(graph, workspaceRoot) {
35
- // Index cluster labels
36
- const clusterLabel = new Map();
37
- const clusterMembers = new Map();
38
- for (const node of graph.allNodes()) {
39
- if (node.kind === 'cluster') {
40
- clusterLabel.set(node.id, node.name);
41
- clusterMembers.set(node.id, []);
42
- }
43
- }
44
- // Assign members via belongs_to
45
- for (const edge of graph.findEdgesByKind('belongs_to')) {
46
- const bucket = clusterMembers.get(edge.target);
47
- const node = graph.getNode(edge.source);
48
- if (bucket && node)
49
- bucket.push(node);
50
- }
51
- // Precompute degree maps for hot-node detection
52
- const inDeg = new Map();
53
- const outDeg = new Map();
54
- const calledIds = new Set();
55
- for (const edge of graph.findEdgesByKind('calls')) {
56
- calledIds.add(edge.target);
57
- inDeg.set(edge.target, (inDeg.get(edge.target) ?? 0) + 1);
58
- outDeg.set(edge.source, (outDeg.get(edge.source) ?? 0) + 1);
59
- }
60
- const areas = [];
61
- for (const [clusterId, members] of clusterMembers) {
62
- if (members.length < 3)
63
- continue;
64
- const label = clusterLabel.get(clusterId) ?? 'unknown';
65
- const dir = members[0]?.filePath.split('/').slice(0, -1).join('/') ?? '';
66
- // Group by relative file path
67
- const files = new Map();
68
- for (const n of members) {
69
- const rel = relPath(n.filePath, workspaceRoot);
70
- let list = files.get(rel);
71
- if (!list) {
72
- list = [];
73
- files.set(rel, list);
74
- }
75
- list.push(n);
76
- }
77
- // Entry points: exported, not called from outside, callable kinds
78
- const entryPoints = members
79
- .filter((n) => n.exported && !calledIds.has(n.id) && ['function', 'method', 'class'].includes(n.kind))
80
- .slice(0, 6);
81
- // Hot nodes: highest combined degree (most connected = most important)
82
- const memberIds = new Set(members.map((n) => n.id));
83
- const hotNodes = members
84
- .map((n) => ({ node: n, inDeg: inDeg.get(n.id) ?? 0, outDeg: outDeg.get(n.id) ?? 0 }))
85
- .sort((a, b) => (b.inDeg + b.outDeg) - (a.inDeg + a.outDeg))
86
- .slice(0, 12);
87
- // Internal call density
88
- let callEdgesInArea = 0;
89
- for (const edge of graph.findEdgesByKind('calls')) {
90
- if (memberIds.has(edge.source) && memberIds.has(edge.target))
91
- callEdgesInArea++;
92
- }
93
- // Flows touching this area
94
- const flowIds = [];
95
- for (const node of graph.allNodes()) {
96
- if (node.kind !== 'flow')
97
- continue;
98
- const steps = node.metadata?.steps;
99
- if (steps?.some((s) => memberIds.has(s)))
100
- flowIds.push(node.id);
101
- if (flowIds.length >= 8)
102
- break;
103
- }
104
- areas.push({ label, dir, nodes: members, files, entryPoints, hotNodes, callEdgesInArea, flowIds });
105
- }
106
- areas.sort((a, b) => b.nodes.length - a.nodes.length);
107
- return areas.slice(0, 20);
108
- }
109
- // ---------------------------------------------------------------------------
110
- // Render optimized SKILL.md
111
- // ---------------------------------------------------------------------------
112
- function renderSkill(area, projectName, kebabName) {
113
- const density = area.nodes.length > 0
114
- ? Math.round((area.callEdgesInArea / area.nodes.length) * 10) / 10
115
- : 0;
116
- const topEntryNames = area.entryPoints.slice(0, 3).map((n) => n.name);
117
- const topHotNames = area.hotNodes.slice(0, 3).map((h) => h.node.name);
118
- // Pick best symbol names for description triggers
119
- const triggerNames = topEntryNames.length > 0 ? topEntryNames : topHotNames;
120
- const triggerStr = triggerNames.map((n) => `\`${n}\``).join(', ');
121
- // Dominant directory for scoping hint
122
- const dirs = [...area.files.keys()].map((f) => f.split('/').slice(0, -1).join('/') || '.');
123
- const dirCounts = new Map();
124
- for (const d of dirs)
125
- dirCounts.set(d, (dirCounts.get(d) ?? 0) + 1);
126
- const dominantDir = [...dirCounts.entries()].sort((a, b) => b[1] - a[1])[0]?.[0] ?? area.dir;
127
- const lines = [];
128
- // --- Frontmatter ---
129
- const description = [
130
- `Covers the **${area.label}** subsystem of ${projectName}.`,
131
- `${area.nodes.length} symbols across ${area.files.size} files.`,
132
- triggerStr ? `Key symbols: ${triggerStr}.` : '',
133
- `Internal call density: ${density} calls/symbol.`,
134
- area.flowIds.length > 0 ? `Participates in ${area.flowIds.length} execution flow(s).` : '',
135
- ].filter(Boolean).join(' ');
136
- lines.push('---');
137
- lines.push(`name: ${kebabName}`);
138
- lines.push(`description: "${description.replace(/"/g, "'")}"`);
139
- lines.push('---', '');
140
- // --- Title block ---
141
- lines.push(`# ${area.label}`);
142
- lines.push('');
143
- lines.push(`> **${area.nodes.length} symbols** | **${area.files.size} files** | path: \`${dominantDir}/\` | call density: ${density}/sym`);
144
- lines.push('');
145
- // --- When to Use (precise triggers for the AI) ---
146
- lines.push('## When to Use');
147
- lines.push('');
148
- lines.push('Load this skill when:');
149
- lines.push(`- The task involves code in \`${dominantDir}/\``);
150
- if (triggerStr)
151
- lines.push(`- The user mentions ${triggerStr} or asks how they work`);
152
- lines.push(`- Adding, modifying, or debugging ${area.label.toLowerCase()}-related functionality`);
153
- lines.push(`- Tracing call chains that pass through the ${area.label} layer`);
154
- lines.push('');
155
- // --- Key Files ---
156
- lines.push('## Key Files');
157
- lines.push('');
158
- lines.push('| File | Symbols | Notes |');
159
- lines.push('|------|---------|-------|');
160
- const sortedFiles = [...area.files.entries()].sort((a, b) => b[1].length - a[1].length);
161
- for (const [file, nodes] of sortedFiles.slice(0, 10)) {
162
- const exported = nodes.filter((n) => n.exported);
163
- const names = nodes.slice(0, 4).map((n) => `\`${n.name}\``).join(', ');
164
- const extra = nodes.length > 4 ? ` +(${nodes.length - 4})` : '';
165
- const note = exported.length > 0 ? `${exported.length} exported` : 'internal';
166
- lines.push(`| \`${file}\` | ${names}${extra} | ${note} |`);
167
- }
168
- lines.push('');
169
- // --- Entry Points ---
170
- if (area.entryPoints.length > 0) {
171
- lines.push('## Entry Points');
172
- lines.push('');
173
- lines.push('Start exploration here — exported symbols with no external callers:');
174
- lines.push('');
175
- for (const ep of area.entryPoints) {
176
- const loc = ep.startLine ? `:${ep.startLine}` : '';
177
- lines.push(`- **\`${ep.name}\`** \`(${ep.kind})\` → \`${ep.filePath}${loc}\``);
178
- }
179
- lines.push('');
180
- }
181
- // --- Hot Symbols (most connected = highest impact) ---
182
- lines.push('## Hot Symbols');
183
- lines.push('');
184
- lines.push('Sorted by call graph degree (changing these has the highest blast radius):');
185
- lines.push('');
186
- lines.push('| Symbol | Kind | In ← | → Out | File |');
187
- lines.push('|--------|------|-----:|------:|------|');
188
- for (const { node: n, inDeg: i, outDeg: o } of area.hotNodes) {
189
- lines.push(`| \`${n.name}\` | ${n.kind} | ${i} | ${o} | \`${relFile(n.filePath)}\` |`);
190
- }
191
- lines.push('');
192
- // --- Execution Flows ---
193
- if (area.flowIds.length > 0) {
194
- lines.push('## Execution Flows');
195
- lines.push('');
196
- lines.push(`**${area.flowIds.length}** execution path(s) pass through this area.`);
197
- lines.push('Run `code-intel inspect <symbol>` on a hot symbol to trace the full call chain.');
198
- lines.push('');
199
- }
200
- // --- Impact Guidance ---
201
- lines.push('## Impact Guidance');
202
- lines.push('');
203
- lines.push('Before modifying any symbol in this area:');
204
- lines.push(`1. **High-degree symbols** (In ← ≥ 3) — check all callers before changing signatures`);
205
- lines.push(`2. **Entry points** — changes propagate to external consumers`);
206
- lines.push(`3. Run \`code-intel impact <symbol>\` to get full blast radius`);
207
- lines.push('');
208
- // --- Quick Commands ---
209
- const firstHot = area.hotNodes[0]?.node.name ?? area.nodes[0]?.name ?? area.label;
210
- const firstEntry = area.entryPoints[0]?.name ?? firstHot;
211
- lines.push('## Quick Commands');
212
- lines.push('');
213
- lines.push('```bash');
214
- lines.push(`# Inspect most-connected symbol`);
215
- lines.push(`code-intel inspect ${firstHot}`);
216
- lines.push(`# Blast radius for entry point`);
217
- lines.push(`code-intel impact ${firstEntry}`);
218
- lines.push(`# Search this area`);
219
- lines.push(`code-intel search "${area.label.toLowerCase()}"`);
220
- lines.push('```');
221
- lines.push('');
222
- return lines.join('\n');
223
- }
224
- // ---------------------------------------------------------------------------
225
- // Utility helpers
226
- // ---------------------------------------------------------------------------
227
- function uniqueKebab(label, used) {
228
- let base = label
229
- .toLowerCase()
230
- .replace(/[^a-z0-9]+/g, '-')
231
- .replace(/^-+|-+$/g, '')
232
- .slice(0, 50) || 'skill';
233
- let candidate = base;
234
- let n = 2;
235
- while (used.has(candidate)) {
236
- candidate = `${base}-${n++}`;
237
- }
238
- return candidate;
239
- }
240
- function relPath(filePath, workspaceRoot) {
241
- const norm = filePath.replace(/\\/g, '/');
242
- const root = workspaceRoot.replace(/\\/g, '/').replace(/\/?$/, '/');
243
- return norm.startsWith(root) ? norm.slice(root.length) : norm.replace(/^\//, '');
244
- }
245
- function relFile(filePath) {
246
- const parts = filePath.replace(/\\/g, '/').split('/');
247
- return parts.slice(-2).join('/');
248
- }
249
- //# sourceMappingURL=skill-writer.js.map