kirograph 0.12.1

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 (434) hide show
  1. package/README.md +1171 -0
  2. package/dist/architecture/index.d.ts +11 -0
  3. package/dist/architecture/index.d.ts.map +1 -0
  4. package/dist/architecture/index.js +207 -0
  5. package/dist/architecture/index.js.map +7 -0
  6. package/dist/architecture/layers/csharp.d.ts +6 -0
  7. package/dist/architecture/layers/csharp.d.ts.map +1 -0
  8. package/dist/architecture/layers/csharp.js +100 -0
  9. package/dist/architecture/layers/csharp.js.map +7 -0
  10. package/dist/architecture/layers/elixir.js +116 -0
  11. package/dist/architecture/layers/elixir.js.map +7 -0
  12. package/dist/architecture/layers/go.d.ts +7 -0
  13. package/dist/architecture/layers/go.d.ts.map +1 -0
  14. package/dist/architecture/layers/go.js +117 -0
  15. package/dist/architecture/layers/go.js.map +7 -0
  16. package/dist/architecture/layers/index.d.ts +30 -0
  17. package/dist/architecture/layers/index.d.ts.map +1 -0
  18. package/dist/architecture/layers/index.js +100 -0
  19. package/dist/architecture/layers/index.js.map +7 -0
  20. package/dist/architecture/layers/java.d.ts +7 -0
  21. package/dist/architecture/layers/java.d.ts.map +1 -0
  22. package/dist/architecture/layers/java.js +119 -0
  23. package/dist/architecture/layers/java.js.map +7 -0
  24. package/dist/architecture/layers/python.d.ts +7 -0
  25. package/dist/architecture/layers/python.d.ts.map +1 -0
  26. package/dist/architecture/layers/python.js +111 -0
  27. package/dist/architecture/layers/python.js.map +7 -0
  28. package/dist/architecture/layers/ruby.d.ts +6 -0
  29. package/dist/architecture/layers/ruby.d.ts.map +1 -0
  30. package/dist/architecture/layers/ruby.js +95 -0
  31. package/dist/architecture/layers/ruby.js.map +7 -0
  32. package/dist/architecture/layers/rust.d.ts +6 -0
  33. package/dist/architecture/layers/rust.d.ts.map +1 -0
  34. package/dist/architecture/layers/rust.js +98 -0
  35. package/dist/architecture/layers/rust.js.map +7 -0
  36. package/dist/architecture/layers/types.d.ts +2 -0
  37. package/dist/architecture/layers/types.d.ts.map +1 -0
  38. package/dist/architecture/layers/types.js +17 -0
  39. package/dist/architecture/layers/types.js.map +7 -0
  40. package/dist/architecture/layers/typescript.d.ts +9 -0
  41. package/dist/architecture/layers/typescript.d.ts.map +1 -0
  42. package/dist/architecture/layers/typescript.js +143 -0
  43. package/dist/architecture/layers/typescript.js.map +7 -0
  44. package/dist/architecture/manifest/cargo.d.ts +3 -0
  45. package/dist/architecture/manifest/cargo.d.ts.map +1 -0
  46. package/dist/architecture/manifest/cargo.js +94 -0
  47. package/dist/architecture/manifest/cargo.js.map +7 -0
  48. package/dist/architecture/manifest/csproj.d.ts +3 -0
  49. package/dist/architecture/manifest/csproj.d.ts.map +1 -0
  50. package/dist/architecture/manifest/csproj.js +75 -0
  51. package/dist/architecture/manifest/csproj.js.map +7 -0
  52. package/dist/architecture/manifest/go.d.ts +3 -0
  53. package/dist/architecture/manifest/go.d.ts.map +1 -0
  54. package/dist/architecture/manifest/go.js +85 -0
  55. package/dist/architecture/manifest/go.js.map +7 -0
  56. package/dist/architecture/manifest/gradle.d.ts +3 -0
  57. package/dist/architecture/manifest/gradle.d.ts.map +1 -0
  58. package/dist/architecture/manifest/gradle.js +80 -0
  59. package/dist/architecture/manifest/gradle.js.map +7 -0
  60. package/dist/architecture/manifest/index.d.ts +12 -0
  61. package/dist/architecture/manifest/index.d.ts.map +1 -0
  62. package/dist/architecture/manifest/index.js +130 -0
  63. package/dist/architecture/manifest/index.js.map +7 -0
  64. package/dist/architecture/manifest/maven.d.ts +3 -0
  65. package/dist/architecture/manifest/maven.d.ts.map +1 -0
  66. package/dist/architecture/manifest/maven.js +76 -0
  67. package/dist/architecture/manifest/maven.js.map +7 -0
  68. package/dist/architecture/manifest/npm.d.ts +3 -0
  69. package/dist/architecture/manifest/npm.d.ts.map +1 -0
  70. package/dist/architecture/manifest/npm.js +103 -0
  71. package/dist/architecture/manifest/npm.js.map +7 -0
  72. package/dist/architecture/manifest/python.d.ts +3 -0
  73. package/dist/architecture/manifest/python.d.ts.map +1 -0
  74. package/dist/architecture/manifest/python.js +105 -0
  75. package/dist/architecture/manifest/python.js.map +7 -0
  76. package/dist/architecture/manifest/types.d.ts +2 -0
  77. package/dist/architecture/manifest/types.d.ts.map +1 -0
  78. package/dist/architecture/manifest/types.js +17 -0
  79. package/dist/architecture/manifest/types.js.map +7 -0
  80. package/dist/architecture/types.d.ts +91 -0
  81. package/dist/architecture/types.d.ts.map +1 -0
  82. package/dist/architecture/types.js +17 -0
  83. package/dist/architecture/types.js.map +7 -0
  84. package/dist/assets/logo.png +0 -0
  85. package/dist/banner.d.ts +6 -0
  86. package/dist/banner.d.ts.map +1 -0
  87. package/dist/banner.js +67 -0
  88. package/dist/banner.js.map +1 -0
  89. package/dist/bin/banner.d.ts +6 -0
  90. package/dist/bin/banner.d.ts.map +1 -0
  91. package/dist/bin/banner.js +88 -0
  92. package/dist/bin/banner.js.map +7 -0
  93. package/dist/bin/commands/affected.d.ts +3 -0
  94. package/dist/bin/commands/affected.d.ts.map +1 -0
  95. package/dist/bin/commands/affected.js +78 -0
  96. package/dist/bin/commands/affected.js.map +7 -0
  97. package/dist/bin/commands/architecture.d.ts +3 -0
  98. package/dist/bin/commands/architecture.d.ts.map +1 -0
  99. package/dist/bin/commands/architecture.js +125 -0
  100. package/dist/bin/commands/architecture.js.map +7 -0
  101. package/dist/bin/commands/caveman.js +136 -0
  102. package/dist/bin/commands/caveman.js.map +7 -0
  103. package/dist/bin/commands/context.d.ts +3 -0
  104. package/dist/bin/commands/context.d.ts.map +1 -0
  105. package/dist/bin/commands/context.js +81 -0
  106. package/dist/bin/commands/context.js.map +7 -0
  107. package/dist/bin/commands/coupling.d.ts +3 -0
  108. package/dist/bin/commands/coupling.d.ts.map +1 -0
  109. package/dist/bin/commands/coupling.js +164 -0
  110. package/dist/bin/commands/coupling.js.map +7 -0
  111. package/dist/bin/commands/dashboard.d.ts +3 -0
  112. package/dist/bin/commands/dashboard.d.ts.map +1 -0
  113. package/dist/bin/commands/dashboard.js +209 -0
  114. package/dist/bin/commands/dashboard.js.map +7 -0
  115. package/dist/bin/commands/dead-code.js +77 -0
  116. package/dist/bin/commands/dead-code.js.map +7 -0
  117. package/dist/bin/commands/export.js +2620 -0
  118. package/dist/bin/commands/export.js.map +7 -0
  119. package/dist/bin/commands/files.d.ts +3 -0
  120. package/dist/bin/commands/files.d.ts.map +1 -0
  121. package/dist/bin/commands/files.js +104 -0
  122. package/dist/bin/commands/files.js.map +7 -0
  123. package/dist/bin/commands/help.d.ts +4 -0
  124. package/dist/bin/commands/help.d.ts.map +1 -0
  125. package/dist/bin/commands/help.js +212 -0
  126. package/dist/bin/commands/help.js.map +7 -0
  127. package/dist/bin/commands/hotspots.js +77 -0
  128. package/dist/bin/commands/hotspots.js.map +7 -0
  129. package/dist/bin/commands/index.d.ts +3 -0
  130. package/dist/bin/commands/index.d.ts.map +1 -0
  131. package/dist/bin/commands/index.js +58 -0
  132. package/dist/bin/commands/index.js.map +7 -0
  133. package/dist/bin/commands/init.d.ts +3 -0
  134. package/dist/bin/commands/init.d.ts.map +1 -0
  135. package/dist/bin/commands/init.js +68 -0
  136. package/dist/bin/commands/init.js.map +7 -0
  137. package/dist/bin/commands/install.d.ts +3 -0
  138. package/dist/bin/commands/install.d.ts.map +1 -0
  139. package/dist/bin/commands/install.js +34 -0
  140. package/dist/bin/commands/install.js.map +7 -0
  141. package/dist/bin/commands/mark-dirty.d.ts +3 -0
  142. package/dist/bin/commands/mark-dirty.d.ts.map +1 -0
  143. package/dist/bin/commands/mark-dirty.js +51 -0
  144. package/dist/bin/commands/mark-dirty.js.map +7 -0
  145. package/dist/bin/commands/package.d.ts +3 -0
  146. package/dist/bin/commands/package.d.ts.map +1 -0
  147. package/dist/bin/commands/package.js +139 -0
  148. package/dist/bin/commands/package.js.map +7 -0
  149. package/dist/bin/commands/path.js +93 -0
  150. package/dist/bin/commands/path.js.map +7 -0
  151. package/dist/bin/commands/qdrant.d.ts +3 -0
  152. package/dist/bin/commands/qdrant.d.ts.map +1 -0
  153. package/dist/bin/commands/qdrant.js +159 -0
  154. package/dist/bin/commands/qdrant.js.map +1 -0
  155. package/dist/bin/commands/query.d.ts +3 -0
  156. package/dist/bin/commands/query.d.ts.map +1 -0
  157. package/dist/bin/commands/query.js +47 -0
  158. package/dist/bin/commands/query.js.map +7 -0
  159. package/dist/bin/commands/serve.d.ts +3 -0
  160. package/dist/bin/commands/serve.d.ts.map +1 -0
  161. package/dist/bin/commands/serve.js +59 -0
  162. package/dist/bin/commands/serve.js.map +7 -0
  163. package/dist/bin/commands/snapshot.js +122 -0
  164. package/dist/bin/commands/snapshot.js.map +7 -0
  165. package/dist/bin/commands/status.d.ts +3 -0
  166. package/dist/bin/commands/status.d.ts.map +1 -0
  167. package/dist/bin/commands/status.js +107 -0
  168. package/dist/bin/commands/status.js.map +7 -0
  169. package/dist/bin/commands/stop.d.ts +3 -0
  170. package/dist/bin/commands/stop.d.ts.map +1 -0
  171. package/dist/bin/commands/stop.js +81 -0
  172. package/dist/bin/commands/stop.js.map +1 -0
  173. package/dist/bin/commands/surprising.js +79 -0
  174. package/dist/bin/commands/surprising.js.map +7 -0
  175. package/dist/bin/commands/sync-if-dirty.d.ts +3 -0
  176. package/dist/bin/commands/sync-if-dirty.d.ts.map +1 -0
  177. package/dist/bin/commands/sync-if-dirty.js +67 -0
  178. package/dist/bin/commands/sync-if-dirty.js.map +7 -0
  179. package/dist/bin/commands/sync.d.ts +3 -0
  180. package/dist/bin/commands/sync.d.ts.map +1 -0
  181. package/dist/bin/commands/sync.js +81 -0
  182. package/dist/bin/commands/sync.js.map +7 -0
  183. package/dist/bin/commands/typesense.d.ts +3 -0
  184. package/dist/bin/commands/typesense.d.ts.map +1 -0
  185. package/dist/bin/commands/typesense.js +126 -0
  186. package/dist/bin/commands/typesense.js.map +1 -0
  187. package/dist/bin/commands/uninit.d.ts +4 -0
  188. package/dist/bin/commands/uninit.d.ts.map +1 -0
  189. package/dist/bin/commands/uninit.js +123 -0
  190. package/dist/bin/commands/uninit.js.map +7 -0
  191. package/dist/bin/commands/unlock.d.ts +3 -0
  192. package/dist/bin/commands/unlock.d.ts.map +1 -0
  193. package/dist/bin/commands/unlock.js +53 -0
  194. package/dist/bin/commands/unlock.js.map +7 -0
  195. package/dist/bin/commands/utils.d.ts +12 -0
  196. package/dist/bin/commands/utils.d.ts.map +1 -0
  197. package/dist/bin/commands/utils.js +56 -0
  198. package/dist/bin/commands/utils.js.map +7 -0
  199. package/dist/bin/installer/archive.js +230 -0
  200. package/dist/bin/installer/archive.js.map +7 -0
  201. package/dist/bin/installer/caveman.js +57 -0
  202. package/dist/bin/installer/caveman.js.map +7 -0
  203. package/dist/bin/installer/cli-agent.d.ts +15 -0
  204. package/dist/bin/installer/cli-agent.d.ts.map +1 -0
  205. package/dist/bin/installer/cli-agent.js +89 -0
  206. package/dist/bin/installer/cli-agent.js.map +7 -0
  207. package/dist/bin/installer/config-prompt.d.ts +13 -0
  208. package/dist/bin/installer/config-prompt.d.ts.map +1 -0
  209. package/dist/bin/installer/config-prompt.js +158 -0
  210. package/dist/bin/installer/config-prompt.js.map +7 -0
  211. package/dist/bin/installer/dashboard.d.ts +3 -0
  212. package/dist/bin/installer/dashboard.d.ts.map +1 -0
  213. package/dist/bin/installer/dashboard.js +149 -0
  214. package/dist/bin/installer/dashboard.js.map +7 -0
  215. package/dist/bin/installer/hooks.d.ts +5 -0
  216. package/dist/bin/installer/hooks.d.ts.map +1 -0
  217. package/dist/bin/installer/hooks.js +155 -0
  218. package/dist/bin/installer/hooks.js.map +7 -0
  219. package/dist/bin/installer/index.d.ts +11 -0
  220. package/dist/bin/installer/index.d.ts.map +1 -0
  221. package/dist/bin/installer/index.js +228 -0
  222. package/dist/bin/installer/index.js.map +7 -0
  223. package/dist/bin/installer/mcp.d.ts +5 -0
  224. package/dist/bin/installer/mcp.d.ts.map +1 -0
  225. package/dist/bin/installer/mcp.js +80 -0
  226. package/dist/bin/installer/mcp.js.map +7 -0
  227. package/dist/bin/installer/prompts.d.ts +28 -0
  228. package/dist/bin/installer/prompts.d.ts.map +1 -0
  229. package/dist/bin/installer/prompts.js +134 -0
  230. package/dist/bin/installer/prompts.js.map +7 -0
  231. package/dist/bin/installer/qdrant-dashboard.d.ts +4 -0
  232. package/dist/bin/installer/qdrant-dashboard.d.ts.map +1 -0
  233. package/dist/bin/installer/qdrant-dashboard.js +115 -0
  234. package/dist/bin/installer/qdrant-dashboard.js.map +7 -0
  235. package/dist/bin/installer/steering.d.ts +5 -0
  236. package/dist/bin/installer/steering.d.ts.map +1 -0
  237. package/dist/bin/installer/steering.js +283 -0
  238. package/dist/bin/installer/steering.js.map +7 -0
  239. package/dist/bin/kirograph.d.ts +6 -0
  240. package/dist/bin/kirograph.d.ts.map +1 -0
  241. package/dist/bin/kirograph.js +95 -0
  242. package/dist/bin/kirograph.js.map +7 -0
  243. package/dist/bin/progress.d.ts +14 -0
  244. package/dist/bin/progress.d.ts.map +1 -0
  245. package/dist/bin/progress.js +201 -0
  246. package/dist/bin/progress.js.map +7 -0
  247. package/dist/bin/ui.d.ts +11 -0
  248. package/dist/bin/ui.d.ts.map +1 -0
  249. package/dist/bin/ui.js +71 -0
  250. package/dist/bin/ui.js.map +7 -0
  251. package/dist/config.d.ts +48 -0
  252. package/dist/config.d.ts.map +1 -0
  253. package/dist/config.js +273 -0
  254. package/dist/config.js.map +7 -0
  255. package/dist/context/index.d.ts +61 -0
  256. package/dist/context/index.d.ts.map +1 -0
  257. package/dist/context/index.js +224 -0
  258. package/dist/context/index.js.map +7 -0
  259. package/dist/core/file-tree.d.ts +15 -0
  260. package/dist/core/file-tree.d.ts.map +1 -0
  261. package/dist/core/file-tree.js +69 -0
  262. package/dist/core/file-tree.js.map +7 -0
  263. package/dist/core/lock-manager.d.ts +20 -0
  264. package/dist/core/lock-manager.d.ts.map +1 -0
  265. package/dist/core/lock-manager.js +120 -0
  266. package/dist/core/lock-manager.js.map +7 -0
  267. package/dist/core/pipeline.d.ts +37 -0
  268. package/dist/core/pipeline.d.ts.map +1 -0
  269. package/dist/core/pipeline.js +375 -0
  270. package/dist/core/pipeline.js.map +7 -0
  271. package/dist/core/snapshot.js +141 -0
  272. package/dist/core/snapshot.js.map +7 -0
  273. package/dist/db/database.d.ts +133 -0
  274. package/dist/db/database.d.ts.map +1 -0
  275. package/dist/db/database.js +929 -0
  276. package/dist/db/database.js.map +7 -0
  277. package/dist/db/schema.sql +174 -0
  278. package/dist/errors.d.ts +49 -0
  279. package/dist/errors.d.ts.map +1 -0
  280. package/dist/errors.js +160 -0
  281. package/dist/errors.js.map +7 -0
  282. package/dist/extraction/extractor.d.ts +29 -0
  283. package/dist/extraction/extractor.d.ts.map +1 -0
  284. package/dist/extraction/extractor.js +764 -0
  285. package/dist/extraction/extractor.js.map +7 -0
  286. package/dist/extraction/grammars.d.ts +48 -0
  287. package/dist/extraction/grammars.d.ts.map +1 -0
  288. package/dist/extraction/grammars.js +166 -0
  289. package/dist/extraction/grammars.js.map +7 -0
  290. package/dist/extraction/languages.d.ts +9 -0
  291. package/dist/extraction/languages.d.ts.map +1 -0
  292. package/dist/extraction/languages.js +103 -0
  293. package/dist/extraction/languages.js.map +7 -0
  294. package/dist/extraction/wasm/tree-sitter-pascal.wasm +0 -0
  295. package/dist/frameworks/csharp.d.ts +8 -0
  296. package/dist/frameworks/csharp.d.ts.map +1 -0
  297. package/dist/frameworks/csharp.js +93 -0
  298. package/dist/frameworks/csharp.js.map +7 -0
  299. package/dist/frameworks/elixir.js +142 -0
  300. package/dist/frameworks/elixir.js.map +7 -0
  301. package/dist/frameworks/express.d.ts +8 -0
  302. package/dist/frameworks/express.d.ts.map +1 -0
  303. package/dist/frameworks/express.js +143 -0
  304. package/dist/frameworks/express.js.map +7 -0
  305. package/dist/frameworks/go.d.ts +8 -0
  306. package/dist/frameworks/go.d.ts.map +1 -0
  307. package/dist/frameworks/go.js +85 -0
  308. package/dist/frameworks/go.js.map +7 -0
  309. package/dist/frameworks/index.d.ts +30 -0
  310. package/dist/frameworks/index.d.ts.map +1 -0
  311. package/dist/frameworks/index.js +243 -0
  312. package/dist/frameworks/index.js.map +7 -0
  313. package/dist/frameworks/java.d.ts +8 -0
  314. package/dist/frameworks/java.d.ts.map +1 -0
  315. package/dist/frameworks/java.js +87 -0
  316. package/dist/frameworks/java.js.map +7 -0
  317. package/dist/frameworks/laravel.d.ts +9 -0
  318. package/dist/frameworks/laravel.d.ts.map +1 -0
  319. package/dist/frameworks/laravel.js +115 -0
  320. package/dist/frameworks/laravel.js.map +7 -0
  321. package/dist/frameworks/python.d.ts +10 -0
  322. package/dist/frameworks/python.d.ts.map +1 -0
  323. package/dist/frameworks/python.js +158 -0
  324. package/dist/frameworks/python.js.map +7 -0
  325. package/dist/frameworks/react.d.ts +9 -0
  326. package/dist/frameworks/react.d.ts.map +1 -0
  327. package/dist/frameworks/react.js +230 -0
  328. package/dist/frameworks/react.js.map +7 -0
  329. package/dist/frameworks/ruby.d.ts +8 -0
  330. package/dist/frameworks/ruby.d.ts.map +1 -0
  331. package/dist/frameworks/ruby.js +136 -0
  332. package/dist/frameworks/ruby.js.map +7 -0
  333. package/dist/frameworks/rust.d.ts +8 -0
  334. package/dist/frameworks/rust.d.ts.map +1 -0
  335. package/dist/frameworks/rust.js +82 -0
  336. package/dist/frameworks/rust.js.map +7 -0
  337. package/dist/frameworks/svelte.d.ts +8 -0
  338. package/dist/frameworks/svelte.d.ts.map +1 -0
  339. package/dist/frameworks/svelte.js +174 -0
  340. package/dist/frameworks/svelte.js.map +7 -0
  341. package/dist/frameworks/swift.d.ts +10 -0
  342. package/dist/frameworks/swift.d.ts.map +1 -0
  343. package/dist/frameworks/swift.js +151 -0
  344. package/dist/frameworks/swift.js.map +7 -0
  345. package/dist/frameworks/types.d.ts +37 -0
  346. package/dist/frameworks/types.d.ts.map +1 -0
  347. package/dist/frameworks/types.js +17 -0
  348. package/dist/frameworks/types.js.map +7 -0
  349. package/dist/graph/queries.d.ts +53 -0
  350. package/dist/graph/queries.d.ts.map +1 -0
  351. package/dist/graph/queries.js +224 -0
  352. package/dist/graph/queries.js.map +7 -0
  353. package/dist/graph/traversal.d.ts +35 -0
  354. package/dist/graph/traversal.d.ts.map +1 -0
  355. package/dist/graph/traversal.js +148 -0
  356. package/dist/graph/traversal.js.map +7 -0
  357. package/dist/index.d.ts +102 -0
  358. package/dist/index.d.ts.map +1 -0
  359. package/dist/index.js +303 -0
  360. package/dist/index.js.map +7 -0
  361. package/dist/installer/index.d.ts +10 -0
  362. package/dist/installer/index.d.ts.map +1 -0
  363. package/dist/installer/index.js +526 -0
  364. package/dist/installer/index.js.map +1 -0
  365. package/dist/mcp/server.d.ts +16 -0
  366. package/dist/mcp/server.d.ts.map +1 -0
  367. package/dist/mcp/server.js +116 -0
  368. package/dist/mcp/server.js.map +7 -0
  369. package/dist/mcp/tools.d.ts +37 -0
  370. package/dist/mcp/tools.d.ts.map +1 -0
  371. package/dist/mcp/tools.js +779 -0
  372. package/dist/mcp/tools.js.map +7 -0
  373. package/dist/mcp/transport.d.ts +29 -0
  374. package/dist/mcp/transport.d.ts.map +1 -0
  375. package/dist/mcp/transport.js +70 -0
  376. package/dist/mcp/transport.js.map +7 -0
  377. package/dist/resolution/index.d.ts +56 -0
  378. package/dist/resolution/index.d.ts.map +1 -0
  379. package/dist/resolution/index.js +384 -0
  380. package/dist/resolution/index.js.map +7 -0
  381. package/dist/resolution/name-matcher.d.ts +25 -0
  382. package/dist/resolution/name-matcher.d.ts.map +1 -0
  383. package/dist/resolution/name-matcher.js +60 -0
  384. package/dist/resolution/name-matcher.js.map +7 -0
  385. package/dist/scripts/postinstall.js +64 -0
  386. package/dist/search/query-utils.d.ts +21 -0
  387. package/dist/search/query-utils.d.ts.map +1 -0
  388. package/dist/search/query-utils.js +219 -0
  389. package/dist/search/query-utils.js.map +7 -0
  390. package/dist/search/searcher.d.ts +15 -0
  391. package/dist/search/searcher.d.ts.map +1 -0
  392. package/dist/search/searcher.js +49 -0
  393. package/dist/search/searcher.js.map +7 -0
  394. package/dist/sync/index.d.ts +33 -0
  395. package/dist/sync/index.d.ts.map +1 -0
  396. package/dist/sync/index.js +200 -0
  397. package/dist/sync/index.js.map +7 -0
  398. package/dist/types.d.ts +131 -0
  399. package/dist/types.d.ts.map +1 -0
  400. package/dist/types.js +37 -0
  401. package/dist/types.js.map +7 -0
  402. package/dist/utils.d.ts +52 -0
  403. package/dist/utils.d.ts.map +1 -0
  404. package/dist/utils.js +254 -0
  405. package/dist/utils.js.map +7 -0
  406. package/dist/vectors/index.d.ts +71 -0
  407. package/dist/vectors/index.d.ts.map +1 -0
  408. package/dist/vectors/index.js +480 -0
  409. package/dist/vectors/index.js.map +7 -0
  410. package/dist/vectors/lancedb-index.d.ts +50 -0
  411. package/dist/vectors/lancedb-index.d.ts.map +1 -0
  412. package/dist/vectors/lancedb-index.js +153 -0
  413. package/dist/vectors/lancedb-index.js.map +7 -0
  414. package/dist/vectors/orama-index.d.ts +54 -0
  415. package/dist/vectors/orama-index.d.ts.map +1 -0
  416. package/dist/vectors/orama-index.js +213 -0
  417. package/dist/vectors/orama-index.js.map +7 -0
  418. package/dist/vectors/pglite-index.d.ts +53 -0
  419. package/dist/vectors/pglite-index.d.ts.map +1 -0
  420. package/dist/vectors/pglite-index.js +194 -0
  421. package/dist/vectors/pglite-index.js.map +7 -0
  422. package/dist/vectors/qdrant-index.d.ts +70 -0
  423. package/dist/vectors/qdrant-index.d.ts.map +1 -0
  424. package/dist/vectors/qdrant-index.js +364 -0
  425. package/dist/vectors/qdrant-index.js.map +7 -0
  426. package/dist/vectors/typesense-index.d.ts +75 -0
  427. package/dist/vectors/typesense-index.d.ts.map +1 -0
  428. package/dist/vectors/typesense-index.js +453 -0
  429. package/dist/vectors/typesense-index.js.map +7 -0
  430. package/dist/vectors/vec-index.d.ts +52 -0
  431. package/dist/vectors/vec-index.d.ts.map +1 -0
  432. package/dist/vectors/vec-index.js +198 -0
  433. package/dist/vectors/vec-index.js.map +7 -0
  434. package/package.json +67 -0
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var go_exports = {};
30
+ __export(go_exports, {
31
+ goLayerDetector: () => goLayerDetector
32
+ });
33
+ module.exports = __toCommonJS(go_exports);
34
+ var import_picomatch = __toESM(require("picomatch"));
35
+ const LAYER_PATTERNS = [
36
+ // API layer (cmd = entry points, handler = HTTP handlers)
37
+ ["api", "**/cmd/**", 0.85],
38
+ ["api", "**/handler/**", 0.9],
39
+ ["api", "**/handlers/**", 0.9],
40
+ ["api", "**/*_handler.go", 0.9],
41
+ ["api", "**/delivery/**", 0.85],
42
+ ["api", "**/transport/**", 0.85],
43
+ ["api", "**/http/**", 0.85],
44
+ ["api", "**/grpc/**", 0.85],
45
+ ["api", "**/api/**", 0.8],
46
+ // Service layer
47
+ ["service", "**/service/**", 0.9],
48
+ ["service", "**/services/**", 0.9],
49
+ ["service", "**/*_service.go", 0.9],
50
+ ["service", "**/usecase/**", 0.9],
51
+ ["service", "**/usecases/**", 0.9],
52
+ ["service", "**/domain/**", 0.8],
53
+ ["service", "**/business/**", 0.85],
54
+ // Data layer
55
+ ["data", "**/repository/**", 0.9],
56
+ ["data", "**/repositories/**", 0.9],
57
+ ["data", "**/*_repository.go", 0.9],
58
+ ["data", "**/*_repo.go", 0.9],
59
+ ["data", "**/store/**", 0.85],
60
+ ["data", "**/storage/**", 0.85],
61
+ ["data", "**/db/**", 0.85],
62
+ ["data", "**/models/**", 0.8],
63
+ ["data", "**/entities/**", 0.8],
64
+ ["data", "**/migrations/**", 0.85],
65
+ // Shared / infrastructure layer
66
+ ["shared", "**/pkg/**", 0.8],
67
+ ["shared", "**/internal/**", 0.75],
68
+ ["shared", "**/util/**", 0.85],
69
+ ["shared", "**/utils/**", 0.85],
70
+ ["shared", "**/common/**", 0.8],
71
+ ["shared", "**/config/**", 0.8],
72
+ ["shared", "**/middleware/**", 0.85],
73
+ ["shared", "**/logger/**", 0.8]
74
+ ];
75
+ const goLayerDetector = {
76
+ language: "go",
77
+ async detect(files, _projectRoot, configLayers) {
78
+ const results = [];
79
+ const configMatchers = _buildConfigMatchers(configLayers ?? {});
80
+ for (const file of files) {
81
+ if (!file.endsWith(".go")) continue;
82
+ const configMatch = _matchConfig(file, configMatchers);
83
+ if (configMatch) {
84
+ results.push({ ...configMatch, filePath: file });
85
+ continue;
86
+ }
87
+ let best = null;
88
+ for (const [layerName, pattern, confidence] of LAYER_PATTERNS) {
89
+ if ((0, import_picomatch.default)(pattern)(file)) {
90
+ if (!best || confidence > best.confidence) {
91
+ best = { layerName, filePath: file, confidence, matchedPattern: pattern };
92
+ }
93
+ }
94
+ }
95
+ if (best) results.push(best);
96
+ }
97
+ return results;
98
+ }
99
+ };
100
+ function _buildConfigMatchers(configLayers) {
101
+ return Object.entries(configLayers).flatMap(
102
+ ([layerName, patterns]) => patterns.map(
103
+ (pattern) => [layerName, (0, import_picomatch.default)(pattern), pattern]
104
+ )
105
+ );
106
+ }
107
+ function _matchConfig(file, matchers) {
108
+ for (const [layerName, matcher, pattern] of matchers) {
109
+ if (matcher(file)) return { layerName, confidence: 1, matchedPattern: `config:${pattern}` };
110
+ }
111
+ return null;
112
+ }
113
+ // Annotate the CommonJS export names for ESM import in node:
114
+ 0 && (module.exports = {
115
+ goLayerDetector
116
+ });
117
+ //# sourceMappingURL=go.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/architecture/layers/go.ts"],
4
+ "sourcesContent": ["/**\n * Layer detector for Go projects.\n * Detects patterns common in Go service layouts (standard, Clean Architecture, DDD).\n */\nimport type { LayerDetector, ArchLayerMatch } from '../types';\nimport picomatch from 'picomatch';\n\nconst LAYER_PATTERNS: Array<[string, string, number]> = [\n // API layer (cmd = entry points, handler = HTTP handlers)\n ['api', '**/cmd/**', 0.85],\n ['api', '**/handler/**', 0.9],\n ['api', '**/handlers/**', 0.9],\n ['api', '**/*_handler.go', 0.9],\n ['api', '**/delivery/**', 0.85],\n ['api', '**/transport/**', 0.85],\n ['api', '**/http/**', 0.85],\n ['api', '**/grpc/**', 0.85],\n ['api', '**/api/**', 0.8],\n\n // Service layer\n ['service', '**/service/**', 0.9],\n ['service', '**/services/**', 0.9],\n ['service', '**/*_service.go', 0.9],\n ['service', '**/usecase/**', 0.9],\n ['service', '**/usecases/**', 0.9],\n ['service', '**/domain/**', 0.8],\n ['service', '**/business/**', 0.85],\n\n // Data layer\n ['data', '**/repository/**', 0.9],\n ['data', '**/repositories/**', 0.9],\n ['data', '**/*_repository.go', 0.9],\n ['data', '**/*_repo.go', 0.9],\n ['data', '**/store/**', 0.85],\n ['data', '**/storage/**', 0.85],\n ['data', '**/db/**', 0.85],\n ['data', '**/models/**', 0.8],\n ['data', '**/entities/**', 0.8],\n ['data', '**/migrations/**', 0.85],\n\n // Shared / infrastructure layer\n ['shared', '**/pkg/**', 0.8],\n ['shared', '**/internal/**', 0.75],\n ['shared', '**/util/**', 0.85],\n ['shared', '**/utils/**', 0.85],\n ['shared', '**/common/**', 0.8],\n ['shared', '**/config/**', 0.8],\n ['shared', '**/middleware/**', 0.85],\n ['shared', '**/logger/**', 0.8],\n];\n\nexport const goLayerDetector: LayerDetector = {\n language: 'go',\n\n async detect(files: string[], _projectRoot: string, configLayers?: Record<string, string[]>): Promise<ArchLayerMatch[]> {\n const results: ArchLayerMatch[] = [];\n const configMatchers = _buildConfigMatchers(configLayers ?? {});\n\n for (const file of files) {\n if (!file.endsWith('.go')) continue;\n\n const configMatch = _matchConfig(file, configMatchers);\n if (configMatch) {\n results.push({ ...configMatch, filePath: file });\n continue;\n }\n\n let best: ArchLayerMatch | null = null;\n for (const [layerName, pattern, confidence] of LAYER_PATTERNS) {\n if (picomatch(pattern)(file)) {\n if (!best || confidence > best.confidence) {\n best = { layerName, filePath: file, confidence, matchedPattern: pattern };\n }\n }\n }\n if (best) results.push(best);\n }\n\n return results;\n },\n};\n\nfunction _buildConfigMatchers(configLayers: Record<string, string[]>): Array<[string, ReturnType<typeof picomatch>, string]> {\n return Object.entries(configLayers).flatMap(([layerName, patterns]) =>\n patterns.map((pattern): [string, ReturnType<typeof picomatch>, string] =>\n [layerName, picomatch(pattern), pattern]\n )\n );\n}\n\nfunction _matchConfig(\n file: string,\n matchers: Array<[string, ReturnType<typeof picomatch>, string]>\n): Omit<ArchLayerMatch, 'filePath'> | null {\n for (const [layerName, matcher, pattern] of matchers) {\n if (matcher(file)) return { layerName, confidence: 1.0, matchedPattern: `config:${pattern}` };\n }\n return null;\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["picomatch"]
7
+ }
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Layer Detector Registry
3
+ *
4
+ * Dispatches layer detection to language-specific detectors.
5
+ * Config-defined layers always win over auto-detection.
6
+ */
7
+ import type { LayerDetector, ArchLayer } from '../types';
8
+ export declare function getAllLayerDetectors(): LayerDetector[];
9
+ export declare function registerLayerDetector(detector: LayerDetector): void;
10
+ export interface FileLayerAssignment {
11
+ filePath: string;
12
+ layerName: string;
13
+ confidence: number;
14
+ matchedPattern: string;
15
+ }
16
+ /**
17
+ * Run all language-specific layer detectors against the file list.
18
+ * Each file gets at most one layer assignment (highest confidence wins).
19
+ * Config-defined layers (confidence=1.0) always beat auto-detected ones.
20
+ *
21
+ * @param files - relative file paths (from project root)
22
+ * @param projectRoot - absolute project root path
23
+ * @param configLayers - user-defined layer→glob overrides from config
24
+ */
25
+ export declare function detectAllLayers(files: string[], projectRoot: string, configLayers?: Record<string, string[]>): Promise<FileLayerAssignment[]>;
26
+ /**
27
+ * From a list of FileLayerAssignment, derive the unique ArchLayer records.
28
+ */
29
+ export declare function buildArchLayers(assignments: FileLayerAssignment[], configLayers?: Record<string, string[]>): ArchLayer[];
30
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/architecture/layers/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,aAAa,EAAkB,SAAS,EAAE,MAAM,UAAU,CAAC;AAmBzE,wBAAgB,oBAAoB,IAAI,aAAa,EAAE,CAEtD;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,CAInE;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE,MAAM,EAAE,EACf,WAAW,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GACtC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAuBhC;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,WAAW,EAAE,mBAAmB,EAAE,EAClC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GACtC,SAAS,EAAE,CAqBb"}
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var layers_exports = {};
20
+ __export(layers_exports, {
21
+ buildArchLayers: () => buildArchLayers,
22
+ detectAllLayers: () => detectAllLayers,
23
+ getAllLayerDetectors: () => getAllLayerDetectors,
24
+ registerLayerDetector: () => registerLayerDetector
25
+ });
26
+ module.exports = __toCommonJS(layers_exports);
27
+ var import_typescript = require("./typescript");
28
+ var import_python = require("./python");
29
+ var import_go = require("./go");
30
+ var import_java = require("./java");
31
+ var import_ruby = require("./ruby");
32
+ var import_rust = require("./rust");
33
+ var import_csharp = require("./csharp");
34
+ var import_elixir = require("./elixir");
35
+ const LAYER_DETECTORS = [
36
+ import_typescript.typescriptLayerDetector,
37
+ import_python.pythonLayerDetector,
38
+ import_go.goLayerDetector,
39
+ import_java.javaLayerDetector,
40
+ import_ruby.rubyLayerDetector,
41
+ import_rust.rustLayerDetector,
42
+ import_csharp.csharpLayerDetector,
43
+ import_elixir.elixirLayerDetector
44
+ ];
45
+ function getAllLayerDetectors() {
46
+ return LAYER_DETECTORS;
47
+ }
48
+ function registerLayerDetector(detector) {
49
+ const idx = LAYER_DETECTORS.findIndex((d) => d.language === detector.language && d.framework === detector.framework);
50
+ if (idx >= 0) LAYER_DETECTORS[idx] = detector;
51
+ else LAYER_DETECTORS.push(detector);
52
+ }
53
+ async function detectAllLayers(files, projectRoot, configLayers) {
54
+ const allMatches = [];
55
+ for (const detector of LAYER_DETECTORS) {
56
+ const matches = await detector.detect(files, projectRoot, configLayers);
57
+ allMatches.push(...matches);
58
+ }
59
+ const best = /* @__PURE__ */ new Map();
60
+ for (const match of allMatches) {
61
+ const existing = best.get(match.filePath);
62
+ if (!existing || match.confidence > existing.confidence) {
63
+ best.set(match.filePath, match);
64
+ }
65
+ }
66
+ return [...best.values()].map((m) => ({
67
+ filePath: m.filePath,
68
+ layerName: m.layerName,
69
+ confidence: m.confidence,
70
+ matchedPattern: m.matchedPattern
71
+ }));
72
+ }
73
+ function buildArchLayers(assignments, configLayers) {
74
+ const layerMap = /* @__PURE__ */ new Map();
75
+ for (const a of assignments) {
76
+ if (!layerMap.has(a.layerName)) {
77
+ const isConfig = configLayers && a.layerName in configLayers;
78
+ layerMap.set(a.layerName, {
79
+ id: `layer:${a.layerName}`,
80
+ name: a.layerName,
81
+ source: isConfig ? "config" : "auto",
82
+ patterns: [],
83
+ updatedAt: Date.now()
84
+ });
85
+ }
86
+ const layer = layerMap.get(a.layerName);
87
+ if (!layer.patterns.includes(a.matchedPattern)) {
88
+ layer.patterns.push(a.matchedPattern);
89
+ }
90
+ }
91
+ return [...layerMap.values()];
92
+ }
93
+ // Annotate the CommonJS export names for ESM import in node:
94
+ 0 && (module.exports = {
95
+ buildArchLayers,
96
+ detectAllLayers,
97
+ getAllLayerDetectors,
98
+ registerLayerDetector
99
+ });
100
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/architecture/layers/index.ts"],
4
+ "sourcesContent": ["/**\n * Layer Detector Registry\n *\n * Dispatches layer detection to language-specific detectors.\n * Config-defined layers always win over auto-detection.\n */\nimport type { LayerDetector, ArchLayerMatch, ArchLayer } from '../types';\nimport { typescriptLayerDetector } from './typescript';\nimport { pythonLayerDetector } from './python';\nimport { goLayerDetector } from './go';\nimport { javaLayerDetector } from './java';\nimport { rubyLayerDetector } from './ruby';\nimport { rustLayerDetector } from './rust';\nimport { csharpLayerDetector } from './csharp';\nimport { elixirLayerDetector } from './elixir';\n\nconst LAYER_DETECTORS: LayerDetector[] = [\n typescriptLayerDetector,\n pythonLayerDetector,\n goLayerDetector,\n javaLayerDetector,\n rubyLayerDetector,\n rustLayerDetector,\n csharpLayerDetector,\n elixirLayerDetector,\n];\n\nexport function getAllLayerDetectors(): LayerDetector[] {\n return LAYER_DETECTORS;\n}\n\nexport function registerLayerDetector(detector: LayerDetector): void {\n const idx = LAYER_DETECTORS.findIndex(d => d.language === detector.language && d.framework === detector.framework);\n if (idx >= 0) LAYER_DETECTORS[idx] = detector;\n else LAYER_DETECTORS.push(detector);\n}\n\nexport interface FileLayerAssignment {\n filePath: string;\n layerName: string;\n confidence: number;\n matchedPattern: string;\n}\n\n/**\n * Run all language-specific layer detectors against the file list.\n * Each file gets at most one layer assignment (highest confidence wins).\n * Config-defined layers (confidence=1.0) always beat auto-detected ones.\n *\n * @param files - relative file paths (from project root)\n * @param projectRoot - absolute project root path\n * @param configLayers - user-defined layer\u2192glob overrides from config\n */\nexport async function detectAllLayers(\n files: string[],\n projectRoot: string,\n configLayers?: Record<string, string[]>\n): Promise<FileLayerAssignment[]> {\n // Collect all matches from all detectors\n const allMatches: ArchLayerMatch[] = [];\n for (const detector of LAYER_DETECTORS) {\n const matches = await detector.detect(files, projectRoot, configLayers);\n allMatches.push(...matches);\n }\n\n // Per file, keep the highest-confidence match\n const best = new Map<string, ArchLayerMatch>();\n for (const match of allMatches) {\n const existing = best.get(match.filePath);\n if (!existing || match.confidence > existing.confidence) {\n best.set(match.filePath, match);\n }\n }\n\n return [...best.values()].map(m => ({\n filePath: m.filePath,\n layerName: m.layerName,\n confidence: m.confidence,\n matchedPattern: m.matchedPattern,\n }));\n}\n\n/**\n * From a list of FileLayerAssignment, derive the unique ArchLayer records.\n */\nexport function buildArchLayers(\n assignments: FileLayerAssignment[],\n configLayers?: Record<string, string[]>\n): ArchLayer[] {\n const layerMap = new Map<string, ArchLayer>();\n\n for (const a of assignments) {\n if (!layerMap.has(a.layerName)) {\n const isConfig = configLayers && a.layerName in configLayers;\n layerMap.set(a.layerName, {\n id: `layer:${a.layerName}`,\n name: a.layerName,\n source: isConfig ? 'config' : 'auto',\n patterns: [],\n updatedAt: Date.now(),\n });\n }\n const layer = layerMap.get(a.layerName)!;\n if (!layer.patterns.includes(a.matchedPattern)) {\n layer.patterns.push(a.matchedPattern);\n }\n }\n\n return [...layerMap.values()];\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,wBAAwC;AACxC,oBAAoC;AACpC,gBAAgC;AAChC,kBAAkC;AAClC,kBAAkC;AAClC,kBAAkC;AAClC,oBAAoC;AACpC,oBAAoC;AAEpC,MAAM,kBAAmC;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,SAAS,uBAAwC;AACtD,SAAO;AACT;AAEO,SAAS,sBAAsB,UAA+B;AACnE,QAAM,MAAM,gBAAgB,UAAU,OAAK,EAAE,aAAa,SAAS,YAAY,EAAE,cAAc,SAAS,SAAS;AACjH,MAAI,OAAO,EAAG,iBAAgB,GAAG,IAAI;AAAA,MAChC,iBAAgB,KAAK,QAAQ;AACpC;AAkBA,eAAsB,gBACpB,OACA,aACA,cACgC;AAEhC,QAAM,aAA+B,CAAC;AACtC,aAAW,YAAY,iBAAiB;AACtC,UAAM,UAAU,MAAM,SAAS,OAAO,OAAO,aAAa,YAAY;AACtE,eAAW,KAAK,GAAG,OAAO;AAAA,EAC5B;AAGA,QAAM,OAAO,oBAAI,IAA4B;AAC7C,aAAW,SAAS,YAAY;AAC9B,UAAM,WAAW,KAAK,IAAI,MAAM,QAAQ;AACxC,QAAI,CAAC,YAAY,MAAM,aAAa,SAAS,YAAY;AACvD,WAAK,IAAI,MAAM,UAAU,KAAK;AAAA,IAChC;AAAA,EACF;AAEA,SAAO,CAAC,GAAG,KAAK,OAAO,CAAC,EAAE,IAAI,QAAM;AAAA,IAClC,UAAU,EAAE;AAAA,IACZ,WAAW,EAAE;AAAA,IACb,YAAY,EAAE;AAAA,IACd,gBAAgB,EAAE;AAAA,EACpB,EAAE;AACJ;AAKO,SAAS,gBACd,aACA,cACa;AACb,QAAM,WAAW,oBAAI,IAAuB;AAE5C,aAAW,KAAK,aAAa;AAC3B,QAAI,CAAC,SAAS,IAAI,EAAE,SAAS,GAAG;AAC9B,YAAM,WAAW,gBAAgB,EAAE,aAAa;AAChD,eAAS,IAAI,EAAE,WAAW;AAAA,QACxB,IAAI,SAAS,EAAE,SAAS;AAAA,QACxB,MAAM,EAAE;AAAA,QACR,QAAQ,WAAW,WAAW;AAAA,QAC9B,UAAU,CAAC;AAAA,QACX,WAAW,KAAK,IAAI;AAAA,MACtB,CAAC;AAAA,IACH;AACA,UAAM,QAAQ,SAAS,IAAI,EAAE,SAAS;AACtC,QAAI,CAAC,MAAM,SAAS,SAAS,EAAE,cAAc,GAAG;AAC9C,YAAM,SAAS,KAAK,EAAE,cAAc;AAAA,IACtC;AAAA,EACF;AAEA,SAAO,CAAC,GAAG,SAAS,OAAO,CAAC;AAC9B;",
6
+ "names": []
7
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Layer detector for Java/Kotlin projects.
3
+ * Detects Spring MVC / layered architecture patterns.
4
+ */
5
+ import type { LayerDetector } from '../types';
6
+ export declare const javaLayerDetector: LayerDetector;
7
+ //# sourceMappingURL=java.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"java.d.ts","sourceRoot":"","sources":["../../../src/architecture/layers/java.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,aAAa,EAAkB,MAAM,UAAU,CAAC;AAiD9D,eAAO,MAAM,iBAAiB,EAAE,aA6B/B,CAAC"}
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var java_exports = {};
30
+ __export(java_exports, {
31
+ javaLayerDetector: () => javaLayerDetector
32
+ });
33
+ module.exports = __toCommonJS(java_exports);
34
+ var import_picomatch = __toESM(require("picomatch"));
35
+ const LAYER_PATTERNS = [
36
+ // API layer
37
+ ["api", "**/controller/**", 0.95],
38
+ ["api", "**/controllers/**", 0.95],
39
+ ["api", "**/*Controller.java", 0.95],
40
+ ["api", "**/*Controller.kt", 0.95],
41
+ ["api", "**/*Resource.java", 0.9],
42
+ ["api", "**/rest/**", 0.85],
43
+ ["api", "**/web/**", 0.8],
44
+ ["api", "**/api/**", 0.8],
45
+ // Service layer
46
+ ["service", "**/service/**", 0.9],
47
+ ["service", "**/services/**", 0.9],
48
+ ["service", "**/*Service.java", 0.9],
49
+ ["service", "**/*Service.kt", 0.9],
50
+ ["service", "**/*ServiceImpl.java", 0.9],
51
+ ["service", "**/usecase/**", 0.85],
52
+ ["service", "**/domain/**", 0.8],
53
+ // Data layer
54
+ ["data", "**/repository/**", 0.95],
55
+ ["data", "**/repositories/**", 0.95],
56
+ ["data", "**/*Repository.java", 0.95],
57
+ ["data", "**/*Repository.kt", 0.95],
58
+ ["data", "**/*Dao.java", 0.9],
59
+ ["data", "**/*Dao.kt", 0.9],
60
+ ["data", "**/entity/**", 0.9],
61
+ ["data", "**/entities/**", 0.9],
62
+ ["data", "**/*Entity.java", 0.9],
63
+ ["data", "**/model/**", 0.8],
64
+ ["data", "**/models/**", 0.8],
65
+ ["data", "**/persistence/**", 0.85],
66
+ ["data", "**/migration/**", 0.85],
67
+ // Shared / infrastructure
68
+ ["shared", "**/util/**", 0.85],
69
+ ["shared", "**/utils/**", 0.85],
70
+ ["shared", "**/*Util.java", 0.85],
71
+ ["shared", "**/common/**", 0.8],
72
+ ["shared", "**/config/**", 0.8],
73
+ ["shared", "**/*Config.java", 0.8],
74
+ ["shared", "**/exception/**", 0.8],
75
+ ["shared", "**/security/**", 0.8]
76
+ ];
77
+ const javaLayerDetector = {
78
+ language: "java",
79
+ async detect(files, _projectRoot, configLayers) {
80
+ const results = [];
81
+ const configMatchers = _buildConfigMatchers(configLayers ?? {});
82
+ for (const file of files) {
83
+ if (!file.endsWith(".java") && !file.endsWith(".kt")) continue;
84
+ const configMatch = _matchConfig(file, configMatchers);
85
+ if (configMatch) {
86
+ results.push({ ...configMatch, filePath: file });
87
+ continue;
88
+ }
89
+ let best = null;
90
+ for (const [layerName, pattern, confidence] of LAYER_PATTERNS) {
91
+ if ((0, import_picomatch.default)(pattern)(file)) {
92
+ if (!best || confidence > best.confidence) {
93
+ best = { layerName, filePath: file, confidence, matchedPattern: pattern };
94
+ }
95
+ }
96
+ }
97
+ if (best) results.push(best);
98
+ }
99
+ return results;
100
+ }
101
+ };
102
+ function _buildConfigMatchers(configLayers) {
103
+ return Object.entries(configLayers).flatMap(
104
+ ([layerName, patterns]) => patterns.map(
105
+ (pattern) => [layerName, (0, import_picomatch.default)(pattern), pattern]
106
+ )
107
+ );
108
+ }
109
+ function _matchConfig(file, matchers) {
110
+ for (const [layerName, matcher, pattern] of matchers) {
111
+ if (matcher(file)) return { layerName, confidence: 1, matchedPattern: `config:${pattern}` };
112
+ }
113
+ return null;
114
+ }
115
+ // Annotate the CommonJS export names for ESM import in node:
116
+ 0 && (module.exports = {
117
+ javaLayerDetector
118
+ });
119
+ //# sourceMappingURL=java.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/architecture/layers/java.ts"],
4
+ "sourcesContent": ["/**\n * Layer detector for Java/Kotlin projects.\n * Detects Spring MVC / layered architecture patterns.\n */\nimport type { LayerDetector, ArchLayerMatch } from '../types';\nimport picomatch from 'picomatch';\n\nconst LAYER_PATTERNS: Array<[string, string, number]> = [\n // API layer\n ['api', '**/controller/**', 0.95],\n ['api', '**/controllers/**', 0.95],\n ['api', '**/*Controller.java', 0.95],\n ['api', '**/*Controller.kt', 0.95],\n ['api', '**/*Resource.java', 0.9],\n ['api', '**/rest/**', 0.85],\n ['api', '**/web/**', 0.8],\n ['api', '**/api/**', 0.8],\n\n // Service layer\n ['service', '**/service/**', 0.9],\n ['service', '**/services/**', 0.9],\n ['service', '**/*Service.java', 0.9],\n ['service', '**/*Service.kt', 0.9],\n ['service', '**/*ServiceImpl.java', 0.9],\n ['service', '**/usecase/**', 0.85],\n ['service', '**/domain/**', 0.8],\n\n // Data layer\n ['data', '**/repository/**', 0.95],\n ['data', '**/repositories/**', 0.95],\n ['data', '**/*Repository.java', 0.95],\n ['data', '**/*Repository.kt', 0.95],\n ['data', '**/*Dao.java', 0.9],\n ['data', '**/*Dao.kt', 0.9],\n ['data', '**/entity/**', 0.9],\n ['data', '**/entities/**', 0.9],\n ['data', '**/*Entity.java', 0.9],\n ['data', '**/model/**', 0.8],\n ['data', '**/models/**', 0.8],\n ['data', '**/persistence/**', 0.85],\n ['data', '**/migration/**', 0.85],\n\n // Shared / infrastructure\n ['shared', '**/util/**', 0.85],\n ['shared', '**/utils/**', 0.85],\n ['shared', '**/*Util.java', 0.85],\n ['shared', '**/common/**', 0.8],\n ['shared', '**/config/**', 0.8],\n ['shared', '**/*Config.java', 0.8],\n ['shared', '**/exception/**', 0.8],\n ['shared', '**/security/**', 0.8],\n];\n\nexport const javaLayerDetector: LayerDetector = {\n language: 'java',\n\n async detect(files: string[], _projectRoot: string, configLayers?: Record<string, string[]>): Promise<ArchLayerMatch[]> {\n const results: ArchLayerMatch[] = [];\n const configMatchers = _buildConfigMatchers(configLayers ?? {});\n\n for (const file of files) {\n if (!file.endsWith('.java') && !file.endsWith('.kt')) continue;\n\n const configMatch = _matchConfig(file, configMatchers);\n if (configMatch) {\n results.push({ ...configMatch, filePath: file });\n continue;\n }\n\n let best: ArchLayerMatch | null = null;\n for (const [layerName, pattern, confidence] of LAYER_PATTERNS) {\n if (picomatch(pattern)(file)) {\n if (!best || confidence > best.confidence) {\n best = { layerName, filePath: file, confidence, matchedPattern: pattern };\n }\n }\n }\n if (best) results.push(best);\n }\n\n return results;\n },\n};\n\nfunction _buildConfigMatchers(configLayers: Record<string, string[]>): Array<[string, ReturnType<typeof picomatch>, string]> {\n return Object.entries(configLayers).flatMap(([layerName, patterns]) =>\n patterns.map((pattern): [string, ReturnType<typeof picomatch>, string] =>\n [layerName, picomatch(pattern), pattern]\n )\n );\n}\n\nfunction _matchConfig(\n file: string,\n matchers: Array<[string, ReturnType<typeof picomatch>, string]>\n): Omit<ArchLayerMatch, 'filePath'> | null {\n for (const [layerName, matcher, pattern] of matchers) {\n if (matcher(file)) return { layerName, confidence: 1.0, matchedPattern: `config:${pattern}` };\n }\n return null;\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["picomatch"]
7
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Layer detector for Python projects.
3
+ * Detects patterns common in Django, Flask, FastAPI, and generic Python projects.
4
+ */
5
+ import type { LayerDetector } from '../types';
6
+ export declare const pythonLayerDetector: LayerDetector;
7
+ //# sourceMappingURL=python.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"python.d.ts","sourceRoot":"","sources":["../../../src/architecture/layers/python.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,aAAa,EAAkB,MAAM,UAAU,CAAC;AAyC9D,eAAO,MAAM,mBAAmB,EAAE,aA6BjC,CAAC"}
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var python_exports = {};
30
+ __export(python_exports, {
31
+ pythonLayerDetector: () => pythonLayerDetector
32
+ });
33
+ module.exports = __toCommonJS(python_exports);
34
+ var import_picomatch = __toESM(require("picomatch"));
35
+ const LAYER_PATTERNS = [
36
+ // API layer
37
+ ["api", "**/views.py", 0.9],
38
+ ["api", "**/views/**", 0.9],
39
+ ["api", "**/viewsets.py", 0.9],
40
+ ["api", "**/urls.py", 0.85],
41
+ ["api", "**/routers.py", 0.85],
42
+ ["api", "**/endpoints/**", 0.9],
43
+ ["api", "**/api/**", 0.8],
44
+ // Service layer
45
+ ["service", "**/services.py", 0.9],
46
+ ["service", "**/services/**", 0.9],
47
+ ["service", "**/tasks.py", 0.8],
48
+ ["service", "**/tasks/**", 0.8],
49
+ ["service", "**/use_cases/**", 0.85],
50
+ ["service", "**/domain/**", 0.8],
51
+ // Data layer
52
+ ["data", "**/models.py", 0.9],
53
+ ["data", "**/models/**", 0.9],
54
+ ["data", "**/migrations/**", 0.85],
55
+ ["data", "**/repositories/**", 0.9],
56
+ ["data", "**/serializers.py", 0.8],
57
+ ["data", "**/schemas.py", 0.8],
58
+ ["data", "**/db/**", 0.8],
59
+ // Shared layer
60
+ ["shared", "**/utils.py", 0.85],
61
+ ["shared", "**/utils/**", 0.85],
62
+ ["shared", "**/helpers.py", 0.85],
63
+ ["shared", "**/helpers/**", 0.85],
64
+ ["shared", "**/common/**", 0.8],
65
+ ["shared", "**/config/**", 0.8],
66
+ ["shared", "**/settings.py", 0.75],
67
+ ["shared", "**/middleware.py", 0.8]
68
+ ];
69
+ const pythonLayerDetector = {
70
+ language: "python",
71
+ async detect(files, _projectRoot, configLayers) {
72
+ const results = [];
73
+ const configMatchers = _buildConfigMatchers(configLayers ?? {});
74
+ for (const file of files) {
75
+ if (!file.endsWith(".py")) continue;
76
+ const configMatch = _matchConfig(file, configMatchers);
77
+ if (configMatch) {
78
+ results.push({ ...configMatch, filePath: file });
79
+ continue;
80
+ }
81
+ let best = null;
82
+ for (const [layerName, pattern, confidence] of LAYER_PATTERNS) {
83
+ if ((0, import_picomatch.default)(pattern)(file)) {
84
+ if (!best || confidence > best.confidence) {
85
+ best = { layerName, filePath: file, confidence, matchedPattern: pattern };
86
+ }
87
+ }
88
+ }
89
+ if (best) results.push(best);
90
+ }
91
+ return results;
92
+ }
93
+ };
94
+ function _buildConfigMatchers(configLayers) {
95
+ return Object.entries(configLayers).flatMap(
96
+ ([layerName, patterns]) => patterns.map(
97
+ (pattern) => [layerName, (0, import_picomatch.default)(pattern), pattern]
98
+ )
99
+ );
100
+ }
101
+ function _matchConfig(file, matchers) {
102
+ for (const [layerName, matcher, pattern] of matchers) {
103
+ if (matcher(file)) return { layerName, confidence: 1, matchedPattern: `config:${pattern}` };
104
+ }
105
+ return null;
106
+ }
107
+ // Annotate the CommonJS export names for ESM import in node:
108
+ 0 && (module.exports = {
109
+ pythonLayerDetector
110
+ });
111
+ //# sourceMappingURL=python.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/architecture/layers/python.ts"],
4
+ "sourcesContent": ["/**\n * Layer detector for Python projects.\n * Detects patterns common in Django, Flask, FastAPI, and generic Python projects.\n */\nimport type { LayerDetector, ArchLayerMatch } from '../types';\nimport picomatch from 'picomatch';\n\nconst LAYER_PATTERNS: Array<[string, string, number]> = [\n // API layer\n ['api', '**/views.py', 0.9],\n ['api', '**/views/**', 0.9],\n ['api', '**/viewsets.py', 0.9],\n ['api', '**/urls.py', 0.85],\n ['api', '**/routers.py', 0.85],\n ['api', '**/endpoints/**', 0.9],\n ['api', '**/api/**', 0.8],\n\n // Service layer\n ['service', '**/services.py', 0.9],\n ['service', '**/services/**', 0.9],\n ['service', '**/tasks.py', 0.8],\n ['service', '**/tasks/**', 0.8],\n ['service', '**/use_cases/**', 0.85],\n ['service', '**/domain/**', 0.8],\n\n // Data layer\n ['data', '**/models.py', 0.9],\n ['data', '**/models/**', 0.9],\n ['data', '**/migrations/**', 0.85],\n ['data', '**/repositories/**', 0.9],\n ['data', '**/serializers.py', 0.8],\n ['data', '**/schemas.py', 0.8],\n ['data', '**/db/**', 0.8],\n\n // Shared layer\n ['shared', '**/utils.py', 0.85],\n ['shared', '**/utils/**', 0.85],\n ['shared', '**/helpers.py', 0.85],\n ['shared', '**/helpers/**', 0.85],\n ['shared', '**/common/**', 0.8],\n ['shared', '**/config/**', 0.8],\n ['shared', '**/settings.py', 0.75],\n ['shared', '**/middleware.py', 0.8],\n];\n\nexport const pythonLayerDetector: LayerDetector = {\n language: 'python',\n\n async detect(files: string[], _projectRoot: string, configLayers?: Record<string, string[]>): Promise<ArchLayerMatch[]> {\n const results: ArchLayerMatch[] = [];\n const configMatchers = _buildConfigMatchers(configLayers ?? {});\n\n for (const file of files) {\n if (!file.endsWith('.py')) continue;\n\n const configMatch = _matchConfig(file, configMatchers);\n if (configMatch) {\n results.push({ ...configMatch, filePath: file });\n continue;\n }\n\n let best: ArchLayerMatch | null = null;\n for (const [layerName, pattern, confidence] of LAYER_PATTERNS) {\n if (picomatch(pattern)(file)) {\n if (!best || confidence > best.confidence) {\n best = { layerName, filePath: file, confidence, matchedPattern: pattern };\n }\n }\n }\n if (best) results.push(best);\n }\n\n return results;\n },\n};\n\nfunction _buildConfigMatchers(configLayers: Record<string, string[]>): Array<[string, ReturnType<typeof picomatch>, string]> {\n return Object.entries(configLayers).flatMap(([layerName, patterns]) =>\n patterns.map((pattern): [string, ReturnType<typeof picomatch>, string] =>\n [layerName, picomatch(pattern), pattern]\n )\n );\n}\n\nfunction _matchConfig(\n file: string,\n matchers: Array<[string, ReturnType<typeof picomatch>, string]>\n): Omit<ArchLayerMatch, 'filePath'> | null {\n for (const [layerName, matcher, pattern] of matchers) {\n if (matcher(file)) return { layerName, confidence: 1.0, matchedPattern: `config:${pattern}` };\n }\n return null;\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,uBAAsB;AAEtB,MAAM,iBAAkD;AAAA;AAAA,EAEtD,CAAC,OAAO,eAAe,GAAG;AAAA,EAC1B,CAAC,OAAO,eAAe,GAAG;AAAA,EAC1B,CAAC,OAAO,kBAAkB,GAAG;AAAA,EAC7B,CAAC,OAAO,cAAc,IAAI;AAAA,EAC1B,CAAC,OAAO,iBAAiB,IAAI;AAAA,EAC7B,CAAC,OAAO,mBAAmB,GAAG;AAAA,EAC9B,CAAC,OAAO,aAAa,GAAG;AAAA;AAAA,EAGxB,CAAC,WAAW,kBAAkB,GAAG;AAAA,EACjC,CAAC,WAAW,kBAAkB,GAAG;AAAA,EACjC,CAAC,WAAW,eAAe,GAAG;AAAA,EAC9B,CAAC,WAAW,eAAe,GAAG;AAAA,EAC9B,CAAC,WAAW,mBAAmB,IAAI;AAAA,EACnC,CAAC,WAAW,gBAAgB,GAAG;AAAA;AAAA,EAG/B,CAAC,QAAQ,gBAAgB,GAAG;AAAA,EAC5B,CAAC,QAAQ,gBAAgB,GAAG;AAAA,EAC5B,CAAC,QAAQ,oBAAoB,IAAI;AAAA,EACjC,CAAC,QAAQ,sBAAsB,GAAG;AAAA,EAClC,CAAC,QAAQ,qBAAqB,GAAG;AAAA,EACjC,CAAC,QAAQ,iBAAiB,GAAG;AAAA,EAC7B,CAAC,QAAQ,YAAY,GAAG;AAAA;AAAA,EAGxB,CAAC,UAAU,eAAe,IAAI;AAAA,EAC9B,CAAC,UAAU,eAAe,IAAI;AAAA,EAC9B,CAAC,UAAU,iBAAiB,IAAI;AAAA,EAChC,CAAC,UAAU,iBAAiB,IAAI;AAAA,EAChC,CAAC,UAAU,gBAAgB,GAAG;AAAA,EAC9B,CAAC,UAAU,gBAAgB,GAAG;AAAA,EAC9B,CAAC,UAAU,kBAAkB,IAAI;AAAA,EACjC,CAAC,UAAU,oBAAoB,GAAG;AACpC;AAEO,MAAM,sBAAqC;AAAA,EAChD,UAAU;AAAA,EAEV,MAAM,OAAO,OAAiB,cAAsB,cAAoE;AACtH,UAAM,UAA4B,CAAC;AACnC,UAAM,iBAAiB,qBAAqB,gBAAgB,CAAC,CAAC;AAE9D,eAAW,QAAQ,OAAO;AACxB,UAAI,CAAC,KAAK,SAAS,KAAK,EAAG;AAE3B,YAAM,cAAc,aAAa,MAAM,cAAc;AACrD,UAAI,aAAa;AACf,gBAAQ,KAAK,EAAE,GAAG,aAAa,UAAU,KAAK,CAAC;AAC/C;AAAA,MACF;AAEA,UAAI,OAA8B;AAClC,iBAAW,CAAC,WAAW,SAAS,UAAU,KAAK,gBAAgB;AAC7D,gBAAI,iBAAAA,SAAU,OAAO,EAAE,IAAI,GAAG;AAC5B,cAAI,CAAC,QAAQ,aAAa,KAAK,YAAY;AACzC,mBAAO,EAAE,WAAW,UAAU,MAAM,YAAY,gBAAgB,QAAQ;AAAA,UAC1E;AAAA,QACF;AAAA,MACF;AACA,UAAI,KAAM,SAAQ,KAAK,IAAI;AAAA,IAC7B;AAEA,WAAO;AAAA,EACT;AACF;AAEA,SAAS,qBAAqB,cAA+F;AAC3H,SAAO,OAAO,QAAQ,YAAY,EAAE;AAAA,IAAQ,CAAC,CAAC,WAAW,QAAQ,MAC/D,SAAS;AAAA,MAAI,CAAC,YACZ,CAAC,eAAW,iBAAAA,SAAU,OAAO,GAAG,OAAO;AAAA,IACzC;AAAA,EACF;AACF;AAEA,SAAS,aACP,MACA,UACyC;AACzC,aAAW,CAAC,WAAW,SAAS,OAAO,KAAK,UAAU;AACpD,QAAI,QAAQ,IAAI,EAAG,QAAO,EAAE,WAAW,YAAY,GAAK,gBAAgB,UAAU,OAAO,GAAG;AAAA,EAC9F;AACA,SAAO;AACT;",
6
+ "names": ["picomatch"]
7
+ }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Layer detector for Ruby / Rails projects.
3
+ */
4
+ import type { LayerDetector } from '../types';
5
+ export declare const rubyLayerDetector: LayerDetector;
6
+ //# sourceMappingURL=ruby.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ruby.d.ts","sourceRoot":"","sources":["../../../src/architecture/layers/ruby.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,aAAa,EAAkB,MAAM,UAAU,CAAC;AAsB9D,eAAO,MAAM,iBAAiB,EAAE,aAyB/B,CAAC"}