cotx-engine 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (501) hide show
  1. package/LICENSE +94 -0
  2. package/README.md +103 -0
  3. package/dist/commands/compile.d.ts +3 -0
  4. package/dist/commands/compile.js +93 -0
  5. package/dist/commands/compile.js.map +1 -0
  6. package/dist/commands/context.d.ts +1 -0
  7. package/dist/commands/context.js +98 -0
  8. package/dist/commands/context.js.map +1 -0
  9. package/dist/commands/diff.d.ts +19 -0
  10. package/dist/commands/diff.js +127 -0
  11. package/dist/commands/diff.js.map +1 -0
  12. package/dist/commands/impact.d.ts +3 -0
  13. package/dist/commands/impact.js +91 -0
  14. package/dist/commands/impact.js.map +1 -0
  15. package/dist/commands/init.d.ts +1 -0
  16. package/dist/commands/init.js +13 -0
  17. package/dist/commands/init.js.map +1 -0
  18. package/dist/commands/lint.d.ts +13 -0
  19. package/dist/commands/lint.js +290 -0
  20. package/dist/commands/lint.js.map +1 -0
  21. package/dist/commands/map.d.ts +6 -0
  22. package/dist/commands/map.js +409 -0
  23. package/dist/commands/map.js.map +1 -0
  24. package/dist/commands/migrate.d.ts +16 -0
  25. package/dist/commands/migrate.js +150 -0
  26. package/dist/commands/migrate.js.map +1 -0
  27. package/dist/commands/query.d.ts +3 -0
  28. package/dist/commands/query.js +47 -0
  29. package/dist/commands/query.js.map +1 -0
  30. package/dist/commands/rename.d.ts +5 -0
  31. package/dist/commands/rename.js +163 -0
  32. package/dist/commands/rename.js.map +1 -0
  33. package/dist/commands/snapshot.d.ts +6 -0
  34. package/dist/commands/snapshot.js +48 -0
  35. package/dist/commands/snapshot.js.map +1 -0
  36. package/dist/commands/status.d.ts +1 -0
  37. package/dist/commands/status.js +72 -0
  38. package/dist/commands/status.js.map +1 -0
  39. package/dist/commands/update.d.ts +8 -0
  40. package/dist/commands/update.js +163 -0
  41. package/dist/commands/update.js.map +1 -0
  42. package/dist/commands/write.d.ts +6 -0
  43. package/dist/commands/write.js +221 -0
  44. package/dist/commands/write.js.map +1 -0
  45. package/dist/compiler/auto-describe.d.ts +13 -0
  46. package/dist/compiler/auto-describe.js +91 -0
  47. package/dist/compiler/auto-describe.js.map +1 -0
  48. package/dist/compiler/concept-compiler.d.ts +21 -0
  49. package/dist/compiler/concept-compiler.js +125 -0
  50. package/dist/compiler/concept-compiler.js.map +1 -0
  51. package/dist/compiler/contract-compiler.d.ts +16 -0
  52. package/dist/compiler/contract-compiler.js +90 -0
  53. package/dist/compiler/contract-compiler.js.map +1 -0
  54. package/dist/compiler/delta-detector.d.ts +8 -0
  55. package/dist/compiler/delta-detector.js +34 -0
  56. package/dist/compiler/delta-detector.js.map +1 -0
  57. package/dist/compiler/flow-compiler.d.ts +18 -0
  58. package/dist/compiler/flow-compiler.js +69 -0
  59. package/dist/compiler/flow-compiler.js.map +1 -0
  60. package/dist/compiler/module-compiler.d.ts +18 -0
  61. package/dist/compiler/module-compiler.js +420 -0
  62. package/dist/compiler/module-compiler.js.map +1 -0
  63. package/dist/compiler/stale-detector.d.ts +22 -0
  64. package/dist/compiler/stale-detector.js +79 -0
  65. package/dist/compiler/stale-detector.js.map +1 -0
  66. package/dist/config/ignore-service.d.ts +26 -0
  67. package/dist/config/ignore-service.js +366 -0
  68. package/dist/config/ignore-service.js.map +1 -0
  69. package/dist/core/analysis/cluster-enricher.d.ts +38 -0
  70. package/dist/core/analysis/cluster-enricher.js +169 -0
  71. package/dist/core/analysis/cluster-enricher.js.map +1 -0
  72. package/dist/core/analysis/community-processor.d.ts +39 -0
  73. package/dist/core/analysis/community-processor.js +319 -0
  74. package/dist/core/analysis/community-processor.js.map +1 -0
  75. package/dist/core/analysis/process-processor.d.ts +51 -0
  76. package/dist/core/analysis/process-processor.js +318 -0
  77. package/dist/core/analysis/process-processor.js.map +1 -0
  78. package/dist/core/bridge.d.ts +15 -0
  79. package/dist/core/bridge.js +63 -0
  80. package/dist/core/bridge.js.map +1 -0
  81. package/dist/core/export/json-exporter.d.ts +43 -0
  82. package/dist/core/export/json-exporter.js +13 -0
  83. package/dist/core/export/json-exporter.js.map +1 -0
  84. package/dist/core/graph/graph.d.ts +2 -0
  85. package/dist/core/graph/graph.js +79 -0
  86. package/dist/core/graph/graph.js.map +1 -0
  87. package/dist/core/graph/types.d.ts +25 -0
  88. package/dist/core/graph/types.js +2 -0
  89. package/dist/core/graph/types.js.map +1 -0
  90. package/dist/core/parser/ast-cache.d.ts +11 -0
  91. package/dist/core/parser/ast-cache.js +36 -0
  92. package/dist/core/parser/ast-cache.js.map +1 -0
  93. package/dist/core/parser/call-processor.d.ts +105 -0
  94. package/dist/core/parser/call-processor.js +1807 -0
  95. package/dist/core/parser/call-processor.js.map +1 -0
  96. package/dist/core/parser/call-routing.d.ts +55 -0
  97. package/dist/core/parser/call-routing.js +113 -0
  98. package/dist/core/parser/call-routing.js.map +1 -0
  99. package/dist/core/parser/call-sites/extract-language-call-site.d.ts +10 -0
  100. package/dist/core/parser/call-sites/extract-language-call-site.js +23 -0
  101. package/dist/core/parser/call-sites/extract-language-call-site.js.map +1 -0
  102. package/dist/core/parser/call-sites/java.d.ts +9 -0
  103. package/dist/core/parser/call-sites/java.js +31 -0
  104. package/dist/core/parser/call-sites/java.js.map +1 -0
  105. package/dist/core/parser/cluster-enricher.d.ts +38 -0
  106. package/dist/core/parser/cluster-enricher.js +169 -0
  107. package/dist/core/parser/cluster-enricher.js.map +1 -0
  108. package/dist/core/parser/community-processor.d.ts +39 -0
  109. package/dist/core/parser/community-processor.js +321 -0
  110. package/dist/core/parser/community-processor.js.map +1 -0
  111. package/dist/core/parser/constants.d.ts +16 -0
  112. package/dist/core/parser/constants.js +17 -0
  113. package/dist/core/parser/constants.js.map +1 -0
  114. package/dist/core/parser/entry-point-scoring.d.ts +57 -0
  115. package/dist/core/parser/entry-point-scoring.js +377 -0
  116. package/dist/core/parser/entry-point-scoring.js.map +1 -0
  117. package/dist/core/parser/export-detection.d.ts +57 -0
  118. package/dist/core/parser/export-detection.js +234 -0
  119. package/dist/core/parser/export-detection.js.map +1 -0
  120. package/dist/core/parser/field-extractor.d.ts +34 -0
  121. package/dist/core/parser/field-extractor.js +33 -0
  122. package/dist/core/parser/field-extractor.js.map +1 -0
  123. package/dist/core/parser/field-extractors/configs/c-cpp.d.ts +16 -0
  124. package/dist/core/parser/field-extractors/configs/c-cpp.js +129 -0
  125. package/dist/core/parser/field-extractors/configs/c-cpp.js.map +1 -0
  126. package/dist/core/parser/field-extractors/configs/csharp.d.ts +15 -0
  127. package/dist/core/parser/field-extractors/configs/csharp.js +129 -0
  128. package/dist/core/parser/field-extractors/configs/csharp.js.map +1 -0
  129. package/dist/core/parser/field-extractors/configs/dart.d.ts +12 -0
  130. package/dist/core/parser/field-extractors/configs/dart.js +93 -0
  131. package/dist/core/parser/field-extractors/configs/dart.js.map +1 -0
  132. package/dist/core/parser/field-extractors/configs/go.d.ts +12 -0
  133. package/dist/core/parser/field-extractors/configs/go.js +66 -0
  134. package/dist/core/parser/field-extractors/configs/go.js.map +1 -0
  135. package/dist/core/parser/field-extractors/configs/helpers.d.ts +40 -0
  136. package/dist/core/parser/field-extractors/configs/helpers.js +118 -0
  137. package/dist/core/parser/field-extractors/configs/helpers.js.map +1 -0
  138. package/dist/core/parser/field-extractors/configs/jvm.d.ts +17 -0
  139. package/dist/core/parser/field-extractors/configs/jvm.js +139 -0
  140. package/dist/core/parser/field-extractors/configs/jvm.js.map +1 -0
  141. package/dist/core/parser/field-extractors/configs/php.d.ts +12 -0
  142. package/dist/core/parser/field-extractors/configs/php.js +69 -0
  143. package/dist/core/parser/field-extractors/configs/php.js.map +1 -0
  144. package/dist/core/parser/field-extractors/configs/python.d.ts +15 -0
  145. package/dist/core/parser/field-extractors/configs/python.js +92 -0
  146. package/dist/core/parser/field-extractors/configs/python.js.map +1 -0
  147. package/dist/core/parser/field-extractors/configs/ruby.d.ts +15 -0
  148. package/dist/core/parser/field-extractors/configs/ruby.js +68 -0
  149. package/dist/core/parser/field-extractors/configs/ruby.js.map +1 -0
  150. package/dist/core/parser/field-extractors/configs/rust.d.ts +12 -0
  151. package/dist/core/parser/field-extractors/configs/rust.js +58 -0
  152. package/dist/core/parser/field-extractors/configs/rust.js.map +1 -0
  153. package/dist/core/parser/field-extractors/configs/swift.d.ts +15 -0
  154. package/dist/core/parser/field-extractors/configs/swift.js +75 -0
  155. package/dist/core/parser/field-extractors/configs/swift.js.map +1 -0
  156. package/dist/core/parser/field-extractors/configs/typescript-javascript.d.ts +14 -0
  157. package/dist/core/parser/field-extractors/configs/typescript-javascript.js +72 -0
  158. package/dist/core/parser/field-extractors/configs/typescript-javascript.js.map +1 -0
  159. package/dist/core/parser/field-extractors/generic.d.ts +61 -0
  160. package/dist/core/parser/field-extractors/generic.js +170 -0
  161. package/dist/core/parser/field-extractors/generic.js.map +1 -0
  162. package/dist/core/parser/field-extractors/typescript.d.ts +16 -0
  163. package/dist/core/parser/field-extractors/typescript.js +167 -0
  164. package/dist/core/parser/field-extractors/typescript.js.map +1 -0
  165. package/dist/core/parser/field-types.d.ts +46 -0
  166. package/dist/core/parser/field-types.js +2 -0
  167. package/dist/core/parser/field-types.js.map +1 -0
  168. package/dist/core/parser/filesystem-walker.d.ts +28 -0
  169. package/dist/core/parser/filesystem-walker.js +82 -0
  170. package/dist/core/parser/filesystem-walker.js.map +1 -0
  171. package/dist/core/parser/framework-detection.d.ts +149 -0
  172. package/dist/core/parser/framework-detection.js +782 -0
  173. package/dist/core/parser/framework-detection.js.map +1 -0
  174. package/dist/core/parser/heritage-processor.d.ts +52 -0
  175. package/dist/core/parser/heritage-processor.js +339 -0
  176. package/dist/core/parser/heritage-processor.js.map +1 -0
  177. package/dist/core/parser/import-processor.d.ts +33 -0
  178. package/dist/core/parser/import-processor.js +382 -0
  179. package/dist/core/parser/import-processor.js.map +1 -0
  180. package/dist/core/parser/import-resolvers/csharp.d.ts +19 -0
  181. package/dist/core/parser/import-resolvers/csharp.js +132 -0
  182. package/dist/core/parser/import-resolvers/csharp.js.map +1 -0
  183. package/dist/core/parser/import-resolvers/dart.d.ts +7 -0
  184. package/dist/core/parser/import-resolvers/dart.js +45 -0
  185. package/dist/core/parser/import-resolvers/dart.js.map +1 -0
  186. package/dist/core/parser/import-resolvers/go.d.ts +18 -0
  187. package/dist/core/parser/import-resolvers/go.js +62 -0
  188. package/dist/core/parser/import-resolvers/go.js.map +1 -0
  189. package/dist/core/parser/import-resolvers/jvm.d.ts +32 -0
  190. package/dist/core/parser/import-resolvers/jvm.js +160 -0
  191. package/dist/core/parser/import-resolvers/jvm.js.map +1 -0
  192. package/dist/core/parser/import-resolvers/php.d.ts +25 -0
  193. package/dist/core/parser/import-resolvers/php.js +81 -0
  194. package/dist/core/parser/import-resolvers/php.js.map +1 -0
  195. package/dist/core/parser/import-resolvers/python.d.ts +25 -0
  196. package/dist/core/parser/import-resolvers/python.js +85 -0
  197. package/dist/core/parser/import-resolvers/python.js.map +1 -0
  198. package/dist/core/parser/import-resolvers/ruby.d.ts +15 -0
  199. package/dist/core/parser/import-resolvers/ruby.js +21 -0
  200. package/dist/core/parser/import-resolvers/ruby.js.map +1 -0
  201. package/dist/core/parser/import-resolvers/rust.d.ts +18 -0
  202. package/dist/core/parser/import-resolvers/rust.js +119 -0
  203. package/dist/core/parser/import-resolvers/rust.js.map +1 -0
  204. package/dist/core/parser/import-resolvers/standard.d.ts +36 -0
  205. package/dist/core/parser/import-resolvers/standard.js +144 -0
  206. package/dist/core/parser/import-resolvers/standard.js.map +1 -0
  207. package/dist/core/parser/import-resolvers/swift.d.ts +7 -0
  208. package/dist/core/parser/import-resolvers/swift.js +25 -0
  209. package/dist/core/parser/import-resolvers/swift.js.map +1 -0
  210. package/dist/core/parser/import-resolvers/types.d.ts +44 -0
  211. package/dist/core/parser/import-resolvers/types.js +7 -0
  212. package/dist/core/parser/import-resolvers/types.js.map +1 -0
  213. package/dist/core/parser/import-resolvers/utils.d.ts +35 -0
  214. package/dist/core/parser/import-resolvers/utils.js +150 -0
  215. package/dist/core/parser/import-resolvers/utils.js.map +1 -0
  216. package/dist/core/parser/import-resolvers/vue.d.ts +8 -0
  217. package/dist/core/parser/import-resolvers/vue.js +10 -0
  218. package/dist/core/parser/import-resolvers/vue.js.map +1 -0
  219. package/dist/core/parser/language-config.d.ts +52 -0
  220. package/dist/core/parser/language-config.js +182 -0
  221. package/dist/core/parser/language-config.js.map +1 -0
  222. package/dist/core/parser/language-provider.d.ts +126 -0
  223. package/dist/core/parser/language-provider.js +25 -0
  224. package/dist/core/parser/language-provider.js.map +1 -0
  225. package/dist/core/parser/languages/c-cpp.d.ts +12 -0
  226. package/dist/core/parser/languages/c-cpp.js +312 -0
  227. package/dist/core/parser/languages/c-cpp.js.map +1 -0
  228. package/dist/core/parser/languages/csharp.d.ts +8 -0
  229. package/dist/core/parser/languages/csharp.js +127 -0
  230. package/dist/core/parser/languages/csharp.js.map +1 -0
  231. package/dist/core/parser/languages/dart.d.ts +12 -0
  232. package/dist/core/parser/languages/dart.js +91 -0
  233. package/dist/core/parser/languages/dart.js.map +1 -0
  234. package/dist/core/parser/languages/go.d.ts +11 -0
  235. package/dist/core/parser/languages/go.js +32 -0
  236. package/dist/core/parser/languages/go.js.map +1 -0
  237. package/dist/core/parser/languages/index.d.ts +38 -0
  238. package/dist/core/parser/languages/index.js +63 -0
  239. package/dist/core/parser/languages/index.js.map +1 -0
  240. package/dist/core/parser/languages/java.d.ts +9 -0
  241. package/dist/core/parser/languages/java.js +33 -0
  242. package/dist/core/parser/languages/java.js.map +1 -0
  243. package/dist/core/parser/languages/kotlin.d.ts +9 -0
  244. package/dist/core/parser/languages/kotlin.js +112 -0
  245. package/dist/core/parser/languages/kotlin.js.map +1 -0
  246. package/dist/core/parser/languages/php.d.ts +8 -0
  247. package/dist/core/parser/languages/php.js +226 -0
  248. package/dist/core/parser/languages/php.js.map +1 -0
  249. package/dist/core/parser/languages/python.d.ts +12 -0
  250. package/dist/core/parser/languages/python.js +66 -0
  251. package/dist/core/parser/languages/python.js.map +1 -0
  252. package/dist/core/parser/languages/ruby.d.ts +9 -0
  253. package/dist/core/parser/languages/ruby.js +109 -0
  254. package/dist/core/parser/languages/ruby.js.map +1 -0
  255. package/dist/core/parser/languages/rust.d.ts +12 -0
  256. package/dist/core/parser/languages/rust.js +121 -0
  257. package/dist/core/parser/languages/rust.js.map +1 -0
  258. package/dist/core/parser/languages/swift.d.ts +12 -0
  259. package/dist/core/parser/languages/swift.js +233 -0
  260. package/dist/core/parser/languages/swift.js.map +1 -0
  261. package/dist/core/parser/languages/typescript.d.ts +11 -0
  262. package/dist/core/parser/languages/typescript.js +169 -0
  263. package/dist/core/parser/languages/typescript.js.map +1 -0
  264. package/dist/core/parser/languages/vue.d.ts +13 -0
  265. package/dist/core/parser/languages/vue.js +65 -0
  266. package/dist/core/parser/languages/vue.js.map +1 -0
  267. package/dist/core/parser/markdown-processor.d.ts +17 -0
  268. package/dist/core/parser/markdown-processor.js +125 -0
  269. package/dist/core/parser/markdown-processor.js.map +1 -0
  270. package/dist/core/parser/method-extractors/configs/c-cpp.d.ts +3 -0
  271. package/dist/core/parser/method-extractors/configs/c-cpp.js +276 -0
  272. package/dist/core/parser/method-extractors/configs/c-cpp.js.map +1 -0
  273. package/dist/core/parser/method-extractors/configs/csharp.d.ts +2 -0
  274. package/dist/core/parser/method-extractors/configs/csharp.js +243 -0
  275. package/dist/core/parser/method-extractors/configs/csharp.js.map +1 -0
  276. package/dist/core/parser/method-extractors/configs/dart.d.ts +2 -0
  277. package/dist/core/parser/method-extractors/configs/dart.js +263 -0
  278. package/dist/core/parser/method-extractors/configs/dart.js.map +1 -0
  279. package/dist/core/parser/method-extractors/configs/go.d.ts +2 -0
  280. package/dist/core/parser/method-extractors/configs/go.js +120 -0
  281. package/dist/core/parser/method-extractors/configs/go.js.map +1 -0
  282. package/dist/core/parser/method-extractors/configs/jvm.d.ts +3 -0
  283. package/dist/core/parser/method-extractors/configs/jvm.js +309 -0
  284. package/dist/core/parser/method-extractors/configs/jvm.js.map +1 -0
  285. package/dist/core/parser/method-extractors/configs/php.d.ts +2 -0
  286. package/dist/core/parser/method-extractors/configs/php.js +243 -0
  287. package/dist/core/parser/method-extractors/configs/php.js.map +1 -0
  288. package/dist/core/parser/method-extractors/configs/python.d.ts +2 -0
  289. package/dist/core/parser/method-extractors/configs/python.js +219 -0
  290. package/dist/core/parser/method-extractors/configs/python.js.map +1 -0
  291. package/dist/core/parser/method-extractors/configs/ruby.d.ts +2 -0
  292. package/dist/core/parser/method-extractors/configs/ruby.js +201 -0
  293. package/dist/core/parser/method-extractors/configs/ruby.js.map +1 -0
  294. package/dist/core/parser/method-extractors/configs/rust.d.ts +2 -0
  295. package/dist/core/parser/method-extractors/configs/rust.js +120 -0
  296. package/dist/core/parser/method-extractors/configs/rust.js.map +1 -0
  297. package/dist/core/parser/method-extractors/configs/swift.d.ts +2 -0
  298. package/dist/core/parser/method-extractors/configs/swift.js +191 -0
  299. package/dist/core/parser/method-extractors/configs/swift.js.map +1 -0
  300. package/dist/core/parser/method-extractors/configs/typescript-javascript.d.ts +3 -0
  301. package/dist/core/parser/method-extractors/configs/typescript-javascript.js +231 -0
  302. package/dist/core/parser/method-extractors/configs/typescript-javascript.js.map +1 -0
  303. package/dist/core/parser/method-extractors/generic.d.ts +11 -0
  304. package/dist/core/parser/method-extractors/generic.js +162 -0
  305. package/dist/core/parser/method-extractors/generic.js.map +1 -0
  306. package/dist/core/parser/method-types.d.ts +110 -0
  307. package/dist/core/parser/method-types.js +2 -0
  308. package/dist/core/parser/method-types.js.map +1 -0
  309. package/dist/core/parser/mro-processor.d.ts +46 -0
  310. package/dist/core/parser/mro-processor.js +677 -0
  311. package/dist/core/parser/mro-processor.js.map +1 -0
  312. package/dist/core/parser/named-binding-processor.d.ts +18 -0
  313. package/dist/core/parser/named-binding-processor.js +43 -0
  314. package/dist/core/parser/named-binding-processor.js.map +1 -0
  315. package/dist/core/parser/named-bindings/csharp.d.ts +3 -0
  316. package/dist/core/parser/named-bindings/csharp.js +38 -0
  317. package/dist/core/parser/named-bindings/csharp.js.map +1 -0
  318. package/dist/core/parser/named-bindings/java.d.ts +3 -0
  319. package/dist/core/parser/named-bindings/java.js +30 -0
  320. package/dist/core/parser/named-bindings/java.js.map +1 -0
  321. package/dist/core/parser/named-bindings/kotlin.d.ts +3 -0
  322. package/dist/core/parser/named-bindings/kotlin.js +37 -0
  323. package/dist/core/parser/named-bindings/kotlin.js.map +1 -0
  324. package/dist/core/parser/named-bindings/php.d.ts +3 -0
  325. package/dist/core/parser/named-bindings/php.js +62 -0
  326. package/dist/core/parser/named-bindings/php.js.map +1 -0
  327. package/dist/core/parser/named-bindings/python.d.ts +3 -0
  328. package/dist/core/parser/named-bindings/python.js +50 -0
  329. package/dist/core/parser/named-bindings/python.js.map +1 -0
  330. package/dist/core/parser/named-bindings/rust.d.ts +3 -0
  331. package/dist/core/parser/named-bindings/rust.js +67 -0
  332. package/dist/core/parser/named-bindings/rust.js.map +1 -0
  333. package/dist/core/parser/named-bindings/types.d.ts +16 -0
  334. package/dist/core/parser/named-bindings/types.js +7 -0
  335. package/dist/core/parser/named-bindings/types.js.map +1 -0
  336. package/dist/core/parser/named-bindings/typescript.d.ts +3 -0
  337. package/dist/core/parser/named-bindings/typescript.js +59 -0
  338. package/dist/core/parser/named-bindings/typescript.js.map +1 -0
  339. package/dist/core/parser/parsing-processor.d.ts +23 -0
  340. package/dist/core/parser/parsing-processor.js +464 -0
  341. package/dist/core/parser/parsing-processor.js.map +1 -0
  342. package/dist/core/parser/pipeline.d.ts +17 -0
  343. package/dist/core/parser/pipeline.js +1405 -0
  344. package/dist/core/parser/pipeline.js.map +1 -0
  345. package/dist/core/parser/process-processor.d.ts +51 -0
  346. package/dist/core/parser/process-processor.js +318 -0
  347. package/dist/core/parser/process-processor.js.map +1 -0
  348. package/dist/core/parser/resolution-context.d.ts +58 -0
  349. package/dist/core/parser/resolution-context.js +136 -0
  350. package/dist/core/parser/resolution-context.js.map +1 -0
  351. package/dist/core/parser/route-extractors/expo.d.ts +1 -0
  352. package/dist/core/parser/route-extractors/expo.js +37 -0
  353. package/dist/core/parser/route-extractors/expo.js.map +1 -0
  354. package/dist/core/parser/route-extractors/middleware.d.ts +47 -0
  355. package/dist/core/parser/route-extractors/middleware.js +168 -0
  356. package/dist/core/parser/route-extractors/middleware.js.map +1 -0
  357. package/dist/core/parser/route-extractors/nextjs.d.ts +3 -0
  358. package/dist/core/parser/route-extractors/nextjs.js +77 -0
  359. package/dist/core/parser/route-extractors/nextjs.js.map +1 -0
  360. package/dist/core/parser/route-extractors/php.d.ts +7 -0
  361. package/dist/core/parser/route-extractors/php.js +23 -0
  362. package/dist/core/parser/route-extractors/php.js.map +1 -0
  363. package/dist/core/parser/route-extractors/response-shapes.d.ts +20 -0
  364. package/dist/core/parser/route-extractors/response-shapes.js +295 -0
  365. package/dist/core/parser/route-extractors/response-shapes.js.map +1 -0
  366. package/dist/core/parser/structure-processor.d.ts +2 -0
  367. package/dist/core/parser/structure-processor.js +37 -0
  368. package/dist/core/parser/structure-processor.js.map +1 -0
  369. package/dist/core/parser/symbol-table.d.ts +79 -0
  370. package/dist/core/parser/symbol-table.js +116 -0
  371. package/dist/core/parser/symbol-table.js.map +1 -0
  372. package/dist/core/parser/tree-sitter-queries.d.ts +16 -0
  373. package/dist/core/parser/tree-sitter-queries.js +1180 -0
  374. package/dist/core/parser/tree-sitter-queries.js.map +1 -0
  375. package/dist/core/parser/type-env.d.ts +81 -0
  376. package/dist/core/parser/type-env.js +1048 -0
  377. package/dist/core/parser/type-env.js.map +1 -0
  378. package/dist/core/parser/type-extractors/c-cpp.d.ts +7 -0
  379. package/dist/core/parser/type-extractors/c-cpp.js +533 -0
  380. package/dist/core/parser/type-extractors/c-cpp.js.map +1 -0
  381. package/dist/core/parser/type-extractors/csharp.d.ts +2 -0
  382. package/dist/core/parser/type-extractors/csharp.js +584 -0
  383. package/dist/core/parser/type-extractors/csharp.js.map +1 -0
  384. package/dist/core/parser/type-extractors/dart.d.ts +15 -0
  385. package/dist/core/parser/type-extractors/dart.js +370 -0
  386. package/dist/core/parser/type-extractors/dart.js.map +1 -0
  387. package/dist/core/parser/type-extractors/go.d.ts +2 -0
  388. package/dist/core/parser/type-extractors/go.js +514 -0
  389. package/dist/core/parser/type-extractors/go.js.map +1 -0
  390. package/dist/core/parser/type-extractors/jvm.d.ts +3 -0
  391. package/dist/core/parser/type-extractors/jvm.js +857 -0
  392. package/dist/core/parser/type-extractors/jvm.js.map +1 -0
  393. package/dist/core/parser/type-extractors/php.d.ts +2 -0
  394. package/dist/core/parser/type-extractors/php.js +535 -0
  395. package/dist/core/parser/type-extractors/php.js.map +1 -0
  396. package/dist/core/parser/type-extractors/python.d.ts +2 -0
  397. package/dist/core/parser/type-extractors/python.js +475 -0
  398. package/dist/core/parser/type-extractors/python.js.map +1 -0
  399. package/dist/core/parser/type-extractors/ruby.d.ts +2 -0
  400. package/dist/core/parser/type-extractors/ruby.js +378 -0
  401. package/dist/core/parser/type-extractors/ruby.js.map +1 -0
  402. package/dist/core/parser/type-extractors/rust.d.ts +2 -0
  403. package/dist/core/parser/type-extractors/rust.js +516 -0
  404. package/dist/core/parser/type-extractors/rust.js.map +1 -0
  405. package/dist/core/parser/type-extractors/shared.d.ts +131 -0
  406. package/dist/core/parser/type-extractors/shared.js +797 -0
  407. package/dist/core/parser/type-extractors/shared.js.map +1 -0
  408. package/dist/core/parser/type-extractors/swift.d.ts +2 -0
  409. package/dist/core/parser/type-extractors/swift.js +485 -0
  410. package/dist/core/parser/type-extractors/swift.js.map +1 -0
  411. package/dist/core/parser/type-extractors/types.d.ts +172 -0
  412. package/dist/core/parser/type-extractors/types.js +2 -0
  413. package/dist/core/parser/type-extractors/types.js.map +1 -0
  414. package/dist/core/parser/type-extractors/typescript.d.ts +2 -0
  415. package/dist/core/parser/type-extractors/typescript.js +662 -0
  416. package/dist/core/parser/type-extractors/typescript.js.map +1 -0
  417. package/dist/core/parser/utils/ast-helpers.d.ts +73 -0
  418. package/dist/core/parser/utils/ast-helpers.js +415 -0
  419. package/dist/core/parser/utils/ast-helpers.js.map +1 -0
  420. package/dist/core/parser/utils/call-analysis.d.ts +75 -0
  421. package/dist/core/parser/utils/call-analysis.js +575 -0
  422. package/dist/core/parser/utils/call-analysis.js.map +1 -0
  423. package/dist/core/parser/utils/event-loop.d.ts +5 -0
  424. package/dist/core/parser/utils/event-loop.js +6 -0
  425. package/dist/core/parser/utils/event-loop.js.map +1 -0
  426. package/dist/core/parser/utils/method-props.d.ts +8 -0
  427. package/dist/core/parser/utils/method-props.js +39 -0
  428. package/dist/core/parser/utils/method-props.js.map +1 -0
  429. package/dist/core/parser/utils/verbose.d.ts +1 -0
  430. package/dist/core/parser/utils/verbose.js +8 -0
  431. package/dist/core/parser/utils/verbose.js.map +1 -0
  432. package/dist/core/parser/vue-sfc-extractor.d.ts +44 -0
  433. package/dist/core/parser/vue-sfc-extractor.js +95 -0
  434. package/dist/core/parser/vue-sfc-extractor.js.map +1 -0
  435. package/dist/core/parser/workers/parse-worker.d.ts +171 -0
  436. package/dist/core/parser/workers/parse-worker.js +1724 -0
  437. package/dist/core/parser/workers/parse-worker.js.map +1 -0
  438. package/dist/core/parser/workers/worker-pool.d.ts +16 -0
  439. package/dist/core/parser/workers/worker-pool.js +124 -0
  440. package/dist/core/parser/workers/worker-pool.js.map +1 -0
  441. package/dist/core/shared/graph-types.d.ts +61 -0
  442. package/dist/core/shared/graph-types.js +5 -0
  443. package/dist/core/shared/graph-types.js.map +1 -0
  444. package/dist/core/shared/index.d.ts +4 -0
  445. package/dist/core/shared/index.js +4 -0
  446. package/dist/core/shared/index.js.map +1 -0
  447. package/dist/core/shared/language-detection.d.ts +22 -0
  448. package/dist/core/shared/language-detection.js +137 -0
  449. package/dist/core/shared/language-detection.js.map +1 -0
  450. package/dist/core/shared/languages.d.ts +23 -0
  451. package/dist/core/shared/languages.js +25 -0
  452. package/dist/core/shared/languages.js.map +1 -0
  453. package/dist/core/shared/pipeline.d.ts +15 -0
  454. package/dist/core/shared/pipeline.js +5 -0
  455. package/dist/core/shared/pipeline.js.map +1 -0
  456. package/dist/core/tree-sitter/parser-loader.d.ts +5 -0
  457. package/dist/core/tree-sitter/parser-loader.js +71 -0
  458. package/dist/core/tree-sitter/parser-loader.js.map +1 -0
  459. package/dist/index.d.ts +2 -0
  460. package/dist/index.js +132 -0
  461. package/dist/index.js.map +1 -0
  462. package/dist/lib/hash.d.ts +1 -0
  463. package/dist/lib/hash.js +6 -0
  464. package/dist/lib/hash.js.map +1 -0
  465. package/dist/lib/naming.d.ts +12 -0
  466. package/dist/lib/naming.js +28 -0
  467. package/dist/lib/naming.js.map +1 -0
  468. package/dist/lib/utils.d.ts +1 -0
  469. package/dist/lib/utils.js +4 -0
  470. package/dist/lib/utils.js.map +1 -0
  471. package/dist/mcp/server.d.ts +26 -0
  472. package/dist/mcp/server.js +282 -0
  473. package/dist/mcp/server.js.map +1 -0
  474. package/dist/mcp/tools.d.ts +37 -0
  475. package/dist/mcp/tools.js +650 -0
  476. package/dist/mcp/tools.js.map +1 -0
  477. package/dist/query/bm25.d.ts +19 -0
  478. package/dist/query/bm25.js +60 -0
  479. package/dist/query/bm25.js.map +1 -0
  480. package/dist/query/graph-index.d.ts +40 -0
  481. package/dist/query/graph-index.js +178 -0
  482. package/dist/query/graph-index.js.map +1 -0
  483. package/dist/store/derived-index.d.ts +4 -0
  484. package/dist/store/derived-index.js +68 -0
  485. package/dist/store/derived-index.js.map +1 -0
  486. package/dist/store/meta.d.ts +1 -0
  487. package/dist/store/meta.js +3 -0
  488. package/dist/store/meta.js.map +1 -0
  489. package/dist/store/schema.d.ts +135 -0
  490. package/dist/store/schema.js +2 -0
  491. package/dist/store/schema.js.map +1 -0
  492. package/dist/store/store.d.ts +49 -0
  493. package/dist/store/store.js +254 -0
  494. package/dist/store/store.js.map +1 -0
  495. package/dist/types/pipeline.d.ts +12 -0
  496. package/dist/types/pipeline.js +2 -0
  497. package/dist/types/pipeline.js.map +1 -0
  498. package/package.json +69 -0
  499. package/skills/cotx-enrich/SKILL.md +59 -0
  500. package/vendor/leiden/index.cjs +355 -0
  501. package/vendor/leiden/utils.cjs +392 -0
@@ -0,0 +1,221 @@
1
+ import { CotxStore } from '../store/store.js';
2
+ import { rebuildDerivedIndex } from '../store/derived-index.js';
3
+ import { CotxGraph } from '../query/graph-index.js';
4
+ // ── Zone protection ─────────────────────────────────────────────────────────
5
+ const DETERMINISTIC_FIELDS = new Set([
6
+ 'id',
7
+ 'files',
8
+ 'struct_hash',
9
+ 'canonical_entry',
10
+ 'depends_on',
11
+ 'depended_by',
12
+ 'provider',
13
+ 'consumer',
14
+ 'interface',
15
+ 'trigger',
16
+ 'steps',
17
+ 'states',
18
+ 'transitions',
19
+ 'aliases',
20
+ 'appears_in',
21
+ 'layer',
22
+ 'type',
23
+ 'owner_module',
24
+ 'state_field',
25
+ 'auto_description',
26
+ ]);
27
+ const ENRICHED_FIELD_SHAPES = {
28
+ module: {
29
+ responsibility: 'string',
30
+ key_patterns: 'string',
31
+ },
32
+ concept: {
33
+ definition: 'string',
34
+ distinguished_from: 'distinguished_from',
35
+ },
36
+ contract: {
37
+ guarantees: 'string[]',
38
+ invariants: 'string[]',
39
+ },
40
+ flow: {
41
+ error_paths: 'error_paths',
42
+ guards: 'guards',
43
+ invariants: 'string[]',
44
+ },
45
+ };
46
+ function parseStructuredArray(content) {
47
+ const parsed = JSON.parse(content);
48
+ if (!Array.isArray(parsed)) {
49
+ throw new Error('expected a JSON array');
50
+ }
51
+ return parsed;
52
+ }
53
+ function parseEnrichedValue(layer, fieldName, content) {
54
+ const shape = ENRICHED_FIELD_SHAPES[layer]?.[fieldName] ?? 'string';
55
+ switch (shape) {
56
+ case 'string':
57
+ return content;
58
+ case 'string[]': {
59
+ const parsed = parseStructuredArray(content);
60
+ if (!parsed.every((item) => typeof item === 'string')) {
61
+ throw new Error('expected an array of strings');
62
+ }
63
+ return parsed;
64
+ }
65
+ case 'error_paths': {
66
+ const parsed = parseStructuredArray(content);
67
+ if (!parsed.every((item) => item &&
68
+ typeof item === 'object' &&
69
+ typeof item.condition === 'string' &&
70
+ typeof item.behavior === 'string')) {
71
+ throw new Error('expected [{condition, behavior}, ...]');
72
+ }
73
+ return parsed;
74
+ }
75
+ case 'guards': {
76
+ const parsed = parseStructuredArray(content);
77
+ if (!parsed.every((item) => item &&
78
+ typeof item === 'object' &&
79
+ typeof item.transition === 'string' &&
80
+ typeof item.condition === 'string')) {
81
+ throw new Error('expected [{transition, condition}, ...]');
82
+ }
83
+ return parsed;
84
+ }
85
+ case 'distinguished_from': {
86
+ const parsed = parseStructuredArray(content);
87
+ if (!parsed.every((item) => item &&
88
+ typeof item === 'object' &&
89
+ typeof item.term === 'string' &&
90
+ typeof item.difference === 'string')) {
91
+ throw new Error('expected [{term, difference}, ...]');
92
+ }
93
+ return parsed;
94
+ }
95
+ }
96
+ }
97
+ // ── Node lookup ──────────────────────────────────────────────────────────────
98
+ function findNodeAcrossLayers(store, nodeId) {
99
+ if (store.listModules().includes(nodeId)) {
100
+ return { layer: 'module', data: store.readModule(nodeId) };
101
+ }
102
+ if (store.listConcepts().includes(nodeId)) {
103
+ return { layer: 'concept', data: store.readConcept(nodeId) };
104
+ }
105
+ if (store.listContracts().includes(nodeId)) {
106
+ return {
107
+ layer: 'contract',
108
+ data: store.readContract(nodeId),
109
+ };
110
+ }
111
+ if (store.listFlows().includes(nodeId)) {
112
+ return { layer: 'flow', data: store.readFlow(nodeId) };
113
+ }
114
+ return null;
115
+ }
116
+ // ── Write helpers ────────────────────────────────────────────────────────────
117
+ function writeNodeToStore(store, layer, data) {
118
+ switch (layer) {
119
+ case 'module':
120
+ store.writeModule(data);
121
+ break;
122
+ case 'concept':
123
+ store.writeConcept(data);
124
+ break;
125
+ case 'contract':
126
+ store.writeContract(data);
127
+ break;
128
+ case 'flow':
129
+ store.writeFlow(data);
130
+ break;
131
+ }
132
+ }
133
+ function writeEnriched(store, node, fieldName, content) {
134
+ if (DETERMINISTIC_FIELDS.has(fieldName)) {
135
+ return {
136
+ success: false,
137
+ message: `Field "${fieldName}" is deterministic-only and cannot be written via enriched zone.`,
138
+ };
139
+ }
140
+ const data = node.data;
141
+ if (!data.enriched) {
142
+ data.enriched = { source_hash: data.struct_hash, enriched_at: new Date().toISOString() };
143
+ }
144
+ try {
145
+ data.enriched[fieldName] = parseEnrichedValue(node.layer, fieldName, content);
146
+ }
147
+ catch (error) {
148
+ const message = error instanceof Error ? error.message : String(error);
149
+ return {
150
+ success: false,
151
+ message: `Invalid enriched.${fieldName}: ${message}`,
152
+ };
153
+ }
154
+ data.enriched['source_hash'] = data.struct_hash;
155
+ data.enriched['enriched_at'] = new Date().toISOString();
156
+ writeNodeToStore(store, node.layer, data);
157
+ rebuildDerivedIndex(store);
158
+ CotxGraph.invalidateCache();
159
+ return { success: true, message: `Updated ${node.layer}/${data.id} enriched.${fieldName}` };
160
+ }
161
+ function writeAnnotation(store, node, annotationType, content, options) {
162
+ const validTypes = ['constraint', 'intent', 'concern', 'question'];
163
+ if (!validTypes.includes(annotationType)) {
164
+ return {
165
+ success: false,
166
+ message: `Invalid annotation type: ${annotationType}. Use: ${validTypes.join(', ')}`,
167
+ };
168
+ }
169
+ const data = node.data;
170
+ if (!data.annotations)
171
+ data.annotations = [];
172
+ data.annotations.push({
173
+ author: options?.author ?? 'human',
174
+ type: annotationType,
175
+ content,
176
+ date: new Date().toISOString().split('T')[0],
177
+ });
178
+ writeNodeToStore(store, node.layer, data);
179
+ rebuildDerivedIndex(store);
180
+ CotxGraph.invalidateCache();
181
+ return {
182
+ success: true,
183
+ message: `Added ${annotationType} annotation to ${node.layer}/${data.id}`,
184
+ };
185
+ }
186
+ // ── Public API ───────────────────────────────────────────────────────────────
187
+ export async function commandWrite(projectRoot, nodeId, field, content, options) {
188
+ const store = new CotxStore(projectRoot);
189
+ if (!store.exists()) {
190
+ return { success: false, message: 'No .cotx/ found. Run: cotx compile' };
191
+ }
192
+ const [zone, fieldName] = field.split('.', 2);
193
+ if (!zone || !fieldName) {
194
+ return {
195
+ success: false,
196
+ message: `Invalid field: ${field}. Use enriched.<field> or annotation.<type>`,
197
+ };
198
+ }
199
+ const node = findNodeAcrossLayers(store, nodeId);
200
+ if (!node) {
201
+ return { success: false, message: `Node "${nodeId}" not found` };
202
+ }
203
+ let result;
204
+ if (zone === 'enriched') {
205
+ result = writeEnriched(store, node, fieldName, content);
206
+ }
207
+ else if (zone === 'annotation') {
208
+ result = writeAnnotation(store, node, fieldName, content, options);
209
+ }
210
+ else {
211
+ return {
212
+ success: false,
213
+ message: `Unknown zone: ${zone}. Use enriched or annotation`,
214
+ };
215
+ }
216
+ if (result.success) {
217
+ store.appendLog({ operation: 'write', affected_nodes: [nodeId], summary: `${field} on ${nodeId}` });
218
+ }
219
+ return result;
220
+ }
221
+ //# sourceMappingURL=write.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write.js","sourceRoot":"","sources":["../../src/commands/write.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { CotxStore } from '../store/store.js';
2
+ import type { ModuleNode } from '../store/schema.js';
3
+ import type { GraphNode } from '../core/export/json-exporter.js';
4
+ /**
5
+ * Generate deterministic one-line descriptions for modules that lack
6
+ * enriched.responsibility. Uses function/type names to extract the
7
+ * top action verbs and domain nouns.
8
+ *
9
+ * Only writes auto_description (not enriched.responsibility) to avoid
10
+ * overwriting LLM-quality enrichments. The map display prefers
11
+ * enriched.responsibility when available, falls back to auto_description.
12
+ */
13
+ export declare function autoDescribeModules(store: CotxStore, nodes: GraphNode[], modules: ModuleNode[]): void;
@@ -0,0 +1,91 @@
1
+ import { splitCompoundName } from '../lib/naming.js';
2
+ import { eng as ENGLISH_STOPWORDS } from 'stopword';
3
+ const SKIP_WORDS = new Set([
4
+ ...ENGLISH_STOPWORDS,
5
+ 'get', 'set', 'new', 'create', 'handle', 'error', 'config', 'init',
6
+ 'test', 'mock', 'base', 'default', 'internal', 'util', 'helper',
7
+ 'func', 'run', 'load', 'save', 'read', 'write', 'parse',
8
+ 'string', 'value', 'result', 'node', 'file', 'path', 'name',
9
+ 'args', 'options', 'command', 'true', 'false', 'null',
10
+ ]);
11
+ /**
12
+ * Generate deterministic one-line descriptions for modules that lack
13
+ * enriched.responsibility. Uses function/type names to extract the
14
+ * top action verbs and domain nouns.
15
+ *
16
+ * Only writes auto_description (not enriched.responsibility) to avoid
17
+ * overwriting LLM-quality enrichments. The map display prefers
18
+ * enriched.responsibility when available, falls back to auto_description.
19
+ */
20
+ export function autoDescribeModules(store, nodes, modules) {
21
+ // Build: moduleId → list of exported function/type names
22
+ const moduleNames = new Map();
23
+ // Map file → moduleId
24
+ const fileToModule = new Map();
25
+ for (const mod of modules) {
26
+ for (const f of mod.files) {
27
+ fileToModule.set(f, mod.id);
28
+ }
29
+ }
30
+ for (const node of nodes) {
31
+ const fp = node.properties.filePath;
32
+ const name = node.properties.name;
33
+ const exported = node.properties.isExported;
34
+ if (!fp || !name || !exported)
35
+ continue;
36
+ const modId = fileToModule.get(fp);
37
+ if (!modId)
38
+ continue;
39
+ if (!moduleNames.has(modId))
40
+ moduleNames.set(modId, []);
41
+ moduleNames.get(modId).push(name);
42
+ }
43
+ for (const mod of modules) {
44
+ const existing = store.readModule(mod.id);
45
+ const names = moduleNames.get(mod.id) ?? [];
46
+ if (names.length === 0)
47
+ continue;
48
+ const desc = generateDescription(names, mod.canonical_entry);
49
+ if (!desc)
50
+ continue;
51
+ // Write as auto_description — a deterministic fallback.
52
+ // Never overwrites LLM-written responsibility.
53
+ const enriched = existing.enriched ?? {
54
+ source_hash: mod.struct_hash,
55
+ enriched_at: new Date().toISOString(),
56
+ };
57
+ enriched.auto_description = desc;
58
+ enriched.source_hash = mod.struct_hash;
59
+ enriched.enriched_at = new Date().toISOString();
60
+ store.writeModule({ ...existing, enriched });
61
+ }
62
+ }
63
+ function generateDescription(names, canonicalEntry) {
64
+ // Extract word roots from all exported names
65
+ const wordCounts = new Map();
66
+ for (const name of names) {
67
+ const words = splitCompoundName(name);
68
+ for (const w of words) {
69
+ if (w.length < 3 || SKIP_WORDS.has(w))
70
+ continue;
71
+ wordCounts.set(w, (wordCounts.get(w) ?? 0) + 1);
72
+ }
73
+ }
74
+ if (wordCounts.size === 0)
75
+ return null;
76
+ // Top 5 words by frequency, then alphabetically
77
+ const sorted = [...wordCounts.entries()]
78
+ .sort((a, b) => b[1] - a[1] || a[0].localeCompare(b[0]))
79
+ .slice(0, 5);
80
+ const topWords = sorted.map(([w]) => w);
81
+ // Build: "Handles <top words> operations via <canonical entry>"
82
+ const wordsStr = topWords.join(', ');
83
+ if (canonicalEntry) {
84
+ return `${capitalize(topWords[0])} operations: ${wordsStr} (entry: ${canonicalEntry})`;
85
+ }
86
+ return `${capitalize(topWords[0])} operations: ${wordsStr}`;
87
+ }
88
+ function capitalize(s) {
89
+ return s.charAt(0).toUpperCase() + s.slice(1);
90
+ }
91
+ //# sourceMappingURL=auto-describe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-describe.js","sourceRoot":"","sources":["../../src/compiler/auto-describe.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { GraphNode } from '../core/export/json-exporter.js';
2
+ import type { ModuleNode, ConceptNode } from '../store/schema.js';
3
+ export interface ConceptCompilerOptions {
4
+ /** Minimum distinct symbols a word root must appear in. Default: 3 */
5
+ minSymbolCount?: number;
6
+ }
7
+ /**
8
+ * Compile exported symbols into ConceptNode[].
9
+ *
10
+ * Algorithm:
11
+ * 1. Collect candidate nodes: exported types + functions.
12
+ * 2. Split each symbol name into word roots via splitCompoundName().
13
+ * 3. Count how many distinct symbols each word root appears in.
14
+ * 4. Threshold filter: keep roots appearing in ≥ 3 distinct symbols.
15
+ * 5. Noise filter: remove generic programming words.
16
+ * 6. For each surviving root, collect all file paths where it appears.
17
+ * 7. Assign to the module where it appears most frequently (→ layer).
18
+ * 8. Compute struct_hash from { id, aliases, appears_in }.
19
+ * 9. Return ConceptNode[] sorted alphabetically by id.
20
+ */
21
+ export declare function compileConcepts(nodes: GraphNode[], modules: ModuleNode[], options?: ConceptCompilerOptions): ConceptNode[];
@@ -0,0 +1,125 @@
1
+ import { splitCompoundName, moduleIdForFile } from '../lib/naming.js';
2
+ import { structHash } from '../lib/hash.js';
3
+ import { eng as ENGLISH_STOPWORDS } from 'stopword';
4
+ /** Minimum word length to be considered a concept. */
5
+ const MIN_WORD_LENGTH = 3;
6
+ /**
7
+ * Words too generic to carry domain meaning.
8
+ * Combines English stopwords + code-specific noise.
9
+ */
10
+ const NOISE_WORDS = new Set([
11
+ // English stopwords (about, after, all, also, and, any, are, as, at, be, ...)
12
+ ...ENGLISH_STOPWORDS,
13
+ // Code-generic verbs/nouns
14
+ 'get', 'set', 'new', 'create', 'handle', 'error', 'config', 'init',
15
+ 'type', 'data', 'info', 'item', 'list', 'map', 'test', 'mock', 'base',
16
+ 'default', 'internal', 'util', 'helper', 'manager', 'service', 'handler',
17
+ 'processor', 'builder', 'factory', 'impl', 'abstract', 'interface',
18
+ // Common low-signal code words
19
+ 'load', 'save', 'read', 'write', 'parse', 'string', 'value', 'result',
20
+ 'node', 'file', 'path', 'name', 'func', 'call', 'args', 'options',
21
+ 'command', 'input', 'output', 'check', 'find', 'make', 'return',
22
+ 'run', 'start', 'stop', 'open', 'close', 'send', 'copy', 'move',
23
+ 'true', 'false', 'null', 'none', 'empty', 'count', 'size', 'length',
24
+ 'index', 'key', 'val', 'err', 'msg', 'log', 'flag', 'mode', 'kind',
25
+ 'uses', 'used', 'using', 'with', 'from', 'into', 'when', 'then',
26
+ 'each', 'next', 'prev', 'last', 'first', 'has', 'was', 'did', 'does',
27
+ 'should', 'must', 'can', 'may', 'will', 'try', 'not', 'only',
28
+ ]);
29
+ /** Node labels that are potential concept carriers. */
30
+ const CONCEPT_LABELS = new Set(['Class', 'Interface', 'Struct', 'Enum', 'Type', 'Function']);
31
+ /**
32
+ * Produce CamelCase, snake_case, and kebab-case variants of a word root.
33
+ */
34
+ function buildAliases(word) {
35
+ const camel = word.charAt(0).toUpperCase() + word.slice(1);
36
+ const snake = word; // already lower-cased word root = snake_case atom
37
+ const kebab = word; // single word: same as snake
38
+ return [...new Set([camel, snake, kebab])];
39
+ }
40
+ /**
41
+ * Compile exported symbols into ConceptNode[].
42
+ *
43
+ * Algorithm:
44
+ * 1. Collect candidate nodes: exported types + functions.
45
+ * 2. Split each symbol name into word roots via splitCompoundName().
46
+ * 3. Count how many distinct symbols each word root appears in.
47
+ * 4. Threshold filter: keep roots appearing in ≥ 3 distinct symbols.
48
+ * 5. Noise filter: remove generic programming words.
49
+ * 6. For each surviving root, collect all file paths where it appears.
50
+ * 7. Assign to the module where it appears most frequently (→ layer).
51
+ * 8. Compute struct_hash from { id, aliases, appears_in }.
52
+ * 9. Return ConceptNode[] sorted alphabetically by id.
53
+ */
54
+ export function compileConcepts(nodes, modules, options) {
55
+ const minSymbolCount = options?.minSymbolCount ?? 3;
56
+ // Step 1: filter to exported symbols (types + functions)
57
+ const candidates = nodes.filter((n) => CONCEPT_LABELS.has(n.label) &&
58
+ n.properties.isExported === true);
59
+ // Build a lookup: moduleId → Set<filePath> (for tie-breaking later, not strictly needed)
60
+ const moduleFileSet = new Map();
61
+ for (const mod of modules) {
62
+ moduleFileSet.set(mod.id, new Set(mod.files));
63
+ }
64
+ // Step 2 & 3: map word root → Set of symbol IDs that contain it
65
+ // Also track word root → Set of file paths where it appears
66
+ const rootToSymbols = new Map();
67
+ const rootToFiles = new Map();
68
+ for (const node of candidates) {
69
+ const name = node.properties.name;
70
+ if (!name)
71
+ continue;
72
+ const filePath = node.properties.filePath;
73
+ const words = splitCompoundName(name);
74
+ for (const word of words) {
75
+ if (word.length < MIN_WORD_LENGTH)
76
+ continue;
77
+ if (!rootToSymbols.has(word)) {
78
+ rootToSymbols.set(word, new Set());
79
+ rootToFiles.set(word, new Set());
80
+ }
81
+ rootToSymbols.get(word).add(node.id);
82
+ if (filePath) {
83
+ rootToFiles.get(word).add(filePath);
84
+ }
85
+ }
86
+ }
87
+ // Step 4 & 5: threshold ≥ 3 distinct symbols, remove noise
88
+ const concepts = [];
89
+ for (const [word, symbolIds] of rootToSymbols) {
90
+ if (symbolIds.size < minSymbolCount)
91
+ continue;
92
+ if (NOISE_WORDS.has(word))
93
+ continue;
94
+ // Step 6: file paths where this concept appears
95
+ const appearsIn = [...rootToFiles.get(word)].sort();
96
+ // Step 7: find module where this concept appears most
97
+ const moduleCount = new Map();
98
+ for (const filePath of appearsIn) {
99
+ const modId = moduleIdForFile(filePath);
100
+ moduleCount.set(modId, (moduleCount.get(modId) ?? 0) + 1);
101
+ }
102
+ let layer = '_root';
103
+ let maxCount = 0;
104
+ for (const [modId, count] of moduleCount) {
105
+ if (count > maxCount || (count === maxCount && modId < layer)) {
106
+ maxCount = count;
107
+ layer = modId;
108
+ }
109
+ }
110
+ // Step 8: struct_hash
111
+ const aliases = buildAliases(word);
112
+ const hash = structHash({ id: word, aliases, appears_in: appearsIn });
113
+ concepts.push({
114
+ id: word,
115
+ aliases,
116
+ appears_in: appearsIn,
117
+ layer,
118
+ struct_hash: hash,
119
+ });
120
+ }
121
+ // Step 9: sort alphabetically by id
122
+ concepts.sort((a, b) => a.id.localeCompare(b.id));
123
+ return concepts;
124
+ }
125
+ //# sourceMappingURL=concept-compiler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"concept-compiler.js","sourceRoot":"","sources":["../../src/compiler/concept-compiler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { GraphNode, GraphEdge } from '../core/export/json-exporter.js';
2
+ import type { ModuleNode, ContractNode } from '../store/schema.js';
3
+ /**
4
+ * Compile GraphNode + GraphEdge + ModuleNode data into ContractNode records.
5
+ *
6
+ * Algorithm:
7
+ * 1. Build file→module map from ModuleNode[].
8
+ * 2. Build nodeId→module map by looking up each GraphNode's filePath.
9
+ * 3. Find cross-module CALLS edges (source module ≠ target module).
10
+ * 4. Group by (provider, consumer): target's module = provider, source's module = consumer.
11
+ * 5. Collect unique target function names per (provider, consumer) pair as interface[].
12
+ * 6. Generate contract ID as `${consumer}--${provider}` (consumer < provider alphabetically).
13
+ * 7. Compute struct_hash from { id, provider, consumer, interface }.
14
+ * 8. Return ContractNode[] sorted alphabetically by id.
15
+ */
16
+ export declare function compileContracts(nodes: GraphNode[], edges: GraphEdge[], modules: ModuleNode[]): ContractNode[];
@@ -0,0 +1,90 @@
1
+ import { structHash } from '../lib/hash.js';
2
+ /**
3
+ * Compile GraphNode + GraphEdge + ModuleNode data into ContractNode records.
4
+ *
5
+ * Algorithm:
6
+ * 1. Build file→module map from ModuleNode[].
7
+ * 2. Build nodeId→module map by looking up each GraphNode's filePath.
8
+ * 3. Find cross-module CALLS edges (source module ≠ target module).
9
+ * 4. Group by (provider, consumer): target's module = provider, source's module = consumer.
10
+ * 5. Collect unique target function names per (provider, consumer) pair as interface[].
11
+ * 6. Generate contract ID as `${consumer}--${provider}` (consumer < provider alphabetically).
12
+ * 7. Compute struct_hash from { id, provider, consumer, interface }.
13
+ * 8. Return ContractNode[] sorted alphabetically by id.
14
+ */
15
+ export function compileContracts(nodes, edges, modules) {
16
+ // Step 1: build file→module map
17
+ const fileToModule = new Map();
18
+ for (const mod of modules) {
19
+ for (const file of mod.files) {
20
+ fileToModule.set(file, mod.id);
21
+ }
22
+ }
23
+ // Step 2: build nodeId→module map
24
+ const nodeToModule = new Map();
25
+ for (const node of nodes) {
26
+ const filePath = node.properties.filePath;
27
+ if (!filePath)
28
+ continue;
29
+ const modId = fileToModule.get(filePath);
30
+ if (modId !== undefined) {
31
+ nodeToModule.set(node.id, modId);
32
+ }
33
+ }
34
+ // Build nodeId→name map for looking up target function names
35
+ const nodeToName = new Map();
36
+ for (const node of nodes) {
37
+ const name = node.properties.name;
38
+ if (name !== undefined) {
39
+ nodeToName.set(node.id, name);
40
+ }
41
+ }
42
+ // Step 3 & 4: find cross-module CALLS and group by (provider, consumer)
43
+ // key: `${consumer}::${provider}`, value: Set of function names
44
+ const pairInterface = new Map();
45
+ for (const edge of edges) {
46
+ if (edge.type !== 'CALLS')
47
+ continue;
48
+ const srcMod = nodeToModule.get(edge.sourceId);
49
+ const tgtMod = nodeToModule.get(edge.targetId);
50
+ if (!srcMod || !tgtMod)
51
+ continue;
52
+ if (srcMod === tgtMod)
53
+ continue;
54
+ // source = consumer, target = provider
55
+ const consumer = srcMod;
56
+ const provider = tgtMod;
57
+ const pairKey = `${consumer}::${provider}`;
58
+ if (!pairInterface.has(pairKey)) {
59
+ pairInterface.set(pairKey, new Set());
60
+ }
61
+ const fnName = nodeToName.get(edge.targetId);
62
+ if (fnName !== undefined) {
63
+ pairInterface.get(pairKey).add(fnName);
64
+ }
65
+ }
66
+ // Step 5–8: assemble ContractNode records
67
+ const contracts = [];
68
+ for (const [pairKey, fnNames] of pairInterface) {
69
+ const colonIdx = pairKey.indexOf('::');
70
+ const consumer = pairKey.slice(0, colonIdx);
71
+ const provider = pairKey.slice(colonIdx + 2);
72
+ // Step 6: ID is always consumer--provider
73
+ const id = `${consumer}--${provider}`;
74
+ // Step 5: sorted, deduplicated interface list
75
+ const iface = [...fnNames].sort();
76
+ // Step 7: struct_hash
77
+ const hash = structHash({ id, provider, consumer, interface: iface });
78
+ contracts.push({
79
+ id,
80
+ provider,
81
+ consumer,
82
+ interface: iface,
83
+ struct_hash: hash,
84
+ });
85
+ }
86
+ // Step 8: sort alphabetically by id
87
+ contracts.sort((a, b) => a.id.localeCompare(b.id));
88
+ return contracts;
89
+ }
90
+ //# sourceMappingURL=contract-compiler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract-compiler.js","sourceRoot":"","sources":["../../src/compiler/contract-compiler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { CotxStore } from '../store/store.js';
2
+ export interface DeltaResult {
3
+ changedFiles: string[];
4
+ affectedModules: string[];
5
+ affectedContracts: string[];
6
+ affectedFlows: string[];
7
+ }
8
+ export declare function detectDelta(store: CotxStore, changedFiles: string[]): DeltaResult;