agenta 0.62.3__tar.gz → 0.64.1__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 (422) hide show
  1. {agenta-0.62.3 → agenta-0.64.1}/PKG-INFO +9 -10
  2. {agenta-0.62.3 → agenta-0.64.1}/README.md +7 -7
  3. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/projects_response.py +1 -0
  4. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/agenta_init.py +9 -7
  5. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/assets.py +1 -0
  6. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/decorators/routing.py +2 -0
  7. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/evaluations/runs.py +5 -6
  8. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/litellm/litellm.py +12 -0
  9. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/managers/secrets.py +35 -19
  10. agenta-0.64.1/agenta/sdk/middleware/vault.py +333 -0
  11. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/tracing/exporters.py +4 -4
  12. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/types.py +35 -2
  13. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/utils/helpers.py +13 -12
  14. {agenta-0.62.3 → agenta-0.64.1}/pyproject.toml +2 -3
  15. agenta-0.62.3/agenta/sdk/middleware/vault.py +0 -138
  16. {agenta-0.62.3 → agenta-0.64.1}/agenta/__init__.py +0 -0
  17. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/Readme.md +0 -0
  18. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/__init__.py +0 -0
  19. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/__init__.py +0 -0
  20. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/access_control/__init__.py +0 -0
  21. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/access_control/client.py +0 -0
  22. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/access_control/raw_client.py +0 -0
  23. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/admin/__init__.py +0 -0
  24. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/admin/client.py +0 -0
  25. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/admin/raw_client.py +0 -0
  26. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/api_keys/__init__.py +0 -0
  27. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/api_keys/client.py +0 -0
  28. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/api_keys/raw_client.py +0 -0
  29. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/apps/__init__.py +0 -0
  30. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/apps/client.py +0 -0
  31. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/apps/raw_client.py +0 -0
  32. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/bases/__init__.py +0 -0
  33. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/bases/client.py +0 -0
  34. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/bases/raw_client.py +0 -0
  35. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/billing/__init__.py +0 -0
  36. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/billing/client.py +0 -0
  37. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/billing/raw_client.py +0 -0
  38. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/client.py +0 -0
  39. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/configs/__init__.py +0 -0
  40. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/configs/client.py +0 -0
  41. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/configs/raw_client.py +0 -0
  42. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/containers/__init__.py +0 -0
  43. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/containers/client.py +0 -0
  44. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/containers/raw_client.py +0 -0
  45. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/core/__init__.py +0 -0
  46. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/core/api_error.py +0 -0
  47. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/core/client_wrapper.py +0 -0
  48. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/core/datetime_utils.py +0 -0
  49. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/core/file.py +0 -0
  50. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/core/force_multipart.py +0 -0
  51. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/core/http_client.py +0 -0
  52. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/core/http_response.py +0 -0
  53. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/core/jsonable_encoder.py +0 -0
  54. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/core/pydantic_utilities.py +0 -0
  55. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/core/query_encoder.py +0 -0
  56. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/core/remove_none_from_dict.py +0 -0
  57. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/core/request_options.py +0 -0
  58. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/core/serialization.py +0 -0
  59. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/environment.py +0 -0
  60. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/environments/__init__.py +0 -0
  61. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/environments/client.py +0 -0
  62. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/environments/raw_client.py +0 -0
  63. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/errors/__init__.py +0 -0
  64. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/errors/unprocessable_entity_error.py +0 -0
  65. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/evals/__init__.py +0 -0
  66. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/evals/client.py +0 -0
  67. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/evals/raw_client.py +0 -0
  68. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/evaluations/__init__.py +0 -0
  69. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/evaluations/client.py +0 -0
  70. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/evaluations/raw_client.py +0 -0
  71. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/evaluators/__init__.py +0 -0
  72. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/evaluators/client.py +0 -0
  73. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/evaluators/raw_client.py +0 -0
  74. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/human_evaluations/__init__.py +0 -0
  75. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/human_evaluations/client.py +0 -0
  76. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/human_evaluations/raw_client.py +0 -0
  77. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/observability/__init__.py +0 -0
  78. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/observability/client.py +0 -0
  79. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/observability/raw_client.py +0 -0
  80. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/observability/types/__init__.py +0 -0
  81. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/observability/types/fetch_trace_by_id_request_trace_id.py +0 -0
  82. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/observability/types/fetch_trace_by_id_response.py +0 -0
  83. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/observability/types/query_analytics_response.py +0 -0
  84. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/observability/types/query_traces_response.py +0 -0
  85. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/organization/__init__.py +0 -0
  86. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/organization/client.py +0 -0
  87. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/organization/raw_client.py +0 -0
  88. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/raw_client.py +0 -0
  89. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/scopes/__init__.py +0 -0
  90. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/scopes/client.py +0 -0
  91. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/scopes/raw_client.py +0 -0
  92. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/testsets/__init__.py +0 -0
  93. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/testsets/client.py +0 -0
  94. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/testsets/raw_client.py +0 -0
  95. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/testsets/types/__init__.py +0 -0
  96. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/testsets/types/create_testset_from_file_request_file_type.py +0 -0
  97. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/testsets/types/fetch_testset_to_file_request_file_type.py +0 -0
  98. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/testsets/types/update_testset_from_file_request_file_type.py +0 -0
  99. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/tracing/__init__.py +0 -0
  100. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/tracing/client.py +0 -0
  101. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/tracing/raw_client.py +0 -0
  102. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/tracing/types/__init__.py +0 -0
  103. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/tracing/types/fetch_trace_request_trace_id.py +0 -0
  104. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/tracing/types/remove_trace_request_trace_id.py +0 -0
  105. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/__init__.py +0 -0
  106. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/account_request.py +0 -0
  107. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/account_response.py +0 -0
  108. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/agenta_node_dto.py +0 -0
  109. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/agenta_node_dto_nodes_value.py +0 -0
  110. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/agenta_nodes_response.py +0 -0
  111. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/agenta_root_dto.py +0 -0
  112. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/agenta_roots_response.py +0 -0
  113. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/agenta_tree_dto.py +0 -0
  114. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/agenta_trees_response.py +0 -0
  115. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/aggregated_result.py +0 -0
  116. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/aggregated_result_evaluator_config.py +0 -0
  117. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/analytics_response.py +0 -0
  118. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/annotation.py +0 -0
  119. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/annotation_create.py +0 -0
  120. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/annotation_edit.py +0 -0
  121. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/annotation_kind.py +0 -0
  122. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/annotation_link.py +0 -0
  123. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/annotation_link_response.py +0 -0
  124. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/annotation_query.py +0 -0
  125. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/annotation_query_request.py +0 -0
  126. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/annotation_reference.py +0 -0
  127. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/annotation_references.py +0 -0
  128. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/annotation_response.py +0 -0
  129. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/annotation_source.py +0 -0
  130. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/annotations_response.py +0 -0
  131. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/app.py +0 -0
  132. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/app_variant_response.py +0 -0
  133. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/app_variant_revision.py +0 -0
  134. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/artifact.py +0 -0
  135. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/base_output.py +0 -0
  136. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/body_fetch_workflow_revision.py +0 -0
  137. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/body_import_testset.py +0 -0
  138. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/bucket_dto.py +0 -0
  139. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/collect_status_response.py +0 -0
  140. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/config_db.py +0 -0
  141. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/config_dto.py +0 -0
  142. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/config_response_model.py +0 -0
  143. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/correct_answer.py +0 -0
  144. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/create_app_output.py +0 -0
  145. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/custom_model_settings_dto.py +0 -0
  146. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/custom_provider_dto.py +0 -0
  147. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/custom_provider_kind.py +0 -0
  148. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/custom_provider_settings_dto.py +0 -0
  149. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/data.py +0 -0
  150. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/delete_evaluation.py +0 -0
  151. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/environment_output.py +0 -0
  152. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/environment_output_extended.py +0 -0
  153. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/environment_revision.py +0 -0
  154. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/error.py +0 -0
  155. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/evaluation.py +0 -0
  156. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/evaluation_scenario.py +0 -0
  157. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/evaluation_scenario_input.py +0 -0
  158. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/evaluation_scenario_output.py +0 -0
  159. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/evaluation_scenario_result.py +0 -0
  160. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/evaluation_status_enum.py +0 -0
  161. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/evaluation_type.py +0 -0
  162. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/evaluator.py +0 -0
  163. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/evaluator_config.py +0 -0
  164. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/evaluator_flags.py +0 -0
  165. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/evaluator_mapping_output_interface.py +0 -0
  166. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/evaluator_output_interface.py +0 -0
  167. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/evaluator_query.py +0 -0
  168. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/evaluator_query_request.py +0 -0
  169. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/evaluator_request.py +0 -0
  170. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/evaluator_response.py +0 -0
  171. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/evaluators_response.py +0 -0
  172. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/exception_dto.py +0 -0
  173. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/extended_o_tel_tracing_response.py +0 -0
  174. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/focus.py +0 -0
  175. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/format.py +0 -0
  176. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/full_json_input.py +0 -0
  177. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/full_json_output.py +0 -0
  178. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/get_config_response.py +0 -0
  179. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/header.py +0 -0
  180. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/http_validation_error.py +0 -0
  181. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/human_evaluation.py +0 -0
  182. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/human_evaluation_scenario.py +0 -0
  183. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/human_evaluation_scenario_input.py +0 -0
  184. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/human_evaluation_scenario_output.py +0 -0
  185. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/invite_request.py +0 -0
  186. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/legacy_analytics_response.py +0 -0
  187. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/legacy_data_point.py +0 -0
  188. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/legacy_evaluator.py +0 -0
  189. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/legacy_scope_request.py +0 -0
  190. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/legacy_scopes_response.py +0 -0
  191. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/legacy_subscription_request.py +0 -0
  192. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/legacy_user_request.py +0 -0
  193. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/legacy_user_response.py +0 -0
  194. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/lifecycle_dto.py +0 -0
  195. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/link_dto.py +0 -0
  196. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/list_api_keys_response.py +0 -0
  197. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/llm_run_rate_limit.py +0 -0
  198. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/meta_request.py +0 -0
  199. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/metrics_dto.py +0 -0
  200. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/new_testset.py +0 -0
  201. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/node_dto.py +0 -0
  202. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/node_type.py +0 -0
  203. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/o_tel_context_dto.py +0 -0
  204. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/o_tel_event.py +0 -0
  205. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/o_tel_event_dto.py +0 -0
  206. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/o_tel_extra_dto.py +0 -0
  207. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/o_tel_flat_span.py +0 -0
  208. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/o_tel_flat_span_input_end_time.py +0 -0
  209. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/o_tel_flat_span_input_start_time.py +0 -0
  210. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/o_tel_flat_span_output_end_time.py +0 -0
  211. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/o_tel_flat_span_output_start_time.py +0 -0
  212. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/o_tel_link.py +0 -0
  213. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/o_tel_link_dto.py +0 -0
  214. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/o_tel_links_response.py +0 -0
  215. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/o_tel_span.py +0 -0
  216. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/o_tel_span_dto.py +0 -0
  217. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/o_tel_span_input_end_time.py +0 -0
  218. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/o_tel_span_input_spans_value.py +0 -0
  219. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/o_tel_span_input_start_time.py +0 -0
  220. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/o_tel_span_kind.py +0 -0
  221. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/o_tel_span_output_end_time.py +0 -0
  222. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/o_tel_span_output_spans_value.py +0 -0
  223. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/o_tel_span_output_start_time.py +0 -0
  224. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/o_tel_spans_tree.py +0 -0
  225. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/o_tel_spans_tree_input_spans_value.py +0 -0
  226. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/o_tel_spans_tree_output_spans_value.py +0 -0
  227. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/o_tel_status_code.py +0 -0
  228. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/o_tel_tracing_data_response.py +0 -0
  229. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/o_tel_tracing_request.py +0 -0
  230. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/o_tel_tracing_response.py +0 -0
  231. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/organization.py +0 -0
  232. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/organization_details.py +0 -0
  233. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/organization_membership_request.py +0 -0
  234. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/organization_output.py +0 -0
  235. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/organization_request.py +0 -0
  236. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/parent_dto.py +0 -0
  237. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/permission.py +0 -0
  238. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/plan.py +0 -0
  239. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/project_membership_request.py +0 -0
  240. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/project_request.py +0 -0
  241. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/project_scope.py +0 -0
  242. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/recursive_types.py +0 -0
  243. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/reference.py +0 -0
  244. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/reference_dto.py +0 -0
  245. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/reference_request_model.py +0 -0
  246. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/result.py +0 -0
  247. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/role.py +0 -0
  248. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/root_dto.py +0 -0
  249. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/scopes_response_model.py +0 -0
  250. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/score.py +0 -0
  251. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/secret_dto.py +0 -0
  252. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/secret_kind.py +0 -0
  253. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/secret_response_dto.py +0 -0
  254. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/simple_evaluation_output.py +0 -0
  255. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/span_dto.py +0 -0
  256. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/span_dto_nodes_value.py +0 -0
  257. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/standard_provider_dto.py +0 -0
  258. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/standard_provider_kind.py +0 -0
  259. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/standard_provider_settings_dto.py +0 -0
  260. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/status_code.py +0 -0
  261. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/status_dto.py +0 -0
  262. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/tags_request.py +0 -0
  263. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/testcase_response.py +0 -0
  264. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/testset.py +0 -0
  265. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/testset_output_response.py +0 -0
  266. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/testset_request.py +0 -0
  267. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/testset_response.py +0 -0
  268. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/testset_simple_response.py +0 -0
  269. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/testsets_response.py +0 -0
  270. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/time_dto.py +0 -0
  271. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/timestamp.py +0 -0
  272. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/tree_dto.py +0 -0
  273. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/tree_type.py +0 -0
  274. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/update_app_output.py +0 -0
  275. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/user_request.py +0 -0
  276. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/validation_error.py +0 -0
  277. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/validation_error_loc_item.py +0 -0
  278. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/workflow_artifact.py +0 -0
  279. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/workflow_data.py +0 -0
  280. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/workflow_flags.py +0 -0
  281. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/workflow_request.py +0 -0
  282. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/workflow_response.py +0 -0
  283. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/workflow_revision.py +0 -0
  284. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/workflow_revision_request.py +0 -0
  285. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/workflow_revision_response.py +0 -0
  286. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/workflow_revisions_response.py +0 -0
  287. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/workflow_variant.py +0 -0
  288. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/workflow_variant_request.py +0 -0
  289. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/workflow_variant_response.py +0 -0
  290. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/workflow_variants_response.py +0 -0
  291. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/workflows_response.py +0 -0
  292. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/workspace.py +0 -0
  293. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/workspace_member_response.py +0 -0
  294. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/workspace_membership_request.py +0 -0
  295. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/workspace_permission.py +0 -0
  296. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/workspace_request.py +0 -0
  297. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/workspace_response.py +0 -0
  298. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/workspace_role.py +0 -0
  299. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/types/workspace_role_response.py +0 -0
  300. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/variants/__init__.py +0 -0
  301. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/variants/client.py +0 -0
  302. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/variants/raw_client.py +0 -0
  303. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/variants/types/__init__.py +0 -0
  304. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/variants/types/add_variant_from_base_and_config_response.py +0 -0
  305. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/vault/__init__.py +0 -0
  306. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/vault/client.py +0 -0
  307. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/vault/raw_client.py +0 -0
  308. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/workflows/__init__.py +0 -0
  309. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/workflows/client.py +0 -0
  310. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/workflows/raw_client.py +0 -0
  311. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/workspace/__init__.py +0 -0
  312. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/workspace/client.py +0 -0
  313. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/backend/workspace/raw_client.py +0 -0
  314. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/client.py +0 -0
  315. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/types/provider_key_dto.py~HEAD +0 -0
  316. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/types/provider_key_dto.py~feat_model-registry +0 -0
  317. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/types/provider_kind.py~HEAD +0 -0
  318. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/types/provider_kind.py~feat_model-registry +0 -0
  319. {agenta-0.62.3 → agenta-0.64.1}/agenta/client/types.py +0 -0
  320. {agenta-0.62.3 → agenta-0.64.1}/agenta/config.py +0 -0
  321. {agenta-0.62.3 → agenta-0.64.1}/agenta/config.toml +0 -0
  322. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/__init__.py +0 -0
  323. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/context/__init__.py +0 -0
  324. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/context/running.py +0 -0
  325. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/context/serving.py +0 -0
  326. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/context/tracing.py +0 -0
  327. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/contexts/__init__.py +0 -0
  328. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/contexts/routing.py +0 -0
  329. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/contexts/running.py +0 -0
  330. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/contexts/tracing.py +0 -0
  331. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/decorators/__init__.py +0 -0
  332. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/decorators/running.py +0 -0
  333. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/decorators/serving.py +0 -0
  334. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/decorators/tracing.py +0 -0
  335. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/engines/__init__.py +0 -0
  336. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/engines/running/__init__.py +0 -0
  337. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/engines/running/registry.py +0 -0
  338. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/engines/running/utils.py +0 -0
  339. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/engines/tracing/__init__.py +0 -0
  340. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/engines/tracing/attributes.py +0 -0
  341. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/engines/tracing/conventions.py +0 -0
  342. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/engines/tracing/exporters.py +0 -0
  343. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/engines/tracing/inline.py +0 -0
  344. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/engines/tracing/processors.py +0 -0
  345. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/engines/tracing/propagation.py +0 -0
  346. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/engines/tracing/spans.py +0 -0
  347. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/engines/tracing/tracing.py +0 -0
  348. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/evaluations/__init__.py +0 -0
  349. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/evaluations/metrics.py +0 -0
  350. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/evaluations/preview/__init__.py +0 -0
  351. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/evaluations/preview/evaluate.py +0 -0
  352. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/evaluations/preview/utils.py +0 -0
  353. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/evaluations/results.py +0 -0
  354. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/evaluations/scenarios.py +0 -0
  355. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/litellm/__init__.py +0 -0
  356. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/litellm/mockllm.py +0 -0
  357. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/litellm/mocks/__init__.py +0 -0
  358. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/managers/__init__.py +0 -0
  359. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/managers/applications.py +0 -0
  360. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/managers/apps.py +0 -0
  361. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/managers/config.py +0 -0
  362. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/managers/deployment.py +0 -0
  363. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/managers/evaluations.py +0 -0
  364. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/managers/evaluators.py +0 -0
  365. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/managers/shared.py +0 -0
  366. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/managers/testsets.py +0 -0
  367. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/managers/variant.py +0 -0
  368. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/managers/vault.py +0 -0
  369. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/middleware/__init__.py +0 -0
  370. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/middleware/auth.py +0 -0
  371. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/middleware/config.py +0 -0
  372. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/middleware/cors.py +0 -0
  373. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/middleware/inline.py +0 -0
  374. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/middleware/mock.py +0 -0
  375. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/middleware/otel.py +0 -0
  376. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/middlewares/__init__.py +0 -0
  377. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/middlewares/routing/__init__.py +0 -0
  378. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/middlewares/routing/auth.py +0 -0
  379. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/middlewares/routing/cors.py +0 -0
  380. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/middlewares/routing/otel.py +0 -0
  381. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/middlewares/running/__init__.py +0 -0
  382. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/middlewares/running/normalizer.py +0 -0
  383. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/middlewares/running/resolver.py +0 -0
  384. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/middlewares/running/vault.py +0 -0
  385. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/models/__init__.py +0 -0
  386. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/models/blobs.py +0 -0
  387. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/models/evaluations.py +0 -0
  388. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/models/git.py +0 -0
  389. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/models/shared.py +0 -0
  390. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/models/testsets.py +0 -0
  391. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/models/tracing.py +0 -0
  392. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/models/workflows.py +0 -0
  393. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/router.py +0 -0
  394. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/tracing/__init__.py +0 -0
  395. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/tracing/attributes.py +0 -0
  396. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/tracing/conventions.py +0 -0
  397. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/tracing/inline.py +0 -0
  398. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/tracing/processors.py +0 -0
  399. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/tracing/propagation.py +0 -0
  400. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/tracing/spans.py +0 -0
  401. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/tracing/tracing.py +0 -0
  402. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/utils/__init__.py +0 -0
  403. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/utils/cache.py +0 -0
  404. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/utils/client.py +0 -0
  405. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/utils/constants.py +0 -0
  406. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/utils/costs.py +0 -0
  407. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/utils/exceptions.py +0 -0
  408. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/utils/globals.py +0 -0
  409. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/utils/logging.py +0 -0
  410. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/utils/otel.py +0 -0
  411. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/utils/preinit.py +0 -0
  412. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/utils/references.py +0 -0
  413. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/utils/singleton.py +0 -0
  414. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/utils/timing.py +0 -0
  415. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/workflows/__init__.py +0 -0
  416. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/workflows/builtin.py +0 -0
  417. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/workflows/configurations.py +0 -0
  418. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/workflows/errors.py +0 -0
  419. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/workflows/handlers.py +0 -0
  420. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/workflows/interfaces.py +0 -0
  421. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/workflows/sandbox.py +0 -0
  422. {agenta-0.62.3 → agenta-0.64.1}/agenta/sdk/workflows/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agenta
3
- Version: 0.62.3
3
+ Version: 0.64.1
4
4
  Summary: The SDK for agenta is an open-source LLMOps platform.
5
5
  Keywords: LLMOps,LLM,evaluation,prompt engineering
6
6
  Author: Mahmoud Mabrouk
@@ -16,7 +16,7 @@ Classifier: Programming Language :: Python :: 3.14
16
16
  Classifier: Programming Language :: Python :: 3.9
17
17
  Classifier: Topic :: Software Development :: Libraries
18
18
  Requires-Dist: decorator (>=5.2.1,<6.0.0)
19
- Requires-Dist: fastapi (>=0.116.0,<0.117.0)
19
+ Requires-Dist: fastapi (>=0.122.0,<0.123.0)
20
20
  Requires-Dist: google-auth (>=2.23,<3)
21
21
  Requires-Dist: h11 (>=0.16.0,<0.17.0)
22
22
  Requires-Dist: httpx (>=0.28.0,<0.29.0)
@@ -34,7 +34,6 @@ Requires-Dist: python-dotenv (>=1.0.0,<2.0.0)
34
34
  Requires-Dist: python-jsonpath (>=2.0.0,<3.0.0)
35
35
  Requires-Dist: pyyaml (>=6.0.2,<7.0.0)
36
36
  Requires-Dist: restrictedpython (>=8.0,<9.0) ; python_version >= "3.11" and python_version < "3.14"
37
- Requires-Dist: starlette (>=0.47.0,<0.48.0)
38
37
  Requires-Dist: structlog (>=25.2.0,<26.0.0)
39
38
  Requires-Dist: tiktoken (==0.11.0)
40
39
  Requires-Dist: toml (>=0.10.2,<0.11.0)
@@ -61,9 +60,9 @@ Description-Content-Type: text/markdown
61
60
  <div align="center" >
62
61
  <a href="https://cloud.agenta.ai?utm_source=github&utm_medium=referral&utm_campaign=readme">
63
62
  <picture >
64
- <source media="(prefers-color-scheme: dark)" srcset="https://imagedelivery.net/UNvjPBCIZFONpkVPQTxVuA/9a4fde42-c96c-4ec2-b8d1-c8c0e3851a00/large" >
65
- <source media="(prefers-color-scheme: light)" srcset="https://imagedelivery.net/UNvjPBCIZFONpkVPQTxVuA/98140352-14c0-4db1-bafb-a1e8d271d500/large" >
66
- <img alt="Shows the logo of agenta" src="https://imagedelivery.net/UNvjPBCIZFONpkVPQTxVuA/98140352-14c0-4db1-bafb-a1e8d271d500/large" >
63
+ <source media="(prefers-color-scheme: dark)" srcset="https://imagedelivery.net/UNvjPBCIZFONpkVPQTxVuA/6fa19a9d-9785-4acf-5d08-e81b1e38b100/large" >
64
+ <source media="(prefers-color-scheme: light)" srcset="https://imagedelivery.net/UNvjPBCIZFONpkVPQTxVuA/6fa19a9d-9785-4acf-5d08-e81b1e38b100/large" >
65
+ <img alt="Shows the logo of agenta" src="https://imagedelivery.net/UNvjPBCIZFONpkVPQTxVuA/6fa19a9d-9785-4acf-5d08-e81b1e38b100/large" >
67
66
  </picture>
68
67
  </a>
69
68
  </div>
@@ -155,10 +154,10 @@ Get visibility into your LLM applications in production.
155
154
 
156
155
  ## 📸 Screenshots
157
156
 
158
- <img alt="Playground" src="https://imagedelivery.net/UNvjPBCIZFONpkVPQTxVuA/e7d16967-d564-4148-3615-03bfe2a29d00/large" />
159
- <img alt="Prompt Management" src="https://imagedelivery.net/UNvjPBCIZFONpkVPQTxVuA/b4210a13-b41e-4dfd-d383-4286fb011e00/large" />
160
- <img alt="Evaluation" src="https://imagedelivery.net/UNvjPBCIZFONpkVPQTxVuA/4b1c62b9-ff6e-4bd1-4c8d-de59b8485e00/large" />
161
- <img alt="Observability" src="https://imagedelivery.net/UNvjPBCIZFONpkVPQTxVuA/5c764759-e525-499e-544a-1077c45e9600/large" />
157
+ <img alt="Playground" src="https://imagedelivery.net/UNvjPBCIZFONpkVPQTxVuA/a4f67ac4-1acc-40c6-7a1a-5616eee7bb00/large" />
158
+ <img alt="Prompt Management" src="https://imagedelivery.net/UNvjPBCIZFONpkVPQTxVuA/65f697d0-3221-4e3c-7232-f350b1976a00/large" />
159
+ <img alt="Evaluation" src="https://imagedelivery.net/UNvjPBCIZFONpkVPQTxVuA/19b5b77e-6945-4419-15b9-cfea197e1300/large" />
160
+ <img alt="Observability" src="https://imagedelivery.net/UNvjPBCIZFONpkVPQTxVuA/efc8a24c-2a2a-427c-f285-7d8b41200700/large" />
162
161
 
163
162
  ## 🚀 Getting Started
164
163
 
@@ -16,9 +16,9 @@
16
16
  <div align="center" >
17
17
  <a href="https://cloud.agenta.ai?utm_source=github&utm_medium=referral&utm_campaign=readme">
18
18
  <picture >
19
- <source media="(prefers-color-scheme: dark)" srcset="https://imagedelivery.net/UNvjPBCIZFONpkVPQTxVuA/9a4fde42-c96c-4ec2-b8d1-c8c0e3851a00/large" >
20
- <source media="(prefers-color-scheme: light)" srcset="https://imagedelivery.net/UNvjPBCIZFONpkVPQTxVuA/98140352-14c0-4db1-bafb-a1e8d271d500/large" >
21
- <img alt="Shows the logo of agenta" src="https://imagedelivery.net/UNvjPBCIZFONpkVPQTxVuA/98140352-14c0-4db1-bafb-a1e8d271d500/large" >
19
+ <source media="(prefers-color-scheme: dark)" srcset="https://imagedelivery.net/UNvjPBCIZFONpkVPQTxVuA/6fa19a9d-9785-4acf-5d08-e81b1e38b100/large" >
20
+ <source media="(prefers-color-scheme: light)" srcset="https://imagedelivery.net/UNvjPBCIZFONpkVPQTxVuA/6fa19a9d-9785-4acf-5d08-e81b1e38b100/large" >
21
+ <img alt="Shows the logo of agenta" src="https://imagedelivery.net/UNvjPBCIZFONpkVPQTxVuA/6fa19a9d-9785-4acf-5d08-e81b1e38b100/large" >
22
22
  </picture>
23
23
  </a>
24
24
  </div>
@@ -110,10 +110,10 @@ Get visibility into your LLM applications in production.
110
110
 
111
111
  ## 📸 Screenshots
112
112
 
113
- <img alt="Playground" src="https://imagedelivery.net/UNvjPBCIZFONpkVPQTxVuA/e7d16967-d564-4148-3615-03bfe2a29d00/large" />
114
- <img alt="Prompt Management" src="https://imagedelivery.net/UNvjPBCIZFONpkVPQTxVuA/b4210a13-b41e-4dfd-d383-4286fb011e00/large" />
115
- <img alt="Evaluation" src="https://imagedelivery.net/UNvjPBCIZFONpkVPQTxVuA/4b1c62b9-ff6e-4bd1-4c8d-de59b8485e00/large" />
116
- <img alt="Observability" src="https://imagedelivery.net/UNvjPBCIZFONpkVPQTxVuA/5c764759-e525-499e-544a-1077c45e9600/large" />
113
+ <img alt="Playground" src="https://imagedelivery.net/UNvjPBCIZFONpkVPQTxVuA/a4f67ac4-1acc-40c6-7a1a-5616eee7bb00/large" />
114
+ <img alt="Prompt Management" src="https://imagedelivery.net/UNvjPBCIZFONpkVPQTxVuA/65f697d0-3221-4e3c-7232-f350b1976a00/large" />
115
+ <img alt="Evaluation" src="https://imagedelivery.net/UNvjPBCIZFONpkVPQTxVuA/19b5b77e-6945-4419-15b9-cfea197e1300/large" />
116
+ <img alt="Observability" src="https://imagedelivery.net/UNvjPBCIZFONpkVPQTxVuA/efc8a24c-2a2a-427c-f285-7d8b41200700/large" />
117
117
 
118
118
  ## 🚀 Getting Started
119
119
 
@@ -13,6 +13,7 @@ class ProjectsResponse(UniversalBaseModel):
13
13
  workspace_name: typing.Optional[str] = None
14
14
  project_id: str
15
15
  project_name: str
16
+ is_default_project: bool = False
16
17
  user_role: typing.Optional[str] = None
17
18
  is_demo: typing.Optional[bool] = None
18
19
 
@@ -85,28 +85,30 @@ class AgentaSingleton:
85
85
 
86
86
  _api_url = (
87
87
  api_url
88
+ or getenv("AGENTA_API_INTERNAL_URL")
88
89
  or getenv("AGENTA_API_URL")
89
90
  or config.get("api_url")
90
91
  or None # NO FALLBACK
91
92
  )
92
93
 
93
94
  if _api_url:
95
+ _api_url = parse_url(url=_api_url)
94
96
  _host = _api_url.rsplit("/api", 1)[0]
95
-
96
- if _host and not _api_url:
97
+ elif _host:
98
+ _host = parse_url(url=_host)
97
99
  _api_url = _host + "/api"
98
100
 
99
101
  try:
100
- assert _host and isinstance(_host, str), (
101
- "Host is required. Please provide a valid host or set AGENTA_HOST environment variable."
102
+ assert _api_url and isinstance(_api_url, str), (
103
+ "API URL is required. Please provide a valid API URL or set AGENTA_API_URL environment variable."
102
104
  )
103
- self.host = parse_url(url=_host)
104
- self.api_url = self.host + "/api"
105
+ self.host = _host
106
+ self.api_url = _api_url
105
107
  except AssertionError as e:
106
108
  log.error(str(e))
107
109
  raise
108
110
  except Exception as e:
109
- log.error(f"Failed to parse host URL '{_host}': {e}")
111
+ log.error(f"Failed to parse API URL '{_api_url}': {e}")
110
112
  raise
111
113
 
112
114
  self.api_key = (
@@ -27,6 +27,7 @@ supported_llm_models = {
27
27
  "deepinfra/mistralai/Mistral-7B-Instruct-v0.1",
28
28
  ],
29
29
  "gemini": [
30
+ "gemini/gemini-3-pro-preview",
30
31
  "gemini/gemini-2.5-pro",
31
32
  "gemini/gemini-2.5-pro-preview-05-06",
32
33
  "gemini/gemini-2.5-flash",
@@ -223,10 +223,12 @@ class route:
223
223
 
224
224
  async def invoke_endpoint(req: Request, request: WorkflowServiceRequest):
225
225
  credentials = req.state.auth.get("credentials")
226
+ secrets = req.state.auth.get("secrets")
226
227
 
227
228
  try:
228
229
  response = await workflow.invoke(
229
230
  request=request,
231
+ secrets=secrets,
230
232
  credentials=credentials,
231
233
  )
232
234
 
@@ -124,11 +124,10 @@ async def aclose(
124
124
  async def aurl(
125
125
  *,
126
126
  run_id: UUID,
127
- ) -> str:
127
+ ) -> Optional[str]:
128
128
  response = authed_api()(
129
129
  method="GET",
130
- endpoint=f"/projects",
131
- params={"scope": "project"},
130
+ endpoint=f"/projects/current",
132
131
  )
133
132
 
134
133
  try:
@@ -137,10 +136,10 @@ async def aurl(
137
136
  print(response.text)
138
137
  raise
139
138
 
140
- if len(response.json()) != 1:
141
- return None
139
+ project_info = response.json()
142
140
 
143
- project_info = response.json()[0]
141
+ if not project_info:
142
+ return None
144
143
 
145
144
  workspace_id = project_info.get("workspace_id")
146
145
  project_id = project_info.get("project_id")
@@ -193,6 +193,9 @@ def litellm_handler():
193
193
 
194
194
  span.end()
195
195
 
196
+ # Clean up span from dictionary to prevent memory leak
197
+ del self.span[litellm_call_id]
198
+
196
199
  def log_failure_event(
197
200
  self,
198
201
  kwargs,
@@ -221,6 +224,9 @@ def litellm_handler():
221
224
 
222
225
  span.end()
223
226
 
227
+ # Clean up span from dictionary to prevent memory leak
228
+ del self.span[litellm_call_id]
229
+
224
230
  async def async_log_stream_event(
225
231
  self,
226
232
  kwargs,
@@ -321,6 +327,9 @@ def litellm_handler():
321
327
 
322
328
  span.end()
323
329
 
330
+ # Clean up span from dictionary to prevent memory leak
331
+ del self.span[litellm_call_id]
332
+
324
333
  async def async_log_failure_event(
325
334
  self,
326
335
  kwargs,
@@ -349,4 +358,7 @@ def litellm_handler():
349
358
 
350
359
  span.end()
351
360
 
361
+ # Clean up span from dictionary to prevent memory leak
362
+ del self.span[litellm_call_id]
363
+
352
364
  return LitellmHandler()
@@ -156,17 +156,17 @@ class SecretsManager:
156
156
  # STEP 1: get vault secrets from route context and transform it
157
157
  secrets = SecretsManager.get_from_route()
158
158
  if not secrets:
159
- return []
159
+ return None
160
160
 
161
161
  # STEP 1b: Parse secrets into usable format
162
162
  secrets = SecretsManager._parse_secrets(secrets=secrets)
163
163
 
164
164
  # STEP 2: check model exists in supported standard models
165
- provider = _standard_providers.get(model)
165
+ provider = _standard_providers.get(request_provider_model)
166
166
  if not provider:
167
167
  # check and get provider kind if model exists in custom provider models
168
168
  provider = SecretsManager._custom_providers_get(
169
- model=model,
169
+ model=request_provider_model,
170
170
  secrets=secrets,
171
171
  )
172
172
 
@@ -175,16 +175,19 @@ class SecretsManager:
175
175
  return None
176
176
 
177
177
  # STEP 2c: get litellm compatible model
178
- provider_slug = SecretsManager._custom_provider_slug_get(
179
- model=model, secrets=secrets
178
+ request_provider_slug = (
179
+ SecretsManager._custom_provider_slug_get(
180
+ model=request_provider_model, secrets=secrets
181
+ )
182
+ or ""
180
183
  )
181
- model = SecretsManager._get_compatible_model(
182
- model=model, provider_slug=provider_slug
184
+ compatible_provider_model = SecretsManager._get_compatible_model(
185
+ model=request_provider_model, provider_slug=request_provider_slug
183
186
  )
184
187
 
185
188
  # STEP 3: initialize provider settings and simplify provider name
186
- provider_settings = {"model": model}
187
- provider_name = re.sub(
189
+ provider_settings = dict(model=compatible_provider_model)
190
+ request_provider_kind = re.sub(
188
191
  r"[\s-]+", "", provider.lower()
189
192
  ) # normalizing other special characters too (azure-openai)
190
193
 
@@ -196,25 +199,35 @@ class SecretsManager:
196
199
  # i). Extract API key if present
197
200
  # (for standard models -- openai/anthropic/gemini, etc)
198
201
  if secret.get("kind") == "provider_key":
199
- provider_kind = secret_data.get("kind", "")
202
+ secret_provider_kind = secret_data.get("kind", "")
200
203
 
201
- if provider_kind == provider_name:
204
+ if request_provider_kind == secret_provider_kind:
202
205
  if "key" in provider_info:
203
206
  provider_settings["api_key"] = provider_info["key"]
204
207
  continue
205
208
 
206
209
  # ii). Extract Credentials if present
207
- # (for custom providers -- aws bedrock/sagemaker, vertexai, etc)
210
+ # (for custom providers -- aws bedrock/sagemaker, vertex_ai, etc)
208
211
  elif secret.get("kind") == "custom_provider":
209
- provider_kind = provider_info.get("kind", "").lower().replace(" ", "")
210
- provider_slug = secret_data.get("provider_slug", "")
211
- provider_extras = provider_info.get("extras", {})
212
+ secret_provider_kind = (
213
+ provider_info.get("kind", "").lower().replace(" ", "")
214
+ )
215
+ secret_provider_slug = secret_data.get("provider_slug", "")
216
+ secret_provider_models = secret_data.get("models", "")
217
+ secret_provider_extras = provider_info.get("extras", {})
212
218
 
213
- if provider_kind == provider_name or provider_slug == provider_name:
214
- if provider_extras:
215
- provider_settings.update(provider_extras)
219
+ if (
220
+ request_provider_kind == secret_provider_kind
221
+ and request_provider_slug == secret_provider_slug
222
+ and request_provider_model in secret_provider_models
223
+ ):
224
+ if secret_provider_extras:
225
+ provider_settings.update(secret_provider_extras)
216
226
  continue
217
227
 
228
+ if len(provider_settings.keys()) <= 1:
229
+ return None
230
+
218
231
  return provider_settings
219
232
 
220
233
  @staticmethod
@@ -251,7 +264,7 @@ class SecretsManager:
251
264
  # STEP 1: get vault secrets from route context and transform it
252
265
  secrets = RunningContext.get().secrets
253
266
  if not secrets:
254
- return []
267
+ return None
255
268
 
256
269
  # STEP 1b: Parse secrets into usable format
257
270
  secrets = SecretsManager._parse_secrets(secrets=secrets)
@@ -320,4 +333,7 @@ class SecretsManager:
320
333
  provider_settings.update(secret_provider_extras)
321
334
  continue
322
335
 
336
+ if len(provider_settings.keys()) <= 1:
337
+ return None
338
+
323
339
  return provider_settings
@@ -0,0 +1,333 @@
1
+ from os import getenv
2
+ from json import dumps
3
+ from typing import Callable, Dict, Optional, List, Any
4
+
5
+ import httpx
6
+ from fastapi import FastAPI, Request
7
+ from starlette.middleware.base import BaseHTTPMiddleware
8
+
9
+ from agenta.sdk.utils.logging import get_module_logger
10
+ from agenta.sdk.utils.constants import TRUTHY
11
+ from agenta.sdk.utils.cache import TTLLRUCache
12
+ from agenta.sdk.utils.exceptions import suppress, display_exception
13
+ from agenta.client.backend.types import SecretDto as SecretDTO
14
+ from agenta.client.backend.types import (
15
+ StandardProviderDto as StandardProviderDTO,
16
+ StandardProviderSettingsDto as StandardProviderSettingsDTO,
17
+ )
18
+
19
+ import agenta as ag
20
+
21
+ log = get_module_logger(__name__)
22
+
23
+
24
+ AGENTA_RUNTIME_PREFIX = getenv("AGENTA_RUNTIME_PREFIX", "")
25
+
26
+ _ALWAYS_ALLOW_LIST = [
27
+ f"{AGENTA_RUNTIME_PREFIX}/health",
28
+ f"{AGENTA_RUNTIME_PREFIX}/openapi.json",
29
+ ]
30
+
31
+ _PROVIDER_KINDS = [
32
+ "openai",
33
+ "cohere",
34
+ "anyscale",
35
+ "deepinfra",
36
+ "alephalpha",
37
+ "groq",
38
+ "mistral",
39
+ "mistralai",
40
+ "anthropic",
41
+ "perplexityai",
42
+ "togetherai",
43
+ "openrouter",
44
+ "gemini",
45
+ ]
46
+
47
+ _AUTH_ENABLED = (
48
+ getenv("AGENTA_SERVICE_MIDDLEWARE_AUTH_ENABLED", "true").lower() in TRUTHY
49
+ )
50
+
51
+ _CACHE_ENABLED = (
52
+ getenv("AGENTA_SERVICE_MIDDLEWARE_CACHE_ENABLED", "true").lower() in TRUTHY
53
+ )
54
+
55
+ _cache = TTLLRUCache()
56
+
57
+
58
+ class DenyException(Exception):
59
+ def __init__(
60
+ self,
61
+ status_code: int = 403,
62
+ content: str = "Forbidden",
63
+ ) -> None:
64
+ super().__init__()
65
+
66
+ self.status_code = status_code
67
+ self.content = content
68
+
69
+
70
+ class VaultMiddleware(BaseHTTPMiddleware):
71
+ def __init__(self, app: FastAPI):
72
+ super().__init__(app)
73
+
74
+ self.host = ag.DEFAULT_AGENTA_SINGLETON_INSTANCE.host
75
+
76
+ self.scope_type = ag.DEFAULT_AGENTA_SINGLETON_INSTANCE.scope_type
77
+ self.scope_id = ag.DEFAULT_AGENTA_SINGLETON_INSTANCE.scope_id
78
+
79
+ async def dispatch(
80
+ self,
81
+ request: Request,
82
+ call_next: Callable,
83
+ ):
84
+ request.state.vault = {}
85
+
86
+ with suppress():
87
+ secrets = await self._get_secrets(request)
88
+
89
+ request.state.vault = {"secrets": secrets}
90
+
91
+ return await call_next(request)
92
+
93
+ async def _get_secrets(self, request: Request) -> Optional[Dict]:
94
+ credentials = request.state.auth.get("credentials")
95
+
96
+ headers = None
97
+ if credentials:
98
+ headers = {"Authorization": credentials}
99
+
100
+ _hash = dumps(
101
+ {
102
+ "headers": headers,
103
+ },
104
+ sort_keys=True,
105
+ )
106
+
107
+ if _CACHE_ENABLED:
108
+ secrets_cache = _cache.get(_hash)
109
+
110
+ if secrets_cache:
111
+ secrets = secrets_cache.get("secrets")
112
+
113
+ return secrets
114
+
115
+ local_secrets: List[Dict[str, Any]] = []
116
+ allow_secrets = True
117
+
118
+ try:
119
+ if not request.url.path in _ALWAYS_ALLOW_LIST:
120
+ await self._allow_local_secrets(credentials)
121
+
122
+ for provider_kind in _PROVIDER_KINDS:
123
+ provider = provider_kind
124
+ key_name = f"{provider.upper()}_API_KEY"
125
+ key = getenv(key_name)
126
+
127
+ if not key:
128
+ continue
129
+
130
+ secret = SecretDTO(
131
+ kind="provider_key", # type: ignore
132
+ data=StandardProviderDTO(
133
+ kind=provider,
134
+ provider=StandardProviderSettingsDTO(key=key),
135
+ ),
136
+ )
137
+
138
+ local_secrets.append(secret.model_dump())
139
+ except DenyException as e: # pylint: disable=bare-except
140
+ log.warning(f"Agenta [secrets] {e.status_code}: {e.content}")
141
+ allow_secrets = False
142
+ except: # pylint: disable=bare-except
143
+ display_exception("Vault: Local Secrets Exception")
144
+
145
+ vault_secrets: List[Dict[str, Any]] = []
146
+
147
+ try:
148
+ async with httpx.AsyncClient() as client:
149
+ response = await client.get(
150
+ f"{self.host}/api/vault/v1/secrets/",
151
+ headers=headers,
152
+ )
153
+
154
+ if response.status_code != 200:
155
+ vault_secrets = []
156
+
157
+ else:
158
+ vault_secrets = response.json()
159
+ except: # pylint: disable=bare-except
160
+ display_exception("Vault: Vault Secrets Exception")
161
+
162
+ secrets = local_secrets + vault_secrets
163
+
164
+ standard_secrets = {}
165
+ custom_secrets = []
166
+
167
+ if local_secrets:
168
+ for secret in local_secrets:
169
+ standard_secrets[secret["data"]["kind"]] = secret # type: ignore
170
+
171
+ if vault_secrets:
172
+ for secret in vault_secrets:
173
+ if secret["kind"] == "provider_key": # type: ignore
174
+ standard_secrets[secret["data"]["kind"]] = secret # type: ignore
175
+ elif secret["kind"] == "custom_provider": # type: ignore
176
+ custom_secrets.append(secret)
177
+
178
+ standard_secrets = list(standard_secrets.values())
179
+
180
+ secrets = standard_secrets + custom_secrets
181
+
182
+ if not allow_secrets:
183
+ _cache.put(_hash, {"secrets": secrets})
184
+
185
+ return secrets
186
+
187
+ async def _allow_local_secrets(self, credentials):
188
+ try:
189
+ if not _AUTH_ENABLED:
190
+ return
191
+
192
+ if not credentials:
193
+ raise DenyException(
194
+ status_code=401,
195
+ content="Invalid credentials. Please check your credentials or login again.",
196
+ )
197
+
198
+ # HEADERS
199
+ headers = {"Authorization": credentials}
200
+ # PARAMS
201
+ params = {}
202
+ ## SCOPE
203
+ if self.scope_type and self.scope_id:
204
+ params["scope_type"] = self.scope_type
205
+ params["scope_id"] = self.scope_id
206
+ ## ACTION
207
+ params["action"] = "view_secret"
208
+ ## RESOURCE
209
+ params["resource_type"] = "local_secrets"
210
+
211
+ _hash = dumps(
212
+ {
213
+ "headers": headers,
214
+ "params": params,
215
+ },
216
+ sort_keys=True,
217
+ )
218
+
219
+ access = None
220
+
221
+ if _CACHE_ENABLED:
222
+ access = _cache.get(_hash)
223
+
224
+ if isinstance(access, Exception):
225
+ raise access
226
+
227
+ try:
228
+ async with httpx.AsyncClient() as client:
229
+ try:
230
+ response = await client.get(
231
+ f"{self.host}/api/permissions/verify",
232
+ headers=headers,
233
+ params=params,
234
+ timeout=30.0,
235
+ )
236
+ except httpx.TimeoutException as exc:
237
+ # log.debug(f"Timeout error while verify secrets access: {exc}")
238
+ raise DenyException(
239
+ status_code=504,
240
+ content=f"Could not verify secrets access: connection to {self.host} timed out. Please check your network connection.",
241
+ ) from exc
242
+ except httpx.ConnectError as exc:
243
+ # log.debug(f"Connection error while verify secrets access: {exc}")
244
+ raise DenyException(
245
+ status_code=503,
246
+ content=f"Could not verify secrets access: connection to {self.host} failed. Please check if agenta is available.",
247
+ ) from exc
248
+ except httpx.NetworkError as exc:
249
+ # log.debug(f"Network error while verify secrets access: {exc}")
250
+ raise DenyException(
251
+ status_code=503,
252
+ content=f"Could not verify secrets access: connection to {self.host} failed. Please check your network connection.",
253
+ ) from exc
254
+ except httpx.HTTPError as exc:
255
+ # log.debug(f"HTTP error while verify secrets access: {exc}")
256
+ raise DenyException(
257
+ status_code=502,
258
+ content=f"Could not verify secrets access: connection to {self.host} failed. Please check if agenta is available.",
259
+ ) from exc
260
+
261
+ if response.status_code == 401:
262
+ # log.debug("Agenta returned 401 - Invalid credentials")
263
+ raise DenyException(
264
+ status_code=401,
265
+ content="Invalid credentials. Please check your credentials or login again.",
266
+ )
267
+ elif response.status_code == 403:
268
+ # log.debug("Agenta returned 403 - Permission denied")
269
+ raise DenyException(
270
+ status_code=403,
271
+ content="Out of credits. Please set your LLM provider API keys or contact support.",
272
+ )
273
+ elif response.status_code != 200:
274
+ # log.debug(
275
+ # f"Agenta returned {response.status_code} - Unexpected status code"
276
+ # )
277
+ raise DenyException(
278
+ status_code=500,
279
+ content=f"Could not verify secrets access: {self.host} returned unexpected status code {response.status_code}. Please try again later or contact support if the issue persists.",
280
+ )
281
+
282
+ try:
283
+ auth = response.json()
284
+ except ValueError as exc:
285
+ # log.debug(f"Agenta returned invalid JSON response: {exc}")
286
+ raise DenyException(
287
+ status_code=500,
288
+ content=f"Could not verify secrets access: {self.host} returned unexpected invalid JSON response. Please try again later or contact support if the issue persists.",
289
+ ) from exc
290
+
291
+ if not isinstance(auth, dict):
292
+ # log.debug(
293
+ # f"Agenta returned invalid response format: {type(auth)}"
294
+ # )
295
+ raise DenyException(
296
+ status_code=500,
297
+ content=f"Could not verify secrets access: {self.host} returned unexpected invalid response format. Please try again later or contact support if the issue persists.",
298
+ )
299
+
300
+ effect = auth.get("effect")
301
+
302
+ access = effect == "allow"
303
+
304
+ if effect != "allow":
305
+ # log.debug("Access denied by Agenta - effect: {effect}")
306
+ raise DenyException(
307
+ status_code=403,
308
+ content="Out of credits. Please set your LLM provider API keys or contact support.",
309
+ )
310
+
311
+ return
312
+
313
+ except DenyException as deny:
314
+ _cache.put(_hash, deny)
315
+
316
+ raise deny
317
+ except Exception as exc: # pylint: disable=bare-except
318
+ # log.debug(
319
+ # f"Unexpected error while verifying credentials (remote): {exc}"
320
+ # )
321
+ raise DenyException(
322
+ status_code=500,
323
+ content=f"Could not verify credentials: unexpected error - {str(exc)}. Please try again later or contact support if the issue persists.",
324
+ ) from exc
325
+
326
+ except DenyException as deny:
327
+ raise deny
328
+ except Exception as exc:
329
+ # log.debug(f"Unexpected error while verifying credentials (local): {exc}")
330
+ raise DenyException(
331
+ status_code=500,
332
+ content=f"Could not verify credentials: unexpected error - {str(exc)}. Please try again later or contact support if the issue persists.",
333
+ ) from exc