codedna 0.2.0__tar.gz

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 (351) hide show
  1. codedna-0.2.0/.env.example +38 -0
  2. codedna-0.2.0/.github/workflows/codedna.yml +53 -0
  3. codedna-0.2.0/.gitignore +26 -0
  4. codedna-0.2.0/.python-version +1 -0
  5. codedna-0.2.0/PKG-INFO +93 -0
  6. codedna-0.2.0/README.md +52 -0
  7. codedna-0.2.0/codedna/__init__.py +4 -0
  8. codedna-0.2.0/codedna/ai_fingerprint.py +223 -0
  9. codedna-0.2.0/codedna/analyzer.py +245 -0
  10. codedna-0.2.0/codedna/api.py +1505 -0
  11. codedna-0.2.0/codedna/auth.py +372 -0
  12. codedna-0.2.0/codedna/bus_factor.py +259 -0
  13. codedna-0.2.0/codedna/cli.py +1965 -0
  14. codedna-0.2.0/codedna/db.py +336 -0
  15. codedna-0.2.0/codedna/git_hook.py +212 -0
  16. codedna-0.2.0/codedna/integrations/__init__.py +1 -0
  17. codedna-0.2.0/codedna/integrations/github_bot.py +259 -0
  18. codedna-0.2.0/codedna/integrations/jira.py +166 -0
  19. codedna-0.2.0/codedna/integrations/lemonsqueezy.py +236 -0
  20. codedna-0.2.0/codedna/interview.py +298 -0
  21. codedna-0.2.0/codedna/onboarding.py +195 -0
  22. codedna-0.2.0/codedna/plan.py +184 -0
  23. codedna-0.2.0/codedna/protection.py +211 -0
  24. codedna-0.2.0/codedna/rate_limit.py +83 -0
  25. codedna-0.2.0/codedna/scorer.py +221 -0
  26. codedna-0.2.0/codedna/sprint_health.py +187 -0
  27. codedna-0.2.0/codedna/survey.py +104 -0
  28. codedna-0.2.0/codedna/tech_debt.py +232 -0
  29. codedna-0.2.0/dashboard/.env.local.example +2 -0
  30. codedna-0.2.0/dashboard/.gitignore +36 -0
  31. codedna-0.2.0/dashboard/README.md +36 -0
  32. codedna-0.2.0/dashboard/app/ai-compare/page.tsx +183 -0
  33. codedna-0.2.0/dashboard/app/api/auth/login/route.ts +52 -0
  34. codedna-0.2.0/dashboard/app/api/auth/logout/route.ts +35 -0
  35. codedna-0.2.0/dashboard/app/api/auth/me/route.ts +32 -0
  36. codedna-0.2.0/dashboard/app/api/auth/register/route.ts +48 -0
  37. codedna-0.2.0/dashboard/app/api/billing/checkout/route.ts +47 -0
  38. codedna-0.2.0/dashboard/app/billing/page.tsx +253 -0
  39. codedna-0.2.0/dashboard/app/bus-factor/page.tsx +185 -0
  40. codedna-0.2.0/dashboard/app/commits/page.tsx +89 -0
  41. codedna-0.2.0/dashboard/app/debt/page.tsx +351 -0
  42. codedna-0.2.0/dashboard/app/favicon.ico +0 -0
  43. codedna-0.2.0/dashboard/app/files/page.tsx +92 -0
  44. codedna-0.2.0/dashboard/app/fonts/GeistMonoVF.woff +0 -0
  45. codedna-0.2.0/dashboard/app/fonts/GeistVF.woff +0 -0
  46. codedna-0.2.0/dashboard/app/globals.css +28 -0
  47. codedna-0.2.0/dashboard/app/interview/page.tsx +225 -0
  48. codedna-0.2.0/dashboard/app/layout.tsx +58 -0
  49. codedna-0.2.0/dashboard/app/login/page.tsx +81 -0
  50. codedna-0.2.0/dashboard/app/onboarding/page.tsx +347 -0
  51. codedna-0.2.0/dashboard/app/page.tsx +75 -0
  52. codedna-0.2.0/dashboard/app/pricing/page.tsx +284 -0
  53. codedna-0.2.0/dashboard/app/protected/page.tsx +182 -0
  54. codedna-0.2.0/dashboard/app/register/page.tsx +84 -0
  55. codedna-0.2.0/dashboard/app/settings/integrations/page.tsx +167 -0
  56. codedna-0.2.0/dashboard/app/sprints/page.tsx +396 -0
  57. codedna-0.2.0/dashboard/components/AnlamaGrafigi.tsx +85 -0
  58. codedna-0.2.0/dashboard/components/AuthProvider.tsx +53 -0
  59. codedna-0.2.0/dashboard/components/ClientProviders.tsx +25 -0
  60. codedna-0.2.0/dashboard/components/CommitTable.tsx +186 -0
  61. codedna-0.2.0/dashboard/components/CostInfoTooltip.tsx +44 -0
  62. codedna-0.2.0/dashboard/components/FeatureGate.tsx +59 -0
  63. codedna-0.2.0/dashboard/components/FileHeatmap.tsx +112 -0
  64. codedna-0.2.0/dashboard/components/HataBanner.tsx +22 -0
  65. codedna-0.2.0/dashboard/components/LanguageSwitcher.tsx +35 -0
  66. codedna-0.2.0/dashboard/components/NavClient.tsx +60 -0
  67. codedna-0.2.0/dashboard/components/OverviewTitles.tsx +47 -0
  68. codedna-0.2.0/dashboard/components/QuickInsights.tsx +118 -0
  69. codedna-0.2.0/dashboard/components/RiskBadge.tsx +53 -0
  70. codedna-0.2.0/dashboard/components/SummaryCards.tsx +100 -0
  71. codedna-0.2.0/dashboard/components/UpgradeBanner.tsx +30 -0
  72. codedna-0.2.0/dashboard/lib/api.ts +116 -0
  73. codedna-0.2.0/dashboard/lib/auth.ts +131 -0
  74. codedna-0.2.0/dashboard/lib/i18n/en.ts +288 -0
  75. codedna-0.2.0/dashboard/lib/i18n/index.tsx +87 -0
  76. codedna-0.2.0/dashboard/lib/i18n/tr.ts +288 -0
  77. codedna-0.2.0/dashboard/lib/plan.ts +122 -0
  78. codedna-0.2.0/dashboard/next-env.d.ts +5 -0
  79. codedna-0.2.0/dashboard/next.config.mjs +9 -0
  80. codedna-0.2.0/dashboard/package-lock.json +1896 -0
  81. codedna-0.2.0/dashboard/package.json +26 -0
  82. codedna-0.2.0/dashboard/postcss.config.mjs +8 -0
  83. codedna-0.2.0/dashboard/tailwind.config.ts +26 -0
  84. codedna-0.2.0/dashboard/tsconfig.json +26 -0
  85. codedna-0.2.0/hooks/post-commit +28 -0
  86. codedna-0.2.0/pyproject.toml +65 -0
  87. codedna-0.2.0/uv.lock +949 -0
  88. codedna-0.2.0/vscode-extension/node_modules/.bin/tsc +1 -0
  89. codedna-0.2.0/vscode-extension/node_modules/.bin/tsserver +1 -0
  90. codedna-0.2.0/vscode-extension/node_modules/.package-lock.json +46 -0
  91. codedna-0.2.0/vscode-extension/node_modules/@types/node/LICENSE +21 -0
  92. codedna-0.2.0/vscode-extension/node_modules/@types/node/README.md +15 -0
  93. codedna-0.2.0/vscode-extension/node_modules/@types/node/assert/strict.d.ts +8 -0
  94. codedna-0.2.0/vscode-extension/node_modules/@types/node/assert.d.ts +1062 -0
  95. codedna-0.2.0/vscode-extension/node_modules/@types/node/async_hooks.d.ts +605 -0
  96. codedna-0.2.0/vscode-extension/node_modules/@types/node/buffer.buffer.d.ts +471 -0
  97. codedna-0.2.0/vscode-extension/node_modules/@types/node/buffer.d.ts +1936 -0
  98. codedna-0.2.0/vscode-extension/node_modules/@types/node/child_process.d.ts +1475 -0
  99. codedna-0.2.0/vscode-extension/node_modules/@types/node/cluster.d.ts +577 -0
  100. codedna-0.2.0/vscode-extension/node_modules/@types/node/compatibility/disposable.d.ts +16 -0
  101. codedna-0.2.0/vscode-extension/node_modules/@types/node/compatibility/index.d.ts +9 -0
  102. codedna-0.2.0/vscode-extension/node_modules/@types/node/compatibility/indexable.d.ts +20 -0
  103. codedna-0.2.0/vscode-extension/node_modules/@types/node/compatibility/iterators.d.ts +21 -0
  104. codedna-0.2.0/vscode-extension/node_modules/@types/node/console.d.ts +452 -0
  105. codedna-0.2.0/vscode-extension/node_modules/@types/node/constants.d.ts +21 -0
  106. codedna-0.2.0/vscode-extension/node_modules/@types/node/crypto.d.ts +4590 -0
  107. codedna-0.2.0/vscode-extension/node_modules/@types/node/dgram.d.ts +597 -0
  108. codedna-0.2.0/vscode-extension/node_modules/@types/node/diagnostics_channel.d.ts +578 -0
  109. codedna-0.2.0/vscode-extension/node_modules/@types/node/dns/promises.d.ts +479 -0
  110. codedna-0.2.0/vscode-extension/node_modules/@types/node/dns.d.ts +871 -0
  111. codedna-0.2.0/vscode-extension/node_modules/@types/node/domain.d.ts +170 -0
  112. codedna-0.2.0/vscode-extension/node_modules/@types/node/events.d.ts +977 -0
  113. codedna-0.2.0/vscode-extension/node_modules/@types/node/fs/promises.d.ts +1270 -0
  114. codedna-0.2.0/vscode-extension/node_modules/@types/node/fs.d.ts +4375 -0
  115. codedna-0.2.0/vscode-extension/node_modules/@types/node/globals.d.ts +172 -0
  116. codedna-0.2.0/vscode-extension/node_modules/@types/node/globals.typedarray.d.ts +38 -0
  117. codedna-0.2.0/vscode-extension/node_modules/@types/node/http.d.ts +2049 -0
  118. codedna-0.2.0/vscode-extension/node_modules/@types/node/http2.d.ts +2712 -0
  119. codedna-0.2.0/vscode-extension/node_modules/@types/node/https.d.ts +578 -0
  120. codedna-0.2.0/vscode-extension/node_modules/@types/node/index.d.ts +93 -0
  121. codedna-0.2.0/vscode-extension/node_modules/@types/node/inspector.generated.d.ts +3966 -0
  122. codedna-0.2.0/vscode-extension/node_modules/@types/node/module.d.ts +539 -0
  123. codedna-0.2.0/vscode-extension/node_modules/@types/node/net.d.ts +1031 -0
  124. codedna-0.2.0/vscode-extension/node_modules/@types/node/os.d.ts +506 -0
  125. codedna-0.2.0/vscode-extension/node_modules/@types/node/package.json +140 -0
  126. codedna-0.2.0/vscode-extension/node_modules/@types/node/path.d.ts +200 -0
  127. codedna-0.2.0/vscode-extension/node_modules/@types/node/perf_hooks.d.ts +961 -0
  128. codedna-0.2.0/vscode-extension/node_modules/@types/node/process.d.ts +1961 -0
  129. codedna-0.2.0/vscode-extension/node_modules/@types/node/punycode.d.ts +117 -0
  130. codedna-0.2.0/vscode-extension/node_modules/@types/node/querystring.d.ts +152 -0
  131. codedna-0.2.0/vscode-extension/node_modules/@types/node/readline/promises.d.ts +162 -0
  132. codedna-0.2.0/vscode-extension/node_modules/@types/node/readline.d.ts +589 -0
  133. codedna-0.2.0/vscode-extension/node_modules/@types/node/repl.d.ts +430 -0
  134. codedna-0.2.0/vscode-extension/node_modules/@types/node/sea.d.ts +153 -0
  135. codedna-0.2.0/vscode-extension/node_modules/@types/node/stream/consumers.d.ts +38 -0
  136. codedna-0.2.0/vscode-extension/node_modules/@types/node/stream/promises.d.ts +90 -0
  137. codedna-0.2.0/vscode-extension/node_modules/@types/node/stream/web.d.ts +533 -0
  138. codedna-0.2.0/vscode-extension/node_modules/@types/node/stream.d.ts +1698 -0
  139. codedna-0.2.0/vscode-extension/node_modules/@types/node/string_decoder.d.ts +67 -0
  140. codedna-0.2.0/vscode-extension/node_modules/@types/node/test.d.ts +1787 -0
  141. codedna-0.2.0/vscode-extension/node_modules/@types/node/timers/promises.d.ts +108 -0
  142. codedna-0.2.0/vscode-extension/node_modules/@types/node/timers.d.ts +286 -0
  143. codedna-0.2.0/vscode-extension/node_modules/@types/node/tls.d.ts +1259 -0
  144. codedna-0.2.0/vscode-extension/node_modules/@types/node/trace_events.d.ts +197 -0
  145. codedna-0.2.0/vscode-extension/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +468 -0
  146. codedna-0.2.0/vscode-extension/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +34 -0
  147. codedna-0.2.0/vscode-extension/node_modules/@types/node/ts5.6/index.d.ts +93 -0
  148. codedna-0.2.0/vscode-extension/node_modules/@types/node/tty.d.ts +208 -0
  149. codedna-0.2.0/vscode-extension/node_modules/@types/node/url.d.ts +964 -0
  150. codedna-0.2.0/vscode-extension/node_modules/@types/node/util.d.ts +2331 -0
  151. codedna-0.2.0/vscode-extension/node_modules/@types/node/v8.d.ts +809 -0
  152. codedna-0.2.0/vscode-extension/node_modules/@types/node/vm.d.ts +1001 -0
  153. codedna-0.2.0/vscode-extension/node_modules/@types/node/wasi.d.ts +181 -0
  154. codedna-0.2.0/vscode-extension/node_modules/@types/node/web-globals/abortcontroller.d.ts +34 -0
  155. codedna-0.2.0/vscode-extension/node_modules/@types/node/web-globals/domexception.d.ts +68 -0
  156. codedna-0.2.0/vscode-extension/node_modules/@types/node/web-globals/events.d.ts +97 -0
  157. codedna-0.2.0/vscode-extension/node_modules/@types/node/web-globals/fetch.d.ts +55 -0
  158. codedna-0.2.0/vscode-extension/node_modules/@types/node/worker_threads.d.ts +715 -0
  159. codedna-0.2.0/vscode-extension/node_modules/@types/node/zlib.d.ts +598 -0
  160. codedna-0.2.0/vscode-extension/node_modules/@types/vscode/LICENSE +21 -0
  161. codedna-0.2.0/vscode-extension/node_modules/@types/vscode/README.md +15 -0
  162. codedna-0.2.0/vscode-extension/node_modules/@types/vscode/index.d.ts +21240 -0
  163. codedna-0.2.0/vscode-extension/node_modules/@types/vscode/package.json +26 -0
  164. codedna-0.2.0/vscode-extension/node_modules/typescript/LICENSE.txt +55 -0
  165. codedna-0.2.0/vscode-extension/node_modules/typescript/README.md +50 -0
  166. codedna-0.2.0/vscode-extension/node_modules/typescript/SECURITY.md +41 -0
  167. codedna-0.2.0/vscode-extension/node_modules/typescript/ThirdPartyNoticeText.txt +193 -0
  168. codedna-0.2.0/vscode-extension/node_modules/typescript/bin/tsc +2 -0
  169. codedna-0.2.0/vscode-extension/node_modules/typescript/bin/tsserver +2 -0
  170. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/_tsc.js +133818 -0
  171. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/_tsserver.js +659 -0
  172. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/_typingsInstaller.js +222 -0
  173. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/cs/diagnosticMessages.generated.json +2122 -0
  174. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/de/diagnosticMessages.generated.json +2122 -0
  175. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/es/diagnosticMessages.generated.json +2122 -0
  176. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/fr/diagnosticMessages.generated.json +2122 -0
  177. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/it/diagnosticMessages.generated.json +2122 -0
  178. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/ja/diagnosticMessages.generated.json +2122 -0
  179. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/ko/diagnosticMessages.generated.json +2122 -0
  180. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.d.ts +22 -0
  181. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.decorators.d.ts +384 -0
  182. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.decorators.legacy.d.ts +22 -0
  183. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.dom.asynciterable.d.ts +41 -0
  184. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.dom.d.ts +39429 -0
  185. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.dom.iterable.d.ts +571 -0
  186. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2015.collection.d.ts +147 -0
  187. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2015.core.d.ts +597 -0
  188. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2015.d.ts +28 -0
  189. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2015.generator.d.ts +77 -0
  190. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2015.iterable.d.ts +605 -0
  191. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2015.promise.d.ts +81 -0
  192. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2015.proxy.d.ts +128 -0
  193. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2015.reflect.d.ts +144 -0
  194. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2015.symbol.d.ts +46 -0
  195. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts +326 -0
  196. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2016.array.include.d.ts +116 -0
  197. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2016.d.ts +21 -0
  198. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2016.full.d.ts +23 -0
  199. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2016.intl.d.ts +31 -0
  200. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts +21 -0
  201. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2017.d.ts +26 -0
  202. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2017.date.d.ts +31 -0
  203. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2017.full.d.ts +23 -0
  204. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2017.intl.d.ts +44 -0
  205. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2017.object.d.ts +49 -0
  206. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts +135 -0
  207. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2017.string.d.ts +45 -0
  208. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts +53 -0
  209. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts +77 -0
  210. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts +53 -0
  211. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2018.d.ts +24 -0
  212. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2018.full.d.ts +24 -0
  213. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2018.intl.d.ts +83 -0
  214. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2018.promise.d.ts +30 -0
  215. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2018.regexp.d.ts +37 -0
  216. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2019.array.d.ts +79 -0
  217. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2019.d.ts +24 -0
  218. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2019.full.d.ts +24 -0
  219. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2019.intl.d.ts +23 -0
  220. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2019.object.d.ts +33 -0
  221. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2019.string.d.ts +37 -0
  222. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2019.symbol.d.ts +24 -0
  223. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2020.bigint.d.ts +765 -0
  224. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2020.d.ts +27 -0
  225. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2020.date.d.ts +42 -0
  226. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2020.full.d.ts +24 -0
  227. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2020.intl.d.ts +474 -0
  228. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2020.number.d.ts +28 -0
  229. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2020.promise.d.ts +47 -0
  230. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts +99 -0
  231. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2020.string.d.ts +44 -0
  232. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts +41 -0
  233. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2021.d.ts +23 -0
  234. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2021.full.d.ts +24 -0
  235. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2021.intl.d.ts +166 -0
  236. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2021.promise.d.ts +48 -0
  237. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2021.string.d.ts +33 -0
  238. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2021.weakref.d.ts +78 -0
  239. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2022.array.d.ts +121 -0
  240. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2022.d.ts +25 -0
  241. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2022.error.d.ts +75 -0
  242. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2022.full.d.ts +24 -0
  243. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2022.intl.d.ts +145 -0
  244. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2022.object.d.ts +26 -0
  245. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2022.regexp.d.ts +39 -0
  246. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2022.string.d.ts +25 -0
  247. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2023.array.d.ts +924 -0
  248. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2023.collection.d.ts +21 -0
  249. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2023.d.ts +22 -0
  250. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2023.full.d.ts +24 -0
  251. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2023.intl.d.ts +56 -0
  252. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts +65 -0
  253. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2024.collection.d.ts +29 -0
  254. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2024.d.ts +26 -0
  255. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2024.full.d.ts +24 -0
  256. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2024.object.d.ts +29 -0
  257. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2024.promise.d.ts +35 -0
  258. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2024.regexp.d.ts +25 -0
  259. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts +68 -0
  260. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2024.string.d.ts +29 -0
  261. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es5.d.ts +4601 -0
  262. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es6.d.ts +23 -0
  263. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.esnext.array.d.ts +35 -0
  264. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.esnext.collection.d.ts +96 -0
  265. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.esnext.d.ts +29 -0
  266. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.esnext.decorators.d.ts +28 -0
  267. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.esnext.disposable.d.ts +193 -0
  268. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.esnext.error.d.ts +24 -0
  269. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.esnext.float16.d.ts +445 -0
  270. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.esnext.full.d.ts +24 -0
  271. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.esnext.intl.d.ts +21 -0
  272. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.esnext.iterator.d.ts +148 -0
  273. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.esnext.promise.d.ts +34 -0
  274. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts +25 -0
  275. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.scripthost.d.ts +322 -0
  276. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.webworker.asynciterable.d.ts +41 -0
  277. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.webworker.d.ts +13150 -0
  278. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.webworker.importscripts.d.ts +23 -0
  279. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.webworker.iterable.d.ts +340 -0
  280. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/pl/diagnosticMessages.generated.json +2122 -0
  281. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/pt-br/diagnosticMessages.generated.json +2122 -0
  282. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/ru/diagnosticMessages.generated.json +2122 -0
  283. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/tr/diagnosticMessages.generated.json +2122 -0
  284. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/tsc.js +8 -0
  285. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/tsserver.js +8 -0
  286. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/tsserverlibrary.d.ts +17 -0
  287. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/tsserverlibrary.js +21 -0
  288. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/typesMap.json +497 -0
  289. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/typescript.d.ts +11437 -0
  290. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/typescript.js +200276 -0
  291. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/typingsInstaller.js +8 -0
  292. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/watchGuard.js +53 -0
  293. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/zh-cn/diagnosticMessages.generated.json +2122 -0
  294. codedna-0.2.0/vscode-extension/node_modules/typescript/lib/zh-tw/diagnosticMessages.generated.json +2122 -0
  295. codedna-0.2.0/vscode-extension/node_modules/typescript/package.json +120 -0
  296. codedna-0.2.0/vscode-extension/node_modules/undici-types/LICENSE +21 -0
  297. codedna-0.2.0/vscode-extension/node_modules/undici-types/README.md +6 -0
  298. codedna-0.2.0/vscode-extension/node_modules/undici-types/agent.d.ts +31 -0
  299. codedna-0.2.0/vscode-extension/node_modules/undici-types/api.d.ts +43 -0
  300. codedna-0.2.0/vscode-extension/node_modules/undici-types/balanced-pool.d.ts +29 -0
  301. codedna-0.2.0/vscode-extension/node_modules/undici-types/cache.d.ts +36 -0
  302. codedna-0.2.0/vscode-extension/node_modules/undici-types/client.d.ts +108 -0
  303. codedna-0.2.0/vscode-extension/node_modules/undici-types/connector.d.ts +34 -0
  304. codedna-0.2.0/vscode-extension/node_modules/undici-types/content-type.d.ts +21 -0
  305. codedna-0.2.0/vscode-extension/node_modules/undici-types/cookies.d.ts +28 -0
  306. codedna-0.2.0/vscode-extension/node_modules/undici-types/diagnostics-channel.d.ts +66 -0
  307. codedna-0.2.0/vscode-extension/node_modules/undici-types/dispatcher.d.ts +256 -0
  308. codedna-0.2.0/vscode-extension/node_modules/undici-types/env-http-proxy-agent.d.ts +21 -0
  309. codedna-0.2.0/vscode-extension/node_modules/undici-types/errors.d.ts +149 -0
  310. codedna-0.2.0/vscode-extension/node_modules/undici-types/eventsource.d.ts +61 -0
  311. codedna-0.2.0/vscode-extension/node_modules/undici-types/fetch.d.ts +209 -0
  312. codedna-0.2.0/vscode-extension/node_modules/undici-types/file.d.ts +39 -0
  313. codedna-0.2.0/vscode-extension/node_modules/undici-types/filereader.d.ts +54 -0
  314. codedna-0.2.0/vscode-extension/node_modules/undici-types/formdata.d.ts +108 -0
  315. codedna-0.2.0/vscode-extension/node_modules/undici-types/global-dispatcher.d.ts +9 -0
  316. codedna-0.2.0/vscode-extension/node_modules/undici-types/global-origin.d.ts +7 -0
  317. codedna-0.2.0/vscode-extension/node_modules/undici-types/handlers.d.ts +15 -0
  318. codedna-0.2.0/vscode-extension/node_modules/undici-types/header.d.ts +4 -0
  319. codedna-0.2.0/vscode-extension/node_modules/undici-types/index.d.ts +71 -0
  320. codedna-0.2.0/vscode-extension/node_modules/undici-types/interceptors.d.ts +17 -0
  321. codedna-0.2.0/vscode-extension/node_modules/undici-types/mock-agent.d.ts +50 -0
  322. codedna-0.2.0/vscode-extension/node_modules/undici-types/mock-client.d.ts +25 -0
  323. codedna-0.2.0/vscode-extension/node_modules/undici-types/mock-errors.d.ts +12 -0
  324. codedna-0.2.0/vscode-extension/node_modules/undici-types/mock-interceptor.d.ts +93 -0
  325. codedna-0.2.0/vscode-extension/node_modules/undici-types/mock-pool.d.ts +25 -0
  326. codedna-0.2.0/vscode-extension/node_modules/undici-types/package.json +55 -0
  327. codedna-0.2.0/vscode-extension/node_modules/undici-types/patch.d.ts +33 -0
  328. codedna-0.2.0/vscode-extension/node_modules/undici-types/pool-stats.d.ts +19 -0
  329. codedna-0.2.0/vscode-extension/node_modules/undici-types/pool.d.ts +39 -0
  330. codedna-0.2.0/vscode-extension/node_modules/undici-types/proxy-agent.d.ts +28 -0
  331. codedna-0.2.0/vscode-extension/node_modules/undici-types/readable.d.ts +65 -0
  332. codedna-0.2.0/vscode-extension/node_modules/undici-types/retry-agent.d.ts +8 -0
  333. codedna-0.2.0/vscode-extension/node_modules/undici-types/retry-handler.d.ts +116 -0
  334. codedna-0.2.0/vscode-extension/node_modules/undici-types/util.d.ts +18 -0
  335. codedna-0.2.0/vscode-extension/node_modules/undici-types/webidl.d.ts +228 -0
  336. codedna-0.2.0/vscode-extension/node_modules/undici-types/websocket.d.ts +150 -0
  337. codedna-0.2.0/vscode-extension/out/apiClient.js +103 -0
  338. codedna-0.2.0/vscode-extension/out/apiClient.js.map +1 -0
  339. codedna-0.2.0/vscode-extension/out/decorations.js +106 -0
  340. codedna-0.2.0/vscode-extension/out/decorations.js.map +1 -0
  341. codedna-0.2.0/vscode-extension/out/extension.js +154 -0
  342. codedna-0.2.0/vscode-extension/out/extension.js.map +1 -0
  343. codedna-0.2.0/vscode-extension/out/statusBar.js +156 -0
  344. codedna-0.2.0/vscode-extension/out/statusBar.js.map +1 -0
  345. codedna-0.2.0/vscode-extension/package-lock.json +58 -0
  346. codedna-0.2.0/vscode-extension/package.json +53 -0
  347. codedna-0.2.0/vscode-extension/src/apiClient.ts +99 -0
  348. codedna-0.2.0/vscode-extension/src/decorations.ts +81 -0
  349. codedna-0.2.0/vscode-extension/src/extension.ts +137 -0
  350. codedna-0.2.0/vscode-extension/src/statusBar.ts +140 -0
  351. codedna-0.2.0/vscode-extension/tsconfig.json +14 -0
@@ -0,0 +1,38 @@
1
+ # CodeDNA Faz 9 — Ortam Değişkenleri
2
+ # Bu dosyayı .env olarak kopyalayıp gerçek değerleri girin:
3
+ # cp .env.example .env
4
+ # .env dosyası GİT'E EKLENMEZ (.gitignore'dadır)
5
+
6
+ # ---------------------------------------------------------------------------
7
+ # Kimlik Doğrulama
8
+ # ---------------------------------------------------------------------------
9
+ # JWT imzalama anahtarı — production'da güçlü rastgele değer kullanın
10
+ # Örnek: python3 -c "import secrets; print(secrets.token_hex(32))"
11
+ CODEDNA_JWT_SECRET=degistir-bunu-guclu-rastgele-deger
12
+
13
+ # ---------------------------------------------------------------------------
14
+ # Lemon Squeezy Ödeme Entegrasyonu
15
+ # ---------------------------------------------------------------------------
16
+ # Lemon Squeezy API anahtarı (https://app.lemonsqueezy.com/settings/api)
17
+ LEMONSQUEEZY_API_KEY=your_lemonsqueezy_api_key_here
18
+
19
+ # Lemon Squeezy webhook secret (Settings > Webhooks > Secret)
20
+ LEMONSQUEEZY_WEBHOOK_SECRET=your_webhook_secret_here
21
+
22
+ # Lemon Squeezy mağaza ID'si
23
+ LEMONSQUEEZY_STORE_ID=your_store_id_here
24
+
25
+ # Plan başına Lemon Squeezy variant ID'leri
26
+ LS_VARIANT_PRO=your_pro_variant_id
27
+ LS_VARIANT_TEAM=your_team_variant_id
28
+ LS_VARIANT_ENTERPRISE=your_enterprise_variant_id
29
+
30
+ # ---------------------------------------------------------------------------
31
+ # CodeDNA Servis Yapılandırması
32
+ # ---------------------------------------------------------------------------
33
+ # API sunucu adresi (dashboard için)
34
+ NEXT_PUBLIC_API_URL=http://localhost:8000
35
+
36
+ # Auth DB yolu (repo db'sinden ayrı tutulan kullanıcı veritabanı)
37
+ # Varsayılan: ~/.codedna/auth.db
38
+ # CODEDNA_AUTH_DB_PATH=/özel/yol/auth.db
@@ -0,0 +1,53 @@
1
+ name: CodeDNA Analysis
2
+
3
+ on:
4
+ push:
5
+ branches: ["**"]
6
+ pull_request:
7
+ branches: ["**"]
8
+
9
+ jobs:
10
+ analyze:
11
+ name: AI Kod Analizi
12
+ runs-on: ubuntu-latest
13
+ permissions:
14
+ pull-requests: write # PR yorumu bırakmak için gerekli
15
+
16
+ steps:
17
+ - name: Repo'yu çek (tam geçmiş)
18
+ uses: actions/checkout@v4
19
+ with:
20
+ fetch-depth: 0 # single_commit_ratio için tam geçmiş gerekli
21
+
22
+ - name: Python kur
23
+ uses: actions/setup-python@v5
24
+ with:
25
+ python-version: "3.10"
26
+
27
+ - name: CodeDNA kur
28
+ run: pip install codedna
29
+
30
+ - name: Tüm dosyaları tara (bilgi amaçlı)
31
+ run: codedna scan
32
+ continue-on-error: true
33
+
34
+ - name: Yüksek riskli dosya kontrolü (≥%50)
35
+ id: risk_check
36
+ run: |
37
+ codedna scan --min-risk 0.5
38
+ echo "scan_exit=$?" >> "$GITHUB_OUTPUT"
39
+ continue-on-error: true
40
+
41
+ - name: Kritik risk uyarısı (≥%70) — pipeline'ı BLOKLAMAZ
42
+ run: |
43
+ echo "::group::⚠️ Yüksek AI Riski Raporu"
44
+ codedna scan --min-risk 0.7 && echo "✅ %70 üzeri riskli dosya bulunamadı." || echo "⚠️ Yüksek riskli dosyalar tespit edildi — incelemeniz önerilir."
45
+ echo "::endgroup::"
46
+ continue-on-error: true
47
+
48
+ - name: PR yorumu bırak (sadece PR event'lerinde)
49
+ if: github.event_name == 'pull_request'
50
+ run: codedna pr-comment
51
+ env:
52
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
53
+ continue-on-error: true
@@ -0,0 +1,26 @@
1
+ # Python-generated files
2
+ __pycache__/
3
+ *.py[oc]
4
+ build/
5
+ dist/
6
+ wheels/
7
+ *.egg-info
8
+
9
+ # Virtual environments
10
+ .venv
11
+
12
+ # CodeDNA veritabanları
13
+ *.db
14
+ .codedna.db
15
+
16
+ # Test repo'ları
17
+ tests/sample_repo/
18
+
19
+ # Dashboard build çıktısı
20
+ dashboard/.next/
21
+ dashboard/node_modules/
22
+
23
+ # Ortam değişkenleri — asla repoya girmesin
24
+ .env
25
+ .env.local
26
+ .env.*.local
@@ -0,0 +1 @@
1
+ 3.10
codedna-0.2.0/PKG-INFO ADDED
@@ -0,0 +1,93 @@
1
+ Metadata-Version: 2.4
2
+ Name: codedna
3
+ Version: 0.2.0
4
+ Summary: AI kod şeffaflık aracı — her commit'te AI yazım oranını ve anlama skorunu ölçer
5
+ Project-URL: Homepage, https://codedna.dev
6
+ Project-URL: Repository, https://github.com/natureco-official/codedna
7
+ Project-URL: Issues, https://github.com/natureco-official/codedna/issues
8
+ Project-URL: Changelog, https://github.com/natureco-official/codedna/blob/main/CHANGELOG.md
9
+ Author-email: NatureCo <hello@natureco.me>
10
+ License: MIT
11
+ Keywords: ai,code-analysis,developer-tools,devops,git,transparency
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Environment :: Console
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: License :: OSI Approved :: MIT License
16
+ Classifier: Operating System :: OS Independent
17
+ Classifier: Programming Language :: Python :: 3.10
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Topic :: Software Development :: Quality Assurance
21
+ Requires-Python: >=3.10
22
+ Requires-Dist: bcrypt>=5.0.0
23
+ Requires-Dist: fastapi>=0.138.0
24
+ Requires-Dist: gitpython>=3.1.50
25
+ Requires-Dist: pyjwt>=2.13.0
26
+ Requires-Dist: rich>=15.0.0
27
+ Requires-Dist: tree-sitter-javascript>=0.25.0
28
+ Requires-Dist: tree-sitter-python>=0.25.0
29
+ Requires-Dist: tree-sitter-typescript>=0.23.2
30
+ Requires-Dist: tree-sitter>=0.25.2
31
+ Requires-Dist: typer>=0.26.7
32
+ Requires-Dist: uvicorn[standard]>=0.49.0
33
+ Provides-Extra: dashboard
34
+ Requires-Dist: next-cmd>=0.5.0; extra == 'dashboard'
35
+ Provides-Extra: dev
36
+ Requires-Dist: black>=24.0.0; extra == 'dev'
37
+ Requires-Dist: pytest-cov>=4.0.0; extra == 'dev'
38
+ Requires-Dist: pytest>=8.0.0; extra == 'dev'
39
+ Requires-Dist: ruff>=0.1.0; extra == 'dev'
40
+ Description-Content-Type: text/markdown
41
+
42
+ # 🧬 CodeDNA — AI Kod Şeffaflık Aracı
43
+
44
+ Her commit'te hangi kodun AI tarafından yazıldığını tespit eden, geliştiricinin o kodu gerçekten anlayıp anlamadığını ölçen ve takım genelinde "anlama borcu" haritası çıkaran CLI aracı.
45
+
46
+ ## Kurulum
47
+
48
+ ```bash
49
+ # Geliştirme ortamı için
50
+ uv pip install -e .
51
+
52
+ # veya
53
+ pip install codedna
54
+ ```
55
+
56
+ ## Kullanım
57
+
58
+ ```bash
59
+ # Git hook'u kur ve veritabanını oluştur
60
+ codedna init
61
+
62
+ # Tüm repoyu tara
63
+ codedna scan
64
+
65
+ # Son commit skorunu göster
66
+ codedna status
67
+
68
+ # Geçmiş commit skorlarını listele
69
+ codedna history
70
+
71
+ # Hook'u kaldır
72
+ codedna uninstall
73
+ ```
74
+
75
+ ## Nasıl Çalışır?
76
+
77
+ `codedna scan` komutu her desteklenen dosyayı (`*.py`, `*.js`, `*.ts`, `*.jsx`, `*.tsx`) analiz eder:
78
+
79
+ | Metrik | Açıklama |
80
+ |--------|----------|
81
+ | `comment_ratio > 0.3` | AI kodu genelde aşırı yorum yazar → +0.20 |
82
+ | `avg_function_length > 50` | AI büyük fonksiyon blokları üretir → +0.15 |
83
+ | `single_commit_ratio > 0.7` | Toplu yapıştırma işareti → +0.30 |
84
+ | Yüksek karmaşıklık + tek commit | AI imzası → +0.25 |
85
+
86
+ ## Gereksinimler
87
+
88
+ - Python 3.10+
89
+ - Git kurulu olmalı
90
+ # test
91
+ # test2
92
+ # test4
93
+ # test5
@@ -0,0 +1,52 @@
1
+ # 🧬 CodeDNA — AI Kod Şeffaflık Aracı
2
+
3
+ Her commit'te hangi kodun AI tarafından yazıldığını tespit eden, geliştiricinin o kodu gerçekten anlayıp anlamadığını ölçen ve takım genelinde "anlama borcu" haritası çıkaran CLI aracı.
4
+
5
+ ## Kurulum
6
+
7
+ ```bash
8
+ # Geliştirme ortamı için
9
+ uv pip install -e .
10
+
11
+ # veya
12
+ pip install codedna
13
+ ```
14
+
15
+ ## Kullanım
16
+
17
+ ```bash
18
+ # Git hook'u kur ve veritabanını oluştur
19
+ codedna init
20
+
21
+ # Tüm repoyu tara
22
+ codedna scan
23
+
24
+ # Son commit skorunu göster
25
+ codedna status
26
+
27
+ # Geçmiş commit skorlarını listele
28
+ codedna history
29
+
30
+ # Hook'u kaldır
31
+ codedna uninstall
32
+ ```
33
+
34
+ ## Nasıl Çalışır?
35
+
36
+ `codedna scan` komutu her desteklenen dosyayı (`*.py`, `*.js`, `*.ts`, `*.jsx`, `*.tsx`) analiz eder:
37
+
38
+ | Metrik | Açıklama |
39
+ |--------|----------|
40
+ | `comment_ratio > 0.3` | AI kodu genelde aşırı yorum yazar → +0.20 |
41
+ | `avg_function_length > 50` | AI büyük fonksiyon blokları üretir → +0.15 |
42
+ | `single_commit_ratio > 0.7` | Toplu yapıştırma işareti → +0.30 |
43
+ | Yüksek karmaşıklık + tek commit | AI imzası → +0.25 |
44
+
45
+ ## Gereksinimler
46
+
47
+ - Python 3.10+
48
+ - Git kurulu olmalı
49
+ # test
50
+ # test2
51
+ # test4
52
+ # test5
@@ -0,0 +1,4 @@
1
+ """CodeDNA — AI Kod Şeffaflık Aracı."""
2
+
3
+ __version__ = "0.1.0"
4
+ __app_name__ = "codedna"
@@ -0,0 +1,223 @@
1
+ """
2
+ Farklı AI kod asistanlarının bıraktığı örüntüleri ayırt eder.
3
+
4
+ ÖNEMLİ UYARI:
5
+ Bu kesin bir tespit DEĞİL — örüntü tabanlı sezgisel bir TAHMİN modelidir.
6
+ Sonuçlar yanlış pozitif/negatif içerebilir. Kesinlik iddia edilmez.
7
+ Kullanıcıya bu bağlamda sunulmalıdır.
8
+ """
9
+
10
+ from __future__ import annotations
11
+
12
+ import re
13
+ from dataclasses import dataclass
14
+ from pathlib import Path
15
+ from typing import Optional
16
+
17
+ from codedna.db import get_connection
18
+
19
+
20
+ # ---------------------------------------------------------------------------
21
+ # Araç örüntü tanımları — sezgisel, savunulabilir ama kesin değil
22
+ # ---------------------------------------------------------------------------
23
+
24
+ # Her araç için ağırlıklı örüntü listesi: (regex_pattern, ağırlık)
25
+ _ARAC_ORNUNTULERI: dict[str, list[tuple[str, float]]] = {
26
+ "copilot": [
27
+ # GitHub Copilot: kısa, özlü satır içi yorumlar, tip bildirimleri yok
28
+ (r"#\s+[A-Z][a-z].{5,40}$", 0.15), # tek satır başlık yorum
29
+ (r"def \w+\([^)]{0,30}\):\s*$", 0.10), # parametresiz/minimal fonksiyon
30
+ (r"#\s+TODO:", 0.10), # TODO yorumları
31
+ (r"^\s{4}pass\s*$", 0.08), # pass ile biten fonksiyonlar
32
+ (r"return \w+\.get\(", 0.07), # .get() pattern
33
+ ],
34
+ "cursor": [
35
+ # Cursor: detaylı docstring, tip ipucu zenginliği
36
+ (r'"""[\s\S]{20,200}"""', 0.20), # uzun docstring
37
+ (r":\s*(str|int|float|bool|list|dict|Optional)", 0.15), # tip ipuçları
38
+ (r"->.*:\s*$", 0.12), # dönüş tipi bildirimi
39
+ (r"from typing import", 0.10), # typing modülü
40
+ (r"@dataclass", 0.10), # dataclass kullanımı
41
+ ],
42
+ "claude": [
43
+ # Claude: yapılandırılmış çok satırlı açıklamalar, Türkçe/çok dilli yorum
44
+ (r"#\s+\d+\.\s+\w", 0.18), # numaralı adım yorumları
45
+ (r"\"\"\"[\s\S]*Args:[\s\S]*Returns:", 0.20), # Args/Returns docstring
46
+ (r"#\s+─{3,}", 0.15), # ayırıcı çizgi yorumlar
47
+ (r"raise \w+Error\(f[\"']", 0.10), # f-string hata mesajları
48
+ (r"from __future__ import annotations", 0.12), # modern annotation
49
+ ],
50
+ }
51
+
52
+ # Minimum güven eşiği — altındaysa "unknown" döndür
53
+ _MIN_GUVEN = 0.15
54
+
55
+
56
+ @dataclass
57
+ class AIAracTahmini:
58
+ """Tek dosya için AI araç tahmini."""
59
+
60
+ arac: str # "copilot" | "cursor" | "claude" | "unknown"
61
+ guven: float # 0.0–1.0
62
+ puan_detayi: dict[str, float] # araç → ham puan
63
+ uyari: str = (
64
+ "Bu tespit örüntü tabanlı bir tahmindir — kesin değildir."
65
+ )
66
+
67
+
68
+ def guess_ai_tool(file_path: str, code: str) -> AIAracTahmini:
69
+ """
70
+ Dosya için olası AI aracı tahmini ve güven skoru döndür.
71
+
72
+ Strateji:
73
+ Her araç için tanımlı regex örüntüleri koda uygulanır, ağırlıklı
74
+ eşleşme sayısına göre toplam puan hesaplanır. En yüksek puanlı
75
+ araç, minimum güven eşiğini geçiyorsa seçilir.
76
+
77
+ Args:
78
+ file_path: Dosya yolu (uzantı filtresi için kullanılır)
79
+ code: Dosyanın kaynak kodu
80
+
81
+ Returns:
82
+ AIAracTahmini nesnesi
83
+ """
84
+ satirlar = code.splitlines()
85
+ puan: dict[str, float] = {arac: 0.0 for arac in _ARAC_ORNUNTULERI}
86
+
87
+ for arac, ornuntular in _ARAC_ORNUNTULERI.items():
88
+ for desen, agirlik in ornuntular:
89
+ eslesme_sayisi = sum(
90
+ 1 for satir in satirlar if re.search(desen, satir)
91
+ )
92
+ # Satır sayısına normalize et (büyük dosyalarda haksız avantajı engelle)
93
+ norm = eslesme_sayisi / max(len(satirlar), 1)
94
+ puan[arac] += norm * agirlik * 10 # 0-10 arası ölçek
95
+
96
+ # Normalize et — toplam puana göre güven hesapla
97
+ toplam = sum(puan.values())
98
+ if toplam < 0.01:
99
+ return AIAracTahmini(
100
+ arac="unknown",
101
+ guven=0.0,
102
+ puan_detayi={k: round(v, 3) for k, v in puan.items()},
103
+ )
104
+
105
+ en_iyi_arac = max(puan, key=lambda k: puan[k])
106
+ guven = puan[en_iyi_arac] / toplam
107
+
108
+ # Minimum eşiği geçemiyen → unknown
109
+ if guven < _MIN_GUVEN:
110
+ en_iyi_arac = "unknown"
111
+
112
+ return AIAracTahmini(
113
+ arac=en_iyi_arac,
114
+ guven=round(guven, 3),
115
+ puan_detayi={k: round(v, 3) for k, v in puan.items()},
116
+ )
117
+
118
+
119
+ def analyze_repo_tools(
120
+ repo_path: Path,
121
+ db_path: Path,
122
+ ) -> dict[str, dict[str, float]]:
123
+ """
124
+ Repo genelinde araç bazlı dosya analizi yap ve sonuçları DB'ye kaydet.
125
+
126
+ Returns:
127
+ {arac: {"dosya_sayisi": N, "avg_ai_probability": X}} sözlüğü
128
+ """
129
+ from codedna.scorer import scan_repository
130
+ from codedna.db import get_connection
131
+
132
+ desteklenen = {".py", ".js", ".jsx", ".ts", ".tsx"}
133
+ sonuclar = scan_repository(repo_path, max_files=200)
134
+
135
+ # Araç sayaçları
136
+ arac_istatistik: dict[str, dict[str, list]] = {
137
+ "copilot": {"ai_prob": [], "understanding": []},
138
+ "cursor": {"ai_prob": [], "understanding": []},
139
+ "claude": {"ai_prob": [], "understanding": []},
140
+ "unknown": {"ai_prob": [], "understanding": []},
141
+ }
142
+
143
+ for sonuc in sonuclar:
144
+ if Path(sonuc.file_path).suffix.lower() not in desteklenen:
145
+ continue
146
+ try:
147
+ kod = Path(sonuc.file_path).read_text(encoding="utf-8", errors="replace")
148
+ except Exception:
149
+ continue
150
+
151
+ tahmin = guess_ai_tool(sonuc.file_path, kod)
152
+
153
+ # DB'ye kaydet — en son file_score kaydını güncelle
154
+ try:
155
+ with get_connection(db_path) as conn:
156
+ conn.execute(
157
+ """
158
+ UPDATE file_scores
159
+ SET ai_tool_guess = ?
160
+ WHERE file_path = ?
161
+ AND id = (
162
+ SELECT id FROM file_scores
163
+ WHERE file_path = ?
164
+ ORDER BY id DESC LIMIT 1
165
+ )
166
+ """,
167
+ (tahmin.arac, sonuc.file_path, sonuc.file_path),
168
+ )
169
+ except Exception:
170
+ pass
171
+
172
+ if tahmin.arac in arac_istatistik:
173
+ arac_istatistik[tahmin.arac]["ai_prob"].append(sonuc.ai_probability)
174
+ else:
175
+ arac_istatistik["unknown"]["ai_prob"].append(sonuc.ai_probability)
176
+
177
+ # DB'den anlama skorlarını araç bazlı topla
178
+ try:
179
+ with get_connection(db_path) as conn:
180
+ rows = conn.execute(
181
+ """
182
+ SELECT fs.ai_tool_guess, fs.understanding_score
183
+ FROM file_scores fs
184
+ WHERE fs.ai_tool_guess IS NOT NULL
185
+ AND fs.understanding_score IS NOT NULL
186
+ """
187
+ ).fetchall()
188
+ for r in rows:
189
+ arac = r["ai_tool_guess"] or "unknown"
190
+ if arac in arac_istatistik:
191
+ arac_istatistik[arac]["understanding"].append(
192
+ float(r["understanding_score"])
193
+ )
194
+ except Exception:
195
+ pass
196
+
197
+ # Sonuçları hesapla
198
+ cikti: dict[str, dict[str, float]] = {}
199
+ for arac, veri in arac_istatistik.items():
200
+ if not veri["ai_prob"]:
201
+ continue
202
+ avg_ai = sum(veri["ai_prob"]) / len(veri["ai_prob"])
203
+ avg_und = (
204
+ sum(veri["understanding"]) / len(veri["understanding"])
205
+ if veri["understanding"] else None
206
+ )
207
+ cikti[arac] = {
208
+ "dosya_sayisi": len(veri["ai_prob"]),
209
+ "avg_ai_probability": round(avg_ai, 3),
210
+ "avg_understanding": round(avg_und, 2) if avg_und is not None else None,
211
+ }
212
+
213
+ return cikti
214
+
215
+
216
+ def compare_tools_in_repo(repo_path: Path, db_path: Path) -> dict:
217
+ """
218
+ Repo genelinde araç bazlı ortalama anlama skoru ve AI olasılığı karşılaştırması.
219
+
220
+ Returns:
221
+ {"copilot": {...}, "cursor": {...}, ...} sözlüğü
222
+ """
223
+ return analyze_repo_tools(repo_path, db_path)