@backthread/extractor 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 (379) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +83 -0
  3. package/dist/cluster/domain-grouping.d.ts +113 -0
  4. package/dist/cluster/domain-grouping.d.ts.map +1 -0
  5. package/dist/cluster/domain-grouping.js +277 -0
  6. package/dist/cluster/domain-grouping.js.map +1 -0
  7. package/dist/cluster/grouping-gate.d.ts +54 -0
  8. package/dist/cluster/grouping-gate.d.ts.map +1 -0
  9. package/dist/cluster/grouping-gate.js +0 -0
  10. package/dist/cluster/grouping-gate.js.map +1 -0
  11. package/dist/cluster/louvain.d.ts +88 -0
  12. package/dist/cluster/louvain.d.ts.map +1 -0
  13. package/dist/cluster/louvain.js +674 -0
  14. package/dist/cluster/louvain.js.map +1 -0
  15. package/dist/cluster/overrides.d.ts +19 -0
  16. package/dist/cluster/overrides.d.ts.map +1 -0
  17. package/dist/cluster/overrides.js +32 -0
  18. package/dist/cluster/overrides.js.map +1 -0
  19. package/dist/cluster/subsystem.d.ts +45 -0
  20. package/dist/cluster/subsystem.d.ts.map +1 -0
  21. package/dist/cluster/subsystem.js +299 -0
  22. package/dist/cluster/subsystem.js.map +1 -0
  23. package/dist/cluster/workspaces.d.ts +64 -0
  24. package/dist/cluster/workspaces.d.ts.map +1 -0
  25. package/dist/cluster/workspaces.js +739 -0
  26. package/dist/cluster/workspaces.js.map +1 -0
  27. package/dist/extract.d.ts +52 -0
  28. package/dist/extract.d.ts.map +1 -0
  29. package/dist/extract.js +48 -0
  30. package/dist/extract.js.map +1 -0
  31. package/dist/framework/celery/celery.d.ts +17 -0
  32. package/dist/framework/celery/celery.d.ts.map +1 -0
  33. package/dist/framework/celery/celery.js +524 -0
  34. package/dist/framework/celery/celery.js.map +1 -0
  35. package/dist/framework/contribute-step.d.ts +38 -0
  36. package/dist/framework/contribute-step.d.ts.map +1 -0
  37. package/dist/framework/contribute-step.js +403 -0
  38. package/dist/framework/contribute-step.js.map +1 -0
  39. package/dist/framework/detect-step.d.ts +8 -0
  40. package/dist/framework/detect-step.d.ts.map +1 -0
  41. package/dist/framework/detect-step.js +54 -0
  42. package/dist/framework/detect-step.js.map +1 -0
  43. package/dist/framework/detect-util.d.ts +24 -0
  44. package/dist/framework/detect-util.d.ts.map +1 -0
  45. package/dist/framework/detect-util.js +59 -0
  46. package/dist/framework/detect-util.js.map +1 -0
  47. package/dist/framework/django/django.d.ts +22 -0
  48. package/dist/framework/django/django.d.ts.map +1 -0
  49. package/dist/framework/django/django.js +940 -0
  50. package/dist/framework/django/django.js.map +1 -0
  51. package/dist/framework/fastapi/fastapi.d.ts +27 -0
  52. package/dist/framework/fastapi/fastapi.d.ts.map +1 -0
  53. package/dist/framework/fastapi/fastapi.js +477 -0
  54. package/dist/framework/fastapi/fastapi.js.map +1 -0
  55. package/dist/framework/faststream/faststream.d.ts +19 -0
  56. package/dist/framework/faststream/faststream.d.ts.map +1 -0
  57. package/dist/framework/faststream/faststream.js +765 -0
  58. package/dist/framework/faststream/faststream.js.map +1 -0
  59. package/dist/framework/flask/flask.d.ts +17 -0
  60. package/dist/framework/flask/flask.d.ts.map +1 -0
  61. package/dist/framework/flask/flask.js +507 -0
  62. package/dist/framework/flask/flask.js.map +1 -0
  63. package/dist/framework/graphql/graphql.d.ts +17 -0
  64. package/dist/framework/graphql/graphql.d.ts.map +1 -0
  65. package/dist/framework/graphql/graphql.js +708 -0
  66. package/dist/framework/graphql/graphql.js.map +1 -0
  67. package/dist/framework/grpc/grpc.d.ts +22 -0
  68. package/dist/framework/grpc/grpc.d.ts.map +1 -0
  69. package/dist/framework/grpc/grpc.js +618 -0
  70. package/dist/framework/grpc/grpc.js.map +1 -0
  71. package/dist/framework/litestar/litestar.d.ts +17 -0
  72. package/dist/framework/litestar/litestar.d.ts.map +1 -0
  73. package/dist/framework/litestar/litestar.js +536 -0
  74. package/dist/framework/litestar/litestar.js.map +1 -0
  75. package/dist/framework/nest/nest.d.ts +19 -0
  76. package/dist/framework/nest/nest.d.ts.map +1 -0
  77. package/dist/framework/nest/nest.js +613 -0
  78. package/dist/framework/nest/nest.js.map +1 -0
  79. package/dist/framework/next/next.d.ts +22 -0
  80. package/dist/framework/next/next.d.ts.map +1 -0
  81. package/dist/framework/next/next.js +449 -0
  82. package/dist/framework/next/next.js.map +1 -0
  83. package/dist/framework/node/node.d.ts +24 -0
  84. package/dist/framework/node/node.d.ts.map +1 -0
  85. package/dist/framework/node/node.js +1009 -0
  86. package/dist/framework/node/node.js.map +1 -0
  87. package/dist/framework/orchestrator/orchestrator.d.ts +34 -0
  88. package/dist/framework/orchestrator/orchestrator.d.ts.map +1 -0
  89. package/dist/framework/orchestrator/orchestrator.js +691 -0
  90. package/dist/framework/orchestrator/orchestrator.js.map +1 -0
  91. package/dist/framework/orm/orm.d.ts +61 -0
  92. package/dist/framework/orm/orm.d.ts.map +1 -0
  93. package/dist/framework/orm/orm.js +620 -0
  94. package/dist/framework/orm/orm.js.map +1 -0
  95. package/dist/framework/python/analyze.d.ts +38 -0
  96. package/dist/framework/python/analyze.d.ts.map +1 -0
  97. package/dist/framework/python/analyze.js +98 -0
  98. package/dist/framework/python/analyze.js.map +1 -0
  99. package/dist/framework/python/py-ast.d.ts +130 -0
  100. package/dist/framework/python/py-ast.d.ts.map +1 -0
  101. package/dist/framework/python/py-ast.js +344 -0
  102. package/dist/framework/python/py-ast.js.map +1 -0
  103. package/dist/framework/python-orm/python-orm.d.ts +19 -0
  104. package/dist/framework/python-orm/python-orm.d.ts.map +1 -0
  105. package/dist/framework/python-orm/python-orm.js +516 -0
  106. package/dist/framework/python-orm/python-orm.js.map +1 -0
  107. package/dist/framework/react-native/react-native.d.ts +35 -0
  108. package/dist/framework/react-native/react-native.d.ts.map +1 -0
  109. package/dist/framework/react-native/react-native.js +1181 -0
  110. package/dist/framework/react-native/react-native.js.map +1 -0
  111. package/dist/framework/register.d.ts +2 -0
  112. package/dist/framework/register.d.ts.map +1 -0
  113. package/dist/framework/register.js +59 -0
  114. package/dist/framework/register.js.map +1 -0
  115. package/dist/framework/registry.d.ts +31 -0
  116. package/dist/framework/registry.d.ts.map +1 -0
  117. package/dist/framework/registry.js +70 -0
  118. package/dist/framework/registry.js.map +1 -0
  119. package/dist/framework/routing/expo-router.d.ts +31 -0
  120. package/dist/framework/routing/expo-router.d.ts.map +1 -0
  121. package/dist/framework/routing/expo-router.js +356 -0
  122. package/dist/framework/routing/expo-router.js.map +1 -0
  123. package/dist/framework/routing/index.d.ts +4 -0
  124. package/dist/framework/routing/index.d.ts.map +1 -0
  125. package/dist/framework/routing/index.js +16 -0
  126. package/dist/framework/routing/index.js.map +1 -0
  127. package/dist/framework/routing/next-router.d.ts +45 -0
  128. package/dist/framework/routing/next-router.d.ts.map +1 -0
  129. package/dist/framework/routing/next-router.js +378 -0
  130. package/dist/framework/routing/next-router.js.map +1 -0
  131. package/dist/framework/routing/route-tree.d.ts +73 -0
  132. package/dist/framework/routing/route-tree.d.ts.map +1 -0
  133. package/dist/framework/routing/route-tree.js +120 -0
  134. package/dist/framework/routing/route-tree.js.map +1 -0
  135. package/dist/framework/types.d.ts +230 -0
  136. package/dist/framework/types.d.ts.map +1 -0
  137. package/dist/framework/types.js +25 -0
  138. package/dist/framework/types.js.map +1 -0
  139. package/dist/graph/cross-language.d.ts +11 -0
  140. package/dist/graph/cross-language.d.ts.map +1 -0
  141. package/dist/graph/cross-language.js +123 -0
  142. package/dist/graph/cross-language.js.map +1 -0
  143. package/dist/graph/extract.d.ts +13 -0
  144. package/dist/graph/extract.d.ts.map +1 -0
  145. package/dist/graph/extract.js +79 -0
  146. package/dist/graph/extract.js.map +1 -0
  147. package/dist/graph/file-graph.d.ts +186 -0
  148. package/dist/graph/file-graph.d.ts.map +1 -0
  149. package/dist/graph/file-graph.js +427 -0
  150. package/dist/graph/file-graph.js.map +1 -0
  151. package/dist/graph/http-callsites.d.ts +14 -0
  152. package/dist/graph/http-callsites.d.ts.map +1 -0
  153. package/dist/graph/http-callsites.js +107 -0
  154. package/dist/graph/http-callsites.js.map +1 -0
  155. package/dist/graph/incremental.d.ts +122 -0
  156. package/dist/graph/incremental.d.ts.map +1 -0
  157. package/dist/graph/incremental.js +448 -0
  158. package/dist/graph/incremental.js.map +1 -0
  159. package/dist/graph/language.d.ts +31 -0
  160. package/dist/graph/language.d.ts.map +1 -0
  161. package/dist/graph/language.js +146 -0
  162. package/dist/graph/language.js.map +1 -0
  163. package/dist/graph/noise-filter.d.ts +46 -0
  164. package/dist/graph/noise-filter.d.ts.map +1 -0
  165. package/dist/graph/noise-filter.js +199 -0
  166. package/dist/graph/noise-filter.js.map +1 -0
  167. package/dist/graph/python-adapter.d.ts +36 -0
  168. package/dist/graph/python-adapter.d.ts.map +1 -0
  169. package/dist/graph/python-adapter.js +402 -0
  170. package/dist/graph/python-adapter.js.map +1 -0
  171. package/dist/graph/python-manifest.d.ts +22 -0
  172. package/dist/graph/python-manifest.d.ts.map +1 -0
  173. package/dist/graph/python-manifest.js +137 -0
  174. package/dist/graph/python-manifest.js.map +1 -0
  175. package/dist/graph/python-stdlib.d.ts +2 -0
  176. package/dist/graph/python-stdlib.d.ts.map +1 -0
  177. package/dist/graph/python-stdlib.js +53 -0
  178. package/dist/graph/python-stdlib.js.map +1 -0
  179. package/dist/graph/ts-morph-adapter.d.ts +65 -0
  180. package/dist/graph/ts-morph-adapter.d.ts.map +1 -0
  181. package/dist/graph/ts-morph-adapter.js +265 -0
  182. package/dist/graph/ts-morph-adapter.js.map +1 -0
  183. package/dist/graph/types.d.ts +37 -0
  184. package/dist/graph/types.d.ts.map +1 -0
  185. package/dist/graph/types.js +50 -0
  186. package/dist/graph/types.js.map +1 -0
  187. package/dist/index.d.ts +45 -0
  188. package/dist/index.d.ts.map +1 -0
  189. package/dist/index.js +51 -0
  190. package/dist/index.js.map +1 -0
  191. package/dist/infra/aws/aws-parse.d.ts +39 -0
  192. package/dist/infra/aws/aws-parse.d.ts.map +1 -0
  193. package/dist/infra/aws/aws-parse.js +149 -0
  194. package/dist/infra/aws/aws-parse.js.map +1 -0
  195. package/dist/infra/aws/aws.d.ts +6 -0
  196. package/dist/infra/aws/aws.d.ts.map +1 -0
  197. package/dist/infra/aws/aws.js +425 -0
  198. package/dist/infra/aws/aws.js.map +1 -0
  199. package/dist/infra/azure/azure-parse.d.ts +73 -0
  200. package/dist/infra/azure/azure-parse.d.ts.map +1 -0
  201. package/dist/infra/azure/azure-parse.js +178 -0
  202. package/dist/infra/azure/azure-parse.js.map +1 -0
  203. package/dist/infra/azure/azure.d.ts +12 -0
  204. package/dist/infra/azure/azure.d.ts.map +1 -0
  205. package/dist/infra/azure/azure.js +673 -0
  206. package/dist/infra/azure/azure.js.map +1 -0
  207. package/dist/infra/cloudflare/cloudflare.d.ts +50 -0
  208. package/dist/infra/cloudflare/cloudflare.d.ts.map +1 -0
  209. package/dist/infra/cloudflare/cloudflare.js +382 -0
  210. package/dist/infra/cloudflare/cloudflare.js.map +1 -0
  211. package/dist/infra/cloudflare/wrangler-parse.d.ts +6 -0
  212. package/dist/infra/cloudflare/wrangler-parse.d.ts.map +1 -0
  213. package/dist/infra/cloudflare/wrangler-parse.js +278 -0
  214. package/dist/infra/cloudflare/wrangler-parse.js.map +1 -0
  215. package/dist/infra/compose/compose-parse.d.ts +24 -0
  216. package/dist/infra/compose/compose-parse.d.ts.map +1 -0
  217. package/dist/infra/compose/compose-parse.js +77 -0
  218. package/dist/infra/compose/compose-parse.js.map +1 -0
  219. package/dist/infra/compose/compose.d.ts +12 -0
  220. package/dist/infra/compose/compose.d.ts.map +1 -0
  221. package/dist/infra/compose/compose.js +201 -0
  222. package/dist/infra/compose/compose.js.map +1 -0
  223. package/dist/infra/convex/convex-parse.d.ts +28 -0
  224. package/dist/infra/convex/convex-parse.d.ts.map +1 -0
  225. package/dist/infra/convex/convex-parse.js +74 -0
  226. package/dist/infra/convex/convex-parse.js.map +1 -0
  227. package/dist/infra/convex/convex.d.ts +18 -0
  228. package/dist/infra/convex/convex.d.ts.map +1 -0
  229. package/dist/infra/convex/convex.js +199 -0
  230. package/dist/infra/convex/convex.js.map +1 -0
  231. package/dist/infra/digitalocean/digitalocean.d.ts +33 -0
  232. package/dist/infra/digitalocean/digitalocean.d.ts.map +1 -0
  233. package/dist/infra/digitalocean/digitalocean.js +204 -0
  234. package/dist/infra/digitalocean/digitalocean.js.map +1 -0
  235. package/dist/infra/firebase/firebase.d.ts +43 -0
  236. package/dist/infra/firebase/firebase.d.ts.map +1 -0
  237. package/dist/infra/firebase/firebase.js +271 -0
  238. package/dist/infra/firebase/firebase.js.map +1 -0
  239. package/dist/infra/fly/fly-parse.d.ts +52 -0
  240. package/dist/infra/fly/fly-parse.d.ts.map +1 -0
  241. package/dist/infra/fly/fly-parse.js +114 -0
  242. package/dist/infra/fly/fly-parse.js.map +1 -0
  243. package/dist/infra/fly/fly.d.ts +15 -0
  244. package/dist/infra/fly/fly.d.ts.map +1 -0
  245. package/dist/infra/fly/fly.js +265 -0
  246. package/dist/infra/fly/fly.js.map +1 -0
  247. package/dist/infra/gcp/gcp-parse.d.ts +24 -0
  248. package/dist/infra/gcp/gcp-parse.d.ts.map +1 -0
  249. package/dist/infra/gcp/gcp-parse.js +123 -0
  250. package/dist/infra/gcp/gcp-parse.js.map +1 -0
  251. package/dist/infra/gcp/gcp.d.ts +10 -0
  252. package/dist/infra/gcp/gcp.d.ts.map +1 -0
  253. package/dist/infra/gcp/gcp.js +502 -0
  254. package/dist/infra/gcp/gcp.js.map +1 -0
  255. package/dist/infra/heroku/heroku-parse.d.ts +33 -0
  256. package/dist/infra/heroku/heroku-parse.d.ts.map +1 -0
  257. package/dist/infra/heroku/heroku-parse.js +63 -0
  258. package/dist/infra/heroku/heroku-parse.js.map +1 -0
  259. package/dist/infra/heroku/heroku.d.ts +24 -0
  260. package/dist/infra/heroku/heroku.d.ts.map +1 -0
  261. package/dist/infra/heroku/heroku.js +253 -0
  262. package/dist/infra/heroku/heroku.js.map +1 -0
  263. package/dist/infra/image-resolve.d.ts +56 -0
  264. package/dist/infra/image-resolve.d.ts.map +1 -0
  265. package/dist/infra/image-resolve.js +229 -0
  266. package/dist/infra/image-resolve.js.map +1 -0
  267. package/dist/infra/infra-step.d.ts +39 -0
  268. package/dist/infra/infra-step.d.ts.map +1 -0
  269. package/dist/infra/infra-step.js +57 -0
  270. package/dist/infra/infra-step.js.map +1 -0
  271. package/dist/infra/k8s/index.d.ts +78 -0
  272. package/dist/infra/k8s/index.d.ts.map +1 -0
  273. package/dist/infra/k8s/index.js +251 -0
  274. package/dist/infra/k8s/index.js.map +1 -0
  275. package/dist/infra/kamal/kamal-parse.d.ts +23 -0
  276. package/dist/infra/kamal/kamal-parse.d.ts.map +1 -0
  277. package/dist/infra/kamal/kamal-parse.js +66 -0
  278. package/dist/infra/kamal/kamal-parse.js.map +1 -0
  279. package/dist/infra/kamal/kamal.d.ts +17 -0
  280. package/dist/infra/kamal/kamal.d.ts.map +1 -0
  281. package/dist/infra/kamal/kamal.js +162 -0
  282. package/dist/infra/kamal/kamal.js.map +1 -0
  283. package/dist/infra/netlify/netlify.d.ts +33 -0
  284. package/dist/infra/netlify/netlify.d.ts.map +1 -0
  285. package/dist/infra/netlify/netlify.js +247 -0
  286. package/dist/infra/netlify/netlify.js.map +1 -0
  287. package/dist/infra/opentofu/opentofu.d.ts +3 -0
  288. package/dist/infra/opentofu/opentofu.d.ts.map +1 -0
  289. package/dist/infra/opentofu/opentofu.js +157 -0
  290. package/dist/infra/opentofu/opentofu.js.map +1 -0
  291. package/dist/infra/pulumi/pulumi-parse.d.ts +60 -0
  292. package/dist/infra/pulumi/pulumi-parse.d.ts.map +1 -0
  293. package/dist/infra/pulumi/pulumi-parse.js +155 -0
  294. package/dist/infra/pulumi/pulumi-parse.js.map +1 -0
  295. package/dist/infra/pulumi/pulumi.d.ts +23 -0
  296. package/dist/infra/pulumi/pulumi.d.ts.map +1 -0
  297. package/dist/infra/pulumi/pulumi.js +260 -0
  298. package/dist/infra/pulumi/pulumi.js.map +1 -0
  299. package/dist/infra/railway/railway-parse.d.ts +54 -0
  300. package/dist/infra/railway/railway-parse.d.ts.map +1 -0
  301. package/dist/infra/railway/railway-parse.js +200 -0
  302. package/dist/infra/railway/railway-parse.js.map +1 -0
  303. package/dist/infra/railway/railway.d.ts +19 -0
  304. package/dist/infra/railway/railway.d.ts.map +1 -0
  305. package/dist/infra/railway/railway.js +397 -0
  306. package/dist/infra/railway/railway.js.map +1 -0
  307. package/dist/infra/register.d.ts +2 -0
  308. package/dist/infra/register.d.ts.map +1 -0
  309. package/dist/infra/register.js +81 -0
  310. package/dist/infra/register.js.map +1 -0
  311. package/dist/infra/registry.d.ts +64 -0
  312. package/dist/infra/registry.d.ts.map +1 -0
  313. package/dist/infra/registry.js +205 -0
  314. package/dist/infra/registry.js.map +1 -0
  315. package/dist/infra/relevance.d.ts +16 -0
  316. package/dist/infra/relevance.d.ts.map +1 -0
  317. package/dist/infra/relevance.js +132 -0
  318. package/dist/infra/relevance.js.map +1 -0
  319. package/dist/infra/render/render-parse.d.ts +76 -0
  320. package/dist/infra/render/render-parse.d.ts.map +1 -0
  321. package/dist/infra/render/render-parse.js +155 -0
  322. package/dist/infra/render/render-parse.js.map +1 -0
  323. package/dist/infra/render/render.d.ts +11 -0
  324. package/dist/infra/render/render.d.ts.map +1 -0
  325. package/dist/infra/render/render.js +303 -0
  326. package/dist/infra/render/render.js.map +1 -0
  327. package/dist/infra/sst/sst-parse.d.ts +25 -0
  328. package/dist/infra/sst/sst-parse.d.ts.map +1 -0
  329. package/dist/infra/sst/sst-parse.js +45 -0
  330. package/dist/infra/sst/sst-parse.js.map +1 -0
  331. package/dist/infra/sst/sst.d.ts +19 -0
  332. package/dist/infra/sst/sst.d.ts.map +1 -0
  333. package/dist/infra/sst/sst.js +236 -0
  334. package/dist/infra/sst/sst.js.map +1 -0
  335. package/dist/infra/supabase/supabase-parse.d.ts +34 -0
  336. package/dist/infra/supabase/supabase-parse.d.ts.map +1 -0
  337. package/dist/infra/supabase/supabase-parse.js +113 -0
  338. package/dist/infra/supabase/supabase-parse.js.map +1 -0
  339. package/dist/infra/supabase/supabase.d.ts +15 -0
  340. package/dist/infra/supabase/supabase.d.ts.map +1 -0
  341. package/dist/infra/supabase/supabase.js +198 -0
  342. package/dist/infra/supabase/supabase.js.map +1 -0
  343. package/dist/infra/terraform/hcl-parse.d.ts +34 -0
  344. package/dist/infra/terraform/hcl-parse.d.ts.map +1 -0
  345. package/dist/infra/terraform/hcl-parse.js +203 -0
  346. package/dist/infra/terraform/hcl-parse.js.map +1 -0
  347. package/dist/infra/terraform/terraform.d.ts +14 -0
  348. package/dist/infra/terraform/terraform.d.ts.map +1 -0
  349. package/dist/infra/terraform/terraform.js +264 -0
  350. package/dist/infra/terraform/terraform.js.map +1 -0
  351. package/dist/infra/types.d.ts +151 -0
  352. package/dist/infra/types.d.ts.map +1 -0
  353. package/dist/infra/types.js +14 -0
  354. package/dist/infra/types.js.map +1 -0
  355. package/dist/infra/vercel/vercel-parse.d.ts +70 -0
  356. package/dist/infra/vercel/vercel-parse.d.ts.map +1 -0
  357. package/dist/infra/vercel/vercel-parse.js +194 -0
  358. package/dist/infra/vercel/vercel-parse.js.map +1 -0
  359. package/dist/infra/vercel/vercel.d.ts +30 -0
  360. package/dist/infra/vercel/vercel.d.ts.map +1 -0
  361. package/dist/infra/vercel/vercel.js +523 -0
  362. package/dist/infra/vercel/vercel.js.map +1 -0
  363. package/dist/infra/walk.d.ts +36 -0
  364. package/dist/infra/walk.d.ts.map +1 -0
  365. package/dist/infra/walk.js +85 -0
  366. package/dist/infra/walk.js.map +1 -0
  367. package/dist/safety.d.ts +13 -0
  368. package/dist/safety.d.ts.map +1 -0
  369. package/dist/safety.js +67 -0
  370. package/dist/safety.js.map +1 -0
  371. package/dist/types.d.ts +47 -0
  372. package/dist/types.d.ts.map +1 -0
  373. package/dist/types.js +111 -0
  374. package/dist/types.js.map +1 -0
  375. package/dist/version.d.ts +2 -0
  376. package/dist/version.d.ts.map +1 -0
  377. package/dist/version.js +35 -0
  378. package/dist/version.js.map +1 -0
  379. package/package.json +65 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"louvain.js","sourceRoot":"","sources":["../../src/cluster/louvain.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { ModuleKind } from '../types.js';
2
+ export interface AssignRule {
3
+ pattern: string;
4
+ moduleId: string;
5
+ }
6
+ export interface LabelOverride {
7
+ label?: string;
8
+ summary?: string;
9
+ kind?: ModuleKind;
10
+ }
11
+ export interface OverrideMap {
12
+ drop?: string[];
13
+ assign?: AssignRule[];
14
+ labels?: Record<string, LabelOverride>;
15
+ resolution?: number;
16
+ }
17
+ export declare function compileMatchers(patterns: string[]): (id: string) => boolean;
18
+ export declare function slugify(s: string): string;
19
+ //# sourceMappingURL=overrides.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overrides.d.ts","sourceRoot":"","sources":["../../src/cluster/overrides.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAE1B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhB,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC;IAEtB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAGvC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAID,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAY3E;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAKzC"}
@@ -0,0 +1,32 @@
1
+ // Hand-correction override map — same posture as a manual cluster correction.
2
+ // Unsupervised Louvain is imperfect on a clean repo; a caller-supplied per-repo
3
+ // override lets you fix mis-clusters, drop noise (tests/config), and pin display
4
+ // labels without touching code.
5
+ //
6
+ // This module carries the override VOCABULARY (types) and the pure matcher/slug
7
+ // helpers the clustering pass consumes. Loading a per-repo override document from
8
+ // disk is a host concern (it's host-curated data) — the host loads it and passes
9
+ // the resulting OverrideMap into clusterGraph().
10
+ // Compile glob patterns into a single matcher. Supports `**` (any path span),
11
+ // `*` (within a segment) and literal text — enough for drop/assign rules.
12
+ export function compileMatchers(patterns) {
13
+ if (patterns.length === 0)
14
+ return () => false;
15
+ const regexes = patterns.map((p) => {
16
+ const re = p
17
+ .replace(/[.+^${}()|[\]\\]/g, '\\$&')
18
+ .replace(/\*\*/g, ' ')
19
+ .replace(/\*/g, '[^/]*')
20
+ // eslint-disable-next-line no-control-regex -- intentional NUL sentinel: real globs never contain \x00
21
+ .replace(/ /g, '.*');
22
+ return new RegExp(`^${re}$`);
23
+ });
24
+ return (id) => regexes.some((re) => re.test(id));
25
+ }
26
+ export function slugify(s) {
27
+ return s
28
+ .toLowerCase()
29
+ .replace(/[^a-z0-9]+/g, '-')
30
+ .replace(/^-+|-+$/g, '');
31
+ }
32
+ //# sourceMappingURL=overrides.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overrides.js","sourceRoot":"","sources":["../../src/cluster/overrides.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,gFAAgF;AAChF,iFAAiF;AACjF,gCAAgC;AAChC,EAAE;AACF,gFAAgF;AAChF,kFAAkF;AAClF,iFAAiF;AACjF,iDAAiD;AA2BjD,8EAA8E;AAC9E,0EAA0E;AAC1E,MAAM,UAAU,eAAe,CAAC,QAAkB;IAChD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC;IAC9C,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACjC,MAAM,EAAE,GAAG,CAAC;aACT,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC;aACpC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;aACrB,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC;YACxB,uGAAuG;aACtG,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACvB,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,EAAU,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,CAAS;IAC/B,OAAO,CAAC;SACL,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,45 @@
1
+ import type { PackageRole } from '../types.js';
2
+ import type { ClusteredModule } from './louvain.js';
3
+ export interface Subsystem {
4
+ id: string;
5
+ name: string;
6
+ description?: string;
7
+ role?: PackageRole;
8
+ }
9
+ export declare const EXTERNAL_SUBSYSTEM_ID = "external";
10
+ export declare const DIR_SUBSYSTEM_PREFIX = "dir:";
11
+ export declare const PKG_SUBSYSTEM_PREFIX = "pkg:";
12
+ export declare const DOMAIN_SUBSYSTEM_PREFIX = "domain:";
13
+ export declare const RESERVED_SUBSYSTEM_PREFIXES: readonly string[];
14
+ export declare function bareSubsystemSlug(id: string): string;
15
+ export declare function dominantTopLevelDir(fileIds: string[]): string | null;
16
+ export declare function humanizeDir(segment: string): string;
17
+ /**
18
+ * Compute the complete subsystem partition for a cluster's modules.
19
+ *
20
+ * DETERMINISTIC + LLM-FREE. Returns a moduleId → Subsystem map covering EVERY
21
+ * module (the "exactly one" partition the validation gate asserts):
22
+ *
23
+ * - External / infra (namespaced) modules → the fixed `external` subsystem.
24
+ *: a module belonging to a workspace PACKAGE (packageId set) → ONE
25
+ * subsystem per package (the monorepo's declared top-level partition), so a
26
+ * shared lib isn't shredded into the app that imports it. Within-package
27
+ * Louvain module clustering is unchanged — many modules, one package box.
28
+ * - Other internal modules (root scope / non-monorepo) → their dominant
29
+ * TOP-LEVEL directory, slugified + humanized.
30
+ * - Root-level internal modules (no top-level dir) → fall back to the module's
31
+ * OWN id-derived grouping (see flat-repo refinement below).
32
+ *
33
+ * FLAT-REPO REFINEMENT (the "Louvain only to refine/split" rule): when
34
+ * the directory heuristic yields a SINGLE non-external subsystem for the whole
35
+ * repo (a flat repo: everything at root, or every module under one top-level
36
+ * dir), a single super-node would be useless. We then refine by giving each
37
+ * internal MODULE its own subsystem keyed by the module's id — and module ids
38
+ * are already the Louvain-derived dominant-segment slugs (stabilized across
39
+ * snapshots by stabilizeModuleIds), so this split is BOTH meaningful AND stable.
40
+ * (Package-assigned modules are out of this refinement — a package is always a
41
+ * real declared boundary, never a flat-repo collapse candidate.)
42
+ */
43
+ export declare function computeSubsystems(modules: ReadonlyArray<ClusteredModule>): Map<string, Subsystem>;
44
+ export declare function distinctSubsystems(partition: ReadonlyMap<string, Subsystem>): Subsystem[];
45
+ //# sourceMappingURL=subsystem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subsystem.d.ts","sourceRoot":"","sources":["../../src/cluster/subsystem.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAQpD,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB;AAUD,eAAO,MAAM,qBAAqB,aAAa,CAAC;AAyBhD,eAAO,MAAM,oBAAoB,SAAS,CAAC;AAC3C,eAAO,MAAM,oBAAoB,SAAS,CAAC;AAU3C,eAAO,MAAM,uBAAuB,YAAY,CAAC;AAOjD,eAAO,MAAM,2BAA2B,EAAE,SAAS,MAAM,EAIxD,CAAC;AAOF,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAKpD;AAqBD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAmBpE;AAuCD,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAgBnD;AA4BD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,aAAa,CAAC,eAAe,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAiDjG;AAKD,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,SAAS,EAAE,CAIzF"}
@@ -0,0 +1,299 @@
1
+ // Subsystem partition (, semantic-zoom epic ) — the STABLE,
2
+ // path-derived grouping ONE LEVEL UP from a module.
3
+ //
4
+ // Today's modules (cluster/louvain.ts) are path-derived Louvain clusters whose
5
+ // id is the slugified DOMINANT path segment of their files. A SUBSYSTEM groups
6
+ // modules by their dominant TOP-LEVEL directory segment — "auth", "billing",
7
+ // "ingest" — so the canvas can collapse a whole neighbourhood into one named
8
+ // super-node and re-expand it as the user zooms.
9
+ //
10
+ // The grouping identity was resolved at the design checkpoint to
11
+ // DIRECTORY-PRIMARY + Louvain-refinement (NOT raw Louvain). The decisive
12
+ // constraint: the subsystem id must be STABLE ACROSS SNAPSHOTS — it is read as
13
+ // the time slider scrubs, and a Louvain community INDEX reshuffles run-to-run /
14
+ // snapshot-to-snapshot (degrades the moat; UA never faced this — no time axis).
15
+ // A top-level directory is stable across snapshots, already encodes the human
16
+ // mental model, and NAMES ITSELF (humanized dir → ~zero net-new LLM cost).
17
+ //
18
+ // Subsystems are a COMPLETE, MUTUALLY-EXCLUSIVE partition: every module gets
19
+ // exactly one (the validation gate enforces this once SUBSYSTEM_REQUIRED
20
+ // flips). External / infra-namespaced modules are NOT path-derived (no fileIds),
21
+ // so they get a fixed `external` subsystem rather than a phantom directory.
22
+ //
23
+ // Naming is HEURISTIC-FIRST (humanized directory) — a cheap Flash-Lite pass
24
+ // (enrich/subsystem-names.ts) is the ONLY fallback, used for flat/uninformative
25
+ // repos where the directory name is useless. This module is the DETERMINISTIC
26
+ // half: it always produces a complete partition with heuristic names, with NO
27
+ // LLM dependency, so it runs even in the --no-llm structural pre-pass.
28
+ import { slugify } from './overrides.js';
29
+ // The fixed subsystem every non-path-derived module (external dep / infra node)
30
+ // lands in. These have no source directory of their own, so a directory-derived
31
+ // id would be a phantom; they belong to the "Externals" neighbourhood. Its id is
32
+ // the load-bearing colon-free `external` SENTINEL (grouping-gate's framework
33
+ // discriminator + several consumers key off it) — deliberately NOT `dir:`/`pkg:`
34
+ // namespaced. It only holds namespaced/external modules, so it collides with a
35
+ // module id only in the rare case of an internal module literally slugged
36
+ // `external`; that is out of 's directory-derived scope and left as-is.
37
+ export const EXTERNAL_SUBSYSTEM_ID = 'external';
38
+ const EXTERNAL_SUBSYSTEM = { id: EXTERNAL_SUBSYSTEM_ID, name: 'Externals' };
39
+ // A module id is "namespaced" (external dep `ext:…`, infra `cloudflare:worker:…`)
40
+ // when it carries a ':' — slugify strips ':', so a namespaced id can never collide
41
+ // with a path-derived internal subsystem id. These never get a directory subsystem.
42
+ function isNamespaced(moduleId) {
43
+ return moduleId.includes(':');
44
+ }
45
+ // directory/package-derived subsystem ids are NAMESPACED so a subsystem
46
+ // SUPER-NODE id can NEVER equal a MODULE id. React Flow keys both nodes and
47
+ // container nodes by id; a collision (e.g. a `components`/`e2e` directory box vs a
48
+ // `components`/`e2e` module) corrupts its node store — getNodesBounds under-reports
49
+ // and edges mis-anchor (this is the latent bug 's camera fix had to work
50
+ // around). MODULE ids are either bare path-derived slugs (slugify strips ':', so
51
+ // they NEVER carry one) or already-namespaced infra/external ids (`ext:…`,
52
+ // `cloudflare:…`); a subsystem id under a reserved `dir:`/`pkg:` namespace collides
53
+ // with neither. The id changes; the human display NAME stays the dir/package label.
54
+ //
55
+ // The ':' is ALSO the existing framework-vs-directory discriminator
56
+ // (grouping-gate.ts → isFrameworkSubsystemId): framework adapters namespace their
57
+ // subsystems `<adapter>:<id>` (`nest:auth`, `react-native:root`). So `dir:`/`pkg:`
58
+ // are RESERVED as NON-framework namespaces, and isFrameworkSubsystemId excludes them
59
+ // — keeping the locked framework > package > directory precedence intact.
60
+ export const DIR_SUBSYSTEM_PREFIX = 'dir:';
61
+ export const PKG_SUBSYSTEM_PREFIX = 'pkg:';
62
+ // the LLM domain-pass (cluster/domain-grouping.ts → decisions/subsystem-
63
+ // grouping.ts) mints its OWN group ids and overwrites measured directory subsystems
64
+ // with them when the quality gate trips. Those ids must ALSO be disjoint from module
65
+ // ids (a bare slug), so they carry this prefix. It is RESERVED here (a non-framework
66
+ // namespace) so isFrameworkSubsystemId treats `domain:` as non-framework — a domain
67
+ // group is the LLM's own output over non-framework modules, NOT framework-authoritative,
68
+ // so it must stay re-groupable (pinning it would make the domain-pass refuse to
69
+ // re-group its own modules). domain-grouping.ts imports this constant so there is one
70
+ // definition of the `domain:` namespace.
71
+ export const DOMAIN_SUBSYSTEM_PREFIX = 'domain:';
72
+ // The reserved NON-framework subsystem namespaces. A colon-bearing
73
+ // subsystem id under one of these is directory/package-derived or LLM domain-pass-
74
+ // derived, not a framework adapter id — grouping-gate's discriminator reads this list
75
+ // so it never mistakes a namespaced directory/package/domain box for a framework-owned
76
+ // one (and so never pins a domain-pass id out of its own re-grouping).
77
+ export const RESERVED_SUBSYSTEM_PREFIXES = [
78
+ DIR_SUBSYSTEM_PREFIX,
79
+ PKG_SUBSYSTEM_PREFIX,
80
+ DOMAIN_SUBSYSTEM_PREFIX,
81
+ ];
82
+ // The bare slug behind a (possibly namespaced) subsystem id — strips a reserved
83
+ // `dir:`/`pkg:` prefix; a framework (`nest:…`) or the fixed `external` id is
84
+ // returned unchanged. Used ONLY by the subsystem-naming heuristic, which inspects
85
+ // the underlying slug to detect uninformative ids; everywhere else the subsystem
86
+ // id is treated as OPAQUE.
87
+ export function bareSubsystemSlug(id) {
88
+ for (const p of RESERVED_SUBSYSTEM_PREFIXES) {
89
+ if (id.startsWith(p))
90
+ return id.slice(p.length);
91
+ }
92
+ return id;
93
+ }
94
+ // The TOP-LEVEL directory segment of a file id, after stripping an optional
95
+ // leading `src/` (so `src/auth/login.ts` and `auth/login.ts` both → `auth`). A
96
+ // file sitting at the root (or directly under `src/`) has no top-level dir; it
97
+ // returns null and is handled as a root-level module by the caller.
98
+ function topLevelDir(fileId) {
99
+ const rel = fileId.replace(/^src\//, '');
100
+ const slash = rel.indexOf('/');
101
+ return slash > 0 ? rel.slice(0, slash) : null;
102
+ }
103
+ // The dominant top-level directory across a module's files — the most common
104
+ // top-level segment (ties broken alphabetically for determinism). Returns null
105
+ // when EVERY file is root-level (no top-level dir at all), so the caller can
106
+ // route such a module through the flat-repo refinement.
107
+ //
108
+ // Exported so the LLM domain-pass QUALITY GATE (cluster/grouping-gate.ts)
109
+ // measures directory quality with the EXACT same dominant-dir heuristic this
110
+ // deterministic partition uses — one definition of "a module's directory box",
111
+ // not two that could drift.
112
+ export function dominantTopLevelDir(fileIds) {
113
+ const counts = new Map();
114
+ for (const f of fileIds) {
115
+ const d = topLevelDir(f);
116
+ if (d !== null)
117
+ counts.set(d, (counts.get(d) ?? 0) + 1);
118
+ }
119
+ if (counts.size === 0)
120
+ return null;
121
+ let best = null;
122
+ let bestN = -1;
123
+ for (const [seg, n] of counts) {
124
+ // Strictly-greater keeps the first by iteration order; the alpha tiebreak
125
+ // below makes that order-independent (Map iteration is insertion order, and
126
+ // module fileIds order is itself deterministic, but we don't rely on it).
127
+ if (n > bestN || (n === bestN && (best === null || seg < best))) {
128
+ best = seg;
129
+ bestN = n;
130
+ }
131
+ }
132
+ return best;
133
+ }
134
+ // Short technical words that should stay UPPER-cased as acronyms (not Title-
135
+ // cased) when they appear as a word in a directory segment — e.g. `payment-api`
136
+ // → "Payment API", not "Payment Api". This is an ALLOW-LIST, deliberately NOT a
137
+ // "≤3 chars ⇒ upper" rule: blanket length-upper-casing produced ugly names for
138
+ // ordinary short dirs (`web→WEB`, `app→APP`, `log→LOG`, `bin→BIN`) on the
139
+ // deterministic path where no LLM pass corrects them ( review nit).
140
+ // Lowercase keys; matched case-insensitively. Extend here, don't widen by length.
141
+ const ACRONYMS = new Set([
142
+ 'api', 'db', 'ui', 'ux', 'cli', 'sdk', 'id', 'io', 'os', 'http', 'https',
143
+ 'url', 'uri', 'ai', 'ml', 'css', 'html', 'json', 'xml', 'sql', 'jwt',
144
+ 'cdn', 'dns', 'tcp', 'udp', 'ssl', 'tls', 'cors', 'rpc', 'grpc', 'graphql',
145
+ 'oauth', 'sso', 'iam', 's3', 'gcp', 'aws', 'k8s', 'ci', 'cd', 'qa',
146
+ ]);
147
+ // Humanize a directory segment into a display name: split on common separators,
148
+ // title-case each word, and special-case a few conventional dir names that read
149
+ // better expanded (the same dir-name → friendly-name heuristic Understand-
150
+ // Anything uses). Pure presentation — the id is the slug, not this.
151
+ const NAME_OVERRIDES = {
152
+ src: 'Source',
153
+ lib: 'Library',
154
+ libs: 'Libraries',
155
+ api: 'API',
156
+ apis: 'APIs',
157
+ db: 'Database',
158
+ auth: 'Auth',
159
+ ui: 'UI',
160
+ cli: 'CLI',
161
+ ingest: 'Ingestion',
162
+ infra: 'Infrastructure',
163
+ config: 'Configuration',
164
+ utils: 'Utilities',
165
+ util: 'Utilities',
166
+ pkg: 'Packages',
167
+ pkgs: 'Packages',
168
+ cmd: 'Commands',
169
+ };
170
+ export function humanizeDir(segment) {
171
+ const key = segment.toLowerCase();
172
+ if (NAME_OVERRIDES[key])
173
+ return NAME_OVERRIDES[key];
174
+ const words = segment
175
+ .replace(/[_\-.]+/g, ' ')
176
+ // split camelCase / PascalCase boundaries (fooBar → foo Bar)
177
+ .replace(/([a-z0-9])([A-Z])/g, '$1 $2')
178
+ .trim()
179
+ .split(/\s+/)
180
+ .filter(Boolean);
181
+ if (words.length === 0)
182
+ return segment;
183
+ return words
184
+ .map((w) => (ACRONYMS.has(w.toLowerCase())
185
+ ? w.toUpperCase() // a known acronym (api, db, ui, …) reads better upper
186
+ : w.charAt(0).toUpperCase() + w.slice(1)))
187
+ .join(' ');
188
+ }
189
+ // Build a Subsystem from a raw directory segment (namespaced slug id + humanized
190
+ // name). the id is `dir:<slug>` so it can never equal a module id (a bare
191
+ // slug); the display name is unchanged.
192
+ function subsystemFromDir(segment) {
193
+ const id = DIR_SUBSYSTEM_PREFIX + (slugify(segment) || 'module');
194
+ return { id, name: humanizeDir(segment) };
195
+ }
196
+ // build a Subsystem from a workspace package — ONE box per package.
197
+ // The id is the (stable, path-derived) package slug; the name humanizes the
198
+ // package name's last segment (`@org/ui` → "UI") so the super-node reads well,
199
+ // falling back to the slug when the package is unnamed; role labels it
200
+ // app/lib/tooling.
201
+ function packageSubsystem(m) {
202
+ const rawId = m.packageId;
203
+ // namespace the bare workspace-package slug as `pkg:<slug>` so it can't
204
+ // equal a module id (a single-module package's entry module shares the slug).
205
+ // Framework adapters (/729) ride packageId with an ALREADY-namespaced
206
+ // `<adapter>:<id>` (e.g. `nest:auth`) — keep those verbatim (never double-prefix).
207
+ const id = rawId.includes(':') ? rawId : PKG_SUBSYSTEM_PREFIX + rawId;
208
+ const fromName = m.packageName ? humanizeDir(m.packageName.split('/').pop() ?? m.packageName) : '';
209
+ const sub = { id, name: fromName || humanizeDir(rawId) };
210
+ if (m.packageRole)
211
+ sub.role = m.packageRole;
212
+ return sub;
213
+ }
214
+ /**
215
+ * Compute the complete subsystem partition for a cluster's modules.
216
+ *
217
+ * DETERMINISTIC + LLM-FREE. Returns a moduleId → Subsystem map covering EVERY
218
+ * module (the "exactly one" partition the validation gate asserts):
219
+ *
220
+ * - External / infra (namespaced) modules → the fixed `external` subsystem.
221
+ *: a module belonging to a workspace PACKAGE (packageId set) → ONE
222
+ * subsystem per package (the monorepo's declared top-level partition), so a
223
+ * shared lib isn't shredded into the app that imports it. Within-package
224
+ * Louvain module clustering is unchanged — many modules, one package box.
225
+ * - Other internal modules (root scope / non-monorepo) → their dominant
226
+ * TOP-LEVEL directory, slugified + humanized.
227
+ * - Root-level internal modules (no top-level dir) → fall back to the module's
228
+ * OWN id-derived grouping (see flat-repo refinement below).
229
+ *
230
+ * FLAT-REPO REFINEMENT (the "Louvain only to refine/split" rule): when
231
+ * the directory heuristic yields a SINGLE non-external subsystem for the whole
232
+ * repo (a flat repo: everything at root, or every module under one top-level
233
+ * dir), a single super-node would be useless. We then refine by giving each
234
+ * internal MODULE its own subsystem keyed by the module's id — and module ids
235
+ * are already the Louvain-derived dominant-segment slugs (stabilized across
236
+ * snapshots by stabilizeModuleIds), so this split is BOTH meaningful AND stable.
237
+ * (Package-assigned modules are out of this refinement — a package is always a
238
+ * real declared boundary, never a flat-repo collapse candidate.)
239
+ */
240
+ export function computeSubsystems(modules) {
241
+ const out = new Map();
242
+ // Externals + infra → fixed subsystem; workspace-package modules → one box per
243
+ // package; the rest fall through to the directory heuristic below.
244
+ const internal = [];
245
+ for (const m of modules) {
246
+ if (m.kind === 'external' || isNamespaced(m.id)) {
247
+ out.set(m.id, EXTERNAL_SUBSYSTEM);
248
+ }
249
+ else if (m.packageId) {
250
+ out.set(m.id, packageSubsystem(m));
251
+ }
252
+ else {
253
+ internal.push(m);
254
+ }
255
+ }
256
+ // Per-internal-module dominant top-level dir. null ⇒ a root-level module
257
+ // (handled by the refinement below so it still lands in exactly one subsystem).
258
+ const dirOf = new Map();
259
+ // Distinct directory-box slugs, only to COUNT them for the flat decision below
260
+ // (a bijection with the namespaced ids — so the bare slug is fine here).
261
+ const dirSubsystemIds = new Set();
262
+ for (const m of internal) {
263
+ const dir = dominantTopLevelDir(m.fileIds);
264
+ dirOf.set(m.id, dir);
265
+ if (dir !== null)
266
+ dirSubsystemIds.add(slugify(dir) || 'module');
267
+ }
268
+ // FLAT-REPO REFINEMENT trigger: the directory heuristic collapses the whole
269
+ // repo into ≤1 subsystem. Refine by module id (Louvain-derived, stable) so a
270
+ // flat repo still gets a legible multi-subsystem overview instead of one box.
271
+ const flat = dirSubsystemIds.size <= 1;
272
+ for (const m of internal) {
273
+ const dir = dirOf.get(m.id) ?? null;
274
+ if (!flat && dir !== null) {
275
+ out.set(m.id, subsystemFromDir(dir));
276
+ }
277
+ else {
278
+ // Refinement: the module's own id drives its subsystem. The id is already a
279
+ // slug (cluster/louvain.ts), and stable across snapshots — exactly the
280
+ // stability the time slider needs. namespace it `dir:<id>` so the
281
+ // per-module super-node id can't equal the module's OWN node id (which it
282
+ // did by construction before — a guaranteed collision). Humanize the bare id
283
+ // for the display name (unchanged).
284
+ out.set(m.id, { id: DIR_SUBSYSTEM_PREFIX + m.id, name: humanizeDir(m.id) });
285
+ }
286
+ }
287
+ return out;
288
+ }
289
+ // The set of DISTINCT subsystems in a partition (deduped by id), the input the
290
+ // optional Flash-Lite naming/description fallback ranks over. Deterministic
291
+ // order: by id, so a repeated run prompts identically (prompt-cache friendly).
292
+ export function distinctSubsystems(partition) {
293
+ const byId = new Map();
294
+ for (const s of partition.values())
295
+ if (!byId.has(s.id))
296
+ byId.set(s.id, s);
297
+ return [...byId.values()].sort((a, b) => (a.id < b.id ? -1 : a.id > b.id ? 1 : 0));
298
+ }
299
+ //# sourceMappingURL=subsystem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subsystem.js","sourceRoot":"","sources":["../../src/cluster/subsystem.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ import type { PackageRole } from '../types.js';
2
+ export interface WorkspacePackage {
3
+ /** Repo-relative posix dir, '' for the repo root scope. */
4
+ root: string;
5
+ /** package.json "name", null when unnamed. */
6
+ name: string | null;
7
+ /**
8
+ * Stable slug for module-id prefixes (from the name's last segment or the
9
+ * dir basename, slugified via overrides.ts's slugify). Unique within a
10
+ * layout (collisions dedup deterministically, root-sorted order).
11
+ */
12
+ slug: string;
13
+ /**
14
+ * Candidate entry files (repo-relative), best-first — package.json
15
+ * main/module/exports['.'] resolved + .js→.ts(x) variants + index.ts(x) /
16
+ * src/index.ts(x) fallbacks. Existence is NOT checked here (the cluster
17
+ * layer checks against the actual file set — it owns the graph).
18
+ */
19
+ entryFileIds: string[];
20
+ /** Was this boundary DECLARED (workspaces/pnpm/lerna/nx glob) vs inferred from a nested named package.json? */
21
+ declared: boolean;
22
+ /**
23
+ * the package's architectural role (app / lib / tooling), derived
24
+ * deterministically from its dir convention (apps/ vs packages/libs/ vs
25
+ * tools/config), package name (eslint-config / tsconfig / *-config →
26
+ * tooling) and scripts (a runnable start/dev/build/bin → app). The root scope
27
+ * carries a role too, but it's never surfaced (root-scope modules group by
28
+ * directory, not package).
29
+ */
30
+ role: PackageRole;
31
+ /**
32
+ * repo-relative roots of the workspace SIBLINGS this package depends
33
+ * on — from its package.json deps (all four dependency fields) whose KEY names
34
+ * a workspace sibling. Sorted, deduped, excludes self + the root scope. Empty
35
+ * on the root scope and on leaf packages. The cluster layer (louvain.ts)
36
+ * materializes these as cross-package `calls` edges between the two packages'
37
+ * entry modules. (tsconfig references/path-alias deps are a possible follow-up.)
38
+ */
39
+ declaredDeps: string[];
40
+ }
41
+ export interface WorkspaceLayout {
42
+ /** Includes the root scope package; >1 ⇒ a real multi-package layout. */
43
+ packages: WorkspacePackage[];
44
+ /** Longest-prefix match over package roots; falls back to the root scope. */
45
+ packageOf(fileId: string): WorkspacePackage;
46
+ /**
47
+ * Named non-root packages, by package.json name — the lookup the cluster
48
+ * layer uses to remap workspace-name bare-specifier externals back onto
49
+ * internal modules. On a (broken) duplicate name, the first package in
50
+ * root-sorted order wins — deterministic, and the loser just keeps its
51
+ * external node (fail-soft).
52
+ */
53
+ nameToPackage: ReadonlyMap<string, WorkspacePackage>;
54
+ }
55
+ /** Does a repo-relative path name a workspace-layout-defining manifest? */
56
+ export declare function isWorkspaceManifestPath(path: string): boolean;
57
+ /**
58
+ * Detect the workspace/package layout of a checked-out repo. fs-reading;
59
+ * NEVER throws — any unreadable/malformed manifest source is skipped, and the
60
+ * worst case is a single-package (root-only) layout, which downstream treats
61
+ * as "no Stage-C behavior" (status quo ante).
62
+ */
63
+ export declare function detectWorkspaceLayout(rootDir: string): WorkspaceLayout;
64
+ //# sourceMappingURL=workspaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspaces.d.ts","sourceRoot":"","sources":["../../src/cluster/workspaces.ts"],"names":[],"mappings":"AAsDA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAK/C,MAAM,WAAW,gBAAgB;IAC/B,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,+GAA+G;IAC/G,QAAQ,EAAE,OAAO,CAAC;IAClB;;;;;;;OAOG;IACH,IAAI,EAAE,WAAW,CAAC;IAClB;;;;;;;OAOG;IACH,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,yEAAyE;IACzE,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,6EAA6E;IAC7E,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC5C;;;;;;OAMG;IACH,aAAa,EAAE,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CACtD;AAqBD,2EAA2E;AAC3E,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAG7D;AAmBD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,CAyJtE"}