devchain-cli 0.11.5 → 0.12.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 (314) hide show
  1. package/README.md +8 -4
  2. package/dist/drizzle/0050_teams.sql +26 -0
  3. package/dist/drizzle/0051_teams_optional_lead.sql +17 -0
  4. package/dist/drizzle/0054_provider_config_description.sql +1 -0
  5. package/dist/drizzle/0055_team_profiles.sql +10 -0
  6. package/dist/drizzle/0056_team_profile_configs.sql +11 -0
  7. package/dist/drizzle/0057_white_lester.sql +2 -0
  8. package/dist/drizzle/0058_fluffy_wolverine.sql +1 -0
  9. package/dist/drizzle/0059_loving_daimon_hellstrom.sql +1 -0
  10. package/dist/drizzle/meta/0050_snapshot.json +4929 -0
  11. package/dist/drizzle/meta/0051_snapshot.json +4929 -0
  12. package/dist/drizzle/meta/0053_snapshot.json +4944 -0
  13. package/dist/drizzle/meta/0054_snapshot.json +4951 -0
  14. package/dist/drizzle/meta/0055_snapshot.json +5025 -0
  15. package/dist/drizzle/meta/0056_snapshot.json +5109 -0
  16. package/dist/drizzle/meta/0057_snapshot.json +5125 -0
  17. package/dist/drizzle/meta/0058_snapshot.json +5133 -0
  18. package/dist/drizzle/meta/0059_snapshot.json +5140 -0
  19. package/dist/drizzle/meta/_journal.json +60 -4
  20. package/dist/node_modules/@devchain/codebase-overview/index.d.ts +2 -0
  21. package/dist/node_modules/@devchain/codebase-overview/index.d.ts.map +1 -0
  22. package/dist/node_modules/@devchain/codebase-overview/index.js +2 -0
  23. package/dist/node_modules/@devchain/codebase-overview/index.js.map +1 -0
  24. package/dist/node_modules/@devchain/codebase-overview/package.json +8 -0
  25. package/dist/node_modules/@devchain/codebase-overview/tsconfig.tsbuildinfo +1 -0
  26. package/dist/node_modules/@devchain/codebase-overview/types.d.ts +232 -0
  27. package/dist/node_modules/@devchain/codebase-overview/types.d.ts.map +1 -0
  28. package/dist/node_modules/@devchain/codebase-overview/types.js +2 -0
  29. package/dist/node_modules/@devchain/codebase-overview/types.js.map +1 -0
  30. package/dist/node_modules/@devchain/shared/index.d.ts +1 -1
  31. package/dist/node_modules/@devchain/shared/index.d.ts.map +1 -1
  32. package/dist/node_modules/@devchain/shared/index.js +1 -1
  33. package/dist/node_modules/@devchain/shared/index.js.map +1 -1
  34. package/dist/node_modules/@devchain/shared/schemas/env-vars.d.ts +3 -0
  35. package/dist/node_modules/@devchain/shared/schemas/env-vars.d.ts.map +1 -0
  36. package/dist/node_modules/@devchain/shared/schemas/env-vars.js +14 -0
  37. package/dist/node_modules/@devchain/shared/schemas/env-vars.js.map +1 -0
  38. package/dist/node_modules/@devchain/shared/schemas/export-schema.d.ts +99 -13
  39. package/dist/node_modules/@devchain/shared/schemas/export-schema.d.ts.map +1 -1
  40. package/dist/node_modules/@devchain/shared/schemas/export-schema.js +25 -1
  41. package/dist/node_modules/@devchain/shared/schemas/export-schema.js.map +1 -1
  42. package/dist/node_modules/@devchain/shared/schemas/index.d.ts +1 -0
  43. package/dist/node_modules/@devchain/shared/schemas/index.d.ts.map +1 -1
  44. package/dist/node_modules/@devchain/shared/schemas/index.js +1 -0
  45. package/dist/node_modules/@devchain/shared/schemas/index.js.map +1 -1
  46. package/dist/node_modules/@devchain/shared/tsconfig.tsbuildinfo +1 -1
  47. package/dist/server/app.main.module.js +4 -0
  48. package/dist/server/app.main.module.js.map +1 -1
  49. package/dist/server/app.normal.module.js +4 -0
  50. package/dist/server/app.normal.module.js.map +1 -1
  51. package/dist/server/common/config/feature-flags.d.ts +0 -2
  52. package/dist/server/common/config/feature-flags.js +1 -4
  53. package/dist/server/common/config/feature-flags.js.map +1 -1
  54. package/dist/server/common/errors/error-types.d.ts +3 -0
  55. package/dist/server/common/errors/error-types.js +10 -1
  56. package/dist/server/common/errors/error-types.js.map +1 -1
  57. package/dist/server/common/template/agent-recipient-context.d.ts +10 -0
  58. package/dist/server/common/template/agent-recipient-context.js +13 -0
  59. package/dist/server/common/template/agent-recipient-context.js.map +1 -0
  60. package/dist/server/common/template/handlebars-renderer.d.ts +1 -0
  61. package/dist/server/common/template/handlebars-renderer.js +26 -0
  62. package/dist/server/common/template/handlebars-renderer.js.map +1 -0
  63. package/dist/server/modules/agents/agents.module.js +2 -1
  64. package/dist/server/modules/agents/agents.module.js.map +1 -1
  65. package/dist/server/modules/agents/controllers/agents.controller.d.ts +3 -1
  66. package/dist/server/modules/agents/controllers/agents.controller.js +36 -3
  67. package/dist/server/modules/agents/controllers/agents.controller.js.map +1 -1
  68. package/dist/server/modules/codebase-overview-analyzer/codebase-overview-analyzer.module.d.ts +2 -0
  69. package/dist/server/modules/codebase-overview-analyzer/codebase-overview-analyzer.module.js +51 -0
  70. package/dist/server/modules/codebase-overview-analyzer/codebase-overview-analyzer.module.js.map +1 -0
  71. package/dist/server/modules/codebase-overview-analyzer/controllers/codebase-overview.controller.d.ts +30 -0
  72. package/dist/server/modules/codebase-overview-analyzer/controllers/codebase-overview.controller.js +225 -0
  73. package/dist/server/modules/codebase-overview-analyzer/controllers/codebase-overview.controller.js.map +1 -0
  74. package/dist/server/modules/codebase-overview-analyzer/repositories/overview-scope.repository.d.ts +24 -0
  75. package/dist/server/modules/codebase-overview-analyzer/repositories/overview-scope.repository.js +188 -0
  76. package/dist/server/modules/codebase-overview-analyzer/repositories/overview-scope.repository.js.map +1 -0
  77. package/dist/server/modules/codebase-overview-analyzer/services/codebase-overview-analyzer.service.d.ts +71 -0
  78. package/dist/server/modules/codebase-overview-analyzer/services/codebase-overview-analyzer.service.js +1128 -0
  79. package/dist/server/modules/codebase-overview-analyzer/services/codebase-overview-analyzer.service.js.map +1 -0
  80. package/dist/server/modules/codebase-overview-analyzer/services/dependency-aggregation.service.d.ts +14 -0
  81. package/dist/server/modules/codebase-overview-analyzer/services/dependency-aggregation.service.js +114 -0
  82. package/dist/server/modules/codebase-overview-analyzer/services/dependency-aggregation.service.js.map +1 -0
  83. package/dist/server/modules/codebase-overview-analyzer/services/district-splitting.service.d.ts +8 -0
  84. package/dist/server/modules/codebase-overview-analyzer/services/district-splitting.service.js +200 -0
  85. package/dist/server/modules/codebase-overview-analyzer/services/district-splitting.service.js.map +1 -0
  86. package/dist/server/modules/codebase-overview-analyzer/services/evidence-query.service.d.ts +11 -0
  87. package/dist/server/modules/codebase-overview-analyzer/services/evidence-query.service.js +164 -0
  88. package/dist/server/modules/codebase-overview-analyzer/services/evidence-query.service.js.map +1 -0
  89. package/dist/server/modules/codebase-overview-analyzer/services/go-adapter.d.ts +2 -0
  90. package/dist/server/modules/codebase-overview-analyzer/services/go-adapter.js +166 -0
  91. package/dist/server/modules/codebase-overview-analyzer/services/go-adapter.js.map +1 -0
  92. package/dist/server/modules/codebase-overview-analyzer/services/hotspot-scoring.service.d.ts +21 -0
  93. package/dist/server/modules/codebase-overview-analyzer/services/hotspot-scoring.service.js +252 -0
  94. package/dist/server/modules/codebase-overview-analyzer/services/hotspot-scoring.service.js.map +1 -0
  95. package/dist/server/modules/codebase-overview-analyzer/services/identity-resolver.service.d.ts +24 -0
  96. package/dist/server/modules/codebase-overview-analyzer/services/identity-resolver.service.js +98 -0
  97. package/dist/server/modules/codebase-overview-analyzer/services/identity-resolver.service.js.map +1 -0
  98. package/dist/server/modules/codebase-overview-analyzer/services/java-adapter.d.ts +2 -0
  99. package/dist/server/modules/codebase-overview-analyzer/services/java-adapter.js +155 -0
  100. package/dist/server/modules/codebase-overview-analyzer/services/java-adapter.js.map +1 -0
  101. package/dist/server/modules/codebase-overview-analyzer/services/language-adapter-registry.service.d.ts +19 -0
  102. package/dist/server/modules/codebase-overview-analyzer/services/language-adapter-registry.service.js +87 -0
  103. package/dist/server/modules/codebase-overview-analyzer/services/language-adapter-registry.service.js.map +1 -0
  104. package/dist/server/modules/codebase-overview-analyzer/services/php-adapter.d.ts +2 -0
  105. package/dist/server/modules/codebase-overview-analyzer/services/php-adapter.js +173 -0
  106. package/dist/server/modules/codebase-overview-analyzer/services/php-adapter.js.map +1 -0
  107. package/dist/server/modules/codebase-overview-analyzer/services/python-adapter.d.ts +2 -0
  108. package/dist/server/modules/codebase-overview-analyzer/services/python-adapter.js +171 -0
  109. package/dist/server/modules/codebase-overview-analyzer/services/python-adapter.js.map +1 -0
  110. package/dist/server/modules/codebase-overview-analyzer/services/ruby-adapter.d.ts +2 -0
  111. package/dist/server/modules/codebase-overview-analyzer/services/ruby-adapter.js +158 -0
  112. package/dist/server/modules/codebase-overview-analyzer/services/ruby-adapter.js.map +1 -0
  113. package/dist/server/modules/codebase-overview-analyzer/services/rust-adapter.d.ts +2 -0
  114. package/dist/server/modules/codebase-overview-analyzer/services/rust-adapter.js +222 -0
  115. package/dist/server/modules/codebase-overview-analyzer/services/rust-adapter.js.map +1 -0
  116. package/dist/server/modules/codebase-overview-analyzer/services/scope-auto-detector.service.d.ts +4 -0
  117. package/dist/server/modules/codebase-overview-analyzer/services/scope-auto-detector.service.js +72 -0
  118. package/dist/server/modules/codebase-overview-analyzer/services/scope-auto-detector.service.js.map +1 -0
  119. package/dist/server/modules/codebase-overview-analyzer/services/scope-resolver.service.d.ts +6 -0
  120. package/dist/server/modules/codebase-overview-analyzer/services/scope-resolver.service.js +37 -0
  121. package/dist/server/modules/codebase-overview-analyzer/services/scope-resolver.service.js.map +1 -0
  122. package/dist/server/modules/codebase-overview-analyzer/services/typescript-adapter.d.ts +2 -0
  123. package/dist/server/modules/codebase-overview-analyzer/services/typescript-adapter.js +108 -0
  124. package/dist/server/modules/codebase-overview-analyzer/services/typescript-adapter.js.map +1 -0
  125. package/dist/server/modules/codebase-overview-analyzer/types/index.d.ts +2 -0
  126. package/dist/server/modules/codebase-overview-analyzer/types/index.js +6 -0
  127. package/dist/server/modules/codebase-overview-analyzer/types/index.js.map +1 -0
  128. package/dist/server/modules/codebase-overview-analyzer/types/scope-defaults.d.ts +2 -0
  129. package/dist/server/modules/codebase-overview-analyzer/types/scope-defaults.js +13 -0
  130. package/dist/server/modules/codebase-overview-analyzer/types/scope-defaults.js.map +1 -0
  131. package/dist/server/modules/codebase-overview-analyzer/types/scope.schema.d.ts +54 -0
  132. package/dist/server/modules/codebase-overview-analyzer/types/scope.schema.js +27 -0
  133. package/dist/server/modules/codebase-overview-analyzer/types/scope.schema.js.map +1 -0
  134. package/dist/server/modules/codebase-overview-analyzer/types/scope.types.d.ts +12 -0
  135. package/dist/server/modules/codebase-overview-analyzer/types/scope.types.js +3 -0
  136. package/dist/server/modules/codebase-overview-analyzer/types/scope.types.js.map +1 -0
  137. package/dist/server/modules/codebase-overview-analyzer/utils/constants.d.ts +1 -0
  138. package/dist/server/modules/codebase-overview-analyzer/utils/constants.js +5 -0
  139. package/dist/server/modules/codebase-overview-analyzer/utils/constants.js.map +1 -0
  140. package/dist/server/modules/codebase-overview-analyzer/utils/path-matcher.d.ts +2 -0
  141. package/dist/server/modules/codebase-overview-analyzer/utils/path-matcher.js +17 -0
  142. package/dist/server/modules/codebase-overview-analyzer/utils/path-matcher.js.map +1 -0
  143. package/dist/server/modules/core/controllers/preflight.controller.d.ts +1 -1
  144. package/dist/server/modules/core/controllers/preflight.controller.js +6 -4
  145. package/dist/server/modules/core/controllers/preflight.controller.js.map +1 -1
  146. package/dist/server/modules/core/services/preflight.service.d.ts +7 -1
  147. package/dist/server/modules/core/services/preflight.service.js +127 -10
  148. package/dist/server/modules/core/services/preflight.service.js.map +1 -1
  149. package/dist/server/modules/events/catalog/agent.created.d.ts +42 -0
  150. package/dist/server/modules/events/catalog/agent.created.js +23 -0
  151. package/dist/server/modules/events/catalog/agent.created.js.map +1 -0
  152. package/dist/server/modules/events/catalog/agent.deleted.d.ts +42 -0
  153. package/dist/server/modules/events/catalog/agent.deleted.js +22 -0
  154. package/dist/server/modules/events/catalog/agent.deleted.js.map +1 -0
  155. package/dist/server/modules/events/catalog/index.d.ts +180 -0
  156. package/dist/server/modules/events/catalog/index.js +10 -0
  157. package/dist/server/modules/events/catalog/index.js.map +1 -1
  158. package/dist/server/modules/events/catalog/team.config.updated.d.ts +67 -0
  159. package/dist/server/modules/events/catalog/team.config.updated.js +21 -0
  160. package/dist/server/modules/events/catalog/team.config.updated.js.map +1 -0
  161. package/dist/server/modules/events/catalog/team.member.added.d.ts +27 -0
  162. package/dist/server/modules/events/catalog/team.member.added.js +16 -0
  163. package/dist/server/modules/events/catalog/team.member.added.js.map +1 -0
  164. package/dist/server/modules/events/catalog/team.member.removed.d.ts +27 -0
  165. package/dist/server/modules/events/catalog/team.member.removed.js +16 -0
  166. package/dist/server/modules/events/catalog/team.member.removed.js.map +1 -0
  167. package/dist/server/modules/events/controllers/event-log.controller.d.ts +1 -1
  168. package/dist/server/modules/events/controllers/event-log.controller.js +11 -9
  169. package/dist/server/modules/events/controllers/event-log.controller.js.map +1 -1
  170. package/dist/server/modules/events/dtos/event-log.dto.d.ts +1 -0
  171. package/dist/server/modules/events/services/event-log.service.js +3 -0
  172. package/dist/server/modules/events/services/event-log.service.js.map +1 -1
  173. package/dist/server/modules/events/subscribers/epic-assignment-notifier.subscriber.d.ts +2 -1
  174. package/dist/server/modules/events/subscribers/epic-assignment-notifier.subscriber.js +30 -10
  175. package/dist/server/modules/events/subscribers/epic-assignment-notifier.subscriber.js.map +1 -1
  176. package/dist/server/modules/events/subscribers/index.js +8 -0
  177. package/dist/server/modules/events/subscribers/index.js.map +1 -1
  178. package/dist/server/modules/events/subscribers/project-state-broadcaster.subscriber.d.ts +16 -0
  179. package/dist/server/modules/events/subscribers/project-state-broadcaster.subscriber.js +101 -0
  180. package/dist/server/modules/events/subscribers/project-state-broadcaster.subscriber.js.map +1 -0
  181. package/dist/server/modules/events/subscribers/review-comment-notifier.subscriber.d.ts +2 -1
  182. package/dist/server/modules/events/subscribers/review-comment-notifier.subscriber.js +30 -8
  183. package/dist/server/modules/events/subscribers/review-comment-notifier.subscriber.js.map +1 -1
  184. package/dist/server/modules/events/subscribers/sub-epic-created-notifier.subscriber.d.ts +18 -0
  185. package/dist/server/modules/events/subscribers/sub-epic-created-notifier.subscriber.js +154 -0
  186. package/dist/server/modules/events/subscribers/sub-epic-created-notifier.subscriber.js.map +1 -0
  187. package/dist/server/modules/events/subscribers/team-config-updated-notifier.subscriber.d.ts +18 -0
  188. package/dist/server/modules/events/subscribers/team-config-updated-notifier.subscriber.js +138 -0
  189. package/dist/server/modules/events/subscribers/team-config-updated-notifier.subscriber.js.map +1 -0
  190. package/dist/server/modules/events/subscribers/team-membership-changed-notifier.subscriber.d.ts +18 -0
  191. package/dist/server/modules/events/subscribers/team-membership-changed-notifier.subscriber.js +129 -0
  192. package/dist/server/modules/events/subscribers/team-membership-changed-notifier.subscriber.js.map +1 -0
  193. package/dist/server/modules/mcp/dtos/mcp.dto.d.ts +172 -0
  194. package/dist/server/modules/mcp/dtos/mcp.dto.js +69 -6
  195. package/dist/server/modules/mcp/dtos/mcp.dto.js.map +1 -1
  196. package/dist/server/modules/mcp/dtos/schema-registry.js +6 -0
  197. package/dist/server/modules/mcp/dtos/schema-registry.js.map +1 -1
  198. package/dist/server/modules/mcp/mcp.module.js +2 -0
  199. package/dist/server/modules/mcp/mcp.module.js.map +1 -1
  200. package/dist/server/modules/mcp/services/handlers/chat-tools.js +117 -3
  201. package/dist/server/modules/mcp/services/handlers/chat-tools.js.map +1 -1
  202. package/dist/server/modules/mcp/services/handlers/epic-tools.js +16 -3
  203. package/dist/server/modules/mcp/services/handlers/epic-tools.js.map +1 -1
  204. package/dist/server/modules/mcp/services/handlers/prompt-tools.js +33 -1
  205. package/dist/server/modules/mcp/services/handlers/prompt-tools.js.map +1 -1
  206. package/dist/server/modules/mcp/services/handlers/teams-tools.d.ts +8 -0
  207. package/dist/server/modules/mcp/services/handlers/teams-tools.js +457 -0
  208. package/dist/server/modules/mcp/services/handlers/teams-tools.js.map +1 -0
  209. package/dist/server/modules/mcp/services/handlers/types.d.ts +2 -0
  210. package/dist/server/modules/mcp/services/instructions-resolver.d.ts +7 -3
  211. package/dist/server/modules/mcp/services/instructions-resolver.js +50 -26
  212. package/dist/server/modules/mcp/services/instructions-resolver.js.map +1 -1
  213. package/dist/server/modules/mcp/services/mcp.service.d.ts +3 -1
  214. package/dist/server/modules/mcp/services/mcp.service.js +15 -3
  215. package/dist/server/modules/mcp/services/mcp.service.js.map +1 -1
  216. package/dist/server/modules/mcp/tool-definitions.d.ts +501 -0
  217. package/dist/server/modules/mcp/tool-definitions.js +137 -3
  218. package/dist/server/modules/mcp/tool-definitions.js.map +1 -1
  219. package/dist/server/modules/profiles/controllers/profiles.controller.js +1 -0
  220. package/dist/server/modules/profiles/controllers/profiles.controller.js.map +1 -1
  221. package/dist/server/modules/profiles/controllers/provider-configs.controller.js +3 -0
  222. package/dist/server/modules/profiles/controllers/provider-configs.controller.js.map +1 -1
  223. package/dist/server/modules/profiles/dto.d.ts +19 -6
  224. package/dist/server/modules/profiles/dto.js +13 -15
  225. package/dist/server/modules/profiles/dto.js.map +1 -1
  226. package/dist/server/modules/projects/controllers/projects.controller.d.ts +34 -0
  227. package/dist/server/modules/projects/controllers/projects.controller.js +52 -1
  228. package/dist/server/modules/projects/controllers/projects.controller.js.map +1 -1
  229. package/dist/server/modules/projects/helpers/project-export.d.ts +47 -0
  230. package/dist/server/modules/projects/helpers/project-export.js +116 -40
  231. package/dist/server/modules/projects/helpers/project-export.js.map +1 -1
  232. package/dist/server/modules/projects/helpers/project-import.d.ts +62 -0
  233. package/dist/server/modules/projects/helpers/project-import.js +191 -1
  234. package/dist/server/modules/projects/helpers/project-import.js.map +1 -1
  235. package/dist/server/modules/projects/helpers/template-loader.d.ts +13 -0
  236. package/dist/server/modules/projects/helpers/template-loader.js +60 -1
  237. package/dist/server/modules/projects/helpers/template-loader.js.map +1 -1
  238. package/dist/server/modules/projects/projects.module.js +2 -1
  239. package/dist/server/modules/projects/projects.module.js.map +1 -1
  240. package/dist/server/modules/projects/services/projects.service.d.ts +41 -1
  241. package/dist/server/modules/projects/services/projects.service.js +9 -2
  242. package/dist/server/modules/projects/services/projects.service.js.map +1 -1
  243. package/dist/server/modules/providers/adapters/gemini.adapter.js +2 -2
  244. package/dist/server/modules/providers/adapters/gemini.adapter.js.map +1 -1
  245. package/dist/server/modules/providers/controllers/providers.controller.js +7 -0
  246. package/dist/server/modules/providers/controllers/providers.controller.js.map +1 -1
  247. package/dist/server/modules/providers/services/provider-project-sync.service.js +5 -3
  248. package/dist/server/modules/providers/services/provider-project-sync.service.js.map +1 -1
  249. package/dist/server/modules/registry/controllers/templates.controller.d.ts +153 -0
  250. package/dist/server/modules/registry/controllers/templates.controller.js +56 -0
  251. package/dist/server/modules/registry/controllers/templates.controller.js.map +1 -1
  252. package/dist/server/modules/seeders/seeders/0007_seed_claude_no_flicker_env.d.ts +3 -0
  253. package/dist/server/modules/seeders/seeders/0007_seed_claude_no_flicker_env.js +28 -0
  254. package/dist/server/modules/seeders/seeders/0007_seed_claude_no_flicker_env.js.map +1 -0
  255. package/dist/server/modules/seeders/services/data-seeder.service.js +2 -0
  256. package/dist/server/modules/seeders/services/data-seeder.service.js.map +1 -1
  257. package/dist/server/modules/session-reader/data/pricing.json +137 -8
  258. package/dist/server/modules/sessions/services/sessions.service.d.ts +1 -0
  259. package/dist/server/modules/sessions/services/sessions.service.js +26 -5
  260. package/dist/server/modules/sessions/services/sessions.service.js.map +1 -1
  261. package/dist/server/modules/sessions/utils/template-renderer.d.ts +6 -0
  262. package/dist/server/modules/sessions/utils/template-renderer.js +15 -10
  263. package/dist/server/modules/sessions/utils/template-renderer.js.map +1 -1
  264. package/dist/server/modules/storage/db/schema.d.ts +440 -0
  265. package/dist/server/modules/storage/db/schema.js +65 -1
  266. package/dist/server/modules/storage/db/schema.js.map +1 -1
  267. package/dist/server/modules/storage/interfaces/storage.interface.d.ts +1 -0
  268. package/dist/server/modules/storage/interfaces/storage.interface.js.map +1 -1
  269. package/dist/server/modules/storage/local/delegates/agent.delegate.js +40 -15
  270. package/dist/server/modules/storage/local/delegates/agent.delegate.js.map +1 -1
  271. package/dist/server/modules/storage/local/delegates/profile-provider-config.delegate.d.ts +1 -0
  272. package/dist/server/modules/storage/local/delegates/profile-provider-config.delegate.js +28 -11
  273. package/dist/server/modules/storage/local/delegates/profile-provider-config.delegate.js.map +1 -1
  274. package/dist/server/modules/storage/local/delegates/project.delegate.js +10 -0
  275. package/dist/server/modules/storage/local/delegates/project.delegate.js.map +1 -1
  276. package/dist/server/modules/storage/local/delegates/provider.delegate.js +38 -10
  277. package/dist/server/modules/storage/local/delegates/provider.delegate.js.map +1 -1
  278. package/dist/server/modules/storage/local/helpers/storage-helpers.d.ts +2 -0
  279. package/dist/server/modules/storage/local/helpers/storage-helpers.js +36 -0
  280. package/dist/server/modules/storage/local/helpers/storage-helpers.js.map +1 -1
  281. package/dist/server/modules/storage/models/domain.models.d.ts +62 -0
  282. package/dist/server/modules/subscribers/services/subscriber-executor.service.d.ts +6 -2
  283. package/dist/server/modules/subscribers/services/subscriber-executor.service.js +52 -5
  284. package/dist/server/modules/subscribers/services/subscriber-executor.service.js.map +1 -1
  285. package/dist/server/modules/teams/controllers/teams.controller.d.ts +39 -0
  286. package/dist/server/modules/teams/controllers/teams.controller.js +214 -0
  287. package/dist/server/modules/teams/controllers/teams.controller.js.map +1 -0
  288. package/dist/server/modules/teams/services/teams.service.d.ts +106 -0
  289. package/dist/server/modules/teams/services/teams.service.js +748 -0
  290. package/dist/server/modules/teams/services/teams.service.js.map +1 -0
  291. package/dist/server/modules/teams/storage/teams.store.d.ts +58 -0
  292. package/dist/server/modules/teams/storage/teams.store.js +468 -0
  293. package/dist/server/modules/teams/storage/teams.store.js.map +1 -0
  294. package/dist/server/modules/teams/teams.module.d.ts +2 -0
  295. package/dist/server/modules/teams/teams.module.js +27 -0
  296. package/dist/server/modules/teams/teams.module.js.map +1 -0
  297. package/dist/server/templates/3-agents-dev.json +74 -41
  298. package/dist/server/templates/5-agents-dev.json +212 -151
  299. package/dist/server/templates/teams-dev.json +1096 -0
  300. package/dist/server/tsconfig.tsbuildinfo +1 -1
  301. package/dist/server/ui/assets/{ReviewDetailPage-lzvMi5Ex.js → ReviewDetailPage-CEMxN6RQ.js} +1 -1
  302. package/dist/server/ui/assets/{ReviewsPage-_tz-XI0o.js → ReviewsPage-BzMksnGd.js} +1 -1
  303. package/dist/server/ui/assets/index-ChJ1IUMI.css +32 -0
  304. package/dist/server/ui/assets/index-Csagg3g2.js +1027 -0
  305. package/dist/server/ui/assets/{useReviewSubscription-C3UHhiQv.js → useReviewSubscription-B2ejeWE4.js} +1 -1
  306. package/dist/server/ui/index.html +2 -2
  307. package/dist/templates/3-agents-dev.json +74 -41
  308. package/dist/templates/5-agents-dev.json +212 -151
  309. package/dist/templates/teams-dev.json +1096 -0
  310. package/package.json +28 -2
  311. package/dist/server/ui/assets/index-C99ggRaD.css +0 -32
  312. package/dist/server/ui/assets/index-CTOev9rG.js +0 -1012
  313. /package/dist/drizzle/{0050_providers_one_million_context.sql → 0052_providers_one_million_context.sql} +0 -0
  314. /package/dist/drizzle/{0051_providers_auto_compact_threshold_1m.sql → 0053_providers_auto_compact_threshold_1m.sql} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evidence-query.service.js","sourceRoot":"","sources":["../../../../src/modules/codebase-overview-analyzer/services/evidence-query.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { LanguageAdapter } from '@devchain/codebase-overview';
2
+ export declare const goAdapter: LanguageAdapter;
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.goAdapter = void 0;
4
+ const path_1 = require("path");
5
+ const GO_EXTENSIONS = ['.go'];
6
+ const IMPORT_BLOCK_RE = /import\s*\(\s*([\s\S]*?)\)/g;
7
+ const IMPORT_SINGLE_RE = /^import\s+(?:[\w.]+\s+)?"([^"]+)"/gm;
8
+ const IMPORT_LINE_RE = /(?:[\w.]+\s+)?"([^"]+)"/g;
9
+ function extractGoImports(content) {
10
+ const specifiers = new Set();
11
+ IMPORT_BLOCK_RE.lastIndex = 0;
12
+ let blockMatch;
13
+ while ((blockMatch = IMPORT_BLOCK_RE.exec(content)) !== null) {
14
+ const block = blockMatch[1];
15
+ IMPORT_LINE_RE.lastIndex = 0;
16
+ let lineMatch;
17
+ while ((lineMatch = IMPORT_LINE_RE.exec(block)) !== null) {
18
+ if (lineMatch[1])
19
+ specifiers.add(lineMatch[1]);
20
+ }
21
+ }
22
+ IMPORT_SINGLE_RE.lastIndex = 0;
23
+ let singleMatch;
24
+ while ((singleMatch = IMPORT_SINGLE_RE.exec(content)) !== null) {
25
+ if (singleMatch[1])
26
+ specifiers.add(singleMatch[1]);
27
+ }
28
+ return [...specifiers];
29
+ }
30
+ const FUNC_RE = /^func\s+(?:\([^)]*\)\s+)?([A-Za-z_]\w*)/gm;
31
+ const TYPE_DECL_RE = /^type\s+([A-Za-z_]\w*)\s+/gm;
32
+ const TYPE_BLOCK_RE = /^type\s*\(\s*([\s\S]*?)\)/gm;
33
+ const VAR_CONST_BLOCK_RE = /^(?:var|const)\s*\(\s*([\s\S]*?)\)/gm;
34
+ const VAR_CONST_SINGLE_RE = /^(?:var|const)\s+([A-Za-z_]\w*)/gm;
35
+ const BLOCK_NAME_RE = /^\s*([A-Za-z_]\w*)\s+/gm;
36
+ function countGoSymbols(content) {
37
+ const symbols = new Set();
38
+ for (const re of [FUNC_RE, TYPE_DECL_RE, VAR_CONST_SINGLE_RE]) {
39
+ re.lastIndex = 0;
40
+ let m;
41
+ while ((m = re.exec(content)) !== null) {
42
+ if (m[1])
43
+ symbols.add(m[1]);
44
+ }
45
+ }
46
+ for (const blockRe of [TYPE_BLOCK_RE, VAR_CONST_BLOCK_RE]) {
47
+ blockRe.lastIndex = 0;
48
+ let blockMatch;
49
+ while ((blockMatch = blockRe.exec(content)) !== null) {
50
+ const block = blockMatch[1];
51
+ BLOCK_NAME_RE.lastIndex = 0;
52
+ let nameMatch;
53
+ while ((nameMatch = BLOCK_NAME_RE.exec(block)) !== null) {
54
+ if (nameMatch[1] && nameMatch[1] !== '//' && nameMatch[1] !== '/*') {
55
+ symbols.add(nameMatch[1]);
56
+ }
57
+ }
58
+ }
59
+ }
60
+ return symbols.size;
61
+ }
62
+ const GO_BRANCH_RE = /\b(?:if|else|for|case|default)\b/g;
63
+ const GO_LOGICAL_RE = /&&|\|\|/g;
64
+ function computeGoComplexity(content) {
65
+ if (!content)
66
+ return 1;
67
+ let complexity = 1;
68
+ complexity += (content.match(GO_BRANCH_RE) ?? []).length;
69
+ complexity += (content.match(GO_LOGICAL_RE) ?? []).length;
70
+ return complexity;
71
+ }
72
+ function detectGoTestPair(filePath, allPaths) {
73
+ const ext = (0, path_1.extname)(filePath);
74
+ const dir = (0, path_1.dirname)(filePath);
75
+ const base = (0, path_1.basename)(filePath, ext);
76
+ if (base.endsWith('_test')) {
77
+ const sourceBase = base.slice(0, -5);
78
+ const sourcePath = (0, path_1.join)(dir, `${sourceBase}${ext}`);
79
+ if (allPaths.has(sourcePath))
80
+ return sourcePath;
81
+ return null;
82
+ }
83
+ const testPath = (0, path_1.join)(dir, `${base}_test${ext}`);
84
+ if (allPaths.has(testPath))
85
+ return testPath;
86
+ return null;
87
+ }
88
+ const GO_TEST_RE = /^func\s+Test[A-Z]/m;
89
+ const GO_HANDLER_RE = /func\s+\(\s*\w+\s+\*?\w*(?:Handler|Server|Controller)\s*\)\s+(?:ServeHTTP|Handle)/;
90
+ const GO_HTTP_FRAMEWORK_RE = /\b(?:gin\.Context|echo\.Context|chi\.Router|mux\.Router|fiber\.Ctx)\b/;
91
+ const GO_HTTP_HANDLER_FUNC_RE = /\bfunc\s+\w+\s*\(\s*\w+\s+http\.ResponseWriter\s*,\s*\w+\s+\*http\.Request\s*\)/;
92
+ const GO_MODEL_RE = /\b(?:gorm\.Model|sqlx\b|`db:"|`json:.*`\s*$)/m;
93
+ const GO_STRUCT_DB_TAG_RE = /`(?:db|gorm|bson):/;
94
+ const GO_CONFIG_RE = /\b(?:viper\.|envconfig\.|godotenv\.)/;
95
+ const GO_SERVICE_RE = /(?:Service|Svc)\b/;
96
+ function classifyGoRole(filePath, content) {
97
+ const base = (0, path_1.basename)(filePath);
98
+ if (base.endsWith('_test.go'))
99
+ return 'test';
100
+ if (GO_TEST_RE.test(content))
101
+ return 'test';
102
+ if (GO_HANDLER_RE.test(content) ||
103
+ GO_HTTP_FRAMEWORK_RE.test(content) ||
104
+ GO_HTTP_HANDLER_FUNC_RE.test(content))
105
+ return 'controller';
106
+ if (GO_STRUCT_DB_TAG_RE.test(content) || GO_MODEL_RE.test(content))
107
+ return 'model';
108
+ if (base === 'config.go' || GO_CONFIG_RE.test(content))
109
+ return 'config';
110
+ if (GO_SERVICE_RE.test(content))
111
+ return 'service';
112
+ return null;
113
+ }
114
+ function isStdlib(specifier) {
115
+ const firstSegment = specifier.split('/')[0];
116
+ return !firstSegment.includes('.');
117
+ }
118
+ function resolveGoImport(specifier, importerPath, allPaths) {
119
+ if (!specifier)
120
+ return null;
121
+ if (isStdlib(specifier))
122
+ return null;
123
+ const segments = specifier.split('/');
124
+ for (let start = 1; start < segments.length; start++) {
125
+ const suffix = segments.slice(start).join('/');
126
+ const candidates = [];
127
+ for (const p of allPaths) {
128
+ if (!p.endsWith('.go'))
129
+ continue;
130
+ const pDir = (0, path_1.dirname)(p);
131
+ if (pDir === suffix || pDir.endsWith('/' + suffix)) {
132
+ candidates.push(p);
133
+ }
134
+ }
135
+ if (candidates.length === 0)
136
+ continue;
137
+ const dirs = new Set(candidates.map((c) => (0, path_1.dirname)(c)));
138
+ if (dirs.size === 1)
139
+ return candidates[0];
140
+ return null;
141
+ }
142
+ return null;
143
+ }
144
+ exports.goAdapter = {
145
+ id: 'go',
146
+ extensions: GO_EXTENSIONS,
147
+ classifyRole(filePath, content) {
148
+ return classifyGoRole(filePath, content);
149
+ },
150
+ extractImports(content) {
151
+ return extractGoImports(content);
152
+ },
153
+ countSymbols(content) {
154
+ return countGoSymbols(content);
155
+ },
156
+ computeComplexity(content) {
157
+ return computeGoComplexity(content);
158
+ },
159
+ resolveImport(specifier, importerPath, allPaths) {
160
+ return resolveGoImport(specifier, importerPath, allPaths);
161
+ },
162
+ detectTestPair(filePath, allPaths) {
163
+ return detectGoTestPair(filePath, allPaths);
164
+ },
165
+ };
166
+ //# sourceMappingURL=go-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"go-adapter.js","sourceRoot":"","sources":["../../../../src/modules/codebase-overview-analyzer/services/go-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { DistrictNode, HotspotEntry, ActivitySummary } from '@devchain/codebase-overview';
2
+ import type { FileAdapterEnrichment } from './language-adapter-registry.service';
3
+ export interface FileChurnData {
4
+ path: string;
5
+ loc: number;
6
+ lastModified: number;
7
+ churn1d: number;
8
+ churn7d: number;
9
+ churn30d: number;
10
+ isTest: boolean;
11
+ }
12
+ export declare function isTestFile(filePath: string): boolean;
13
+ export declare class HotspotScoringService {
14
+ enrichDistrictMetrics(districts: DistrictNode[], districtFiles: ReadonlyMap<string, FileChurnData[]>): void;
15
+ enrichDistrictAdapterMetrics(districts: DistrictNode[], districtFiles: ReadonlyMap<string, FileChurnData[]>, enrichments: ReadonlyMap<string, FileAdapterEnrichment>): void;
16
+ enrichDistrictOwnership(districts: DistrictNode[], districtFiles: ReadonlyMap<string, FileChurnData[]>, fileAuthors: ReadonlyMap<string, Map<string, number>>): void;
17
+ rankHotspots(districts: ReadonlyArray<DistrictNode>, districtFiles: ReadonlyMap<string, FileChurnData[]>): HotspotEntry[];
18
+ private static readonly CONTRIBUTORS_PER_DISTRICT;
19
+ computeActivitySummaries(districts: ReadonlyArray<DistrictNode>, districtFiles: ReadonlyMap<string, FileChurnData[]>, dailyChurnFileMap?: ReadonlyMap<string, ReadonlyMap<string, number>> | null, windowedAuthor7d?: ReadonlyMap<string, ReadonlyMap<string, number>> | null, windowedAuthor30d?: ReadonlyMap<string, ReadonlyMap<string, number>> | null): ActivitySummary[];
20
+ private aggregateContributors;
21
+ }
@@ -0,0 +1,252 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var HotspotScoringService_1;
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.HotspotScoringService = void 0;
11
+ exports.isTestFile = isTestFile;
12
+ const common_1 = require("@nestjs/common");
13
+ const district_splitting_service_1 = require("./district-splitting.service");
14
+ const TOP_N = 10;
15
+ const TEST_NAME_RE = /[.\-_](test|spec)\.[^/\\]+$/i;
16
+ const TEST_DIR_RE = /(^|[/\\])(__tests__|tests?)[/\\]/i;
17
+ function isTestFile(filePath) {
18
+ return TEST_NAME_RE.test(filePath) || TEST_DIR_RE.test(filePath);
19
+ }
20
+ let HotspotScoringService = HotspotScoringService_1 = class HotspotScoringService {
21
+ enrichDistrictMetrics(districts, districtFiles) {
22
+ for (const district of districts) {
23
+ const files = districtFiles.get(district.id) ?? [];
24
+ let churn7d = 0;
25
+ let churn30d = 0;
26
+ let testFileCount = 0;
27
+ const roleCounts = new Map();
28
+ for (const f of files) {
29
+ churn7d += f.churn7d;
30
+ churn30d += f.churn30d;
31
+ if (f.isTest)
32
+ testFileCount++;
33
+ const role = (0, district_splitting_service_1.classifyFileRole)(f.path);
34
+ roleCounts.set(role, (roleCounts.get(role) ?? 0) + 1);
35
+ }
36
+ district.churn7d = churn7d;
37
+ district.churn30d = churn30d;
38
+ district.testFileCount = testFileCount;
39
+ district.testFileRatio = files.length > 0 ? testFileCount / files.length : null;
40
+ if (files.length > 0) {
41
+ district.role = dominantRole(roleCounts);
42
+ }
43
+ }
44
+ }
45
+ enrichDistrictAdapterMetrics(districts, districtFiles, enrichments) {
46
+ for (const district of districts) {
47
+ const files = districtFiles.get(district.id) ?? [];
48
+ if (files.length === 0)
49
+ continue;
50
+ let complexitySum = 0;
51
+ let complexityCount = 0;
52
+ let measuredSourceFiles = 0;
53
+ let coveredFiles = 0;
54
+ for (const f of files) {
55
+ const enrichment = enrichments.get(f.path);
56
+ if (enrichment?.complexity != null) {
57
+ complexitySum += enrichment.complexity;
58
+ complexityCount++;
59
+ }
60
+ if (!f.isTest && enrichment !== undefined) {
61
+ measuredSourceFiles++;
62
+ if (enrichment.testPair != null)
63
+ coveredFiles++;
64
+ }
65
+ }
66
+ district.complexityAvg =
67
+ complexityCount > 0 ? Math.round((complexitySum / complexityCount) * 10) / 10 : null;
68
+ district.testCoverageRate =
69
+ measuredSourceFiles > 0
70
+ ? Math.round((coveredFiles / measuredSourceFiles) * 100) / 100
71
+ : null;
72
+ }
73
+ }
74
+ enrichDistrictOwnership(districts, districtFiles, fileAuthors) {
75
+ for (const district of districts) {
76
+ const files = districtFiles.get(district.id) ?? [];
77
+ if (files.length === 0)
78
+ continue;
79
+ const authorCounts = new Map();
80
+ for (const f of files) {
81
+ const authors = fileAuthors.get(f.path);
82
+ if (!authors)
83
+ continue;
84
+ for (const [author, count] of authors) {
85
+ authorCounts.set(author, (authorCounts.get(author) ?? 0) + count);
86
+ }
87
+ }
88
+ if (authorCounts.size === 0) {
89
+ district.ownershipConcentration = null;
90
+ district.primaryAuthorName = null;
91
+ district.primaryAuthorShare = null;
92
+ continue;
93
+ }
94
+ const totalCommits = [...authorCounts.values()].reduce((a, b) => a + b, 0);
95
+ let hhi = 0;
96
+ let primaryAuthorName = '';
97
+ let primaryAuthorMaxCount = 0;
98
+ for (const [author, count] of authorCounts) {
99
+ const share = count / totalCommits;
100
+ hhi += share * share;
101
+ if (count > primaryAuthorMaxCount) {
102
+ primaryAuthorMaxCount = count;
103
+ primaryAuthorName = author;
104
+ }
105
+ }
106
+ district.ownershipConcentration = Math.round(hhi * 100) / 100;
107
+ district.primaryAuthorName = primaryAuthorName;
108
+ district.primaryAuthorShare = Math.round((primaryAuthorMaxCount / totalCommits) * 100) / 100;
109
+ }
110
+ }
111
+ rankHotspots(districts, districtFiles) {
112
+ if (districts.length === 0)
113
+ return [];
114
+ const entries = [];
115
+ const nowMs = Date.now();
116
+ addRankedEntries(entries, districts, 'size', (d) => (districtFiles.get(d.id) ?? []).reduce((s, f) => s + f.loc, 0), (d, score) => `${d.name} — ${score.toLocaleString()} LOC`);
117
+ addRankedEntries(entries, districts, 'churn', (d) => d.churn30d, (d, score) => `${d.name} — ${score} commits in 30d`);
118
+ const districtsWithFiles = districts.filter((d) => d.totalFiles > 0);
119
+ addRankedEntries(entries, districtsWithFiles, 'tests', (d) => {
120
+ const ratio = d.testFileRatio ?? 0;
121
+ return Math.round((1 - ratio) * 100);
122
+ }, (d) => {
123
+ const pct = d.testFileRatio != null ? Math.round(d.testFileRatio * 100) : 0;
124
+ return `${d.name} — ${pct}% test files`;
125
+ });
126
+ const stalenessMap = new Map();
127
+ for (const district of districts) {
128
+ const files = districtFiles.get(district.id) ?? [];
129
+ if (files.length === 0)
130
+ continue;
131
+ const mostRecent = Math.max(...files.map((f) => f.lastModified));
132
+ const staleDays = Math.max(0, Math.floor((nowMs - mostRecent) / (1000 * 86400)));
133
+ stalenessMap.set(district.id, staleDays);
134
+ }
135
+ addRankedEntries(entries, districts, 'staleness', (d) => stalenessMap.get(d.id) ?? 0, (d, score) => `${d.name} — last modified ${score}d ago`);
136
+ addRankedEntries(entries, districts, 'coupling', (d) => d.couplingScore, (d, score) => `${d.name} — coupling ${score} (${d.inboundWeight} in, ${d.outboundWeight} out)`);
137
+ const complexDistricts = districts.filter((d) => d.complexityAvg != null);
138
+ addRankedEntries(entries, complexDistricts, 'complexity', (d) => d.complexityAvg, (d, score) => `${d.name} — avg complexity ${score}`);
139
+ const ownedDistricts = districts.filter((d) => d.ownershipConcentration != null);
140
+ addRankedEntries(entries, ownedDistricts, 'ownership', (d) => Math.round(d.ownershipConcentration * 100), (d) => {
141
+ const pct = Math.round(d.ownershipConcentration * 100);
142
+ return `${d.name} — ${pct}% ownership concentration`;
143
+ });
144
+ return entries;
145
+ }
146
+ computeActivitySummaries(districts, districtFiles, dailyChurnFileMap, windowedAuthor7d, windowedAuthor30d) {
147
+ return districts.map((district) => {
148
+ const files = districtFiles.get(district.id) ?? [];
149
+ let modifiedCount1d = 0;
150
+ let modifiedCount7d = 0;
151
+ let latestTimestamp = null;
152
+ for (const f of files) {
153
+ if (f.churn1d > 0)
154
+ modifiedCount1d++;
155
+ if (f.churn7d > 0)
156
+ modifiedCount7d++;
157
+ if (latestTimestamp == null || f.lastModified > latestTimestamp) {
158
+ latestTimestamp = f.lastModified;
159
+ }
160
+ }
161
+ const result = {
162
+ targetId: district.id,
163
+ targetKind: 'district',
164
+ modifiedCount1d,
165
+ modifiedCount7d,
166
+ buildFailures7d: null,
167
+ testFailures7d: null,
168
+ latestTimestamp: latestTimestamp != null ? Math.floor(latestTimestamp / 1000) : null,
169
+ recentContributors7d: [],
170
+ recentContributors30d: [],
171
+ };
172
+ if (dailyChurnFileMap) {
173
+ const dailyChurn = {};
174
+ for (const f of files) {
175
+ const dateMap = dailyChurnFileMap.get(f.path);
176
+ if (!dateMap)
177
+ continue;
178
+ for (const [dateStr, count] of dateMap) {
179
+ dailyChurn[dateStr] = (dailyChurn[dateStr] ?? 0) + count;
180
+ }
181
+ }
182
+ if (Object.keys(dailyChurn).length > 0) {
183
+ result.dailyChurn = dailyChurn;
184
+ }
185
+ }
186
+ if (windowedAuthor7d) {
187
+ result.recentContributors7d = this.aggregateContributors(files, windowedAuthor7d);
188
+ }
189
+ if (windowedAuthor30d) {
190
+ result.recentContributors30d = this.aggregateContributors(files, windowedAuthor30d);
191
+ }
192
+ return result;
193
+ });
194
+ }
195
+ aggregateContributors(files, authorMap) {
196
+ const totals = new Map();
197
+ for (const f of files) {
198
+ const fileAuthors = authorMap.get(f.path);
199
+ if (!fileAuthors)
200
+ continue;
201
+ for (const [author, count] of fileAuthors) {
202
+ totals.set(author, (totals.get(author) ?? 0) + count);
203
+ }
204
+ }
205
+ return [...totals.entries()]
206
+ .sort((a, b) => b[1] - a[1])
207
+ .slice(0, HotspotScoringService_1.CONTRIBUTORS_PER_DISTRICT)
208
+ .map(([authorName, commitCount]) => ({ authorName, commitCount }));
209
+ }
210
+ };
211
+ exports.HotspotScoringService = HotspotScoringService;
212
+ HotspotScoringService.CONTRIBUTORS_PER_DISTRICT = 5;
213
+ exports.HotspotScoringService = HotspotScoringService = HotspotScoringService_1 = __decorate([
214
+ (0, common_1.Injectable)()
215
+ ], HotspotScoringService);
216
+ function dominantRole(roleCounts) {
217
+ let maxRole = 'mixed';
218
+ let maxCount = 0;
219
+ let knownCount = 0;
220
+ for (const [role, count] of roleCounts) {
221
+ if (role === 'unknown')
222
+ continue;
223
+ knownCount += count;
224
+ if (count > maxCount) {
225
+ maxCount = count;
226
+ maxRole = role;
227
+ }
228
+ }
229
+ if (knownCount === 0)
230
+ return 'mixed';
231
+ return maxCount > knownCount * 0.5 ? maxRole : 'mixed';
232
+ }
233
+ function addRankedEntries(entries, districts, metric, scoreFn, labelFn) {
234
+ const scored = districts
235
+ .map((d) => ({ district: d, score: scoreFn(d) }))
236
+ .filter((item) => item.score > 0)
237
+ .sort((a, b) => b.score - a.score);
238
+ const count = Math.min(scored.length, TOP_N);
239
+ for (let i = 0; i < count; i++) {
240
+ const { district, score } = scored[i];
241
+ entries.push({
242
+ id: `hotspot:${metric}:${i + 1}`,
243
+ kind: 'district',
244
+ targetId: district.id,
245
+ metric,
246
+ rank: i + 1,
247
+ score,
248
+ label: labelFn(district, score),
249
+ });
250
+ }
251
+ }
252
+ //# sourceMappingURL=hotspot-scoring.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hotspot-scoring.service.js","sourceRoot":"","sources":["../../../../src/modules/codebase-overview-analyzer/services/hotspot-scoring.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ export interface GitRename {
2
+ oldPath: string;
3
+ newPath: string;
4
+ similarity: number;
5
+ }
6
+ export interface PreviousIdentityState {
7
+ commitSha: string | null;
8
+ files: ReadonlyMap<string, string>;
9
+ districts: ReadonlyMap<string, DistrictIdentityEntry>;
10
+ regions: ReadonlyMap<string, string>;
11
+ }
12
+ export interface DistrictIdentityEntry {
13
+ id: string;
14
+ memberFileIds: ReadonlySet<string>;
15
+ }
16
+ export interface DistrictCandidate {
17
+ key: string;
18
+ memberFileIds: string[];
19
+ }
20
+ export declare class IdentityResolverService {
21
+ resolveFileIds(currentPaths: string[], previous: PreviousIdentityState | null, gitRenames: GitRename[]): Map<string, string>;
22
+ resolveDistrictIds(currentDistricts: DistrictCandidate[], previous: PreviousIdentityState | null): Map<string, string>;
23
+ resolveRegionIds(currentRegionNames: string[], previous: PreviousIdentityState | null): Map<string, string>;
24
+ }
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.IdentityResolverService = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const crypto_1 = require("crypto");
12
+ const DISTRICT_OVERLAP_THRESHOLD = 0.5;
13
+ let IdentityResolverService = class IdentityResolverService {
14
+ resolveFileIds(currentPaths, previous, gitRenames) {
15
+ const result = new Map();
16
+ const prevFiles = previous?.files ?? new Map();
17
+ const renameMap = new Map();
18
+ for (const r of gitRenames) {
19
+ renameMap.set(r.newPath, r.oldPath);
20
+ }
21
+ for (const path of currentPaths) {
22
+ const exactId = prevFiles.get(path);
23
+ if (exactId) {
24
+ result.set(path, exactId);
25
+ continue;
26
+ }
27
+ const oldPath = renameMap.get(path);
28
+ if (oldPath) {
29
+ const renamedId = prevFiles.get(oldPath);
30
+ if (renamedId) {
31
+ result.set(path, renamedId);
32
+ continue;
33
+ }
34
+ }
35
+ result.set(path, (0, crypto_1.randomUUID)());
36
+ }
37
+ return result;
38
+ }
39
+ resolveDistrictIds(currentDistricts, previous) {
40
+ const result = new Map();
41
+ const prevDistricts = previous?.districts ?? new Map();
42
+ const matchedPrevious = new Set();
43
+ for (const district of currentDistricts) {
44
+ const currentMemberSet = new Set(district.memberFileIds);
45
+ const exactMatch = prevDistricts.get(district.key);
46
+ if (exactMatch) {
47
+ const overlap = computeOverlap(exactMatch.memberFileIds, currentMemberSet);
48
+ if (overlap >= DISTRICT_OVERLAP_THRESHOLD) {
49
+ result.set(district.key, exactMatch.id);
50
+ matchedPrevious.add(district.key);
51
+ continue;
52
+ }
53
+ }
54
+ let bestMatch = null;
55
+ for (const [prevKey, prevData] of prevDistricts) {
56
+ if (matchedPrevious.has(prevKey))
57
+ continue;
58
+ const overlap = computeOverlap(prevData.memberFileIds, currentMemberSet);
59
+ if (overlap >= DISTRICT_OVERLAP_THRESHOLD && (!bestMatch || overlap > bestMatch.ratio)) {
60
+ bestMatch = { key: prevKey, id: prevData.id, ratio: overlap };
61
+ }
62
+ }
63
+ if (bestMatch) {
64
+ result.set(district.key, bestMatch.id);
65
+ matchedPrevious.add(bestMatch.key);
66
+ continue;
67
+ }
68
+ result.set(district.key, (0, crypto_1.randomUUID)());
69
+ }
70
+ return result;
71
+ }
72
+ resolveRegionIds(currentRegionNames, previous) {
73
+ const result = new Map();
74
+ const prevRegions = previous?.regions ?? new Map();
75
+ for (const name of currentRegionNames) {
76
+ const prevId = prevRegions.get(name);
77
+ result.set(name, prevId ?? (0, crypto_1.randomUUID)());
78
+ }
79
+ return result;
80
+ }
81
+ };
82
+ exports.IdentityResolverService = IdentityResolverService;
83
+ exports.IdentityResolverService = IdentityResolverService = __decorate([
84
+ (0, common_1.Injectable)()
85
+ ], IdentityResolverService);
86
+ function computeOverlap(previousMembers, currentMembers) {
87
+ if (previousMembers.size === 0 && currentMembers.size === 0)
88
+ return 1;
89
+ if (previousMembers.size === 0 || currentMembers.size === 0)
90
+ return 0;
91
+ let intersectionCount = 0;
92
+ for (const id of previousMembers) {
93
+ if (currentMembers.has(id))
94
+ intersectionCount++;
95
+ }
96
+ return intersectionCount / Math.max(previousMembers.size, currentMembers.size);
97
+ }
98
+ //# sourceMappingURL=identity-resolver.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity-resolver.service.js","sourceRoot":"","sources":["../../../../src/modules/codebase-overview-analyzer/services/identity-resolver.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { LanguageAdapter } from '@devchain/codebase-overview';
2
+ export declare const javaAdapter: LanguageAdapter;