azathoth-ai 1.0.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 (288) hide show
  1. azathoth_ai-1.0.0/LICENSE +21 -0
  2. azathoth_ai-1.0.0/PKG-INFO +195 -0
  3. azathoth_ai-1.0.0/README.md +160 -0
  4. azathoth_ai-1.0.0/pyproject.toml +94 -0
  5. azathoth_ai-1.0.0/setup.cfg +4 -0
  6. azathoth_ai-1.0.0/src/azathoth/__init__.py +3 -0
  7. azathoth_ai-1.0.0/src/azathoth/cli/__init__.py +217 -0
  8. azathoth_ai-1.0.0/src/azathoth/cli/__main__.py +5 -0
  9. azathoth_ai-1.0.0/src/azathoth/cli/application.py +249 -0
  10. azathoth_ai-1.0.0/src/azathoth/cli/benchmark_cases.py +148 -0
  11. azathoth_ai-1.0.0/src/azathoth/cli/benchmark_checks.py +134 -0
  12. azathoth_ai-1.0.0/src/azathoth/cli/benchmark_execution.py +195 -0
  13. azathoth_ai-1.0.0/src/azathoth/cli/benchmarks.py +705 -0
  14. azathoth_ai-1.0.0/src/azathoth/cli/bootstrap.py +110 -0
  15. azathoth_ai-1.0.0/src/azathoth/cli/configuration.py +47 -0
  16. azathoth_ai-1.0.0/src/azathoth/cli/dispatching/__init__.py +25 -0
  17. azathoth_ai-1.0.0/src/azathoth/cli/dispatching/benchmarks.py +327 -0
  18. azathoth_ai-1.0.0/src/azathoth/cli/dispatching/experiments.py +44 -0
  19. azathoth_ai-1.0.0/src/azathoth/cli/dispatching/goals.py +66 -0
  20. azathoth_ai-1.0.0/src/azathoth/cli/dispatching/invocations.py +44 -0
  21. azathoth_ai-1.0.0/src/azathoth/cli/dispatching/judges.py +62 -0
  22. azathoth_ai-1.0.0/src/azathoth/cli/dispatching/models.py +105 -0
  23. azathoth_ai-1.0.0/src/azathoth/cli/dispatching/runs.py +89 -0
  24. azathoth_ai-1.0.0/src/azathoth/cli/dispatching/tools.py +243 -0
  25. azathoth_ai-1.0.0/src/azathoth/cli/dispatching/workflows.py +373 -0
  26. azathoth_ai-1.0.0/src/azathoth/cli/execution.py +80 -0
  27. azathoth_ai-1.0.0/src/azathoth/cli/experiments.py +88 -0
  28. azathoth_ai-1.0.0/src/azathoth/cli/goals.py +142 -0
  29. azathoth_ai-1.0.0/src/azathoth/cli/judges.py +120 -0
  30. azathoth_ai-1.0.0/src/azathoth/cli/models.py +262 -0
  31. azathoth_ai-1.0.0/src/azathoth/cli/optimization.py +103 -0
  32. azathoth_ai-1.0.0/src/azathoth/cli/output_format.py +21 -0
  33. azathoth_ai-1.0.0/src/azathoth/cli/parsing/__init__.py +315 -0
  34. azathoth_ai-1.0.0/src/azathoth/cli/parsing/benchmarks.py +317 -0
  35. azathoth_ai-1.0.0/src/azathoth/cli/parsing/common.py +48 -0
  36. azathoth_ai-1.0.0/src/azathoth/cli/parsing/experiments.py +41 -0
  37. azathoth_ai-1.0.0/src/azathoth/cli/parsing/goals.py +63 -0
  38. azathoth_ai-1.0.0/src/azathoth/cli/parsing/invocations.py +41 -0
  39. azathoth_ai-1.0.0/src/azathoth/cli/parsing/judges.py +57 -0
  40. azathoth_ai-1.0.0/src/azathoth/cli/parsing/models.py +95 -0
  41. azathoth_ai-1.0.0/src/azathoth/cli/parsing/runs.py +99 -0
  42. azathoth_ai-1.0.0/src/azathoth/cli/parsing/tools.py +245 -0
  43. azathoth_ai-1.0.0/src/azathoth/cli/parsing/workflows.py +366 -0
  44. azathoth_ai-1.0.0/src/azathoth/cli/production.py +47 -0
  45. azathoth_ai-1.0.0/src/azathoth/cli/production_inspection.py +250 -0
  46. azathoth_ai-1.0.0/src/azathoth/cli/promotion.py +41 -0
  47. azathoth_ai-1.0.0/src/azathoth/cli/rendering/__init__.py +91 -0
  48. azathoth_ai-1.0.0/src/azathoth/cli/rendering/_json.py +17 -0
  49. azathoth_ai-1.0.0/src/azathoth/cli/rendering/benchmark_executions.py +249 -0
  50. azathoth_ai-1.0.0/src/azathoth/cli/rendering/benchmarks.py +54 -0
  51. azathoth_ai-1.0.0/src/azathoth/cli/rendering/evaluations.py +46 -0
  52. azathoth_ai-1.0.0/src/azathoth/cli/rendering/experiments.py +165 -0
  53. azathoth_ai-1.0.0/src/azathoth/cli/rendering/feedback.py +44 -0
  54. azathoth_ai-1.0.0/src/azathoth/cli/rendering/invocation_history.py +158 -0
  55. azathoth_ai-1.0.0/src/azathoth/cli/rendering/invocations.py +49 -0
  56. azathoth_ai-1.0.0/src/azathoth/cli/rendering/optimization.py +180 -0
  57. azathoth_ai-1.0.0/src/azathoth/cli/rendering/output_records.py +190 -0
  58. azathoth_ai-1.0.0/src/azathoth/cli/rendering/production.py +134 -0
  59. azathoth_ai-1.0.0/src/azathoth/cli/rendering/promotions.py +65 -0
  60. azathoth_ai-1.0.0/src/azathoth/cli/rendering/run_summaries.py +61 -0
  61. azathoth_ai-1.0.0/src/azathoth/cli/rendering/runs.py +166 -0
  62. azathoth_ai-1.0.0/src/azathoth/cli/rendering/usage.py +152 -0
  63. azathoth_ai-1.0.0/src/azathoth/cli/runs.py +267 -0
  64. azathoth_ai-1.0.0/src/azathoth/cli/step_output.py +88 -0
  65. azathoth_ai-1.0.0/src/azathoth/cli/streams.py +35 -0
  66. azathoth_ai-1.0.0/src/azathoth/cli/tool_verification.py +152 -0
  67. azathoth_ai-1.0.0/src/azathoth/cli/tools.py +523 -0
  68. azathoth_ai-1.0.0/src/azathoth/cli/usage.py +89 -0
  69. azathoth_ai-1.0.0/src/azathoth/cli/workflow_configuration.py +340 -0
  70. azathoth_ai-1.0.0/src/azathoth/cli/workflows.py +415 -0
  71. azathoth_ai-1.0.0/src/azathoth/context/__init__.py +5 -0
  72. azathoth_ai-1.0.0/src/azathoth/context/models.py +53 -0
  73. azathoth_ai-1.0.0/src/azathoth/evaluation/__init__.py +136 -0
  74. azathoth_ai-1.0.0/src/azathoth/evaluation/benchmark.py +104 -0
  75. azathoth_ai-1.0.0/src/azathoth/evaluation/benchmark_catalog.py +39 -0
  76. azathoth_ai-1.0.0/src/azathoth/evaluation/benchmark_catalog_loader.py +21 -0
  77. azathoth_ai-1.0.0/src/azathoth/evaluation/benchmark_document.py +32 -0
  78. azathoth_ai-1.0.0/src/azathoth/evaluation/benchmark_repository.py +64 -0
  79. azathoth_ai-1.0.0/src/azathoth/evaluation/benchmark_revision.py +103 -0
  80. azathoth_ai-1.0.0/src/azathoth/evaluation/exact.py +97 -0
  81. azathoth_ai-1.0.0/src/azathoth/evaluation/json_equality.py +113 -0
  82. azathoth_ai-1.0.0/src/azathoth/evaluation/json_schema.py +81 -0
  83. azathoth_ai-1.0.0/src/azathoth/evaluation/judge_repository.py +51 -0
  84. azathoth_ai-1.0.0/src/azathoth/evaluation/judges.py +135 -0
  85. azathoth_ai-1.0.0/src/azathoth/evaluation/memory_benchmark_repository.py +98 -0
  86. azathoth_ai-1.0.0/src/azathoth/evaluation/memory_judge_repository.py +74 -0
  87. azathoth_ai-1.0.0/src/azathoth/evaluation/models.py +92 -0
  88. azathoth_ai-1.0.0/src/azathoth/evaluation/normalized.py +153 -0
  89. azathoth_ai-1.0.0/src/azathoth/evaluation/outcome.py +123 -0
  90. azathoth_ai-1.0.0/src/azathoth/evaluation/protocols.py +36 -0
  91. azathoth_ai-1.0.0/src/azathoth/evaluation/schema.py +104 -0
  92. azathoth_ai-1.0.0/src/azathoth/evaluation/semantic.py +409 -0
  93. azathoth_ai-1.0.0/src/azathoth/evaluation/sqlite_benchmark_repository.py +314 -0
  94. azathoth_ai-1.0.0/src/azathoth/evaluation/sqlite_judge_repository.py +173 -0
  95. azathoth_ai-1.0.0/src/azathoth/execution/__init__.py +9 -0
  96. azathoth_ai-1.0.0/src/azathoth/execution/executor.py +79 -0
  97. azathoth_ai-1.0.0/src/azathoth/execution/models.py +29 -0
  98. azathoth_ai-1.0.0/src/azathoth/goals/__init__.py +29 -0
  99. azathoth_ai-1.0.0/src/azathoth/goals/catalog.py +39 -0
  100. azathoth_ai-1.0.0/src/azathoth/goals/catalog_loader.py +21 -0
  101. azathoth_ai-1.0.0/src/azathoth/goals/document.py +32 -0
  102. azathoth_ai-1.0.0/src/azathoth/goals/memory_repository.py +52 -0
  103. azathoth_ai-1.0.0/src/azathoth/goals/models.py +17 -0
  104. azathoth_ai-1.0.0/src/azathoth/goals/repository.py +33 -0
  105. azathoth_ai-1.0.0/src/azathoth/goals/sqlite_repository.py +143 -0
  106. azathoth_ai-1.0.0/src/azathoth/optimization/__init__.py +51 -0
  107. azathoth_ai-1.0.0/src/azathoth/optimization/candidate_resolution.py +58 -0
  108. azathoth_ai-1.0.0/src/azathoth/optimization/experiment.py +70 -0
  109. azathoth_ai-1.0.0/src/azathoth/optimization/model_substitution.py +208 -0
  110. azathoth_ai-1.0.0/src/azathoth/optimization/model_substitution_optimizer.py +85 -0
  111. azathoth_ai-1.0.0/src/azathoth/optimization/models.py +150 -0
  112. azathoth_ai-1.0.0/src/azathoth/optimization/ranking.py +43 -0
  113. azathoth_ai-1.0.0/src/azathoth/optimization/replay.py +30 -0
  114. azathoth_ai-1.0.0/src/azathoth/optimization/runner.py +79 -0
  115. azathoth_ai-1.0.0/src/azathoth/optimization/session.py +46 -0
  116. azathoth_ai-1.0.0/src/azathoth/optimization/session_runner.py +79 -0
  117. azathoth_ai-1.0.0/src/azathoth/optimization/workflow.py +52 -0
  118. azathoth_ai-1.0.0/src/azathoth/prompting/__init__.py +69 -0
  119. azathoth_ai-1.0.0/src/azathoth/prompting/candidates.py +102 -0
  120. azathoth_ai-1.0.0/src/azathoth/prompting/context_candidates.py +114 -0
  121. azathoth_ai-1.0.0/src/azathoth/prompting/context_strategy.py +75 -0
  122. azathoth_ai-1.0.0/src/azathoth/prompting/exceptions.py +29 -0
  123. azathoth_ai-1.0.0/src/azathoth/prompting/execution.py +75 -0
  124. azathoth_ai-1.0.0/src/azathoth/prompting/model_selection.py +33 -0
  125. azathoth_ai-1.0.0/src/azathoth/prompting/models.py +170 -0
  126. azathoth_ai-1.0.0/src/azathoth/prompting/output_format.py +52 -0
  127. azathoth_ai-1.0.0/src/azathoth/prompting/specifications.py +75 -0
  128. azathoth_ai-1.0.0/src/azathoth/prompting/strategy.py +74 -0
  129. azathoth_ai-1.0.0/src/azathoth/providers/__init__.py +133 -0
  130. azathoth_ai-1.0.0/src/azathoth/providers/catalog.py +61 -0
  131. azathoth_ai-1.0.0/src/azathoth/providers/catalog_loader.py +21 -0
  132. azathoth_ai-1.0.0/src/azathoth/providers/deterministic.py +38 -0
  133. azathoth_ai-1.0.0/src/azathoth/providers/exceptions.py +13 -0
  134. azathoth_ai-1.0.0/src/azathoth/providers/execution.py +40 -0
  135. azathoth_ai-1.0.0/src/azathoth/providers/memory_portfolio_repository.py +68 -0
  136. azathoth_ai-1.0.0/src/azathoth/providers/memory_provider_observation_repository.py +87 -0
  137. azathoth_ai-1.0.0/src/azathoth/providers/memory_repository.py +60 -0
  138. azathoth_ai-1.0.0/src/azathoth/providers/models.py +98 -0
  139. azathoth_ai-1.0.0/src/azathoth/providers/openrouter.py +131 -0
  140. azathoth_ai-1.0.0/src/azathoth/providers/openrouter_directory.py +337 -0
  141. azathoth_ai-1.0.0/src/azathoth/providers/openrouter_models.py +19 -0
  142. azathoth_ai-1.0.0/src/azathoth/providers/openrouter_registry.py +38 -0
  143. azathoth_ai-1.0.0/src/azathoth/providers/portfolio.py +72 -0
  144. azathoth_ai-1.0.0/src/azathoth/providers/portfolio_catalog.py +22 -0
  145. azathoth_ai-1.0.0/src/azathoth/providers/portfolio_loader.py +25 -0
  146. azathoth_ai-1.0.0/src/azathoth/providers/portfolio_repository.py +45 -0
  147. azathoth_ai-1.0.0/src/azathoth/providers/protocol.py +17 -0
  148. azathoth_ai-1.0.0/src/azathoth/providers/provider_catalog_synchronizer.py +49 -0
  149. azathoth_ai-1.0.0/src/azathoth/providers/provider_directory.py +32 -0
  150. azathoth_ai-1.0.0/src/azathoth/providers/provider_metadata.py +22 -0
  151. azathoth_ai-1.0.0/src/azathoth/providers/provider_models.py +113 -0
  152. azathoth_ai-1.0.0/src/azathoth/providers/provider_observation_repository.py +51 -0
  153. azathoth_ai-1.0.0/src/azathoth/providers/provider_observer.py +122 -0
  154. azathoth_ai-1.0.0/src/azathoth/providers/query.py +123 -0
  155. azathoth_ai-1.0.0/src/azathoth/providers/registry.py +65 -0
  156. azathoth_ai-1.0.0/src/azathoth/providers/repository.py +40 -0
  157. azathoth_ai-1.0.0/src/azathoth/providers/requirements.py +38 -0
  158. azathoth_ai-1.0.0/src/azathoth/providers/sqlite_portfolio_repository.py +184 -0
  159. azathoth_ai-1.0.0/src/azathoth/providers/sqlite_provider_observation_repository.py +235 -0
  160. azathoth_ai-1.0.0/src/azathoth/providers/sqlite_repository.py +165 -0
  161. azathoth_ai-1.0.0/src/azathoth/py.typed +0 -0
  162. azathoth_ai-1.0.0/src/azathoth/revisions/__init__.py +11 -0
  163. azathoth_ai-1.0.0/src/azathoth/revisions/digest.py +38 -0
  164. azathoth_ai-1.0.0/src/azathoth/runtime/__init__.py +17 -0
  165. azathoth_ai-1.0.0/src/azathoth/runtime/exceptions.py +13 -0
  166. azathoth_ai-1.0.0/src/azathoth/runtime/protocols.py +105 -0
  167. azathoth_ai-1.0.0/src/azathoth/runtime/runtime.py +232 -0
  168. azathoth_ai-1.0.0/src/azathoth/strategies/__init__.py +27 -0
  169. azathoth_ai-1.0.0/src/azathoth/strategies/event_field.py +59 -0
  170. azathoth_ai-1.0.0/src/azathoth/strategies/exceptions.py +13 -0
  171. azathoth_ai-1.0.0/src/azathoth/strategies/models.py +75 -0
  172. azathoth_ai-1.0.0/src/azathoth/strategies/protocols.py +21 -0
  173. azathoth_ai-1.0.0/src/azathoth/tools/__init__.py +108 -0
  174. azathoth_ai-1.0.0/src/azathoth/tools/catalog.py +72 -0
  175. azathoth_ai-1.0.0/src/azathoth/tools/catalog_loader.py +51 -0
  176. azathoth_ai-1.0.0/src/azathoth/tools/definition.py +34 -0
  177. azathoth_ai-1.0.0/src/azathoth/tools/dispatch.py +100 -0
  178. azathoth_ai-1.0.0/src/azathoth/tools/document.py +81 -0
  179. azathoth_ai-1.0.0/src/azathoth/tools/exceptions.py +13 -0
  180. azathoth_ai-1.0.0/src/azathoth/tools/execution.py +170 -0
  181. azathoth_ai-1.0.0/src/azathoth/tools/implementation.py +86 -0
  182. azathoth_ai-1.0.0/src/azathoth/tools/implementation_catalog.py +72 -0
  183. azathoth_ai-1.0.0/src/azathoth/tools/implementation_resolution.py +68 -0
  184. azathoth_ai-1.0.0/src/azathoth/tools/matching.py +45 -0
  185. azathoth_ai-1.0.0/src/azathoth/tools/memory_repository.py +310 -0
  186. azathoth_ai-1.0.0/src/azathoth/tools/process.py +179 -0
  187. azathoth_ai-1.0.0/src/azathoth/tools/protocols.py +20 -0
  188. azathoth_ai-1.0.0/src/azathoth/tools/repository.py +125 -0
  189. azathoth_ai-1.0.0/src/azathoth/tools/requirements.py +30 -0
  190. azathoth_ai-1.0.0/src/azathoth/tools/resolution.py +41 -0
  191. azathoth_ai-1.0.0/src/azathoth/tools/revision.py +226 -0
  192. azathoth_ai-1.0.0/src/azathoth/tools/sqlite_repository.py +830 -0
  193. azathoth_ai-1.0.0/src/azathoth/tools/strategy.py +106 -0
  194. azathoth_ai-1.0.0/src/azathoth/tools/testing.py +18 -0
  195. azathoth_ai-1.0.0/src/azathoth/tools/verification.py +55 -0
  196. azathoth_ai-1.0.0/src/azathoth/tools/verifier.py +61 -0
  197. azathoth_ai-1.0.0/src/azathoth/workflows/__init__.py +497 -0
  198. azathoth_ai-1.0.0/src/azathoth/workflows/attempt.py +59 -0
  199. azathoth_ai-1.0.0/src/azathoth/workflows/benchmark.py +593 -0
  200. azathoth_ai-1.0.0/src/azathoth/workflows/benchmark_case_source.py +143 -0
  201. azathoth_ai-1.0.0/src/azathoth/workflows/benchmark_execution_repository.py +63 -0
  202. azathoth_ai-1.0.0/src/azathoth/workflows/benchmark_record.py +433 -0
  203. azathoth_ai-1.0.0/src/azathoth/workflows/benchmark_recorder.py +198 -0
  204. azathoth_ai-1.0.0/src/azathoth/workflows/candidate.py +198 -0
  205. azathoth_ai-1.0.0/src/azathoth/workflows/catalog.py +89 -0
  206. azathoth_ai-1.0.0/src/azathoth/workflows/catalog_loader.py +38 -0
  207. azathoth_ai-1.0.0/src/azathoth/workflows/condition.py +86 -0
  208. azathoth_ai-1.0.0/src/azathoth/workflows/document.py +30 -0
  209. azathoth_ai-1.0.0/src/azathoth/workflows/evaluation.py +29 -0
  210. azathoth_ai-1.0.0/src/azathoth/workflows/execution.py +330 -0
  211. azathoth_ai-1.0.0/src/azathoth/workflows/experiment.py +145 -0
  212. azathoth_ai-1.0.0/src/azathoth/workflows/experiment_record.py +313 -0
  213. azathoth_ai-1.0.0/src/azathoth/workflows/experiment_recorder.py +26 -0
  214. azathoth_ai-1.0.0/src/azathoth/workflows/experiment_repository.py +43 -0
  215. azathoth_ai-1.0.0/src/azathoth/workflows/experiment_runner.py +269 -0
  216. azathoth_ai-1.0.0/src/azathoth/workflows/failure.py +11 -0
  217. azathoth_ai-1.0.0/src/azathoth/workflows/feedback.py +52 -0
  218. azathoth_ai-1.0.0/src/azathoth/workflows/feedback_repository.py +41 -0
  219. azathoth_ai-1.0.0/src/azathoth/workflows/generation.py +187 -0
  220. azathoth_ai-1.0.0/src/azathoth/workflows/input.py +39 -0
  221. azathoth_ai-1.0.0/src/azathoth/workflows/memory_benchmark_execution_repository.py +99 -0
  222. azathoth_ai-1.0.0/src/azathoth/workflows/memory_experiment_repository.py +70 -0
  223. azathoth_ai-1.0.0/src/azathoth/workflows/memory_feedback_repository.py +57 -0
  224. azathoth_ai-1.0.0/src/azathoth/workflows/memory_production_invocation_repository.py +91 -0
  225. azathoth_ai-1.0.0/src/azathoth/workflows/memory_production_invocation_run_repository.py +56 -0
  226. azathoth_ai-1.0.0/src/azathoth/workflows/memory_production_repository.py +53 -0
  227. azathoth_ai-1.0.0/src/azathoth/workflows/memory_production_revision_repository.py +64 -0
  228. azathoth_ai-1.0.0/src/azathoth/workflows/memory_repository.py +96 -0
  229. azathoth_ai-1.0.0/src/azathoth/workflows/memory_run_evaluation_repository.py +61 -0
  230. azathoth_ai-1.0.0/src/azathoth/workflows/memory_run_repository.py +55 -0
  231. azathoth_ai-1.0.0/src/azathoth/workflows/models.py +282 -0
  232. azathoth_ai-1.0.0/src/azathoth/workflows/observation.py +57 -0
  233. azathoth_ai-1.0.0/src/azathoth/workflows/production.py +197 -0
  234. azathoth_ai-1.0.0/src/azathoth/workflows/production_execution.py +257 -0
  235. azathoth_ai-1.0.0/src/azathoth/workflows/production_generation.py +124 -0
  236. azathoth_ai-1.0.0/src/azathoth/workflows/production_inspection.py +39 -0
  237. azathoth_ai-1.0.0/src/azathoth/workflows/production_invocation.py +119 -0
  238. azathoth_ai-1.0.0/src/azathoth/workflows/production_invocation_repository.py +60 -0
  239. azathoth_ai-1.0.0/src/azathoth/workflows/production_invocation_run.py +22 -0
  240. azathoth_ai-1.0.0/src/azathoth/workflows/production_invocation_run_repository.py +35 -0
  241. azathoth_ai-1.0.0/src/azathoth/workflows/production_invocation_service.py +100 -0
  242. azathoth_ai-1.0.0/src/azathoth/workflows/production_model_resolution.py +110 -0
  243. azathoth_ai-1.0.0/src/azathoth/workflows/production_repository.py +33 -0
  244. azathoth_ai-1.0.0/src/azathoth/workflows/production_revision_repository.py +41 -0
  245. azathoth_ai-1.0.0/src/azathoth/workflows/promotion.py +208 -0
  246. azathoth_ai-1.0.0/src/azathoth/workflows/ranker.py +48 -0
  247. azathoth_ai-1.0.0/src/azathoth/workflows/ranking.py +48 -0
  248. azathoth_ai-1.0.0/src/azathoth/workflows/references.py +114 -0
  249. azathoth_ai-1.0.0/src/azathoth/workflows/reliability.py +26 -0
  250. azathoth_ai-1.0.0/src/azathoth/workflows/repository.py +64 -0
  251. azathoth_ai-1.0.0/src/azathoth/workflows/result.py +102 -0
  252. azathoth_ai-1.0.0/src/azathoth/workflows/retry.py +48 -0
  253. azathoth_ai-1.0.0/src/azathoth/workflows/revision.py +111 -0
  254. azathoth_ai-1.0.0/src/azathoth/workflows/run_evaluation.py +30 -0
  255. azathoth_ai-1.0.0/src/azathoth/workflows/run_evaluation_repository.py +41 -0
  256. azathoth_ai-1.0.0/src/azathoth/workflows/run_failure.py +75 -0
  257. azathoth_ai-1.0.0/src/azathoth/workflows/run_repository.py +41 -0
  258. azathoth_ai-1.0.0/src/azathoth/workflows/runner.py +862 -0
  259. azathoth_ai-1.0.0/src/azathoth/workflows/scorecard.py +33 -0
  260. azathoth_ai-1.0.0/src/azathoth/workflows/scoring.py +163 -0
  261. azathoth_ai-1.0.0/src/azathoth/workflows/sqlite_benchmark_execution_repository.py +299 -0
  262. azathoth_ai-1.0.0/src/azathoth/workflows/sqlite_experiment_repository.py +228 -0
  263. azathoth_ai-1.0.0/src/azathoth/workflows/sqlite_feedback_repository.py +177 -0
  264. azathoth_ai-1.0.0/src/azathoth/workflows/sqlite_production_invocation_repository.py +358 -0
  265. azathoth_ai-1.0.0/src/azathoth/workflows/sqlite_production_invocation_run_repository.py +111 -0
  266. azathoth_ai-1.0.0/src/azathoth/workflows/sqlite_production_repository.py +153 -0
  267. azathoth_ai-1.0.0/src/azathoth/workflows/sqlite_production_revision_repository.py +193 -0
  268. azathoth_ai-1.0.0/src/azathoth/workflows/sqlite_repository.py +314 -0
  269. azathoth_ai-1.0.0/src/azathoth/workflows/sqlite_run_evaluation_repository.py +179 -0
  270. azathoth_ai-1.0.0/src/azathoth/workflows/sqlite_run_repository.py +175 -0
  271. azathoth_ai-1.0.0/src/azathoth/workflows/statistics.py +50 -0
  272. azathoth_ai-1.0.0/src/azathoth/workflows/steps.py +133 -0
  273. azathoth_ai-1.0.0/src/azathoth/workflows/usage.py +321 -0
  274. azathoth_ai-1.0.0/src/azathoth/workflows/usage_report.py +382 -0
  275. azathoth_ai-1.0.0/src/azathoth/workflows/value.py +118 -0
  276. azathoth_ai-1.0.0/src/azathoth_ai.egg-info/PKG-INFO +195 -0
  277. azathoth_ai-1.0.0/src/azathoth_ai.egg-info/SOURCES.txt +286 -0
  278. azathoth_ai-1.0.0/src/azathoth_ai.egg-info/dependency_links.txt +1 -0
  279. azathoth_ai-1.0.0/src/azathoth_ai.egg-info/entry_points.txt +2 -0
  280. azathoth_ai-1.0.0/src/azathoth_ai.egg-info/requires.txt +13 -0
  281. azathoth_ai-1.0.0/src/azathoth_ai.egg-info/top_level.txt +1 -0
  282. azathoth_ai-1.0.0/tests/test_adr_records.py +88 -0
  283. azathoth_ai-1.0.0/tests/test_distribution_artifact.py +389 -0
  284. azathoth_ai-1.0.0/tests/test_docs.py +485 -0
  285. azathoth_ai-1.0.0/tests/test_oss_v1_release_lifecycle.py +681 -0
  286. azathoth_ai-1.0.0/tests/test_package.py +177 -0
  287. azathoth_ai-1.0.0/tests/test_portable_paths.py +99 -0
  288. azathoth_ai-1.0.0/tests/test_public_packages.py +43 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 Eldritch, Inc.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,195 @@
1
+ Metadata-Version: 2.4
2
+ Name: azathoth-ai
3
+ Version: 1.0.0
4
+ Summary: An empirical optimization engine for context-aware AI workflows.
5
+ Author: Eris Discordia Montano
6
+ License: MIT
7
+ Project-URL: Homepage, https://github.com/EldritchInc/azathoth
8
+ Project-URL: Repository, https://github.com/EldritchInc/azathoth
9
+ Project-URL: Issues, https://github.com/EldritchInc/azathoth/issues
10
+ Project-URL: Funding, https://patreon.com/ErisDiscordiaM
11
+ Keywords: artificial-intelligence,llm,prompt-optimization,model-routing,evaluation,workflow-optimization
12
+ Classifier: Development Status :: 5 - Production/Stable
13
+ Classifier: License :: OSI Approved :: MIT License
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.11
16
+ Classifier: Programming Language :: Python :: 3.12
17
+ Classifier: Programming Language :: Python :: 3.13
18
+ Classifier: Typing :: Typed
19
+ Requires-Python: >=3.11
20
+ Description-Content-Type: text/markdown
21
+ License-File: LICENSE
22
+ Requires-Dist: httpx<1,>=0.28
23
+ Requires-Dist: jsonschema<5,>=4.18
24
+ Requires-Dist: pydantic>=2
25
+ Provides-Extra: dev
26
+ Requires-Dist: build; extra == "dev"
27
+ Requires-Dist: mypy; extra == "dev"
28
+ Requires-Dist: pytest; extra == "dev"
29
+ Requires-Dist: pytest-cov; extra == "dev"
30
+ Requires-Dist: ruff; extra == "dev"
31
+ Requires-Dist: setuptools>=68; extra == "dev"
32
+ Requires-Dist: types-jsonschema; extra == "dev"
33
+ Requires-Dist: wheel; extra == "dev"
34
+ Dynamic: license-file
35
+
36
+ # Azathoth
37
+
38
+ > Empirical optimization for context-aware AI workflows.
39
+
40
+ Azathoth is an open-source engine for building LLM workflows by composing
41
+ them rather than coding them, and then improving them with measured
42
+ evidence rather than intuition.
43
+
44
+ You describe a workflow as a JSON document:
45
+
46
+ - prompt steps that state model requirements instead of naming models;
47
+ - tool steps;
48
+ - child workflows and loops;
49
+ - the dependencies, conditions and failure policies between them.
50
+
51
+ Azathoth runs it and benchmarks it. It searches for the models that pass your
52
+ benchmark at the latency and cost you target. It deploys only what you
53
+ deliberately promote.
54
+
55
+ ```text
56
+ define ──► run ──► benchmark ──► optimize ──► promote ──► invoke production
57
+ ```
58
+
59
+ ## Workflows Are Composed, Not Coded
60
+
61
+ Most LLM workflows are programs: prompts in source files, models as
62
+ constants, control flow as code. Every change, whether a new model, a
63
+ reworded prompt or an extra review step, goes through engineering.
64
+
65
+ Azathoth makes building a workflow a composition activity. That moves LLM
66
+ workflows out of engineering and into the hands of the teams who run and own
67
+ them:
68
+
69
+ - **platform and DevOps teams** operate workflows like infrastructure: versioned
70
+ revisions, explicit promotion, production state and an audit trail of
71
+ every invocation;
72
+ - **domain experts** define what a good answer is, as benchmark cases, exact
73
+ or judged by a model, and Azathoth measures every candidate against them;
74
+ - **engineers** write **tools**: small, versioned, tested units of
75
+ deterministic work that workflows compose.
76
+
77
+ Writing code should be for tools, not for LLM workflows.
78
+
79
+ ## Quick Look
80
+
81
+ Install it in a virtual environment. The [install guide](https://github.com/EldritchInc/azathoth/blob/main/docs/install.md)
82
+ explains why a venv, and gives the Windows commands:
83
+
84
+ ```bash
85
+ python3 -m venv .venv
86
+ source .venv/bin/activate
87
+ python -m pip install azathoth-ai
88
+ azathoth --version
89
+ ```
90
+
91
+ From a clone of this repository, run a workflow built from two tools. It
92
+ needs no model and no API key:
93
+
94
+ ```bash
95
+ azathoth tool import examples/tools/word-count.json
96
+ azathoth tool import examples/tools/word-count-process.json
97
+ azathoth workflow import examples/workflows/redundant-word-count.json
98
+ azathoth workflow run a1000000-0000-4000-8000-000000000001 --input '"that is not dead which can eternal lie"' --output result
99
+ ```
100
+
101
+ It prints `8`. To go from there to a model-backed workflow that is
102
+ benchmarked, optimized, promoted and invoked in production, follow
103
+ [Getting Started](https://github.com/EldritchInc/azathoth/blob/main/docs/getting-started.md).
104
+
105
+ ## Documentation
106
+
107
+ | Guide | What it covers |
108
+ | --- | --- |
109
+ | [Installing Azathoth](https://github.com/EldritchInc/azathoth/blob/main/docs/install.md) | Python, a venv, `pip install`, checking it works, on macOS and Windows |
110
+ | [Connecting OpenRouter](https://github.com/EldritchInc/azathoth/blob/main/docs/openrouter.md) | An API key, finding and authorizing models, adding judges |
111
+ | [Getting Started](https://github.com/EldritchInc/azathoth/blob/main/docs/getting-started.md) | One workflow from import to production |
112
+ | [Examples Tour](https://github.com/EldritchInc/azathoth/blob/main/docs/examples.md) | Every example, from a word count to a novel |
113
+ | [Concepts](https://github.com/EldritchInc/azathoth/blob/main/docs/concepts.md) | How Azathoth is put together, and why |
114
+ | [CLI Reference](https://github.com/EldritchInc/azathoth/blob/main/src/azathoth/cli/README.md) | Every command, its options and its output |
115
+ | [Architecture Decisions](https://github.com/EldritchInc/azathoth/blob/main/docs/adrs/README.md) | The ADRs behind each boundary |
116
+ | [Contributing](https://github.com/EldritchInc/azathoth/blob/main/CONTRIBUTING.md) | Working on Azathoth itself |
117
+ | [Releasing](https://github.com/EldritchInc/azathoth/blob/main/RELEASING.md) | How a release is validated and published |
118
+
119
+ ## Examples
120
+
121
+ The [examples](https://github.com/EldritchInc/azathoth/tree/main/examples)
122
+ are complete, importable workflows, each with its benchmarks and end-to-end
123
+ tests:
124
+
125
+ - **word count**: tools, redundancy, and benchmark cases made from corrected
126
+ runs;
127
+ - **classify sentiment**: the whole lifecycle in one step;
128
+ - **child workflow** and **countdown loop**: composing workflows;
129
+ - **ticket triage**: conditional routing to specialists, and a cheaper
130
+ classifier found by the optimizer;
131
+ - **workflow writer**: a workflow that writes workflows and validates them;
132
+ - **code review**: three concurrent reviewers, merged by code rather than a
133
+ model;
134
+ - **novel**: nested loops that plan, draft, edit and revise a book.
135
+
136
+ ## What Azathoth Does
137
+
138
+ - **Composes workflows** from prompt, tool and child-workflow steps. Steps can
139
+ depend on each other, pass values by name, run conditionally, retry, and
140
+ fail in a controlled way.
141
+ - **Separates intent from models.** Steps state requirements, and Azathoth
142
+ chooses from the models you have authorized among those OpenRouter
143
+ currently offers.
144
+ - **Records everything**: every run, step, attempt, prompt, reply, token and
145
+ cost, as durable evidence.
146
+ - **Benchmarks** workflows with exact, normalized, schema and model-judged
147
+ semantic cases.
148
+ - **Optimizes** by trying strictly cheaper authorized models, step by step,
149
+ and ranking candidates on quality, reliability, latency and cost. The
150
+ report shows which model each step of the winner used.
151
+ - **Promotes deliberately.** Production runs only what was explicitly
152
+ promoted, on exact models, with a revision history and an invocation log.
153
+ Optimizing never deploys anything by itself.
154
+
155
+ Azathoth is also a typed Python library. The
156
+ [package READMEs](https://github.com/EldritchInc/azathoth/blob/main/docs/concepts.md#package-guide)
157
+ document each subsystem.
158
+
159
+ ## Design Principles
160
+
161
+ > **Persist what should happen. Compose what can execute. Record what
162
+ > actually happened. Change production deliberately.**
163
+
164
+ - **Evidence over intuition.** A candidate is better only once it has been
165
+ measured as better.
166
+ - **Composition over code.** Workflows are documents; code lives in tools.
167
+ - **Provider independence.** Workflows describe model requirements; providers
168
+ are attached at run time.
169
+ - **Explicit production authority.** Production is what you promoted, not the
170
+ latest optimizer winner or the cheapest model.
171
+ - **Immutable records.** Configuration, runs, evaluations and deployments are
172
+ never rewritten.
173
+
174
+ [Concepts](https://github.com/EldritchInc/azathoth/blob/main/docs/concepts.md)
175
+ explains each of these in depth.
176
+
177
+ ## Project Status
178
+
179
+ Azathoth 1.0 supports Python 3.11, 3.12 and 3.13 on Linux, macOS and Windows,
180
+ all tested in CI, with OpenRouter as its model provider.
181
+
182
+ ## Support the Project
183
+
184
+ If you find Azathoth useful and would like to support its continued
185
+ development, you can become a patron:
186
+
187
+ **❤️ Patreon:** https://patreon.com/ErisDiscordiaM
188
+
189
+ Your support funds ongoing development, experiments, documentation, testing
190
+ and long-term maintenance.
191
+
192
+ ## License
193
+
194
+ Azathoth is licensed under the
195
+ [MIT License](https://github.com/EldritchInc/azathoth/blob/main/LICENSE).
@@ -0,0 +1,160 @@
1
+ # Azathoth
2
+
3
+ > Empirical optimization for context-aware AI workflows.
4
+
5
+ Azathoth is an open-source engine for building LLM workflows by composing
6
+ them rather than coding them, and then improving them with measured
7
+ evidence rather than intuition.
8
+
9
+ You describe a workflow as a JSON document:
10
+
11
+ - prompt steps that state model requirements instead of naming models;
12
+ - tool steps;
13
+ - child workflows and loops;
14
+ - the dependencies, conditions and failure policies between them.
15
+
16
+ Azathoth runs it and benchmarks it. It searches for the models that pass your
17
+ benchmark at the latency and cost you target. It deploys only what you
18
+ deliberately promote.
19
+
20
+ ```text
21
+ define ──► run ──► benchmark ──► optimize ──► promote ──► invoke production
22
+ ```
23
+
24
+ ## Workflows Are Composed, Not Coded
25
+
26
+ Most LLM workflows are programs: prompts in source files, models as
27
+ constants, control flow as code. Every change, whether a new model, a
28
+ reworded prompt or an extra review step, goes through engineering.
29
+
30
+ Azathoth makes building a workflow a composition activity. That moves LLM
31
+ workflows out of engineering and into the hands of the teams who run and own
32
+ them:
33
+
34
+ - **platform and DevOps teams** operate workflows like infrastructure: versioned
35
+ revisions, explicit promotion, production state and an audit trail of
36
+ every invocation;
37
+ - **domain experts** define what a good answer is, as benchmark cases, exact
38
+ or judged by a model, and Azathoth measures every candidate against them;
39
+ - **engineers** write **tools**: small, versioned, tested units of
40
+ deterministic work that workflows compose.
41
+
42
+ Writing code should be for tools, not for LLM workflows.
43
+
44
+ ## Quick Look
45
+
46
+ Install it in a virtual environment. The [install guide](https://github.com/EldritchInc/azathoth/blob/main/docs/install.md)
47
+ explains why a venv, and gives the Windows commands:
48
+
49
+ ```bash
50
+ python3 -m venv .venv
51
+ source .venv/bin/activate
52
+ python -m pip install azathoth-ai
53
+ azathoth --version
54
+ ```
55
+
56
+ From a clone of this repository, run a workflow built from two tools. It
57
+ needs no model and no API key:
58
+
59
+ ```bash
60
+ azathoth tool import examples/tools/word-count.json
61
+ azathoth tool import examples/tools/word-count-process.json
62
+ azathoth workflow import examples/workflows/redundant-word-count.json
63
+ azathoth workflow run a1000000-0000-4000-8000-000000000001 --input '"that is not dead which can eternal lie"' --output result
64
+ ```
65
+
66
+ It prints `8`. To go from there to a model-backed workflow that is
67
+ benchmarked, optimized, promoted and invoked in production, follow
68
+ [Getting Started](https://github.com/EldritchInc/azathoth/blob/main/docs/getting-started.md).
69
+
70
+ ## Documentation
71
+
72
+ | Guide | What it covers |
73
+ | --- | --- |
74
+ | [Installing Azathoth](https://github.com/EldritchInc/azathoth/blob/main/docs/install.md) | Python, a venv, `pip install`, checking it works, on macOS and Windows |
75
+ | [Connecting OpenRouter](https://github.com/EldritchInc/azathoth/blob/main/docs/openrouter.md) | An API key, finding and authorizing models, adding judges |
76
+ | [Getting Started](https://github.com/EldritchInc/azathoth/blob/main/docs/getting-started.md) | One workflow from import to production |
77
+ | [Examples Tour](https://github.com/EldritchInc/azathoth/blob/main/docs/examples.md) | Every example, from a word count to a novel |
78
+ | [Concepts](https://github.com/EldritchInc/azathoth/blob/main/docs/concepts.md) | How Azathoth is put together, and why |
79
+ | [CLI Reference](https://github.com/EldritchInc/azathoth/blob/main/src/azathoth/cli/README.md) | Every command, its options and its output |
80
+ | [Architecture Decisions](https://github.com/EldritchInc/azathoth/blob/main/docs/adrs/README.md) | The ADRs behind each boundary |
81
+ | [Contributing](https://github.com/EldritchInc/azathoth/blob/main/CONTRIBUTING.md) | Working on Azathoth itself |
82
+ | [Releasing](https://github.com/EldritchInc/azathoth/blob/main/RELEASING.md) | How a release is validated and published |
83
+
84
+ ## Examples
85
+
86
+ The [examples](https://github.com/EldritchInc/azathoth/tree/main/examples)
87
+ are complete, importable workflows, each with its benchmarks and end-to-end
88
+ tests:
89
+
90
+ - **word count**: tools, redundancy, and benchmark cases made from corrected
91
+ runs;
92
+ - **classify sentiment**: the whole lifecycle in one step;
93
+ - **child workflow** and **countdown loop**: composing workflows;
94
+ - **ticket triage**: conditional routing to specialists, and a cheaper
95
+ classifier found by the optimizer;
96
+ - **workflow writer**: a workflow that writes workflows and validates them;
97
+ - **code review**: three concurrent reviewers, merged by code rather than a
98
+ model;
99
+ - **novel**: nested loops that plan, draft, edit and revise a book.
100
+
101
+ ## What Azathoth Does
102
+
103
+ - **Composes workflows** from prompt, tool and child-workflow steps. Steps can
104
+ depend on each other, pass values by name, run conditionally, retry, and
105
+ fail in a controlled way.
106
+ - **Separates intent from models.** Steps state requirements, and Azathoth
107
+ chooses from the models you have authorized among those OpenRouter
108
+ currently offers.
109
+ - **Records everything**: every run, step, attempt, prompt, reply, token and
110
+ cost, as durable evidence.
111
+ - **Benchmarks** workflows with exact, normalized, schema and model-judged
112
+ semantic cases.
113
+ - **Optimizes** by trying strictly cheaper authorized models, step by step,
114
+ and ranking candidates on quality, reliability, latency and cost. The
115
+ report shows which model each step of the winner used.
116
+ - **Promotes deliberately.** Production runs only what was explicitly
117
+ promoted, on exact models, with a revision history and an invocation log.
118
+ Optimizing never deploys anything by itself.
119
+
120
+ Azathoth is also a typed Python library. The
121
+ [package READMEs](https://github.com/EldritchInc/azathoth/blob/main/docs/concepts.md#package-guide)
122
+ document each subsystem.
123
+
124
+ ## Design Principles
125
+
126
+ > **Persist what should happen. Compose what can execute. Record what
127
+ > actually happened. Change production deliberately.**
128
+
129
+ - **Evidence over intuition.** A candidate is better only once it has been
130
+ measured as better.
131
+ - **Composition over code.** Workflows are documents; code lives in tools.
132
+ - **Provider independence.** Workflows describe model requirements; providers
133
+ are attached at run time.
134
+ - **Explicit production authority.** Production is what you promoted, not the
135
+ latest optimizer winner or the cheapest model.
136
+ - **Immutable records.** Configuration, runs, evaluations and deployments are
137
+ never rewritten.
138
+
139
+ [Concepts](https://github.com/EldritchInc/azathoth/blob/main/docs/concepts.md)
140
+ explains each of these in depth.
141
+
142
+ ## Project Status
143
+
144
+ Azathoth 1.0 supports Python 3.11, 3.12 and 3.13 on Linux, macOS and Windows,
145
+ all tested in CI, with OpenRouter as its model provider.
146
+
147
+ ## Support the Project
148
+
149
+ If you find Azathoth useful and would like to support its continued
150
+ development, you can become a patron:
151
+
152
+ **❤️ Patreon:** https://patreon.com/ErisDiscordiaM
153
+
154
+ Your support funds ongoing development, experiments, documentation, testing
155
+ and long-term maintenance.
156
+
157
+ ## License
158
+
159
+ Azathoth is licensed under the
160
+ [MIT License](https://github.com/EldritchInc/azathoth/blob/main/LICENSE).
@@ -0,0 +1,94 @@
1
+ [build-system]
2
+ requires = ["setuptools>=68", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "azathoth-ai"
7
+ version = "1.0.0"
8
+ description = "An empirical optimization engine for context-aware AI workflows."
9
+ readme = "README.md"
10
+ requires-python = ">=3.11"
11
+ license = { text = "MIT" }
12
+ authors = [
13
+ { name = "Eris Discordia Montano" }
14
+ ]
15
+ keywords = [
16
+ "artificial-intelligence",
17
+ "llm",
18
+ "prompt-optimization",
19
+ "model-routing",
20
+ "evaluation",
21
+ "workflow-optimization"
22
+ ]
23
+ classifiers = [
24
+ "Development Status :: 5 - Production/Stable",
25
+ "License :: OSI Approved :: MIT License",
26
+ "Programming Language :: Python :: 3",
27
+ "Programming Language :: Python :: 3.11",
28
+ "Programming Language :: Python :: 3.12",
29
+ "Programming Language :: Python :: 3.13",
30
+ "Typing :: Typed"
31
+ ]
32
+ dependencies = [
33
+ "httpx>=0.28,<1",
34
+ "jsonschema>=4.18,<5",
35
+ "pydantic>=2",
36
+ ]
37
+
38
+ [project.urls]
39
+ Homepage = "https://github.com/EldritchInc/azathoth"
40
+ Repository = "https://github.com/EldritchInc/azathoth"
41
+ Issues = "https://github.com/EldritchInc/azathoth/issues"
42
+ Funding = "https://patreon.com/ErisDiscordiaM"
43
+
44
+ [project.scripts]
45
+ azathoth = "azathoth.cli:main"
46
+
47
+ [tool.setuptools]
48
+ package-dir = {"" = "src"}
49
+
50
+ [tool.setuptools.packages.find]
51
+ where = ["src"]
52
+
53
+ [tool.setuptools.package-data]
54
+ azathoth = ["py.typed"]
55
+
56
+ [project.optional-dependencies]
57
+ dev = [
58
+ "build",
59
+ "mypy",
60
+ "pytest",
61
+ "pytest-cov",
62
+ "ruff",
63
+ "setuptools>=68",
64
+ "types-jsonschema",
65
+ "wheel",
66
+ ]
67
+
68
+ [tool.pytest.ini_options]
69
+ testpaths = ["tests"]
70
+ addopts = [
71
+ "--strict-markers",
72
+ "--strict-config",
73
+ "-ra",
74
+ ]
75
+
76
+ [tool.ruff]
77
+ line-length = 100
78
+ target-version = "py311"
79
+
80
+ [tool.ruff.lint]
81
+ select = [
82
+ "E",
83
+ "F",
84
+ "I",
85
+ "UP",
86
+ "B",
87
+ "SIM",
88
+ ]
89
+
90
+ [tool.mypy]
91
+ python_version = "3.11"
92
+ strict = true
93
+ warn_unreachable = true
94
+ pretty = true
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,3 @@
1
+ """Azathoth: empirical optimization for context-aware AI workflows."""
2
+
3
+ __version__ = "1.0.0"