ekte 0.30.0__py3-none-any.whl

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 (418) hide show
  1. ekte/__init__.py +19 -0
  2. ekte/__main__.py +6 -0
  3. ekte/cli.py +1553 -0
  4. ekte/clients/__init__.py +55 -0
  5. ekte/clients/anthropic.py +345 -0
  6. ekte/clients/base.py +569 -0
  7. ekte/clients/openai_compatible.py +454 -0
  8. ekte/clients/responses.py +392 -0
  9. ekte/config.py +288 -0
  10. ekte/context.py +78 -0
  11. ekte/datadir.py +96 -0
  12. ekte/detectors/__init__.py +47 -0
  13. ekte/detectors/base.py +134 -0
  14. ekte/detectors/billing.py +290 -0
  15. ekte/detectors/capability.py +481 -0
  16. ekte/detectors/connectivity.py +112 -0
  17. ekte/detectors/context_window.py +750 -0
  18. ekte/detectors/determinism.py +235 -0
  19. ekte/detectors/embed_connectivity.py +64 -0
  20. ekte/detectors/embed_determinism.py +70 -0
  21. ekte/detectors/embed_distinctness.py +72 -0
  22. ekte/detectors/embed_drift.py +127 -0
  23. ekte/detectors/embed_identity.py +122 -0
  24. ekte/detectors/embed_performance.py +355 -0
  25. ekte/detectors/embedding.py +69 -0
  26. ekte/detectors/helpers.py +184 -0
  27. ekte/detectors/injected_prompt.py +199 -0
  28. ekte/detectors/integrity.py +218 -0
  29. ekte/detectors/model_identity.py +614 -0
  30. ekte/detectors/perf_probe.py +325 -0
  31. ekte/detectors/performance.py +519 -0
  32. ekte/detectors/prompt_cache.py +137 -0
  33. ekte/detectors/protocol.py +246 -0
  34. ekte/detectors/protocol_attrs.py +230 -0
  35. ekte/detectors/quality_judge.py +318 -0
  36. ekte/detectors/reliability.py +252 -0
  37. ekte/detectors/rerank.py +103 -0
  38. ekte/detectors/rerank_connectivity.py +61 -0
  39. ekte/detectors/rerank_determinism.py +84 -0
  40. ekte/detectors/rerank_drift.py +139 -0
  41. ekte/detectors/rerank_identity.py +67 -0
  42. ekte/detectors/rerank_known_answer.py +78 -0
  43. ekte/detectors/rerank_performance.py +394 -0
  44. ekte/detectors/scale.py +145 -0
  45. ekte/detectors/security.py +245 -0
  46. ekte/detectors/streaming.py +291 -0
  47. ekte/detectors/vision.py +251 -0
  48. ekte/detectors/wire_attrs.py +354 -0
  49. ekte/embed_audit.py +220 -0
  50. ekte/i18n/__init__.py +315 -0
  51. ekte/i18n/locales/de.json +872 -0
  52. ekte/i18n/locales/en.json +490 -0
  53. ekte/i18n/locales/es.json +872 -0
  54. ekte/i18n/locales/fr.json +872 -0
  55. ekte/i18n/locales/fragments/custom-suite/de.json +43 -0
  56. ekte/i18n/locales/fragments/custom-suite/en.json +43 -0
  57. ekte/i18n/locales/fragments/custom-suite/es.json +43 -0
  58. ekte/i18n/locales/fragments/custom-suite/fr.json +43 -0
  59. ekte/i18n/locales/fragments/custom-suite/it.json +43 -0
  60. ekte/i18n/locales/fragments/custom-suite/pt.json +43 -0
  61. ekte/i18n/locales/fragments/custom-suite/zh.json +43 -0
  62. ekte/i18n/locales/fragments/embed-monitors/de.json +9 -0
  63. ekte/i18n/locales/fragments/embed-monitors/en.json +9 -0
  64. ekte/i18n/locales/fragments/embed-monitors/es.json +9 -0
  65. ekte/i18n/locales/fragments/embed-monitors/fr.json +9 -0
  66. ekte/i18n/locales/fragments/embed-monitors/it.json +9 -0
  67. ekte/i18n/locales/fragments/embed-monitors/pt.json +9 -0
  68. ekte/i18n/locales/fragments/embed-surface/de.json +53 -0
  69. ekte/i18n/locales/fragments/embed-surface/en.json +53 -0
  70. ekte/i18n/locales/fragments/embed-surface/es.json +53 -0
  71. ekte/i18n/locales/fragments/embed-surface/fr.json +53 -0
  72. ekte/i18n/locales/fragments/embed-surface/it.json +53 -0
  73. ekte/i18n/locales/fragments/embed-surface/pt.json +53 -0
  74. ekte/i18n/locales/fragments/embed-surface/zh.json +53 -0
  75. ekte/i18n/locales/fragments/kb-fingerprints/de.json +36 -0
  76. ekte/i18n/locales/fragments/kb-fingerprints/en.json +36 -0
  77. ekte/i18n/locales/fragments/kb-fingerprints/es.json +36 -0
  78. ekte/i18n/locales/fragments/kb-fingerprints/fr.json +36 -0
  79. ekte/i18n/locales/fragments/kb-fingerprints/it.json +36 -0
  80. ekte/i18n/locales/fragments/kb-fingerprints/pt.json +36 -0
  81. ekte/i18n/locales/fragments/kb-fingerprints/zh.json +36 -0
  82. ekte/i18n/locales/fragments/key-storage/de.json +55 -0
  83. ekte/i18n/locales/fragments/key-storage/en.json +55 -0
  84. ekte/i18n/locales/fragments/key-storage/es.json +55 -0
  85. ekte/i18n/locales/fragments/key-storage/fr.json +55 -0
  86. ekte/i18n/locales/fragments/key-storage/it.json +55 -0
  87. ekte/i18n/locales/fragments/key-storage/pt.json +55 -0
  88. ekte/i18n/locales/fragments/perf-scale/de.json +20 -0
  89. ekte/i18n/locales/fragments/perf-scale/en.json +20 -0
  90. ekte/i18n/locales/fragments/perf-scale/es.json +20 -0
  91. ekte/i18n/locales/fragments/perf-scale/fr.json +20 -0
  92. ekte/i18n/locales/fragments/perf-scale/it.json +20 -0
  93. ekte/i18n/locales/fragments/perf-scale/pt.json +20 -0
  94. ekte/i18n/locales/fragments/rerank-monitors/de.json +8 -0
  95. ekte/i18n/locales/fragments/rerank-monitors/en.json +8 -0
  96. ekte/i18n/locales/fragments/rerank-monitors/es.json +8 -0
  97. ekte/i18n/locales/fragments/rerank-monitors/fr.json +8 -0
  98. ekte/i18n/locales/fragments/rerank-monitors/it.json +8 -0
  99. ekte/i18n/locales/fragments/rerank-monitors/pt.json +8 -0
  100. ekte/i18n/locales/fragments/rerank-monitors/zh.json +8 -0
  101. ekte/i18n/locales/fragments/rerank-perf/de.json +18 -0
  102. ekte/i18n/locales/fragments/rerank-perf/en.json +18 -0
  103. ekte/i18n/locales/fragments/rerank-perf/es.json +18 -0
  104. ekte/i18n/locales/fragments/rerank-perf/fr.json +18 -0
  105. ekte/i18n/locales/fragments/rerank-perf/it.json +18 -0
  106. ekte/i18n/locales/fragments/rerank-perf/pt.json +18 -0
  107. ekte/i18n/locales/fragments/rerank-perf/zh.json +17 -0
  108. ekte/i18n/locales/fragments/rerank-surface/de.json +36 -0
  109. ekte/i18n/locales/fragments/rerank-surface/en.json +36 -0
  110. ekte/i18n/locales/fragments/rerank-surface/es.json +36 -0
  111. ekte/i18n/locales/fragments/rerank-surface/fr.json +36 -0
  112. ekte/i18n/locales/fragments/rerank-surface/it.json +36 -0
  113. ekte/i18n/locales/fragments/rerank-surface/pt.json +36 -0
  114. ekte/i18n/locales/fragments/rerank-surface/zh.json +36 -0
  115. ekte/i18n/locales/fragments/rerank-ui/de.json +9 -0
  116. ekte/i18n/locales/fragments/rerank-ui/en.json +9 -0
  117. ekte/i18n/locales/fragments/rerank-ui/es.json +9 -0
  118. ekte/i18n/locales/fragments/rerank-ui/fr.json +9 -0
  119. ekte/i18n/locales/fragments/rerank-ui/it.json +9 -0
  120. ekte/i18n/locales/fragments/rerank-ui/pt.json +9 -0
  121. ekte/i18n/locales/fragments/rerank-ui/zh.json +9 -0
  122. ekte/i18n/locales/fragments/result-titles/de.json +178 -0
  123. ekte/i18n/locales/fragments/result-titles/en.json +178 -0
  124. ekte/i18n/locales/fragments/result-titles/es.json +178 -0
  125. ekte/i18n/locales/fragments/result-titles/fr.json +178 -0
  126. ekte/i18n/locales/fragments/result-titles/it.json +178 -0
  127. ekte/i18n/locales/fragments/result-titles/pt.json +178 -0
  128. ekte/i18n/locales/fragments/result-titles/zh.json +178 -0
  129. ekte/i18n/locales/fragments/surface-selector/de.json +7 -0
  130. ekte/i18n/locales/fragments/surface-selector/en.json +7 -0
  131. ekte/i18n/locales/fragments/surface-selector/es.json +7 -0
  132. ekte/i18n/locales/fragments/surface-selector/fr.json +7 -0
  133. ekte/i18n/locales/fragments/surface-selector/it.json +7 -0
  134. ekte/i18n/locales/fragments/surface-selector/pt.json +7 -0
  135. ekte/i18n/locales/fragments/surface-selector/zh.json +7 -0
  136. ekte/i18n/locales/fragments/surface-views/de.json +21 -0
  137. ekte/i18n/locales/fragments/surface-views/en.json +21 -0
  138. ekte/i18n/locales/fragments/surface-views/es.json +21 -0
  139. ekte/i18n/locales/fragments/surface-views/fr.json +21 -0
  140. ekte/i18n/locales/fragments/surface-views/it.json +21 -0
  141. ekte/i18n/locales/fragments/surface-views/pt.json +21 -0
  142. ekte/i18n/locales/fragments/tools-retire/de.json +6 -0
  143. ekte/i18n/locales/fragments/tools-retire/en.json +6 -0
  144. ekte/i18n/locales/fragments/tools-retire/es.json +6 -0
  145. ekte/i18n/locales/fragments/tools-retire/fr.json +6 -0
  146. ekte/i18n/locales/fragments/tools-retire/it.json +6 -0
  147. ekte/i18n/locales/fragments/tools-retire/pt.json +6 -0
  148. ekte/i18n/locales/fragments/tools-retire/zh.json +6 -0
  149. ekte/i18n/locales/fragments/v2-a11y-report/de.json +173 -0
  150. ekte/i18n/locales/fragments/v2-a11y-report/en.json +173 -0
  151. ekte/i18n/locales/fragments/v2-a11y-report/es.json +173 -0
  152. ekte/i18n/locales/fragments/v2-a11y-report/fr.json +173 -0
  153. ekte/i18n/locales/fragments/v2-a11y-report/it.json +173 -0
  154. ekte/i18n/locales/fragments/v2-a11y-report/pt.json +173 -0
  155. ekte/i18n/locales/fragments/v2-a11y-report/zh.json +100 -0
  156. ekte/i18n/locales/fragments/v2-all-dimensions/de.json +8 -0
  157. ekte/i18n/locales/fragments/v2-all-dimensions/en.json +8 -0
  158. ekte/i18n/locales/fragments/v2-all-dimensions/es.json +8 -0
  159. ekte/i18n/locales/fragments/v2-all-dimensions/fr.json +8 -0
  160. ekte/i18n/locales/fragments/v2-all-dimensions/it.json +8 -0
  161. ekte/i18n/locales/fragments/v2-all-dimensions/pt.json +8 -0
  162. ekte/i18n/locales/fragments/v2-analytics/de.json +207 -0
  163. ekte/i18n/locales/fragments/v2-analytics/en.json +207 -0
  164. ekte/i18n/locales/fragments/v2-analytics/es.json +207 -0
  165. ekte/i18n/locales/fragments/v2-analytics/fr.json +207 -0
  166. ekte/i18n/locales/fragments/v2-analytics/it.json +207 -0
  167. ekte/i18n/locales/fragments/v2-analytics/pt.json +207 -0
  168. ekte/i18n/locales/fragments/v2-audit/de.json +28 -0
  169. ekte/i18n/locales/fragments/v2-audit/en.json +28 -0
  170. ekte/i18n/locales/fragments/v2-audit/es.json +28 -0
  171. ekte/i18n/locales/fragments/v2-audit/fr.json +28 -0
  172. ekte/i18n/locales/fragments/v2-audit/it.json +28 -0
  173. ekte/i18n/locales/fragments/v2-audit/pt.json +28 -0
  174. ekte/i18n/locales/fragments/v2-background/de.json +21 -0
  175. ekte/i18n/locales/fragments/v2-background/en.json +21 -0
  176. ekte/i18n/locales/fragments/v2-background/es.json +21 -0
  177. ekte/i18n/locales/fragments/v2-background/fr.json +21 -0
  178. ekte/i18n/locales/fragments/v2-background/it.json +21 -0
  179. ekte/i18n/locales/fragments/v2-background/pt.json +21 -0
  180. ekte/i18n/locales/fragments/v2-console/de.json +21 -0
  181. ekte/i18n/locales/fragments/v2-console/en.json +21 -0
  182. ekte/i18n/locales/fragments/v2-console/es.json +21 -0
  183. ekte/i18n/locales/fragments/v2-console/fr.json +21 -0
  184. ekte/i18n/locales/fragments/v2-console/it.json +21 -0
  185. ekte/i18n/locales/fragments/v2-console/pt.json +21 -0
  186. ekte/i18n/locales/fragments/v2-download/de.json +6 -0
  187. ekte/i18n/locales/fragments/v2-download/en.json +6 -0
  188. ekte/i18n/locales/fragments/v2-download/es.json +6 -0
  189. ekte/i18n/locales/fragments/v2-download/fr.json +6 -0
  190. ekte/i18n/locales/fragments/v2-download/it.json +6 -0
  191. ekte/i18n/locales/fragments/v2-download/pt.json +6 -0
  192. ekte/i18n/locales/fragments/v2-exec-log/de.json +12 -0
  193. ekte/i18n/locales/fragments/v2-exec-log/en.json +12 -0
  194. ekte/i18n/locales/fragments/v2-exec-log/es.json +12 -0
  195. ekte/i18n/locales/fragments/v2-exec-log/fr.json +12 -0
  196. ekte/i18n/locales/fragments/v2-exec-log/it.json +12 -0
  197. ekte/i18n/locales/fragments/v2-exec-log/pt.json +12 -0
  198. ekte/i18n/locales/fragments/v2-fields/de.json +5 -0
  199. ekte/i18n/locales/fragments/v2-fields/en.json +5 -0
  200. ekte/i18n/locales/fragments/v2-fields/es.json +5 -0
  201. ekte/i18n/locales/fragments/v2-fields/fr.json +5 -0
  202. ekte/i18n/locales/fragments/v2-fields/it.json +5 -0
  203. ekte/i18n/locales/fragments/v2-fields/pt.json +5 -0
  204. ekte/i18n/locales/fragments/v2-form-errors/de.json +8 -0
  205. ekte/i18n/locales/fragments/v2-form-errors/en.json +8 -0
  206. ekte/i18n/locales/fragments/v2-form-errors/es.json +8 -0
  207. ekte/i18n/locales/fragments/v2-form-errors/fr.json +8 -0
  208. ekte/i18n/locales/fragments/v2-form-errors/it.json +8 -0
  209. ekte/i18n/locales/fragments/v2-form-errors/pt.json +8 -0
  210. ekte/i18n/locales/fragments/v2-foundation/de.json +20 -0
  211. ekte/i18n/locales/fragments/v2-foundation/en.json +20 -0
  212. ekte/i18n/locales/fragments/v2-foundation/es.json +20 -0
  213. ekte/i18n/locales/fragments/v2-foundation/fr.json +20 -0
  214. ekte/i18n/locales/fragments/v2-foundation/it.json +20 -0
  215. ekte/i18n/locales/fragments/v2-foundation/pt.json +20 -0
  216. ekte/i18n/locales/fragments/v2-history/de.json +48 -0
  217. ekte/i18n/locales/fragments/v2-history/en.json +48 -0
  218. ekte/i18n/locales/fragments/v2-history/es.json +48 -0
  219. ekte/i18n/locales/fragments/v2-history/fr.json +48 -0
  220. ekte/i18n/locales/fragments/v2-history/it.json +48 -0
  221. ekte/i18n/locales/fragments/v2-history/pt.json +48 -0
  222. ekte/i18n/locales/fragments/v2-kb/de.json +131 -0
  223. ekte/i18n/locales/fragments/v2-kb/en.json +131 -0
  224. ekte/i18n/locales/fragments/v2-kb/es.json +131 -0
  225. ekte/i18n/locales/fragments/v2-kb/fr.json +131 -0
  226. ekte/i18n/locales/fragments/v2-kb/it.json +131 -0
  227. ekte/i18n/locales/fragments/v2-kb/pt.json +131 -0
  228. ekte/i18n/locales/fragments/v2-landmarks/de.json +7 -0
  229. ekte/i18n/locales/fragments/v2-landmarks/en.json +7 -0
  230. ekte/i18n/locales/fragments/v2-landmarks/es.json +7 -0
  231. ekte/i18n/locales/fragments/v2-landmarks/fr.json +7 -0
  232. ekte/i18n/locales/fragments/v2-landmarks/it.json +7 -0
  233. ekte/i18n/locales/fragments/v2-landmarks/pt.json +7 -0
  234. ekte/i18n/locales/fragments/v2-masterkey/de.json +72 -0
  235. ekte/i18n/locales/fragments/v2-masterkey/en.json +72 -0
  236. ekte/i18n/locales/fragments/v2-masterkey/es.json +72 -0
  237. ekte/i18n/locales/fragments/v2-masterkey/fr.json +72 -0
  238. ekte/i18n/locales/fragments/v2-masterkey/it.json +72 -0
  239. ekte/i18n/locales/fragments/v2-masterkey/pt.json +72 -0
  240. ekte/i18n/locales/fragments/v2-monitors/de.json +50 -0
  241. ekte/i18n/locales/fragments/v2-monitors/en.json +50 -0
  242. ekte/i18n/locales/fragments/v2-monitors/es.json +50 -0
  243. ekte/i18n/locales/fragments/v2-monitors/fr.json +50 -0
  244. ekte/i18n/locales/fragments/v2-monitors/it.json +50 -0
  245. ekte/i18n/locales/fragments/v2-monitors/pt.json +50 -0
  246. ekte/i18n/locales/fragments/v2-monitors-filter/de.json +11 -0
  247. ekte/i18n/locales/fragments/v2-monitors-filter/en.json +11 -0
  248. ekte/i18n/locales/fragments/v2-monitors-filter/es.json +11 -0
  249. ekte/i18n/locales/fragments/v2-monitors-filter/fr.json +11 -0
  250. ekte/i18n/locales/fragments/v2-monitors-filter/it.json +11 -0
  251. ekte/i18n/locales/fragments/v2-monitors-filter/pt.json +11 -0
  252. ekte/i18n/locales/fragments/v2-monitors-schedule/de.json +42 -0
  253. ekte/i18n/locales/fragments/v2-monitors-schedule/en.json +42 -0
  254. ekte/i18n/locales/fragments/v2-monitors-schedule/es.json +42 -0
  255. ekte/i18n/locales/fragments/v2-monitors-schedule/fr.json +42 -0
  256. ekte/i18n/locales/fragments/v2-monitors-schedule/it.json +42 -0
  257. ekte/i18n/locales/fragments/v2-monitors-schedule/pt.json +42 -0
  258. ekte/i18n/locales/fragments/v2-notices/de.json +56 -0
  259. ekte/i18n/locales/fragments/v2-notices/en.json +56 -0
  260. ekte/i18n/locales/fragments/v2-notices/es.json +56 -0
  261. ekte/i18n/locales/fragments/v2-notices/fr.json +56 -0
  262. ekte/i18n/locales/fragments/v2-notices/it.json +56 -0
  263. ekte/i18n/locales/fragments/v2-notices/pt.json +56 -0
  264. ekte/i18n/locales/fragments/v2-perf/de.json +24 -0
  265. ekte/i18n/locales/fragments/v2-perf/en.json +24 -0
  266. ekte/i18n/locales/fragments/v2-perf/es.json +24 -0
  267. ekte/i18n/locales/fragments/v2-perf/fr.json +24 -0
  268. ekte/i18n/locales/fragments/v2-perf/it.json +24 -0
  269. ekte/i18n/locales/fragments/v2-perf/pt.json +24 -0
  270. ekte/i18n/locales/fragments/v2-protocol/de.json +11 -0
  271. ekte/i18n/locales/fragments/v2-protocol/en.json +11 -0
  272. ekte/i18n/locales/fragments/v2-protocol/es.json +11 -0
  273. ekte/i18n/locales/fragments/v2-protocol/fr.json +11 -0
  274. ekte/i18n/locales/fragments/v2-protocol/it.json +11 -0
  275. ekte/i18n/locales/fragments/v2-protocol/pt.json +11 -0
  276. ekte/i18n/locales/fragments/v2-protocol-attrs/de.json +36 -0
  277. ekte/i18n/locales/fragments/v2-protocol-attrs/en.json +36 -0
  278. ekte/i18n/locales/fragments/v2-protocol-attrs/es.json +36 -0
  279. ekte/i18n/locales/fragments/v2-protocol-attrs/fr.json +36 -0
  280. ekte/i18n/locales/fragments/v2-protocol-attrs/it.json +36 -0
  281. ekte/i18n/locales/fragments/v2-protocol-attrs/pt.json +36 -0
  282. ekte/i18n/locales/fragments/v2-protocol-attrs/zh.json +27 -0
  283. ekte/i18n/locales/fragments/v2-relaycfg/de.json +32 -0
  284. ekte/i18n/locales/fragments/v2-relaycfg/en.json +32 -0
  285. ekte/i18n/locales/fragments/v2-relaycfg/es.json +32 -0
  286. ekte/i18n/locales/fragments/v2-relaycfg/fr.json +32 -0
  287. ekte/i18n/locales/fragments/v2-relaycfg/it.json +32 -0
  288. ekte/i18n/locales/fragments/v2-relaycfg/pt.json +32 -0
  289. ekte/i18n/locales/fragments/v2-report/de.json +14 -0
  290. ekte/i18n/locales/fragments/v2-report/en.json +14 -0
  291. ekte/i18n/locales/fragments/v2-report/es.json +14 -0
  292. ekte/i18n/locales/fragments/v2-report/fr.json +14 -0
  293. ekte/i18n/locales/fragments/v2-report/it.json +14 -0
  294. ekte/i18n/locales/fragments/v2-report/pt.json +14 -0
  295. ekte/i18n/locales/fragments/v2-scoring/de.json +152 -0
  296. ekte/i18n/locales/fragments/v2-scoring/en.json +152 -0
  297. ekte/i18n/locales/fragments/v2-scoring/es.json +152 -0
  298. ekte/i18n/locales/fragments/v2-scoring/fr.json +152 -0
  299. ekte/i18n/locales/fragments/v2-scoring/it.json +152 -0
  300. ekte/i18n/locales/fragments/v2-scoring/pt.json +152 -0
  301. ekte/i18n/locales/fragments/v2-scoring/zh.json +133 -0
  302. ekte/i18n/locales/fragments/v2-tools/de.json +31 -0
  303. ekte/i18n/locales/fragments/v2-tools/en.json +31 -0
  304. ekte/i18n/locales/fragments/v2-tools/es.json +31 -0
  305. ekte/i18n/locales/fragments/v2-tools/fr.json +31 -0
  306. ekte/i18n/locales/fragments/v2-tools/it.json +31 -0
  307. ekte/i18n/locales/fragments/v2-tools/pt.json +31 -0
  308. ekte/i18n/locales/fragments/verdict-transport/de.json +8 -0
  309. ekte/i18n/locales/fragments/verdict-transport/en.json +8 -0
  310. ekte/i18n/locales/fragments/verdict-transport/es.json +8 -0
  311. ekte/i18n/locales/fragments/verdict-transport/fr.json +8 -0
  312. ekte/i18n/locales/fragments/verdict-transport/it.json +8 -0
  313. ekte/i18n/locales/fragments/verdict-transport/pt.json +8 -0
  314. ekte/i18n/locales/fragments/verdict-transport/zh.json +8 -0
  315. ekte/i18n/locales/it.json +872 -0
  316. ekte/i18n/locales/pt.json +872 -0
  317. ekte/i18n/locales/zh.json +533 -0
  318. ekte/judge/__init__.py +11 -0
  319. ekte/judge/judge.py +70 -0
  320. ekte/knowledge/__init__.py +24 -0
  321. ekte/knowledge/catalog.py +176 -0
  322. ekte/knowledge/data/__init__.py +7 -0
  323. ekte/knowledge/data/anthropic.yaml +1011 -0
  324. ekte/knowledge/data/deepseek.yaml +317 -0
  325. ekte/knowledge/data/gemini.yaml +913 -0
  326. ekte/knowledge/data/glm.yaml +896 -0
  327. ekte/knowledge/data/moonshot.yaml +563 -0
  328. ekte/knowledge/data/openai.yaml +1251 -0
  329. ekte/knowledge/data/qwen.yaml +953 -0
  330. ekte/knowledge/identity.py +119 -0
  331. ekte/knowledge/importer.py +427 -0
  332. ekte/knowledge/loader.py +360 -0
  333. ekte/knowledge/relays.py +105 -0
  334. ekte/knowledge/research.py +175 -0
  335. ekte/knowledge/schema.py +318 -0
  336. ekte/knowledge/snapshot.py +138 -0
  337. ekte/knowledge/store.py +227 -0
  338. ekte/legacy.py +104 -0
  339. ekte/media_audit.py +696 -0
  340. ekte/models.py +695 -0
  341. ekte/notify.py +311 -0
  342. ekte/perf/__init__.py +28 -0
  343. ekte/perf/recorder.py +366 -0
  344. ekte/perf/summary.py +409 -0
  345. ekte/perf/trend.py +89 -0
  346. ekte/prompts/__init__.py +69 -0
  347. ekte/prompts/en.json +183 -0
  348. ekte/report/__init__.py +29 -0
  349. ekte/report/dimensions.py +490 -0
  350. ekte/report/palette.py +94 -0
  351. ekte/report/pdf.py +725 -0
  352. ekte/report/performance.py +587 -0
  353. ekte/report/render.py +804 -0
  354. ekte/report/writer.py +94 -0
  355. ekte/runner.py +310 -0
  356. ekte/scoring.py +518 -0
  357. ekte/secretbox.py +274 -0
  358. ekte/utils/__init__.py +1 -0
  359. ekte/utils/net.py +49 -0
  360. ekte/utils/redact.py +118 -0
  361. ekte/utils/sse.py +84 -0
  362. ekte/utils/stats.py +95 -0
  363. ekte/utils/tokenize.py +64 -0
  364. ekte/utils/yamlio.py +96 -0
  365. ekte/web/__init__.py +9 -0
  366. ekte/web/analytics.py +1047 -0
  367. ekte/web/analytics_store.py +641 -0
  368. ekte/web/caching.py +271 -0
  369. ekte/web/history.py +787 -0
  370. ekte/web/jobs.py +440 -0
  371. ekte/web/masterkey.py +321 -0
  372. ekte/web/security.py +183 -0
  373. ekte/web/server.py +1935 -0
  374. ekte/web/static/i18n.js +454 -0
  375. ekte/web/static/icons.js +167 -0
  376. ekte/web/static/lang.js +517 -0
  377. ekte/web/static/locales.js +211 -0
  378. ekte/web/static/perf.js +1223 -0
  379. ekte/web/static/secretfield.js +142 -0
  380. ekte/web/static/v2/accessibility.html +506 -0
  381. ekte/web/static/v2/analytics.html +2048 -0
  382. ekte/web/static/v2/bitv-catalogue.json +409 -0
  383. ekte/web/static/v2/bitv-report.json +1283 -0
  384. ekte/web/static/v2/chartmotion.css +143 -0
  385. ekte/web/static/v2/chartmotion.js +300 -0
  386. ekte/web/static/v2/charts.css +115 -0
  387. ekte/web/static/v2/charts.js +593 -0
  388. ekte/web/static/v2/dimpick.js +43 -0
  389. ekte/web/static/v2/ekte.css +411 -0
  390. ekte/web/static/v2/favicon.svg +13 -0
  391. ekte/web/static/v2/fields.css +138 -0
  392. ekte/web/static/v2/filterpanel.css +26 -0
  393. ekte/web/static/v2/filterpanel.js +127 -0
  394. ekte/web/static/v2/history.html +1223 -0
  395. ekte/web/static/v2/index.html +1158 -0
  396. ekte/web/static/v2/jobs.css +27 -0
  397. ekte/web/static/v2/jobs.js +181 -0
  398. ekte/web/static/v2/kb.html +521 -0
  399. ekte/web/static/v2/kbsection.js +517 -0
  400. ekte/web/static/v2/kbview.js +119 -0
  401. ekte/web/static/v2/masterkey.js +511 -0
  402. ekte/web/static/v2/nav.js +140 -0
  403. ekte/web/static/v2/notice.js +66 -0
  404. ekte/web/static/v2/perf.css +87 -0
  405. ekte/web/static/v2/relaycfg.js +617 -0
  406. ekte/web/static/v2/report.css +232 -0
  407. ekte/web/static/v2/report.js +1043 -0
  408. ekte/web/static/v2/tabs.js +129 -0
  409. ekte/web/static/v2/theme.js +81 -0
  410. ekte/web/static/v2/tokens.css +92 -0
  411. ekte/web/static/v2/watches.html +1529 -0
  412. ekte/web/watches.py +855 -0
  413. ekte-0.30.0.dist-info/METADATA +922 -0
  414. ekte-0.30.0.dist-info/RECORD +418 -0
  415. ekte-0.30.0.dist-info/WHEEL +4 -0
  416. ekte-0.30.0.dist-info/entry_points.txt +2 -0
  417. ekte-0.30.0.dist-info/licenses/LICENSE +201 -0
  418. ekte-0.30.0.dist-info/licenses/NOTICE +20 -0
ekte/__init__.py ADDED
@@ -0,0 +1,19 @@
1
+ """ekte — LLM relay reality check.
2
+
3
+ A local-first CLI that audits whether an OpenAI-compatible or Anthropic-native API
4
+ relay actually serves the model it claims to (货不对板检测): real context window,
5
+ model identity and downgrade fingerprinting, capability claims, token/billing
6
+ sanity, streaming authenticity, reliability, and security signals.
7
+ """
8
+
9
+ from __future__ import annotations
10
+
11
+ from importlib.metadata import PackageNotFoundError, version
12
+
13
+ try:
14
+ # Single source of truth: the installed package metadata (pyproject `version`).
15
+ __version__ = version("ekte")
16
+ except PackageNotFoundError: # not installed (e.g. running from a source tree)
17
+ __version__ = "0.0.0+unknown"
18
+
19
+ __all__ = ["__version__"]
ekte/__main__.py ADDED
@@ -0,0 +1,6 @@
1
+ from __future__ import annotations
2
+
3
+ from ekte.cli import app
4
+
5
+ if __name__ == "__main__":
6
+ app()