From 3ae4ee552b3f764940acf2724e0720aad514a6b6 Mon Sep 17 00:00:00 2001 From: Juan Pablo Vega Date: Fri, 13 Dec 2024 15:34:48 +0100 Subject: [PATCH] serverless > stateless + latest stateless SDK --- docker-compose.yml | 6 +- .../agenta/sdk/middleware/config.py | 235 ---------------- .../agenta/sdk/utils/globals.py | 14 - .../docker-compose.yml | 21 -- .../Dockerfile | 0 .../Dockerfile.prerelease | 0 .../_app.py | 0 .../agenta/__init__.py | 0 .../agenta/cli/evaluation_commands.py | 0 .../agenta/cli/helper.py | 0 .../agenta/cli/main.py | 0 .../agenta/cli/telemetry.py | 0 .../agenta/cli/variant_commands.py | 0 .../agenta/cli/variant_configs.py | 0 .../agenta/client/Readme.md | 0 .../agenta/client/__init__.py | 0 .../agenta/client/api.py | 0 .../agenta/client/api_models.py | 0 .../agenta/client/backend/__init__.py | 0 .../agenta/client/backend/apps/__init__.py | 0 .../agenta/client/backend/apps/client.py | 0 .../agenta/client/backend/bases/__init__.py | 0 .../agenta/client/backend/bases/client.py | 0 .../agenta/client/backend/client.py | 0 .../agenta/client/backend/configs/__init__.py | 0 .../agenta/client/backend/configs/client.py | 0 .../client/backend/containers/__init__.py | 0 .../client/backend/containers/client.py | 0 .../backend/containers/types/__init__.py | 0 .../types/container_templates_response.py | 0 .../agenta/client/backend/core/__init__.py | 0 .../agenta/client/backend/core/api_error.py | 0 .../client/backend/core/client_wrapper.py | 0 .../client/backend/core/datetime_utils.py | 0 .../agenta/client/backend/core/file.py | 0 .../agenta/client/backend/core/http_client.py | 0 .../client/backend/core/jsonable_encoder.py | 0 .../client/backend/core/pydantic_utilities.py | 0 .../client/backend/core/query_encoder.py | 0 .../backend/core/remove_none_from_dict.py | 0 .../client/backend/core/request_options.py | 0 .../client/backend/core/serialization.py | 0 .../client/backend/environments/__init__.py | 0 .../client/backend/environments/client.py | 0 .../agenta/client/backend/errors/__init__.py | 0 .../errors/unprocessable_entity_error.py | 0 .../client/backend/evaluations/__init__.py | 0 .../client/backend/evaluations/client.py | 0 .../client/backend/evaluators/__init__.py | 0 .../client/backend/evaluators/client.py | 0 .../client/backend/observability/__init__.py | 0 .../client/backend/observability/client.py | 0 .../backend/observability_v_1/__init__.py | 0 .../backend/observability_v_1/client.py | 0 .../observability_v_1/types/__init__.py | 0 .../backend/observability_v_1/types/format.py | 0 .../types/query_traces_response.py | 0 .../client/backend/testsets/__init__.py | 0 .../agenta/client/backend/testsets/client.py | 0 .../agenta/client/backend/types/__init__.py | 0 .../client/backend/types/agenta_node_dto.py | 0 .../types/agenta_node_dto_nodes_value.py | 0 .../backend/types/agenta_nodes_response.py | 0 .../client/backend/types/agenta_root_dto.py | 0 .../backend/types/agenta_roots_response.py | 0 .../client/backend/types/agenta_tree_dto.py | 0 .../backend/types/agenta_trees_response.py | 0 .../client/backend/types/aggregated_result.py | 0 .../aggregated_result_evaluator_config.py | 0 .../agenta/client/backend/types/app.py | 0 .../backend/types/app_variant_response.py | 0 .../backend/types/app_variant_revision.py | 0 .../client/backend/types/base_output.py | 0 .../backend/types/body_import_testset.py | 0 .../backend/types/collect_status_response.py | 0 .../agenta/client/backend/types/config_db.py | 0 .../agenta/client/backend/types/config_dto.py | 0 .../backend/types/config_response_model.py | 0 .../client/backend/types/correct_answer.py | 0 .../client/backend/types/create_app_output.py | 0 .../client/backend/types/create_span.py | 0 .../backend/types/create_trace_response.py | 0 .../client/backend/types/docker_env_vars.py | 0 .../backend/types/environment_output.py | 0 .../types/environment_output_extended.py | 0 .../backend/types/environment_revision.py | 0 .../agenta/client/backend/types/error.py | 0 .../agenta/client/backend/types/evaluation.py | 0 .../backend/types/evaluation_scenario.py | 0 .../types/evaluation_scenario_input.py | 0 .../types/evaluation_scenario_output.py | 0 .../types/evaluation_scenario_result.py | 0 .../types/evaluation_scenario_score_update.py | 0 .../backend/types/evaluation_status_enum.py | 0 .../client/backend/types/evaluation_type.py | 0 .../agenta/client/backend/types/evaluator.py | 0 .../client/backend/types/evaluator_config.py | 0 .../evaluator_mapping_output_interface.py | 0 .../types/evaluator_output_interface.py | 0 .../client/backend/types/exception_dto.py | 0 .../backend/types/get_config_response.py | 0 .../backend/types/http_validation_error.py | 0 .../client/backend/types/human_evaluation.py | 0 .../types/human_evaluation_scenario.py | 0 .../types/human_evaluation_scenario_input.py | 0 .../types/human_evaluation_scenario_output.py | 0 .../types/human_evaluation_scenario_update.py | 0 .../backend/types/human_evaluation_update.py | 0 .../agenta/client/backend/types/image.py | 0 .../client/backend/types/invite_request.py | 0 .../client/backend/types/lifecycle_dto.py | 0 .../agenta/client/backend/types/link_dto.py | 0 .../backend/types/list_api_keys_response.py | 0 .../backend/types/llm_run_rate_limit.py | 0 .../agenta/client/backend/types/llm_tokens.py | 0 .../client/backend/types/lm_providers_enum.py | 0 .../backend/types/new_human_evaluation.py | 0 .../client/backend/types/new_testset.py | 0 .../agenta/client/backend/types/node_dto.py | 0 .../agenta/client/backend/types/node_type.py | 0 .../client/backend/types/o_tel_context_dto.py | 0 .../client/backend/types/o_tel_event_dto.py | 0 .../client/backend/types/o_tel_extra_dto.py | 0 .../client/backend/types/o_tel_link_dto.py | 0 .../client/backend/types/o_tel_span_dto.py | 0 .../client/backend/types/o_tel_span_kind.py | 0 .../backend/types/o_tel_spans_response.py | 0 .../client/backend/types/o_tel_status_code.py | 0 .../client/backend/types/organization.py | 0 .../backend/types/organization_output.py | 0 .../agenta/client/backend/types/outputs.py | 0 .../agenta/client/backend/types/parent_dto.py | 0 .../agenta/client/backend/types/permission.py | 0 .../client/backend/types/reference_dto.py | 0 .../backend/types/reference_request_model.py | 0 .../agenta/client/backend/types/result.py | 0 .../agenta/client/backend/types/root_dto.py | 0 .../agenta/client/backend/types/score.py | 0 .../backend/types/simple_evaluation_output.py | 0 .../agenta/client/backend/types/span.py | 0 .../client/backend/types/span_detail.py | 0 .../agenta/client/backend/types/span_dto.py | 0 .../backend/types/span_dto_nodes_value.py | 0 .../client/backend/types/span_status_code.py | 0 .../client/backend/types/span_variant.py | 0 .../client/backend/types/status_code.py | 0 .../agenta/client/backend/types/status_dto.py | 0 .../agenta/client/backend/types/template.py | 0 .../backend/types/template_image_info.py | 0 .../backend/types/test_set_output_response.py | 0 .../backend/types/test_set_simple_response.py | 0 .../agenta/client/backend/types/time_dto.py | 0 .../client/backend/types/trace_detail.py | 0 .../agenta/client/backend/types/tree_dto.py | 0 .../agenta/client/backend/types/tree_type.py | 0 .../client/backend/types/update_app_output.py | 0 .../agenta/client/backend/types/uri.py | 0 .../client/backend/types/validation_error.py | 0 .../types/validation_error_loc_item.py | 0 .../client/backend/types/variant_action.py | 0 .../backend/types/variant_action_enum.py | 0 .../client/backend/types/with_pagination.py | 0 .../types/workspace_member_response.py | 0 .../backend/types/workspace_permission.py | 0 .../backend/types/workspace_response.py | 0 .../client/backend/types/workspace_role.py | 0 .../backend/types/workspace_role_response.py | 0 .../client/backend/variants/__init__.py | 0 .../agenta/client/backend/variants/client.py | 0 .../client/backend/variants/types/__init__.py | 0 ...d_variant_from_base_and_config_response.py | 0 .../agenta/client/client.py | 2 +- .../agenta/client/exceptions.py | 0 .../agenta/config.py | 0 .../agenta/config.toml | 0 .../docker-assets/Dockerfile.cloud.template | 0 .../docker/docker-assets/Dockerfile.template | 0 .../agenta/docker/docker-assets/README.md | 0 .../agenta/docker/docker-assets/entrypoint.sh | 0 .../docker/docker-assets/lambda_function.py | 0 .../agenta/docker/docker-assets/main.py | 0 .../agenta/docker/docker_utils.py | 0 .../agenta/sdk/__init__.py | 0 .../agenta/sdk/agenta_init.py | 148 +++------- .../agenta/sdk/assets.py | 0 .../agenta/sdk/client.py | 0 .../agenta/sdk/context/__init__.py | 0 .../agenta/sdk/context/exporting.py | 0 .../agenta/sdk/context/routing.py | 4 +- .../agenta/sdk/context/tracing.py | 0 .../agenta/sdk/decorators/__init__.py | 0 .../agenta/sdk/decorators/routing.py | 102 +++---- .../agenta/sdk/decorators/tracing.py | 6 +- .../agenta/sdk/litellm/__init__.py | 0 .../agenta/sdk/litellm/litellm.py | 0 .../agenta/sdk/managers/__init__.py | 0 .../agenta/sdk/managers/config.py | 2 +- .../agenta/sdk/managers/deployment.py | 0 .../agenta/sdk/managers/shared.py | 0 .../agenta/sdk/managers/variant.py | 0 .../agenta/sdk/managers/vault.py | 2 +- .../agenta/sdk/middleware/__init__.py | 0 .../agenta/sdk/middleware/auth.py | 41 +-- .../agenta/sdk/middleware/cache.py | 4 + .../agenta/sdk/middleware/config.py | 254 ++++++++++++++++++ .../agenta/sdk/middleware/cors.py | 0 .../agenta/sdk/middleware/otel.py | 2 - .../agenta/sdk/middleware/vault.py | 34 ++- .../agenta/sdk/router.py | 0 .../agenta/sdk/tracing/__init__.py | 0 .../agenta/sdk/tracing/attributes.py | 0 .../agenta/sdk/tracing/conventions.py | 0 .../agenta/sdk/tracing/exporters.py | 10 - .../agenta/sdk/tracing/inline.py | 4 +- .../agenta/sdk/tracing/processors.py | 0 .../agenta/sdk/tracing/spans.py | 0 .../agenta/sdk/tracing/tracing.py | 0 .../agenta/sdk/types.py | 0 .../agenta/sdk/utils/__init__.py | 0 .../agenta/sdk/utils/constants.py | 1 + .../agenta/sdk/utils/costs.py | 0 .../agenta/sdk/utils/exceptions.py | 0 .../agenta/sdk/utils/globals.py | 10 + .../agenta/sdk/utils/helpers.py | 0 .../agenta/sdk/utils/logging.py | 0 .../agenta/sdk/utils/preinit.py | 0 .../agenta/sdk/utils/singleton.py | 0 .../agenta/sdk/utils/timing.py | 0 .../agenta/templates/compose_email/README.md | 0 .../agenta/templates/compose_email/app.py | 0 .../templates/compose_email/env.example | 0 .../templates/compose_email/requirements.txt | 0 .../templates/compose_email/template.toml | 0 .../templates/extract_data_to_json/README.md | 0 .../templates/extract_data_to_json/app.py | 0 .../extract_data_to_json/env.example | 0 .../extract_data_to_json/requirements.txt | 0 .../extract_data_to_json/template.toml | 0 .../agenta/templates/simple_prompt/README.md | 0 .../agenta/templates/simple_prompt/app.py | 0 .../templates/simple_prompt/env.example | 0 .../templates/simple_prompt/requirements.txt | 0 .../templates/simple_prompt/template.toml | 0 .../agenta/tests/__init__.py | 0 .../apps_with_new_sdk/new_baby_name.py | 0 .../apps_with_new_sdk/new_chat_prompt.py | 0 .../apps_with_new_sdk/new_single_prompt.py | 0 .../apps_with_new_sdk/requirements.txt | 0 .../apps_with_new_sdk/run_local.py | 0 .../manual_tests/apps_with_new_sdk/v3.py | 0 .../apps_with_old_sdk/baby_name.py | 0 .../apps_with_old_sdk/chat_prompt.py | 0 .../apps_with_old_sdk/requirements.txt | 0 .../apps_with_old_sdk/run_local.py | 0 .../apps_with_old_sdk/single_prompt.py | 0 .../agenta/tests/management_sdk/run_local.py | 0 .../agenta/tests/management_sdk/v1.py | 0 .../agenta/tests/management_sdk/v2.py | 0 .../agenta/tests/management_sdk/v4_prompt.py | 0 .../agenta/tests/prompt_sdk/conftest.py | 0 .../agenta/tests/prompt_sdk/test_client.py | 0 .../tests/prompt_sdk/test_config_manager.py | 0 .../prompt_sdk/test_deployment_manager.py | 0 .../tests/prompt_sdk/test_variant_manager.py | 0 .../docker-compose.yml | 21 ++ .../entrypoint.sh | 0 .../main.py | 0 .../supported_llm_models.py | 0 268 files changed, 431 insertions(+), 492 deletions(-) delete mode 100644 services/completion-serverless-sdk/agenta/sdk/middleware/config.py delete mode 100644 services/completion-serverless-sdk/agenta/sdk/utils/globals.py delete mode 100644 services/completion-serverless-sdk/docker-compose.yml rename services/{completion-serverless-sdk => completion-stateless-sdk}/Dockerfile (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/Dockerfile.prerelease (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/_app.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/__init__.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/cli/evaluation_commands.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/cli/helper.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/cli/main.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/cli/telemetry.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/cli/variant_commands.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/cli/variant_configs.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/Readme.md (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/__init__.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/api.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/api_models.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/__init__.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/apps/__init__.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/apps/client.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/bases/__init__.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/bases/client.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/client.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/configs/__init__.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/configs/client.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/containers/__init__.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/containers/client.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/containers/types/__init__.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/containers/types/container_templates_response.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/core/__init__.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/core/api_error.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/core/client_wrapper.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/core/datetime_utils.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/core/file.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/core/http_client.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/core/jsonable_encoder.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/core/pydantic_utilities.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/core/query_encoder.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/core/remove_none_from_dict.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/core/request_options.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/core/serialization.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/environments/__init__.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/environments/client.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/errors/__init__.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/errors/unprocessable_entity_error.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/evaluations/__init__.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/evaluations/client.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/evaluators/__init__.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/evaluators/client.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/observability/__init__.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/observability/client.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/observability_v_1/__init__.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/observability_v_1/client.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/observability_v_1/types/__init__.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/observability_v_1/types/format.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/observability_v_1/types/query_traces_response.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/testsets/__init__.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/testsets/client.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/__init__.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/agenta_node_dto.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/agenta_node_dto_nodes_value.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/agenta_nodes_response.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/agenta_root_dto.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/agenta_roots_response.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/agenta_tree_dto.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/agenta_trees_response.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/aggregated_result.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/aggregated_result_evaluator_config.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/app.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/app_variant_response.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/app_variant_revision.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/base_output.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/body_import_testset.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/collect_status_response.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/config_db.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/config_dto.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/config_response_model.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/correct_answer.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/create_app_output.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/create_span.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/create_trace_response.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/docker_env_vars.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/environment_output.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/environment_output_extended.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/environment_revision.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/error.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/evaluation.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/evaluation_scenario.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/evaluation_scenario_input.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/evaluation_scenario_output.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/evaluation_scenario_result.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/evaluation_scenario_score_update.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/evaluation_status_enum.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/evaluation_type.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/evaluator.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/evaluator_config.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/evaluator_mapping_output_interface.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/evaluator_output_interface.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/exception_dto.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/get_config_response.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/http_validation_error.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/human_evaluation.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/human_evaluation_scenario.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/human_evaluation_scenario_input.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/human_evaluation_scenario_output.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/human_evaluation_scenario_update.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/human_evaluation_update.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/image.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/invite_request.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/lifecycle_dto.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/link_dto.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/list_api_keys_response.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/llm_run_rate_limit.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/llm_tokens.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/lm_providers_enum.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/new_human_evaluation.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/new_testset.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/node_dto.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/node_type.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/o_tel_context_dto.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/o_tel_event_dto.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/o_tel_extra_dto.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/o_tel_link_dto.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/o_tel_span_dto.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/o_tel_span_kind.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/o_tel_spans_response.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/o_tel_status_code.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/organization.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/organization_output.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/outputs.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/parent_dto.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/permission.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/reference_dto.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/reference_request_model.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/result.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/root_dto.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/score.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/simple_evaluation_output.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/span.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/span_detail.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/span_dto.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/span_dto_nodes_value.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/span_status_code.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/span_variant.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/status_code.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/status_dto.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/template.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/template_image_info.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/test_set_output_response.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/test_set_simple_response.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/time_dto.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/trace_detail.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/tree_dto.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/tree_type.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/update_app_output.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/uri.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/validation_error.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/validation_error_loc_item.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/variant_action.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/variant_action_enum.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/with_pagination.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/workspace_member_response.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/workspace_permission.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/workspace_response.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/workspace_role.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/types/workspace_role_response.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/variants/__init__.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/variants/client.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/variants/types/__init__.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/backend/variants/types/add_variant_from_base_and_config_response.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/client.py (99%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/client/exceptions.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/config.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/config.toml (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/docker/docker-assets/Dockerfile.cloud.template (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/docker/docker-assets/Dockerfile.template (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/docker/docker-assets/README.md (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/docker/docker-assets/entrypoint.sh (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/docker/docker-assets/lambda_function.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/docker/docker-assets/main.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/docker/docker_utils.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/sdk/__init__.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/sdk/agenta_init.py (63%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/sdk/assets.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/sdk/client.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/sdk/context/__init__.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/sdk/context/exporting.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/sdk/context/routing.py (85%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/sdk/context/tracing.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/sdk/decorators/__init__.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/sdk/decorators/routing.py (94%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/sdk/decorators/tracing.py (98%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/sdk/litellm/__init__.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/sdk/litellm/litellm.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/sdk/managers/__init__.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/sdk/managers/config.py (99%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/sdk/managers/deployment.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/sdk/managers/shared.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/sdk/managers/variant.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/sdk/managers/vault.py (82%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/sdk/middleware/__init__.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/sdk/middleware/auth.py (80%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/sdk/middleware/cache.py (83%) create mode 100644 services/completion-stateless-sdk/agenta/sdk/middleware/config.py rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/sdk/middleware/cors.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/sdk/middleware/otel.py (94%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/sdk/middleware/vault.py (81%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/sdk/router.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/sdk/tracing/__init__.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/sdk/tracing/attributes.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/sdk/tracing/conventions.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/sdk/tracing/exporters.py (91%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/sdk/tracing/inline.py (99%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/sdk/tracing/processors.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/sdk/tracing/spans.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/sdk/tracing/tracing.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/sdk/types.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/sdk/utils/__init__.py (100%) create mode 100644 services/completion-stateless-sdk/agenta/sdk/utils/constants.py rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/sdk/utils/costs.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/sdk/utils/exceptions.py (100%) create mode 100644 services/completion-stateless-sdk/agenta/sdk/utils/globals.py rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/sdk/utils/helpers.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/sdk/utils/logging.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/sdk/utils/preinit.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/sdk/utils/singleton.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/sdk/utils/timing.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/templates/compose_email/README.md (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/templates/compose_email/app.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/templates/compose_email/env.example (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/templates/compose_email/requirements.txt (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/templates/compose_email/template.toml (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/templates/extract_data_to_json/README.md (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/templates/extract_data_to_json/app.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/templates/extract_data_to_json/env.example (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/templates/extract_data_to_json/requirements.txt (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/templates/extract_data_to_json/template.toml (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/templates/simple_prompt/README.md (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/templates/simple_prompt/app.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/templates/simple_prompt/env.example (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/templates/simple_prompt/requirements.txt (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/templates/simple_prompt/template.toml (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/tests/__init__.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/tests/management_sdk/manual_tests/apps_with_new_sdk/new_baby_name.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/tests/management_sdk/manual_tests/apps_with_new_sdk/new_chat_prompt.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/tests/management_sdk/manual_tests/apps_with_new_sdk/new_single_prompt.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/tests/management_sdk/manual_tests/apps_with_new_sdk/requirements.txt (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/tests/management_sdk/manual_tests/apps_with_new_sdk/run_local.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/tests/management_sdk/manual_tests/apps_with_new_sdk/v3.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/tests/management_sdk/manual_tests/apps_with_old_sdk/baby_name.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/tests/management_sdk/manual_tests/apps_with_old_sdk/chat_prompt.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/tests/management_sdk/manual_tests/apps_with_old_sdk/requirements.txt (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/tests/management_sdk/manual_tests/apps_with_old_sdk/run_local.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/tests/management_sdk/manual_tests/apps_with_old_sdk/single_prompt.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/tests/management_sdk/run_local.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/tests/management_sdk/v1.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/tests/management_sdk/v2.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/tests/management_sdk/v4_prompt.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/tests/prompt_sdk/conftest.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/tests/prompt_sdk/test_client.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/tests/prompt_sdk/test_config_manager.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/tests/prompt_sdk/test_deployment_manager.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/agenta/tests/prompt_sdk/test_variant_manager.py (100%) create mode 100644 services/completion-stateless-sdk/docker-compose.yml rename services/{completion-serverless-sdk => completion-stateless-sdk}/entrypoint.sh (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/main.py (100%) rename services/{completion-serverless-sdk => completion-stateless-sdk}/supported_llm_models.py (100%) diff --git a/docker-compose.yml b/docker-compose.yml index 9ab2dec43..63d2f7173 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -209,10 +209,10 @@ services: file: ./services/chat-old-sdk/docker-compose.yml service: chat-old-sdk - completion-serverless-sdk: + completion-stateless-sdk: extends: - file: ./services/completion-serverless-sdk/docker-compose.yml - service: completion-serverless-sdk + file: ./services/completion-stateless-sdk/docker-compose.yml + service: completion-stateless-sdk completion-live-sdk: extends: diff --git a/services/completion-serverless-sdk/agenta/sdk/middleware/config.py b/services/completion-serverless-sdk/agenta/sdk/middleware/config.py deleted file mode 100644 index 119a20642..000000000 --- a/services/completion-serverless-sdk/agenta/sdk/middleware/config.py +++ /dev/null @@ -1,235 +0,0 @@ -from typing import Callable, Optional, Tuple, Dict - -from os import getenv -from json import dumps - -from pydantic import BaseModel - -from starlette.middleware.base import BaseHTTPMiddleware -from fastapi import Request, FastAPI - -import httpx - -from agenta.sdk.middleware.cache import TTLLRUCache -from agenta.sdk.utils.exceptions import suppress -from agenta.sdk.utils.timing import atimeit - -import agenta as ag - -_TRUTHY = {"true", "1", "t", "y", "yes", "on", "enable", "enabled"} -_CACHE_ENABLED = getenv("AGENTA_MIDDLEWARE_CACHE_ENABLED", "true").lower() in _TRUTHY - -_CACHE_CAPACITY = int(getenv("AGENTA_MIDDLEWARE_CACHE_CAPACITY", "512")) -_CACHE_TTL = int(getenv("AGENTA_MIDDLEWARE_CACHE_TTL", str(5 * 60))) # 5 minutes - -_cache = TTLLRUCache(capacity=_CACHE_CAPACITY, ttl=_CACHE_TTL) - - -class Reference(BaseModel): - id: Optional[str] = None - slug: Optional[str] = None - version: Optional[str] = None - - -async def _parse_application_ref( - request: Request, -) -> Optional[Reference]: - baggage = request.state.otel.get("baggage") if request.state.otel else {} - - application_id = ( - # CLEANEST - baggage.get("application_id") - # ALTERNATIVE - or request.query_params.get("application_id") - # LEGACY - or request.query_params.get("app_id") - ) - application_slug = ( - # CLEANEST - baggage.get("application_slug") - # ALTERNATIVE - or request.query_params.get("application_slug") - # LEGACY - or request.query_params.get("app_slug") - or request.query_params.get("app") - ) - - if not any([application_id, application_slug]): - return None - - return Reference( - id=application_id, - slug=application_slug, - ) - - -async def _parse_variant_ref( - request: Request, -) -> Optional[Reference]: - baggage = request.state.otel.get("baggage") if request.state.otel else {} - - variant_id = ( - # CLEANEST - baggage.get("variant_id") - # ALTERNATIVE - or request.query_params.get("variant_id") - ) - variant_slug = ( - # CLEANEST - baggage.get("variant_slug") - # ALTERNATIVE - or request.query_params.get("variant_slug") - # LEGACY - or request.query_params.get("config") - ) - variant_version = ( - # CLEANEST - baggage.get("variant_version") - # ALTERNATIVE - or request.query_params.get("variant_version") - ) - - if not any([variant_id, variant_slug, variant_version]): - return None - - return Reference( - id=variant_id, - slug=variant_slug, - version=variant_version, - ) - - -async def _parse_environment_ref( - request: Request, -) -> Optional[Reference]: - baggage = request.state.otel.get("baggage") if request.state.otel else {} - - environment_id = ( - # CLEANEST - baggage.get("environment_id") - # ALTERNATIVE - or request.query_params.get("environment_id") - ) - environment_slug = ( - # CLEANEST - baggage.get("environment_slug") - # ALTERNATIVE - or request.query_params.get("environment_slug") - # LEGACY - or request.query_params.get("environment") - ) - environment_version = ( - # CLEANEST - baggage.get("environment_version") - # ALTERNATIVE - or request.query_params.get("environment_version") - ) - - if not any([environment_id, environment_slug, environment_version]): - return None - - return Reference( - id=environment_id, - slug=environment_slug, - version=environment_version, - ) - - -class ConfigMiddleware(BaseHTTPMiddleware): - def __init__(self, app: FastAPI): - super().__init__(app) - - self.host = ag.DEFAULT_AGENTA_SINGLETON_INSTANCE.host - - async def dispatch( - self, - request: Request, - call_next: Callable, - ): - request.state.config = None - - with suppress(): - parameters, references = await self._get_config(request) - - request.state.config = { - "parameters": parameters, - "references": references, - } - - return await call_next(request) - - # @atimeit - async def _get_config(self, request: Request) -> Optional[Tuple[Dict, Dict]]: - application_ref = await _parse_application_ref(request) - variant_ref = await _parse_variant_ref(request) - environment_ref = await _parse_environment_ref(request) - - auth = request.state.auth or {} - - headers = { - "Authorization": auth.get("credentials"), - } - - refs = {} - if application_ref: - refs["application_ref"] = application_ref.model_dump() - if variant_ref: - refs["variant_ref"] = variant_ref.model_dump() - if environment_ref: - refs["environment_ref"] = environment_ref.model_dump() - - if not refs: - return None, None - - _hash = dumps( - { - "headers": headers, - "refs": refs, - }, - sort_keys=True, - ) - - if _CACHE_ENABLED: - config_cache = _cache.get(_hash) - - if config_cache: - parameters = config_cache.get("parameters") - references = config_cache.get("references") - - return parameters, references - - config = None - async with httpx.AsyncClient() as client: - response = await client.post( - f"{self.host}/api/variants/configs/fetch", - headers=headers, - json=refs, - ) - - if response.status_code != 200: - return None - - config = response.json() - - if not config: - _cache.put(_hash, {"parameters": None, "references": None}) - - return None, None - - parameters = config.get("params") - - references = {} - - for ref_key in ["application_ref", "variant_ref", "environment_ref"]: - refs = config.get(ref_key) - ref_prefix = ref_key.split("_", maxsplit=1)[0] - - for ref_part_key in ["id", "slug", "version"]: - ref_part = refs.get(ref_part_key) - - if ref_part: - references[ref_prefix + "." + ref_part_key] = ref_part - - _cache.put(_hash, {"parameters": parameters, "references": references}) - - return parameters, references diff --git a/services/completion-serverless-sdk/agenta/sdk/utils/globals.py b/services/completion-serverless-sdk/agenta/sdk/utils/globals.py deleted file mode 100644 index f05141e08..000000000 --- a/services/completion-serverless-sdk/agenta/sdk/utils/globals.py +++ /dev/null @@ -1,14 +0,0 @@ -import agenta - - -def set_global(config=None, tracing=None): - """Allows usage of agenta.config and agenta.tracing in the user's code. - - Args: - config: _description_. Defaults to None. - tracing: _description_. Defaults to None. - """ - if config is not None: - agenta.config = config - if tracing is not None: - agenta.tracing = tracing diff --git a/services/completion-serverless-sdk/docker-compose.yml b/services/completion-serverless-sdk/docker-compose.yml deleted file mode 100644 index 1588bbc75..000000000 --- a/services/completion-serverless-sdk/docker-compose.yml +++ /dev/null @@ -1,21 +0,0 @@ -services: - completion-serverless-sdk: - build: . - volumes: - - .:/app - environment: - - AGENTA_UNAUTHORIZED_EXECUTION_ALLOWED=True - networks: - - agenta-network - labels: - - "traefik.http.routers.completion-serverless-sdk.rule=PathPrefix(`/completion-serverless-sdk/`)" - - "traefik.http.routers.completion-serverless-sdk.entrypoints=web" - - "traefik.http.middlewares.completion-serverless-sdk-strip.stripprefix.prefixes=/completion-serverless-sdk" - - "traefik.http.middlewares.completion-serverless-sdk-strip.stripprefix.forceslash=true" - - "traefik.http.routers.completion-serverless-sdk.middlewares=completion-serverless-sdk-strip" - - "traefik.http.services.completion-serverless-sdk.loadbalancer.server.port=80" - - "traefik.http.routers.completion-serverless-sdk.service=completion-serverless-sdk" - -networks: - agenta-network: - external: true diff --git a/services/completion-serverless-sdk/Dockerfile b/services/completion-stateless-sdk/Dockerfile similarity index 100% rename from services/completion-serverless-sdk/Dockerfile rename to services/completion-stateless-sdk/Dockerfile diff --git a/services/completion-serverless-sdk/Dockerfile.prerelease b/services/completion-stateless-sdk/Dockerfile.prerelease similarity index 100% rename from services/completion-serverless-sdk/Dockerfile.prerelease rename to services/completion-stateless-sdk/Dockerfile.prerelease diff --git a/services/completion-serverless-sdk/_app.py b/services/completion-stateless-sdk/_app.py similarity index 100% rename from services/completion-serverless-sdk/_app.py rename to services/completion-stateless-sdk/_app.py diff --git a/services/completion-serverless-sdk/agenta/__init__.py b/services/completion-stateless-sdk/agenta/__init__.py similarity index 100% rename from services/completion-serverless-sdk/agenta/__init__.py rename to services/completion-stateless-sdk/agenta/__init__.py diff --git a/services/completion-serverless-sdk/agenta/cli/evaluation_commands.py b/services/completion-stateless-sdk/agenta/cli/evaluation_commands.py similarity index 100% rename from services/completion-serverless-sdk/agenta/cli/evaluation_commands.py rename to services/completion-stateless-sdk/agenta/cli/evaluation_commands.py diff --git a/services/completion-serverless-sdk/agenta/cli/helper.py b/services/completion-stateless-sdk/agenta/cli/helper.py similarity index 100% rename from services/completion-serverless-sdk/agenta/cli/helper.py rename to services/completion-stateless-sdk/agenta/cli/helper.py diff --git a/services/completion-serverless-sdk/agenta/cli/main.py b/services/completion-stateless-sdk/agenta/cli/main.py similarity index 100% rename from services/completion-serverless-sdk/agenta/cli/main.py rename to services/completion-stateless-sdk/agenta/cli/main.py diff --git a/services/completion-serverless-sdk/agenta/cli/telemetry.py b/services/completion-stateless-sdk/agenta/cli/telemetry.py similarity index 100% rename from services/completion-serverless-sdk/agenta/cli/telemetry.py rename to services/completion-stateless-sdk/agenta/cli/telemetry.py diff --git a/services/completion-serverless-sdk/agenta/cli/variant_commands.py b/services/completion-stateless-sdk/agenta/cli/variant_commands.py similarity index 100% rename from services/completion-serverless-sdk/agenta/cli/variant_commands.py rename to services/completion-stateless-sdk/agenta/cli/variant_commands.py diff --git a/services/completion-serverless-sdk/agenta/cli/variant_configs.py b/services/completion-stateless-sdk/agenta/cli/variant_configs.py similarity index 100% rename from services/completion-serverless-sdk/agenta/cli/variant_configs.py rename to services/completion-stateless-sdk/agenta/cli/variant_configs.py diff --git a/services/completion-serverless-sdk/agenta/client/Readme.md b/services/completion-stateless-sdk/agenta/client/Readme.md similarity index 100% rename from services/completion-serverless-sdk/agenta/client/Readme.md rename to services/completion-stateless-sdk/agenta/client/Readme.md diff --git a/services/completion-serverless-sdk/agenta/client/__init__.py b/services/completion-stateless-sdk/agenta/client/__init__.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/__init__.py rename to services/completion-stateless-sdk/agenta/client/__init__.py diff --git a/services/completion-serverless-sdk/agenta/client/api.py b/services/completion-stateless-sdk/agenta/client/api.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/api.py rename to services/completion-stateless-sdk/agenta/client/api.py diff --git a/services/completion-serverless-sdk/agenta/client/api_models.py b/services/completion-stateless-sdk/agenta/client/api_models.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/api_models.py rename to services/completion-stateless-sdk/agenta/client/api_models.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/__init__.py b/services/completion-stateless-sdk/agenta/client/backend/__init__.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/__init__.py rename to services/completion-stateless-sdk/agenta/client/backend/__init__.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/apps/__init__.py b/services/completion-stateless-sdk/agenta/client/backend/apps/__init__.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/apps/__init__.py rename to services/completion-stateless-sdk/agenta/client/backend/apps/__init__.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/apps/client.py b/services/completion-stateless-sdk/agenta/client/backend/apps/client.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/apps/client.py rename to services/completion-stateless-sdk/agenta/client/backend/apps/client.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/bases/__init__.py b/services/completion-stateless-sdk/agenta/client/backend/bases/__init__.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/bases/__init__.py rename to services/completion-stateless-sdk/agenta/client/backend/bases/__init__.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/bases/client.py b/services/completion-stateless-sdk/agenta/client/backend/bases/client.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/bases/client.py rename to services/completion-stateless-sdk/agenta/client/backend/bases/client.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/client.py b/services/completion-stateless-sdk/agenta/client/backend/client.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/client.py rename to services/completion-stateless-sdk/agenta/client/backend/client.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/configs/__init__.py b/services/completion-stateless-sdk/agenta/client/backend/configs/__init__.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/configs/__init__.py rename to services/completion-stateless-sdk/agenta/client/backend/configs/__init__.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/configs/client.py b/services/completion-stateless-sdk/agenta/client/backend/configs/client.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/configs/client.py rename to services/completion-stateless-sdk/agenta/client/backend/configs/client.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/containers/__init__.py b/services/completion-stateless-sdk/agenta/client/backend/containers/__init__.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/containers/__init__.py rename to services/completion-stateless-sdk/agenta/client/backend/containers/__init__.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/containers/client.py b/services/completion-stateless-sdk/agenta/client/backend/containers/client.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/containers/client.py rename to services/completion-stateless-sdk/agenta/client/backend/containers/client.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/containers/types/__init__.py b/services/completion-stateless-sdk/agenta/client/backend/containers/types/__init__.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/containers/types/__init__.py rename to services/completion-stateless-sdk/agenta/client/backend/containers/types/__init__.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/containers/types/container_templates_response.py b/services/completion-stateless-sdk/agenta/client/backend/containers/types/container_templates_response.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/containers/types/container_templates_response.py rename to services/completion-stateless-sdk/agenta/client/backend/containers/types/container_templates_response.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/core/__init__.py b/services/completion-stateless-sdk/agenta/client/backend/core/__init__.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/core/__init__.py rename to services/completion-stateless-sdk/agenta/client/backend/core/__init__.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/core/api_error.py b/services/completion-stateless-sdk/agenta/client/backend/core/api_error.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/core/api_error.py rename to services/completion-stateless-sdk/agenta/client/backend/core/api_error.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/core/client_wrapper.py b/services/completion-stateless-sdk/agenta/client/backend/core/client_wrapper.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/core/client_wrapper.py rename to services/completion-stateless-sdk/agenta/client/backend/core/client_wrapper.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/core/datetime_utils.py b/services/completion-stateless-sdk/agenta/client/backend/core/datetime_utils.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/core/datetime_utils.py rename to services/completion-stateless-sdk/agenta/client/backend/core/datetime_utils.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/core/file.py b/services/completion-stateless-sdk/agenta/client/backend/core/file.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/core/file.py rename to services/completion-stateless-sdk/agenta/client/backend/core/file.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/core/http_client.py b/services/completion-stateless-sdk/agenta/client/backend/core/http_client.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/core/http_client.py rename to services/completion-stateless-sdk/agenta/client/backend/core/http_client.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/core/jsonable_encoder.py b/services/completion-stateless-sdk/agenta/client/backend/core/jsonable_encoder.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/core/jsonable_encoder.py rename to services/completion-stateless-sdk/agenta/client/backend/core/jsonable_encoder.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/core/pydantic_utilities.py b/services/completion-stateless-sdk/agenta/client/backend/core/pydantic_utilities.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/core/pydantic_utilities.py rename to services/completion-stateless-sdk/agenta/client/backend/core/pydantic_utilities.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/core/query_encoder.py b/services/completion-stateless-sdk/agenta/client/backend/core/query_encoder.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/core/query_encoder.py rename to services/completion-stateless-sdk/agenta/client/backend/core/query_encoder.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/core/remove_none_from_dict.py b/services/completion-stateless-sdk/agenta/client/backend/core/remove_none_from_dict.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/core/remove_none_from_dict.py rename to services/completion-stateless-sdk/agenta/client/backend/core/remove_none_from_dict.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/core/request_options.py b/services/completion-stateless-sdk/agenta/client/backend/core/request_options.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/core/request_options.py rename to services/completion-stateless-sdk/agenta/client/backend/core/request_options.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/core/serialization.py b/services/completion-stateless-sdk/agenta/client/backend/core/serialization.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/core/serialization.py rename to services/completion-stateless-sdk/agenta/client/backend/core/serialization.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/environments/__init__.py b/services/completion-stateless-sdk/agenta/client/backend/environments/__init__.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/environments/__init__.py rename to services/completion-stateless-sdk/agenta/client/backend/environments/__init__.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/environments/client.py b/services/completion-stateless-sdk/agenta/client/backend/environments/client.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/environments/client.py rename to services/completion-stateless-sdk/agenta/client/backend/environments/client.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/errors/__init__.py b/services/completion-stateless-sdk/agenta/client/backend/errors/__init__.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/errors/__init__.py rename to services/completion-stateless-sdk/agenta/client/backend/errors/__init__.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/errors/unprocessable_entity_error.py b/services/completion-stateless-sdk/agenta/client/backend/errors/unprocessable_entity_error.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/errors/unprocessable_entity_error.py rename to services/completion-stateless-sdk/agenta/client/backend/errors/unprocessable_entity_error.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/evaluations/__init__.py b/services/completion-stateless-sdk/agenta/client/backend/evaluations/__init__.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/evaluations/__init__.py rename to services/completion-stateless-sdk/agenta/client/backend/evaluations/__init__.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/evaluations/client.py b/services/completion-stateless-sdk/agenta/client/backend/evaluations/client.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/evaluations/client.py rename to services/completion-stateless-sdk/agenta/client/backend/evaluations/client.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/evaluators/__init__.py b/services/completion-stateless-sdk/agenta/client/backend/evaluators/__init__.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/evaluators/__init__.py rename to services/completion-stateless-sdk/agenta/client/backend/evaluators/__init__.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/evaluators/client.py b/services/completion-stateless-sdk/agenta/client/backend/evaluators/client.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/evaluators/client.py rename to services/completion-stateless-sdk/agenta/client/backend/evaluators/client.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/observability/__init__.py b/services/completion-stateless-sdk/agenta/client/backend/observability/__init__.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/observability/__init__.py rename to services/completion-stateless-sdk/agenta/client/backend/observability/__init__.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/observability/client.py b/services/completion-stateless-sdk/agenta/client/backend/observability/client.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/observability/client.py rename to services/completion-stateless-sdk/agenta/client/backend/observability/client.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/observability_v_1/__init__.py b/services/completion-stateless-sdk/agenta/client/backend/observability_v_1/__init__.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/observability_v_1/__init__.py rename to services/completion-stateless-sdk/agenta/client/backend/observability_v_1/__init__.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/observability_v_1/client.py b/services/completion-stateless-sdk/agenta/client/backend/observability_v_1/client.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/observability_v_1/client.py rename to services/completion-stateless-sdk/agenta/client/backend/observability_v_1/client.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/observability_v_1/types/__init__.py b/services/completion-stateless-sdk/agenta/client/backend/observability_v_1/types/__init__.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/observability_v_1/types/__init__.py rename to services/completion-stateless-sdk/agenta/client/backend/observability_v_1/types/__init__.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/observability_v_1/types/format.py b/services/completion-stateless-sdk/agenta/client/backend/observability_v_1/types/format.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/observability_v_1/types/format.py rename to services/completion-stateless-sdk/agenta/client/backend/observability_v_1/types/format.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/observability_v_1/types/query_traces_response.py b/services/completion-stateless-sdk/agenta/client/backend/observability_v_1/types/query_traces_response.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/observability_v_1/types/query_traces_response.py rename to services/completion-stateless-sdk/agenta/client/backend/observability_v_1/types/query_traces_response.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/testsets/__init__.py b/services/completion-stateless-sdk/agenta/client/backend/testsets/__init__.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/testsets/__init__.py rename to services/completion-stateless-sdk/agenta/client/backend/testsets/__init__.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/testsets/client.py b/services/completion-stateless-sdk/agenta/client/backend/testsets/client.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/testsets/client.py rename to services/completion-stateless-sdk/agenta/client/backend/testsets/client.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/__init__.py b/services/completion-stateless-sdk/agenta/client/backend/types/__init__.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/__init__.py rename to services/completion-stateless-sdk/agenta/client/backend/types/__init__.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/agenta_node_dto.py b/services/completion-stateless-sdk/agenta/client/backend/types/agenta_node_dto.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/agenta_node_dto.py rename to services/completion-stateless-sdk/agenta/client/backend/types/agenta_node_dto.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/agenta_node_dto_nodes_value.py b/services/completion-stateless-sdk/agenta/client/backend/types/agenta_node_dto_nodes_value.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/agenta_node_dto_nodes_value.py rename to services/completion-stateless-sdk/agenta/client/backend/types/agenta_node_dto_nodes_value.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/agenta_nodes_response.py b/services/completion-stateless-sdk/agenta/client/backend/types/agenta_nodes_response.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/agenta_nodes_response.py rename to services/completion-stateless-sdk/agenta/client/backend/types/agenta_nodes_response.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/agenta_root_dto.py b/services/completion-stateless-sdk/agenta/client/backend/types/agenta_root_dto.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/agenta_root_dto.py rename to services/completion-stateless-sdk/agenta/client/backend/types/agenta_root_dto.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/agenta_roots_response.py b/services/completion-stateless-sdk/agenta/client/backend/types/agenta_roots_response.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/agenta_roots_response.py rename to services/completion-stateless-sdk/agenta/client/backend/types/agenta_roots_response.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/agenta_tree_dto.py b/services/completion-stateless-sdk/agenta/client/backend/types/agenta_tree_dto.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/agenta_tree_dto.py rename to services/completion-stateless-sdk/agenta/client/backend/types/agenta_tree_dto.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/agenta_trees_response.py b/services/completion-stateless-sdk/agenta/client/backend/types/agenta_trees_response.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/agenta_trees_response.py rename to services/completion-stateless-sdk/agenta/client/backend/types/agenta_trees_response.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/aggregated_result.py b/services/completion-stateless-sdk/agenta/client/backend/types/aggregated_result.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/aggregated_result.py rename to services/completion-stateless-sdk/agenta/client/backend/types/aggregated_result.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/aggregated_result_evaluator_config.py b/services/completion-stateless-sdk/agenta/client/backend/types/aggregated_result_evaluator_config.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/aggregated_result_evaluator_config.py rename to services/completion-stateless-sdk/agenta/client/backend/types/aggregated_result_evaluator_config.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/app.py b/services/completion-stateless-sdk/agenta/client/backend/types/app.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/app.py rename to services/completion-stateless-sdk/agenta/client/backend/types/app.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/app_variant_response.py b/services/completion-stateless-sdk/agenta/client/backend/types/app_variant_response.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/app_variant_response.py rename to services/completion-stateless-sdk/agenta/client/backend/types/app_variant_response.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/app_variant_revision.py b/services/completion-stateless-sdk/agenta/client/backend/types/app_variant_revision.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/app_variant_revision.py rename to services/completion-stateless-sdk/agenta/client/backend/types/app_variant_revision.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/base_output.py b/services/completion-stateless-sdk/agenta/client/backend/types/base_output.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/base_output.py rename to services/completion-stateless-sdk/agenta/client/backend/types/base_output.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/body_import_testset.py b/services/completion-stateless-sdk/agenta/client/backend/types/body_import_testset.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/body_import_testset.py rename to services/completion-stateless-sdk/agenta/client/backend/types/body_import_testset.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/collect_status_response.py b/services/completion-stateless-sdk/agenta/client/backend/types/collect_status_response.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/collect_status_response.py rename to services/completion-stateless-sdk/agenta/client/backend/types/collect_status_response.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/config_db.py b/services/completion-stateless-sdk/agenta/client/backend/types/config_db.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/config_db.py rename to services/completion-stateless-sdk/agenta/client/backend/types/config_db.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/config_dto.py b/services/completion-stateless-sdk/agenta/client/backend/types/config_dto.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/config_dto.py rename to services/completion-stateless-sdk/agenta/client/backend/types/config_dto.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/config_response_model.py b/services/completion-stateless-sdk/agenta/client/backend/types/config_response_model.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/config_response_model.py rename to services/completion-stateless-sdk/agenta/client/backend/types/config_response_model.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/correct_answer.py b/services/completion-stateless-sdk/agenta/client/backend/types/correct_answer.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/correct_answer.py rename to services/completion-stateless-sdk/agenta/client/backend/types/correct_answer.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/create_app_output.py b/services/completion-stateless-sdk/agenta/client/backend/types/create_app_output.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/create_app_output.py rename to services/completion-stateless-sdk/agenta/client/backend/types/create_app_output.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/create_span.py b/services/completion-stateless-sdk/agenta/client/backend/types/create_span.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/create_span.py rename to services/completion-stateless-sdk/agenta/client/backend/types/create_span.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/create_trace_response.py b/services/completion-stateless-sdk/agenta/client/backend/types/create_trace_response.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/create_trace_response.py rename to services/completion-stateless-sdk/agenta/client/backend/types/create_trace_response.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/docker_env_vars.py b/services/completion-stateless-sdk/agenta/client/backend/types/docker_env_vars.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/docker_env_vars.py rename to services/completion-stateless-sdk/agenta/client/backend/types/docker_env_vars.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/environment_output.py b/services/completion-stateless-sdk/agenta/client/backend/types/environment_output.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/environment_output.py rename to services/completion-stateless-sdk/agenta/client/backend/types/environment_output.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/environment_output_extended.py b/services/completion-stateless-sdk/agenta/client/backend/types/environment_output_extended.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/environment_output_extended.py rename to services/completion-stateless-sdk/agenta/client/backend/types/environment_output_extended.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/environment_revision.py b/services/completion-stateless-sdk/agenta/client/backend/types/environment_revision.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/environment_revision.py rename to services/completion-stateless-sdk/agenta/client/backend/types/environment_revision.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/error.py b/services/completion-stateless-sdk/agenta/client/backend/types/error.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/error.py rename to services/completion-stateless-sdk/agenta/client/backend/types/error.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/evaluation.py b/services/completion-stateless-sdk/agenta/client/backend/types/evaluation.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/evaluation.py rename to services/completion-stateless-sdk/agenta/client/backend/types/evaluation.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/evaluation_scenario.py b/services/completion-stateless-sdk/agenta/client/backend/types/evaluation_scenario.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/evaluation_scenario.py rename to services/completion-stateless-sdk/agenta/client/backend/types/evaluation_scenario.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/evaluation_scenario_input.py b/services/completion-stateless-sdk/agenta/client/backend/types/evaluation_scenario_input.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/evaluation_scenario_input.py rename to services/completion-stateless-sdk/agenta/client/backend/types/evaluation_scenario_input.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/evaluation_scenario_output.py b/services/completion-stateless-sdk/agenta/client/backend/types/evaluation_scenario_output.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/evaluation_scenario_output.py rename to services/completion-stateless-sdk/agenta/client/backend/types/evaluation_scenario_output.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/evaluation_scenario_result.py b/services/completion-stateless-sdk/agenta/client/backend/types/evaluation_scenario_result.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/evaluation_scenario_result.py rename to services/completion-stateless-sdk/agenta/client/backend/types/evaluation_scenario_result.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/evaluation_scenario_score_update.py b/services/completion-stateless-sdk/agenta/client/backend/types/evaluation_scenario_score_update.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/evaluation_scenario_score_update.py rename to services/completion-stateless-sdk/agenta/client/backend/types/evaluation_scenario_score_update.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/evaluation_status_enum.py b/services/completion-stateless-sdk/agenta/client/backend/types/evaluation_status_enum.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/evaluation_status_enum.py rename to services/completion-stateless-sdk/agenta/client/backend/types/evaluation_status_enum.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/evaluation_type.py b/services/completion-stateless-sdk/agenta/client/backend/types/evaluation_type.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/evaluation_type.py rename to services/completion-stateless-sdk/agenta/client/backend/types/evaluation_type.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/evaluator.py b/services/completion-stateless-sdk/agenta/client/backend/types/evaluator.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/evaluator.py rename to services/completion-stateless-sdk/agenta/client/backend/types/evaluator.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/evaluator_config.py b/services/completion-stateless-sdk/agenta/client/backend/types/evaluator_config.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/evaluator_config.py rename to services/completion-stateless-sdk/agenta/client/backend/types/evaluator_config.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/evaluator_mapping_output_interface.py b/services/completion-stateless-sdk/agenta/client/backend/types/evaluator_mapping_output_interface.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/evaluator_mapping_output_interface.py rename to services/completion-stateless-sdk/agenta/client/backend/types/evaluator_mapping_output_interface.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/evaluator_output_interface.py b/services/completion-stateless-sdk/agenta/client/backend/types/evaluator_output_interface.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/evaluator_output_interface.py rename to services/completion-stateless-sdk/agenta/client/backend/types/evaluator_output_interface.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/exception_dto.py b/services/completion-stateless-sdk/agenta/client/backend/types/exception_dto.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/exception_dto.py rename to services/completion-stateless-sdk/agenta/client/backend/types/exception_dto.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/get_config_response.py b/services/completion-stateless-sdk/agenta/client/backend/types/get_config_response.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/get_config_response.py rename to services/completion-stateless-sdk/agenta/client/backend/types/get_config_response.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/http_validation_error.py b/services/completion-stateless-sdk/agenta/client/backend/types/http_validation_error.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/http_validation_error.py rename to services/completion-stateless-sdk/agenta/client/backend/types/http_validation_error.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/human_evaluation.py b/services/completion-stateless-sdk/agenta/client/backend/types/human_evaluation.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/human_evaluation.py rename to services/completion-stateless-sdk/agenta/client/backend/types/human_evaluation.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/human_evaluation_scenario.py b/services/completion-stateless-sdk/agenta/client/backend/types/human_evaluation_scenario.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/human_evaluation_scenario.py rename to services/completion-stateless-sdk/agenta/client/backend/types/human_evaluation_scenario.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/human_evaluation_scenario_input.py b/services/completion-stateless-sdk/agenta/client/backend/types/human_evaluation_scenario_input.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/human_evaluation_scenario_input.py rename to services/completion-stateless-sdk/agenta/client/backend/types/human_evaluation_scenario_input.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/human_evaluation_scenario_output.py b/services/completion-stateless-sdk/agenta/client/backend/types/human_evaluation_scenario_output.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/human_evaluation_scenario_output.py rename to services/completion-stateless-sdk/agenta/client/backend/types/human_evaluation_scenario_output.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/human_evaluation_scenario_update.py b/services/completion-stateless-sdk/agenta/client/backend/types/human_evaluation_scenario_update.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/human_evaluation_scenario_update.py rename to services/completion-stateless-sdk/agenta/client/backend/types/human_evaluation_scenario_update.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/human_evaluation_update.py b/services/completion-stateless-sdk/agenta/client/backend/types/human_evaluation_update.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/human_evaluation_update.py rename to services/completion-stateless-sdk/agenta/client/backend/types/human_evaluation_update.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/image.py b/services/completion-stateless-sdk/agenta/client/backend/types/image.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/image.py rename to services/completion-stateless-sdk/agenta/client/backend/types/image.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/invite_request.py b/services/completion-stateless-sdk/agenta/client/backend/types/invite_request.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/invite_request.py rename to services/completion-stateless-sdk/agenta/client/backend/types/invite_request.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/lifecycle_dto.py b/services/completion-stateless-sdk/agenta/client/backend/types/lifecycle_dto.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/lifecycle_dto.py rename to services/completion-stateless-sdk/agenta/client/backend/types/lifecycle_dto.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/link_dto.py b/services/completion-stateless-sdk/agenta/client/backend/types/link_dto.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/link_dto.py rename to services/completion-stateless-sdk/agenta/client/backend/types/link_dto.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/list_api_keys_response.py b/services/completion-stateless-sdk/agenta/client/backend/types/list_api_keys_response.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/list_api_keys_response.py rename to services/completion-stateless-sdk/agenta/client/backend/types/list_api_keys_response.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/llm_run_rate_limit.py b/services/completion-stateless-sdk/agenta/client/backend/types/llm_run_rate_limit.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/llm_run_rate_limit.py rename to services/completion-stateless-sdk/agenta/client/backend/types/llm_run_rate_limit.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/llm_tokens.py b/services/completion-stateless-sdk/agenta/client/backend/types/llm_tokens.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/llm_tokens.py rename to services/completion-stateless-sdk/agenta/client/backend/types/llm_tokens.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/lm_providers_enum.py b/services/completion-stateless-sdk/agenta/client/backend/types/lm_providers_enum.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/lm_providers_enum.py rename to services/completion-stateless-sdk/agenta/client/backend/types/lm_providers_enum.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/new_human_evaluation.py b/services/completion-stateless-sdk/agenta/client/backend/types/new_human_evaluation.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/new_human_evaluation.py rename to services/completion-stateless-sdk/agenta/client/backend/types/new_human_evaluation.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/new_testset.py b/services/completion-stateless-sdk/agenta/client/backend/types/new_testset.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/new_testset.py rename to services/completion-stateless-sdk/agenta/client/backend/types/new_testset.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/node_dto.py b/services/completion-stateless-sdk/agenta/client/backend/types/node_dto.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/node_dto.py rename to services/completion-stateless-sdk/agenta/client/backend/types/node_dto.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/node_type.py b/services/completion-stateless-sdk/agenta/client/backend/types/node_type.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/node_type.py rename to services/completion-stateless-sdk/agenta/client/backend/types/node_type.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/o_tel_context_dto.py b/services/completion-stateless-sdk/agenta/client/backend/types/o_tel_context_dto.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/o_tel_context_dto.py rename to services/completion-stateless-sdk/agenta/client/backend/types/o_tel_context_dto.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/o_tel_event_dto.py b/services/completion-stateless-sdk/agenta/client/backend/types/o_tel_event_dto.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/o_tel_event_dto.py rename to services/completion-stateless-sdk/agenta/client/backend/types/o_tel_event_dto.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/o_tel_extra_dto.py b/services/completion-stateless-sdk/agenta/client/backend/types/o_tel_extra_dto.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/o_tel_extra_dto.py rename to services/completion-stateless-sdk/agenta/client/backend/types/o_tel_extra_dto.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/o_tel_link_dto.py b/services/completion-stateless-sdk/agenta/client/backend/types/o_tel_link_dto.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/o_tel_link_dto.py rename to services/completion-stateless-sdk/agenta/client/backend/types/o_tel_link_dto.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/o_tel_span_dto.py b/services/completion-stateless-sdk/agenta/client/backend/types/o_tel_span_dto.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/o_tel_span_dto.py rename to services/completion-stateless-sdk/agenta/client/backend/types/o_tel_span_dto.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/o_tel_span_kind.py b/services/completion-stateless-sdk/agenta/client/backend/types/o_tel_span_kind.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/o_tel_span_kind.py rename to services/completion-stateless-sdk/agenta/client/backend/types/o_tel_span_kind.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/o_tel_spans_response.py b/services/completion-stateless-sdk/agenta/client/backend/types/o_tel_spans_response.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/o_tel_spans_response.py rename to services/completion-stateless-sdk/agenta/client/backend/types/o_tel_spans_response.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/o_tel_status_code.py b/services/completion-stateless-sdk/agenta/client/backend/types/o_tel_status_code.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/o_tel_status_code.py rename to services/completion-stateless-sdk/agenta/client/backend/types/o_tel_status_code.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/organization.py b/services/completion-stateless-sdk/agenta/client/backend/types/organization.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/organization.py rename to services/completion-stateless-sdk/agenta/client/backend/types/organization.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/organization_output.py b/services/completion-stateless-sdk/agenta/client/backend/types/organization_output.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/organization_output.py rename to services/completion-stateless-sdk/agenta/client/backend/types/organization_output.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/outputs.py b/services/completion-stateless-sdk/agenta/client/backend/types/outputs.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/outputs.py rename to services/completion-stateless-sdk/agenta/client/backend/types/outputs.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/parent_dto.py b/services/completion-stateless-sdk/agenta/client/backend/types/parent_dto.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/parent_dto.py rename to services/completion-stateless-sdk/agenta/client/backend/types/parent_dto.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/permission.py b/services/completion-stateless-sdk/agenta/client/backend/types/permission.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/permission.py rename to services/completion-stateless-sdk/agenta/client/backend/types/permission.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/reference_dto.py b/services/completion-stateless-sdk/agenta/client/backend/types/reference_dto.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/reference_dto.py rename to services/completion-stateless-sdk/agenta/client/backend/types/reference_dto.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/reference_request_model.py b/services/completion-stateless-sdk/agenta/client/backend/types/reference_request_model.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/reference_request_model.py rename to services/completion-stateless-sdk/agenta/client/backend/types/reference_request_model.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/result.py b/services/completion-stateless-sdk/agenta/client/backend/types/result.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/result.py rename to services/completion-stateless-sdk/agenta/client/backend/types/result.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/root_dto.py b/services/completion-stateless-sdk/agenta/client/backend/types/root_dto.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/root_dto.py rename to services/completion-stateless-sdk/agenta/client/backend/types/root_dto.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/score.py b/services/completion-stateless-sdk/agenta/client/backend/types/score.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/score.py rename to services/completion-stateless-sdk/agenta/client/backend/types/score.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/simple_evaluation_output.py b/services/completion-stateless-sdk/agenta/client/backend/types/simple_evaluation_output.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/simple_evaluation_output.py rename to services/completion-stateless-sdk/agenta/client/backend/types/simple_evaluation_output.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/span.py b/services/completion-stateless-sdk/agenta/client/backend/types/span.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/span.py rename to services/completion-stateless-sdk/agenta/client/backend/types/span.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/span_detail.py b/services/completion-stateless-sdk/agenta/client/backend/types/span_detail.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/span_detail.py rename to services/completion-stateless-sdk/agenta/client/backend/types/span_detail.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/span_dto.py b/services/completion-stateless-sdk/agenta/client/backend/types/span_dto.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/span_dto.py rename to services/completion-stateless-sdk/agenta/client/backend/types/span_dto.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/span_dto_nodes_value.py b/services/completion-stateless-sdk/agenta/client/backend/types/span_dto_nodes_value.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/span_dto_nodes_value.py rename to services/completion-stateless-sdk/agenta/client/backend/types/span_dto_nodes_value.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/span_status_code.py b/services/completion-stateless-sdk/agenta/client/backend/types/span_status_code.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/span_status_code.py rename to services/completion-stateless-sdk/agenta/client/backend/types/span_status_code.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/span_variant.py b/services/completion-stateless-sdk/agenta/client/backend/types/span_variant.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/span_variant.py rename to services/completion-stateless-sdk/agenta/client/backend/types/span_variant.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/status_code.py b/services/completion-stateless-sdk/agenta/client/backend/types/status_code.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/status_code.py rename to services/completion-stateless-sdk/agenta/client/backend/types/status_code.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/status_dto.py b/services/completion-stateless-sdk/agenta/client/backend/types/status_dto.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/status_dto.py rename to services/completion-stateless-sdk/agenta/client/backend/types/status_dto.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/template.py b/services/completion-stateless-sdk/agenta/client/backend/types/template.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/template.py rename to services/completion-stateless-sdk/agenta/client/backend/types/template.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/template_image_info.py b/services/completion-stateless-sdk/agenta/client/backend/types/template_image_info.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/template_image_info.py rename to services/completion-stateless-sdk/agenta/client/backend/types/template_image_info.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/test_set_output_response.py b/services/completion-stateless-sdk/agenta/client/backend/types/test_set_output_response.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/test_set_output_response.py rename to services/completion-stateless-sdk/agenta/client/backend/types/test_set_output_response.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/test_set_simple_response.py b/services/completion-stateless-sdk/agenta/client/backend/types/test_set_simple_response.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/test_set_simple_response.py rename to services/completion-stateless-sdk/agenta/client/backend/types/test_set_simple_response.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/time_dto.py b/services/completion-stateless-sdk/agenta/client/backend/types/time_dto.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/time_dto.py rename to services/completion-stateless-sdk/agenta/client/backend/types/time_dto.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/trace_detail.py b/services/completion-stateless-sdk/agenta/client/backend/types/trace_detail.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/trace_detail.py rename to services/completion-stateless-sdk/agenta/client/backend/types/trace_detail.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/tree_dto.py b/services/completion-stateless-sdk/agenta/client/backend/types/tree_dto.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/tree_dto.py rename to services/completion-stateless-sdk/agenta/client/backend/types/tree_dto.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/tree_type.py b/services/completion-stateless-sdk/agenta/client/backend/types/tree_type.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/tree_type.py rename to services/completion-stateless-sdk/agenta/client/backend/types/tree_type.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/update_app_output.py b/services/completion-stateless-sdk/agenta/client/backend/types/update_app_output.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/update_app_output.py rename to services/completion-stateless-sdk/agenta/client/backend/types/update_app_output.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/uri.py b/services/completion-stateless-sdk/agenta/client/backend/types/uri.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/uri.py rename to services/completion-stateless-sdk/agenta/client/backend/types/uri.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/validation_error.py b/services/completion-stateless-sdk/agenta/client/backend/types/validation_error.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/validation_error.py rename to services/completion-stateless-sdk/agenta/client/backend/types/validation_error.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/validation_error_loc_item.py b/services/completion-stateless-sdk/agenta/client/backend/types/validation_error_loc_item.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/validation_error_loc_item.py rename to services/completion-stateless-sdk/agenta/client/backend/types/validation_error_loc_item.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/variant_action.py b/services/completion-stateless-sdk/agenta/client/backend/types/variant_action.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/variant_action.py rename to services/completion-stateless-sdk/agenta/client/backend/types/variant_action.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/variant_action_enum.py b/services/completion-stateless-sdk/agenta/client/backend/types/variant_action_enum.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/variant_action_enum.py rename to services/completion-stateless-sdk/agenta/client/backend/types/variant_action_enum.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/with_pagination.py b/services/completion-stateless-sdk/agenta/client/backend/types/with_pagination.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/with_pagination.py rename to services/completion-stateless-sdk/agenta/client/backend/types/with_pagination.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/workspace_member_response.py b/services/completion-stateless-sdk/agenta/client/backend/types/workspace_member_response.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/workspace_member_response.py rename to services/completion-stateless-sdk/agenta/client/backend/types/workspace_member_response.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/workspace_permission.py b/services/completion-stateless-sdk/agenta/client/backend/types/workspace_permission.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/workspace_permission.py rename to services/completion-stateless-sdk/agenta/client/backend/types/workspace_permission.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/workspace_response.py b/services/completion-stateless-sdk/agenta/client/backend/types/workspace_response.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/workspace_response.py rename to services/completion-stateless-sdk/agenta/client/backend/types/workspace_response.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/workspace_role.py b/services/completion-stateless-sdk/agenta/client/backend/types/workspace_role.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/workspace_role.py rename to services/completion-stateless-sdk/agenta/client/backend/types/workspace_role.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/types/workspace_role_response.py b/services/completion-stateless-sdk/agenta/client/backend/types/workspace_role_response.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/types/workspace_role_response.py rename to services/completion-stateless-sdk/agenta/client/backend/types/workspace_role_response.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/variants/__init__.py b/services/completion-stateless-sdk/agenta/client/backend/variants/__init__.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/variants/__init__.py rename to services/completion-stateless-sdk/agenta/client/backend/variants/__init__.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/variants/client.py b/services/completion-stateless-sdk/agenta/client/backend/variants/client.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/variants/client.py rename to services/completion-stateless-sdk/agenta/client/backend/variants/client.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/variants/types/__init__.py b/services/completion-stateless-sdk/agenta/client/backend/variants/types/__init__.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/variants/types/__init__.py rename to services/completion-stateless-sdk/agenta/client/backend/variants/types/__init__.py diff --git a/services/completion-serverless-sdk/agenta/client/backend/variants/types/add_variant_from_base_and_config_response.py b/services/completion-stateless-sdk/agenta/client/backend/variants/types/add_variant_from_base_and_config_response.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/backend/variants/types/add_variant_from_base_and_config_response.py rename to services/completion-stateless-sdk/agenta/client/backend/variants/types/add_variant_from_base_and_config_response.py diff --git a/services/completion-serverless-sdk/agenta/client/client.py b/services/completion-stateless-sdk/agenta/client/client.py similarity index 99% rename from services/completion-serverless-sdk/agenta/client/client.py rename to services/completion-stateless-sdk/agenta/client/client.py index d5e4547f7..17dc1ac46 100644 --- a/services/completion-serverless-sdk/agenta/client/client.py +++ b/services/completion-stateless-sdk/agenta/client/client.py @@ -559,5 +559,5 @@ def run_evaluation(app_name: str, host: str, api_key: str = None) -> str: raise APIRequestError( f"Request to run evaluations failed with status code {response.status_code} and error message: {error_message}." ) - print(response.json()) + return response.json() diff --git a/services/completion-serverless-sdk/agenta/client/exceptions.py b/services/completion-stateless-sdk/agenta/client/exceptions.py similarity index 100% rename from services/completion-serverless-sdk/agenta/client/exceptions.py rename to services/completion-stateless-sdk/agenta/client/exceptions.py diff --git a/services/completion-serverless-sdk/agenta/config.py b/services/completion-stateless-sdk/agenta/config.py similarity index 100% rename from services/completion-serverless-sdk/agenta/config.py rename to services/completion-stateless-sdk/agenta/config.py diff --git a/services/completion-serverless-sdk/agenta/config.toml b/services/completion-stateless-sdk/agenta/config.toml similarity index 100% rename from services/completion-serverless-sdk/agenta/config.toml rename to services/completion-stateless-sdk/agenta/config.toml diff --git a/services/completion-serverless-sdk/agenta/docker/docker-assets/Dockerfile.cloud.template b/services/completion-stateless-sdk/agenta/docker/docker-assets/Dockerfile.cloud.template similarity index 100% rename from services/completion-serverless-sdk/agenta/docker/docker-assets/Dockerfile.cloud.template rename to services/completion-stateless-sdk/agenta/docker/docker-assets/Dockerfile.cloud.template diff --git a/services/completion-serverless-sdk/agenta/docker/docker-assets/Dockerfile.template b/services/completion-stateless-sdk/agenta/docker/docker-assets/Dockerfile.template similarity index 100% rename from services/completion-serverless-sdk/agenta/docker/docker-assets/Dockerfile.template rename to services/completion-stateless-sdk/agenta/docker/docker-assets/Dockerfile.template diff --git a/services/completion-serverless-sdk/agenta/docker/docker-assets/README.md b/services/completion-stateless-sdk/agenta/docker/docker-assets/README.md similarity index 100% rename from services/completion-serverless-sdk/agenta/docker/docker-assets/README.md rename to services/completion-stateless-sdk/agenta/docker/docker-assets/README.md diff --git a/services/completion-serverless-sdk/agenta/docker/docker-assets/entrypoint.sh b/services/completion-stateless-sdk/agenta/docker/docker-assets/entrypoint.sh similarity index 100% rename from services/completion-serverless-sdk/agenta/docker/docker-assets/entrypoint.sh rename to services/completion-stateless-sdk/agenta/docker/docker-assets/entrypoint.sh diff --git a/services/completion-serverless-sdk/agenta/docker/docker-assets/lambda_function.py b/services/completion-stateless-sdk/agenta/docker/docker-assets/lambda_function.py similarity index 100% rename from services/completion-serverless-sdk/agenta/docker/docker-assets/lambda_function.py rename to services/completion-stateless-sdk/agenta/docker/docker-assets/lambda_function.py diff --git a/services/completion-serverless-sdk/agenta/docker/docker-assets/main.py b/services/completion-stateless-sdk/agenta/docker/docker-assets/main.py similarity index 100% rename from services/completion-serverless-sdk/agenta/docker/docker-assets/main.py rename to services/completion-stateless-sdk/agenta/docker/docker-assets/main.py diff --git a/services/completion-serverless-sdk/agenta/docker/docker_utils.py b/services/completion-stateless-sdk/agenta/docker/docker_utils.py similarity index 100% rename from services/completion-serverless-sdk/agenta/docker/docker_utils.py rename to services/completion-stateless-sdk/agenta/docker/docker_utils.py diff --git a/services/completion-serverless-sdk/agenta/sdk/__init__.py b/services/completion-stateless-sdk/agenta/sdk/__init__.py similarity index 100% rename from services/completion-serverless-sdk/agenta/sdk/__init__.py rename to services/completion-stateless-sdk/agenta/sdk/__init__.py diff --git a/services/completion-serverless-sdk/agenta/sdk/agenta_init.py b/services/completion-stateless-sdk/agenta/sdk/agenta_init.py similarity index 63% rename from services/completion-serverless-sdk/agenta/sdk/agenta_init.py rename to services/completion-stateless-sdk/agenta/sdk/agenta_init.py index dbc573437..52daec5b5 100644 --- a/services/completion-serverless-sdk/agenta/sdk/agenta_init.py +++ b/services/completion-stateless-sdk/agenta/sdk/agenta_init.py @@ -6,8 +6,9 @@ from agenta.sdk.utils.logging import log from agenta.sdk.utils.globals import set_global from agenta.client.backend.client import AgentaApi, AsyncAgentaApi + from agenta.sdk.tracing import Tracing -from agenta.client.exceptions import APIRequestError +from agenta.sdk.context.routing import routing_context class AgentaSingleton: @@ -124,28 +125,40 @@ def init( class Config: def __init__( self, - host: str, + # LEGACY + host: Optional[str] = None, base_id: Optional[str] = None, - api_key: Optional[str] = "", + api_key: Optional[str] = None, + # LEGACY + **kwargs, ): - self.host = host + self.default_parameters = {**kwargs} + + def set_default(self, **kwargs): + self.default_parameters.update(kwargs) + + def get_default(self): + return self.default_parameters + + def __getattr__(self, key): + context = routing_context.get() + + parameters = context.parameters - self.base_id = base_id + if key in parameters: + value = parameters[key] - if self.base_id is None: - # print( - # "Warning: Your configuration will not be saved permanently since base_id is not provided.\n" - # ) - pass + if isinstance(value, dict): + nested_config = Config() + nested_config.set_default(**value) - if base_id is None or host is None: - self.persist = False - else: - self.persist = True - self.client = AgentaApi( - base_url=self.host + "/api", - api_key=api_key if api_key else "", - ) + return nested_config + + return value + + return None + + ### --- LEGACY --- ### def register_default(self, overwrite=False, **kwargs): """alias for default""" @@ -157,104 +170,13 @@ def default(self, overwrite=False, **kwargs): overwrite: Whether to overwrite the existing configuration or not **kwargs: A dict containing the parameters """ - self.set( - **kwargs - ) # In case there is no connectivity, we still can use the default values - try: - self.push(config_name="default", overwrite=overwrite, **kwargs) - except Exception as ex: - log.warning( - "Unable to push the default configuration to the server. %s", str(ex) - ) - - def push(self, config_name: str, overwrite=True, **kwargs): - """Pushes the parameters for the app variant to the server - Args: - config_name: Name of the configuration to push to - overwrite: Whether to overwrite the existing configuration or not - **kwargs: A dict containing the parameters - """ - if not self.persist: - return - try: - self.client.configs.save_config( - base_id=self.base_id, - config_name=config_name, - parameters=kwargs, - overwrite=overwrite, - ) - except Exception as ex: - log.warning( - "Failed to push the configuration to the server with error: %s", ex - ) - - def pull( - self, config_name: str = "default", environment_name: Optional[str] = None - ): - """Pulls the parameters for the app variant from the server and sets them to the config""" - if not self.persist and ( - config_name != "default" or environment_name is not None - ): - raise ValueError( - "Cannot pull the configuration from the server since the app_name and base_name are not provided." - ) - if self.persist: - try: - if environment_name: - config = self.client.configs.get_config( - base_id=self.base_id, environment_name=environment_name - ) - - else: - config = self.client.configs.get_config( - base_id=self.base_id, - config_name=config_name, - ) - except Exception as ex: - log.warning( - "Failed to pull the configuration from the server with error: %s", - str(ex), - ) - try: - self.set(**{"current_version": config.current_version, **config.parameters}) - except Exception as ex: - log.warning("Failed to set the configuration with error: %s", str(ex)) + self.set(**kwargs) - def all(self): - """Returns all the parameters for the app variant""" - return { - k: v - for k, v in self.__dict__.items() - if k - not in [ - "app_name", - "base_name", - "host", - "base_id", - "api_key", - "persist", - "client", - ] - } - - # function to set the parameters for the app variant def set(self, **kwargs): - """Sets the parameters for the app variant - - Args: - **kwargs: A dict containing the parameters - """ - for key, value in kwargs.items(): - setattr(self, key, value) - - def dump(self): - """Returns all the information about the current version in the configuration. - - Raises: - NotImplementedError: _description_ - """ + self.set_default(**kwargs) - raise NotImplementedError() + def all(self): + return self.default_parameters def init( diff --git a/services/completion-serverless-sdk/agenta/sdk/assets.py b/services/completion-stateless-sdk/agenta/sdk/assets.py similarity index 100% rename from services/completion-serverless-sdk/agenta/sdk/assets.py rename to services/completion-stateless-sdk/agenta/sdk/assets.py diff --git a/services/completion-serverless-sdk/agenta/sdk/client.py b/services/completion-stateless-sdk/agenta/sdk/client.py similarity index 100% rename from services/completion-serverless-sdk/agenta/sdk/client.py rename to services/completion-stateless-sdk/agenta/sdk/client.py diff --git a/services/completion-serverless-sdk/agenta/sdk/context/__init__.py b/services/completion-stateless-sdk/agenta/sdk/context/__init__.py similarity index 100% rename from services/completion-serverless-sdk/agenta/sdk/context/__init__.py rename to services/completion-stateless-sdk/agenta/sdk/context/__init__.py diff --git a/services/completion-serverless-sdk/agenta/sdk/context/exporting.py b/services/completion-stateless-sdk/agenta/sdk/context/exporting.py similarity index 100% rename from services/completion-serverless-sdk/agenta/sdk/context/exporting.py rename to services/completion-stateless-sdk/agenta/sdk/context/exporting.py diff --git a/services/completion-serverless-sdk/agenta/sdk/context/routing.py b/services/completion-stateless-sdk/agenta/sdk/context/routing.py similarity index 85% rename from services/completion-serverless-sdk/agenta/sdk/context/routing.py rename to services/completion-stateless-sdk/agenta/sdk/context/routing.py index c47ef7471..128489828 100644 --- a/services/completion-serverless-sdk/agenta/sdk/context/routing.py +++ b/services/completion-stateless-sdk/agenta/sdk/context/routing.py @@ -1,4 +1,4 @@ -from typing import Any, Dict, Optional +from typing import Any, Dict, List, Optional from contextlib import contextmanager from contextvars import ContextVar @@ -8,7 +8,7 @@ class RoutingContext(BaseModel): parameters: Optional[Dict[str, Any]] = None - secrets: Optional[Dict[str, Any]] = None + secrets: Optional[List[Any]] = None routing_context = ContextVar("routing_context", default=RoutingContext()) diff --git a/services/completion-serverless-sdk/agenta/sdk/context/tracing.py b/services/completion-stateless-sdk/agenta/sdk/context/tracing.py similarity index 100% rename from services/completion-serverless-sdk/agenta/sdk/context/tracing.py rename to services/completion-stateless-sdk/agenta/sdk/context/tracing.py diff --git a/services/completion-serverless-sdk/agenta/sdk/decorators/__init__.py b/services/completion-stateless-sdk/agenta/sdk/decorators/__init__.py similarity index 100% rename from services/completion-serverless-sdk/agenta/sdk/decorators/__init__.py rename to services/completion-stateless-sdk/agenta/sdk/decorators/__init__.py diff --git a/services/completion-serverless-sdk/agenta/sdk/decorators/routing.py b/services/completion-stateless-sdk/agenta/sdk/decorators/routing.py similarity index 94% rename from services/completion-serverless-sdk/agenta/sdk/decorators/routing.py rename to services/completion-stateless-sdk/agenta/sdk/decorators/routing.py index a0bddfa72..7587cd7d5 100644 --- a/services/completion-serverless-sdk/agenta/sdk/decorators/routing.py +++ b/services/completion-stateless-sdk/agenta/sdk/decorators/routing.py @@ -1,14 +1,12 @@ from typing import Type, Any, Callable, Dict, Optional, Tuple, List -from annotated_types import Ge, Le, Gt, Lt -from pydantic import BaseModel, HttpUrl, ValidationError from inspect import signature, iscoroutinefunction, Signature, Parameter, _empty -from argparse import ArgumentParser from functools import wraps -from asyncio import sleep, get_event_loop -from traceback import format_exc, format_exception -from pathlib import Path -from tempfile import NamedTemporaryFile +from traceback import format_exception +from asyncio import sleep +from tempfile import NamedTemporaryFile +from annotated_types import Ge, Le, Gt, Lt +from pydantic import BaseModel, HttpUrl, ValidationError from fastapi import Body, FastAPI, UploadFile, HTTPException, Request @@ -20,7 +18,6 @@ from agenta.sdk.context.routing import ( routing_context_manager, - routing_context, RoutingContext, ) from agenta.sdk.context.tracing import ( @@ -60,7 +57,7 @@ class PathValidator(BaseModel): url: HttpUrl -class route: +class route: # pylint: disable=invalid-name # This decorator is used to expose specific stages of a workflow (embedding, retrieval, summarization, etc.) # as independent endpoints. It is designed for backward compatibility with existing code that uses # the @entrypoint decorator, which has certain limitations. By using @route(), we can create new @@ -122,6 +119,7 @@ async def chain_of_prompts_llm(prompt: str): """ routes = list() + _middleware = False _run_path = "/run" _test_path = "/test" @@ -158,28 +156,34 @@ def __init__( ### --- Run --- # @wraps(func) async def run_wrapper(request: Request, *args, **kwargs) -> Any: - arguments = { + # LEGACY + # TODO: Removing this implies breaking changes in : + # - calls to /generate_deployed + kwargs = { k: v for k, v in kwargs.items() if k not in ["config", "environment", "app"] } + # LEGACY - return await self.execute_wrapper( - request, - False, - *args, - **arguments, - ) + kwargs, _ = self.split_kwargs(kwargs, default_parameters) - self.update_deployed_function_signature( - run_wrapper, - ingestible_files, + # TODO: Why is this not used in the run_wrapper? + # self.ingest_files(kwargs, ingestible_files) + + return await self.execute_wrapper(request, False, *args, **kwargs) + + self.update_run_wrapper_signature( + wrapper=run_wrapper, + ingestible_files=ingestible_files, ) run_route = f"{entrypoint._run_path}{route_path}" app.post(run_route, response_model=BaseResponse)(run_wrapper) # LEGACY + # TODO: Removing this implies breaking changes in : + # - calls to /generate_deployed must be replaced with calls to /run if route_path == "": run_route = entrypoint._legacy_generate_deployed_path app.post(run_route, response_model=BaseResponse)(run_wrapper) @@ -189,34 +193,28 @@ async def run_wrapper(request: Request, *args, **kwargs) -> Any: ### --- Test --- # @wraps(func) async def test_wrapper(request: Request, *args, **kwargs) -> Any: - arguments, _ = self.split_kwargs( - kwargs, - default_parameters, - ) + kwargs, parameters = self.split_kwargs(kwargs, default_parameters) - self.ingest_files( - arguments, - ingestible_files, - ) + request.state.config["parameters"] = parameters - return await self.execute_wrapper( - request, - True, - *args, - **arguments, - ) + # TODO: Why is this only used in the test_wrapper? + self.ingest_files(kwargs, ingestible_files) + + return await self.execute_wrapper(request, True, *args, **kwargs) self.update_test_wrapper_signature( wrapper=test_wrapper, + ingestible_files=ingestible_files, config_class=config, config_dict=default_parameters, - ingestible_files=ingestible_files, ) test_route = f"{entrypoint._test_path}{route_path}" app.post(test_route, response_model=BaseResponse)(test_wrapper) # LEGACY + # TODO: Removing this implies breaking changes in : + # - calls to /generate must be replaced with calls to /test if route_path == "": test_route = entrypoint._legacy_generate_path app.post(test_route, response_model=BaseResponse)(test_wrapper) @@ -306,14 +304,15 @@ def parse_config(self) -> Dict[str, Any]: def split_kwargs( self, kwargs: Dict[str, Any], default_parameters: Dict[str, Any] ) -> Tuple[Dict[str, Any], Dict[str, Any]]: - """Split keyword arguments into function parameters and API configuration parameters.""" + arguments = {k: v for k, v in kwargs.items() if k not in default_parameters} + parameters = {k: v for k, v in kwargs.items() if k in default_parameters} - func_params = {k: v for k, v in kwargs.items() if k not in default_parameters} - api_config_params = {k: v for k, v in kwargs.items() if k in default_parameters} + return arguments, parameters - return func_params, api_config_params - - def ingest_file(self, upfile: UploadFile): + def ingest_file( + self, + upfile: UploadFile, + ): temp_file = NamedTemporaryFile(delete=False) temp_file.write(upfile.file.read()) temp_file.close() @@ -384,7 +383,11 @@ async def execute_function( except Exception as error: # pylint: disable=broad-except self.handle_failure(error) - async def handle_success(self, result: Any, inline: bool): + async def handle_success( + self, + result: Any, + inline: bool, + ): data = None tree = None @@ -399,7 +402,10 @@ async def handle_success(self, result: Any, inline: bool): except: return BaseResponse(data=data) - def handle_failure(self, error: Exception): + def handle_failure( + self, + error: Exception, + ): display_exception("Application Exception") status_code = 500 @@ -409,7 +415,10 @@ def handle_failure(self, error: Exception): raise HTTPException(status_code=status_code, detail=detail) - def patch_result(self, result: Any): + def patch_result( + self, + result: Any, + ): """ Patch the result to only include the message if the result is a FuncResponse-style dictionary with message, cost, and usage keys. @@ -446,7 +455,10 @@ def patch_result(self, result: Any): return data - async def fetch_inline_trace(self, inline): + async def fetch_inline_trace( + self, + inline, + ): WAIT_FOR_SPANS = True TIMEOUT = 1 TIMESTEP = 0.1 @@ -537,7 +549,7 @@ def update_test_wrapper_signature( self.update_wrapper_signature(wrapper, updated_params) self.add_request_to_signature(wrapper) - def update_deployed_function_signature( + def update_run_wrapper_signature( self, wrapper: Callable[..., Any], ingestible_files: Dict[str, Parameter], diff --git a/services/completion-serverless-sdk/agenta/sdk/decorators/tracing.py b/services/completion-stateless-sdk/agenta/sdk/decorators/tracing.py similarity index 98% rename from services/completion-serverless-sdk/agenta/sdk/decorators/tracing.py rename to services/completion-stateless-sdk/agenta/sdk/decorators/tracing.py index 7b8e3c688..6d3124396 100644 --- a/services/completion-serverless-sdk/agenta/sdk/decorators/tracing.py +++ b/services/completion-stateless-sdk/agenta/sdk/decorators/tracing.py @@ -97,7 +97,7 @@ def _attach_baggage(self): token = None if references: - for k, v in references: + for k, v in references.items(): token = attach(baggage.set_baggage(f"ag.refs.{k}", v)) return token @@ -246,9 +246,7 @@ def _redact( not in ( ignore if isinstance(ignore, list) - else io.keys() - if ignore is True - else [] + else io.keys() if ignore is True else [] ) } diff --git a/services/completion-serverless-sdk/agenta/sdk/litellm/__init__.py b/services/completion-stateless-sdk/agenta/sdk/litellm/__init__.py similarity index 100% rename from services/completion-serverless-sdk/agenta/sdk/litellm/__init__.py rename to services/completion-stateless-sdk/agenta/sdk/litellm/__init__.py diff --git a/services/completion-serverless-sdk/agenta/sdk/litellm/litellm.py b/services/completion-stateless-sdk/agenta/sdk/litellm/litellm.py similarity index 100% rename from services/completion-serverless-sdk/agenta/sdk/litellm/litellm.py rename to services/completion-stateless-sdk/agenta/sdk/litellm/litellm.py diff --git a/services/completion-serverless-sdk/agenta/sdk/managers/__init__.py b/services/completion-stateless-sdk/agenta/sdk/managers/__init__.py similarity index 100% rename from services/completion-serverless-sdk/agenta/sdk/managers/__init__.py rename to services/completion-stateless-sdk/agenta/sdk/managers/__init__.py diff --git a/services/completion-serverless-sdk/agenta/sdk/managers/config.py b/services/completion-stateless-sdk/agenta/sdk/managers/config.py similarity index 99% rename from services/completion-serverless-sdk/agenta/sdk/managers/config.py rename to services/completion-stateless-sdk/agenta/sdk/managers/config.py index f433fa524..d3ec7b97c 100644 --- a/services/completion-serverless-sdk/agenta/sdk/managers/config.py +++ b/services/completion-stateless-sdk/agenta/sdk/managers/config.py @@ -7,7 +7,7 @@ from pydantic import BaseModel from agenta.sdk.managers.shared import SharedManager -from agenta.sdk.decorators.routing import routing_context +from agenta.sdk.context.routing import routing_context T = TypeVar("T", bound=BaseModel) diff --git a/services/completion-serverless-sdk/agenta/sdk/managers/deployment.py b/services/completion-stateless-sdk/agenta/sdk/managers/deployment.py similarity index 100% rename from services/completion-serverless-sdk/agenta/sdk/managers/deployment.py rename to services/completion-stateless-sdk/agenta/sdk/managers/deployment.py diff --git a/services/completion-serverless-sdk/agenta/sdk/managers/shared.py b/services/completion-stateless-sdk/agenta/sdk/managers/shared.py similarity index 100% rename from services/completion-serverless-sdk/agenta/sdk/managers/shared.py rename to services/completion-stateless-sdk/agenta/sdk/managers/shared.py diff --git a/services/completion-serverless-sdk/agenta/sdk/managers/variant.py b/services/completion-stateless-sdk/agenta/sdk/managers/variant.py similarity index 100% rename from services/completion-serverless-sdk/agenta/sdk/managers/variant.py rename to services/completion-stateless-sdk/agenta/sdk/managers/variant.py diff --git a/services/completion-serverless-sdk/agenta/sdk/managers/vault.py b/services/completion-stateless-sdk/agenta/sdk/managers/vault.py similarity index 82% rename from services/completion-serverless-sdk/agenta/sdk/managers/vault.py rename to services/completion-stateless-sdk/agenta/sdk/managers/vault.py index ffe596a67..f559af19d 100644 --- a/services/completion-serverless-sdk/agenta/sdk/managers/vault.py +++ b/services/completion-stateless-sdk/agenta/sdk/managers/vault.py @@ -1,6 +1,6 @@ from typing import Optional, Dict, Any -from agenta.sdk.decorators.routing import routing_context +from agenta.sdk.context.routing import routing_context class VaultManager: diff --git a/services/completion-serverless-sdk/agenta/sdk/middleware/__init__.py b/services/completion-stateless-sdk/agenta/sdk/middleware/__init__.py similarity index 100% rename from services/completion-serverless-sdk/agenta/sdk/middleware/__init__.py rename to services/completion-stateless-sdk/agenta/sdk/middleware/__init__.py diff --git a/services/completion-serverless-sdk/agenta/sdk/middleware/auth.py b/services/completion-stateless-sdk/agenta/sdk/middleware/auth.py similarity index 80% rename from services/completion-serverless-sdk/agenta/sdk/middleware/auth.py rename to services/completion-stateless-sdk/agenta/sdk/middleware/auth.py index 6b0b9a1ba..60f86f2c0 100644 --- a/services/completion-serverless-sdk/agenta/sdk/middleware/auth.py +++ b/services/completion-stateless-sdk/agenta/sdk/middleware/auth.py @@ -1,4 +1,4 @@ -from typing import Callable, Dict, Optional +from typing import Callable, Optional from os import getenv from json import dumps @@ -8,23 +8,21 @@ from fastapi import FastAPI, Request from fastapi.responses import JSONResponse -from agenta.sdk.middleware.cache import TTLLRUCache +from agenta.sdk.middleware.cache import TTLLRUCache, CACHE_CAPACITY, CACHE_TTL +from agenta.sdk.utils.constants import TRUTHY from agenta.sdk.utils.exceptions import display_exception -from agenta.sdk.utils.timing import atimeit import agenta as ag -_TRUTHY = {"true", "1", "t", "y", "yes", "on", "enable", "enabled"} -_ALLOW_UNAUTHORIZED = ( - getenv("AGENTA_UNAUTHORIZED_EXECUTION_ALLOWED", "false").lower() in _TRUTHY -) -_SHARED_SERVICE = getenv("AGENTA_SHARED_SERVICE", "true").lower() in _TRUTHY -_CACHE_ENABLED = getenv("AGENTA_MIDDLEWARE_CACHE_ENABLED", "true").lower() in _TRUTHY -_CACHE_CAPACITY = int(getenv("AGENTA_MIDDLEWARE_CACHE_CAPACITY", "512")) -_CACHE_TTL = int(getenv("AGENTA_MIDDLEWARE_CACHE_TTL", str(5 * 60))) # 5 minutes +_SHARED_SERVICE = getenv("AGENTA_SHARED_SERVICE", "false").lower() in TRUTHY +_CACHE_ENABLED = getenv("AGENTA_MIDDLEWARE_CACHE_ENABLED", "true").lower() in TRUTHY +_UNAUTHORIZED_ALLOWED = ( + getenv("AGENTA_UNAUTHORIZED_EXECUTION_ALLOWED", "false").lower() in TRUTHY +) +_ALWAYS_ALLOW_LIST = ["/health"] -_cache = TTLLRUCache(capacity=_CACHE_CAPACITY, ttl=_CACHE_TTL) +_cache = TTLLRUCache(capacity=CACHE_CAPACITY, ttl=CACHE_TTL) class DenyResponse(JSONResponse): @@ -64,7 +62,7 @@ def __init__(self, app: FastAPI): async def dispatch(self, request: Request, call_next: Callable): try: - if _ALLOW_UNAUTHORIZED: + if _UNAUTHORIZED_ALLOWED or request.url.path in _ALWAYS_ALLOW_LIST: request.state.auth = None else: @@ -87,10 +85,9 @@ async def dispatch(self, request: Request, call_next: Callable): return DenyResponse( status_code=500, - detail="Internal Server Error: auth middleware.", + detail="Auth: Unexpected Error.", ) - # @atimeit async def _get_credentials(self, request: Request) -> Optional[str]: try: authorization = request.headers.get("authorization", None) @@ -143,23 +140,26 @@ async def _get_credentials(self, request: Request) -> Optional[str]: if response.status_code == 401: raise DenyException( - status_code=401, content="Invalid 'authorization' header." + status_code=401, + content="Invalid credentials", ) elif response.status_code == 403: raise DenyException( - status_code=403, content="Service execution not allowed." + status_code=403, + content="Service execution not allowed.", ) elif response.status_code != 200: raise DenyException( status_code=400, - content="Internal Server Error: auth middleware.", + content="Auth: Unexpected Error.", ) auth = response.json() if auth.get("effect") != "allow": raise DenyException( - status_code=403, content="Service execution not allowed." + status_code=403, + content="Service execution not allowed.", ) credentials = auth.get("credentials") @@ -175,5 +175,6 @@ async def _get_credentials(self, request: Request) -> Optional[str]: display_exception("Auth Middleware Exception (suppressed)") raise DenyException( - status_code=500, content="Internal Server Error: auth middleware." + status_code=500, + content="Auth: Unexpected Error.", ) from exc diff --git a/services/completion-serverless-sdk/agenta/sdk/middleware/cache.py b/services/completion-stateless-sdk/agenta/sdk/middleware/cache.py similarity index 83% rename from services/completion-serverless-sdk/agenta/sdk/middleware/cache.py rename to services/completion-stateless-sdk/agenta/sdk/middleware/cache.py index 5445b1faf..641f4f802 100644 --- a/services/completion-serverless-sdk/agenta/sdk/middleware/cache.py +++ b/services/completion-stateless-sdk/agenta/sdk/middleware/cache.py @@ -1,6 +1,10 @@ +from os import getenv from time import time from collections import OrderedDict +CACHE_CAPACITY = int(getenv("AGENTA_MIDDLEWARE_CACHE_CAPACITY", "512")) +CACHE_TTL = int(getenv("AGENTA_MIDDLEWARE_CACHE_TTL", str(5 * 60))) # 5 minutes + class TTLLRUCache: def __init__(self, capacity: int, ttl: int): diff --git a/services/completion-stateless-sdk/agenta/sdk/middleware/config.py b/services/completion-stateless-sdk/agenta/sdk/middleware/config.py new file mode 100644 index 000000000..ec8ff7f43 --- /dev/null +++ b/services/completion-stateless-sdk/agenta/sdk/middleware/config.py @@ -0,0 +1,254 @@ +from typing import Callable, Optional, Tuple, Dict + +from os import getenv +from json import dumps + +from pydantic import BaseModel + +from starlette.middleware.base import BaseHTTPMiddleware +from fastapi import Request, FastAPI + +import httpx + +from agenta.sdk.middleware.cache import TTLLRUCache, CACHE_CAPACITY, CACHE_TTL +from agenta.sdk.utils.constants import TRUTHY +from agenta.sdk.utils.exceptions import suppress + +import agenta as ag + + +_CACHE_ENABLED = getenv("AGENTA_MIDDLEWARE_CACHE_ENABLED", "true").lower() in TRUTHY + +_cache = TTLLRUCache(capacity=CACHE_CAPACITY, ttl=CACHE_TTL) + + +class Reference(BaseModel): + id: Optional[str] = None + slug: Optional[str] = None + version: Optional[str] = None + + +class ConfigMiddleware(BaseHTTPMiddleware): + def __init__(self, app: FastAPI): + super().__init__(app) + + self.host = ag.DEFAULT_AGENTA_SINGLETON_INSTANCE.host + self.application_id = ag.DEFAULT_AGENTA_SINGLETON_INSTANCE.app_id + + async def dispatch( + self, + request: Request, + call_next: Callable, + ): + request.state.config = {} + + with suppress(): + parameters, references = await self._get_config(request) + + request.state.config = { + "parameters": parameters, + "references": references, + } + + return await call_next(request) + + # @atimeit + async def _get_config(self, request: Request) -> Optional[Tuple[Dict, Dict]]: + application_ref = await self._parse_application_ref(request) + variant_ref = await self._parse_variant_ref(request) + environment_ref = await self._parse_environment_ref(request) + + auth = request.state.auth or {} + + headers = { + "Authorization": auth.get("credentials"), + } + + refs = {} + if application_ref: + refs["application_ref"] = application_ref.model_dump() + if variant_ref: + refs["variant_ref"] = variant_ref.model_dump() + if environment_ref: + refs["environment_ref"] = environment_ref.model_dump() + + if not refs: + return None, None + + _hash = dumps( + { + "headers": headers, + "refs": refs, + }, + sort_keys=True, + ) + + if _CACHE_ENABLED: + config_cache = _cache.get(_hash) + + if config_cache: + parameters = config_cache.get("parameters") + references = config_cache.get("references") + + return parameters, references + + config = None + async with httpx.AsyncClient() as client: + response = await client.post( + f"{self.host}/api/variants/configs/fetch", + headers=headers, + json=refs, + ) + + if response.status_code != 200: + return None, None + + config = response.json() + + if not config: + _cache.put(_hash, {"parameters": None, "references": None}) + + return None, None + + parameters = config.get("params") + + references = {} + + for ref_key in ["application_ref", "variant_ref", "environment_ref"]: + refs = config.get(ref_key) + ref_prefix = ref_key.split("_", maxsplit=1)[0] + + for ref_part_key in ["id", "slug", "version"]: + ref_part = refs.get(ref_part_key) + + if ref_part: + references[ref_prefix + "." + ref_part_key] = ref_part + + _cache.put(_hash, {"parameters": parameters, "references": references}) + + return parameters, references + + async def _parse_application_ref( + self, + request: Request, + ) -> Optional[Reference]: + baggage = request.state.otel.get("baggage") if request.state.otel else {} + + body = {} + try: + body = await request.json() + except: # pylint: disable=bare-except + pass + + application_id = ( + # CLEANEST + baggage.get("application_id") + # ALTERNATIVE + or request.query_params.get("application_id") + # LEGACY + or request.query_params.get("app_id") + or self.application_id + ) + application_slug = ( + # CLEANEST + baggage.get("application_slug") + # ALTERNATIVE + or request.query_params.get("application_slug") + # LEGACY + or request.query_params.get("app_slug") + or body.get("app") + ) + + if not any([application_id, application_slug]): + return None + + return Reference( + id=application_id, + slug=application_slug, + ) + + async def _parse_variant_ref( + self, + request: Request, + ) -> Optional[Reference]: + baggage = request.state.otel.get("baggage") if request.state.otel else {} + + body = {} + try: + body = await request.json() + except: # pylint: disable=bare-except + pass + + variant_id = ( + # CLEANEST + baggage.get("variant_id") + # ALTERNATIVE + or request.query_params.get("variant_id") + ) + variant_slug = ( + # CLEANEST + baggage.get("variant_slug") + # ALTERNATIVE + or request.query_params.get("variant_slug") + # LEGACY + or request.query_params.get("config") + or body.get("config") + ) + variant_version = ( + # CLEANEST + baggage.get("variant_version") + # ALTERNATIVE + or request.query_params.get("variant_version") + ) + + if not any([variant_id, variant_slug, variant_version]): + return None + + return Reference( + id=variant_id, + slug=variant_slug, + version=variant_version, + ) + + async def _parse_environment_ref( + self, + request: Request, + ) -> Optional[Reference]: + baggage = request.state.otel.get("baggage") if request.state.otel else {} + + body = {} + try: + body = await request.json() + except: # pylint: disable=bare-except + pass + + environment_id = ( + # CLEANEST + baggage.get("environment_id") + # ALTERNATIVE + or request.query_params.get("environment_id") + ) + environment_slug = ( + # CLEANEST + baggage.get("environment_slug") + # ALTERNATIVE + or request.query_params.get("environment_slug") + # LEGACY + or request.query_params.get("environment") + or body.get("environment") + ) + environment_version = ( + # CLEANEST + baggage.get("environment_version") + # ALTERNATIVE + or request.query_params.get("environment_version") + ) + + if not any([environment_id, environment_slug, environment_version]): + return None + + return Reference( + id=environment_id, + slug=environment_slug, + version=environment_version, + ) diff --git a/services/completion-serverless-sdk/agenta/sdk/middleware/cors.py b/services/completion-stateless-sdk/agenta/sdk/middleware/cors.py similarity index 100% rename from services/completion-serverless-sdk/agenta/sdk/middleware/cors.py rename to services/completion-stateless-sdk/agenta/sdk/middleware/cors.py diff --git a/services/completion-serverless-sdk/agenta/sdk/middleware/otel.py b/services/completion-stateless-sdk/agenta/sdk/middleware/otel.py similarity index 94% rename from services/completion-serverless-sdk/agenta/sdk/middleware/otel.py rename to services/completion-stateless-sdk/agenta/sdk/middleware/otel.py index 51f3154e1..e1be195ae 100644 --- a/services/completion-serverless-sdk/agenta/sdk/middleware/otel.py +++ b/services/completion-stateless-sdk/agenta/sdk/middleware/otel.py @@ -6,7 +6,6 @@ from opentelemetry.baggage.propagation import W3CBaggagePropagator from agenta.sdk.utils.exceptions import suppress -from agenta.sdk.utils.timing import atimeit class OTelMiddleware(BaseHTTPMiddleware): @@ -23,7 +22,6 @@ async def dispatch(self, request: Request, call_next: Callable): return await call_next(request) - # @atimeit async def _get_baggage( self, request, diff --git a/services/completion-serverless-sdk/agenta/sdk/middleware/vault.py b/services/completion-stateless-sdk/agenta/sdk/middleware/vault.py similarity index 81% rename from services/completion-serverless-sdk/agenta/sdk/middleware/vault.py rename to services/completion-stateless-sdk/agenta/sdk/middleware/vault.py index a5eca6a03..538bad3dd 100644 --- a/services/completion-serverless-sdk/agenta/sdk/middleware/vault.py +++ b/services/completion-stateless-sdk/agenta/sdk/middleware/vault.py @@ -10,20 +10,19 @@ from starlette.middleware.base import BaseHTTPMiddleware from fastapi import FastAPI, Request -from agenta.sdk.middleware.cache import TTLLRUCache +from agenta.sdk.middleware.cache import TTLLRUCache, CACHE_CAPACITY, CACHE_TTL +from agenta.sdk.utils.constants import TRUTHY from agenta.sdk.utils.exceptions import suppress, display_exception -from agenta.sdk.utils.timing import atimeit import agenta as ag -# TODO: Move these four to backend client types - - +# TODO: Move to backend client types class SecretKind(str, Enum): PROVIDER_KEY = "provider_key" +# TODO: Move to backend client types class ProviderKind(str, Enum): OPENAI = "openai" COHERE = "cohere" @@ -39,23 +38,21 @@ class ProviderKind(str, Enum): GEMINI = "gemini" +# TODO: Move to backend client types class ProviderKeyDTO(BaseModel): provider: ProviderKind key: str +# TODO: Move to backend client types class SecretDTO(BaseModel): kind: SecretKind = "provider_key" data: ProviderKeyDTO -_TRUTHY = {"true", "1", "t", "y", "yes", "on", "enable", "enabled"} -_CACHE_ENABLED = getenv("AGENTA_MIDDLEWARE_CACHE_ENABLED", "true").lower() in _TRUTHY - -_CACHE_CAPACITY = int(getenv("AGENTA_MIDDLEWARE_CACHE_CAPACITY", "512")) -_CACHE_TTL = int(getenv("AGENTA_MIDDLEWARE_CACHE_TTL", str(5 * 60))) # 5 minutes +_CACHE_ENABLED = getenv("AGENTA_MIDDLEWARE_CACHE_ENABLED", "true").lower() in TRUTHY -_cache = TTLLRUCache(capacity=_CACHE_CAPACITY, ttl=_CACHE_TTL) +_cache = TTLLRUCache(capacity=CACHE_CAPACITY, ttl=CACHE_TTL) class VaultMiddleware(BaseHTTPMiddleware): @@ -78,7 +75,6 @@ async def dispatch( return await call_next(request) - # @atimeit async def _get_secrets(self, request: Request) -> Optional[Dict]: headers = {"Authorization": request.state.auth.get("credentials")} @@ -133,13 +129,15 @@ async def _get_secrets(self, request: Request) -> Optional[Dict]: merged_secrets = {} - for secret in local_secrets: - provider = secret["data"]["provider"] - merged_secrets[provider] = secret + if local_secrets: + for secret in local_secrets: + provider = secret["data"]["provider"] + merged_secrets[provider] = secret - for secret in vault_secrets: - provider = secret["data"]["provider"] - merged_secrets[provider] = secret + if vault_secrets: + for secret in vault_secrets: + provider = secret["data"]["provider"] + merged_secrets[provider] = secret secrets = list(merged_secrets.values()) diff --git a/services/completion-serverless-sdk/agenta/sdk/router.py b/services/completion-stateless-sdk/agenta/sdk/router.py similarity index 100% rename from services/completion-serverless-sdk/agenta/sdk/router.py rename to services/completion-stateless-sdk/agenta/sdk/router.py diff --git a/services/completion-serverless-sdk/agenta/sdk/tracing/__init__.py b/services/completion-stateless-sdk/agenta/sdk/tracing/__init__.py similarity index 100% rename from services/completion-serverless-sdk/agenta/sdk/tracing/__init__.py rename to services/completion-stateless-sdk/agenta/sdk/tracing/__init__.py diff --git a/services/completion-serverless-sdk/agenta/sdk/tracing/attributes.py b/services/completion-stateless-sdk/agenta/sdk/tracing/attributes.py similarity index 100% rename from services/completion-serverless-sdk/agenta/sdk/tracing/attributes.py rename to services/completion-stateless-sdk/agenta/sdk/tracing/attributes.py diff --git a/services/completion-serverless-sdk/agenta/sdk/tracing/conventions.py b/services/completion-stateless-sdk/agenta/sdk/tracing/conventions.py similarity index 100% rename from services/completion-serverless-sdk/agenta/sdk/tracing/conventions.py rename to services/completion-stateless-sdk/agenta/sdk/tracing/conventions.py diff --git a/services/completion-serverless-sdk/agenta/sdk/tracing/exporters.py b/services/completion-stateless-sdk/agenta/sdk/tracing/exporters.py similarity index 91% rename from services/completion-serverless-sdk/agenta/sdk/tracing/exporters.py rename to services/completion-stateless-sdk/agenta/sdk/tracing/exporters.py index c713811ec..7a38201d5 100644 --- a/services/completion-serverless-sdk/agenta/sdk/tracing/exporters.py +++ b/services/completion-stateless-sdk/agenta/sdk/tracing/exporters.py @@ -74,11 +74,6 @@ def __init__(self, *args, credentials: Dict[int, str] = None, **kwargs): def export(self, spans: Sequence[ReadableSpan]) -> SpanExportResult: credentials = None - # --- DEBUG - for span in spans: - print(span.name, span.attributes) - # --------- - if self.credentials: trace_ids = set(span.get_span_context().trace_id for span in spans) @@ -101,11 +96,6 @@ def _export(self, serialized_data: bytes): if credentials: self._session.headers.update({"Authorization": credentials}) - # --- DEBUG - auth = {"Authorization": self._session.headers.get("Authorization")} - print(" ", auth) - # --------- - return super()._export(serialized_data) diff --git a/services/completion-serverless-sdk/agenta/sdk/tracing/inline.py b/services/completion-stateless-sdk/agenta/sdk/tracing/inline.py similarity index 99% rename from services/completion-serverless-sdk/agenta/sdk/tracing/inline.py rename to services/completion-stateless-sdk/agenta/sdk/tracing/inline.py index 6905ad5cf..3bf55cdf8 100644 --- a/services/completion-serverless-sdk/agenta/sdk/tracing/inline.py +++ b/services/completion-stateless-sdk/agenta/sdk/tracing/inline.py @@ -101,8 +101,8 @@ class NodeDTO(BaseModel): Data = Dict[str, Any] Metrics = Dict[str, Any] Metadata = Dict[str, Any] -Tags = Dict[str, str] -Refs = Dict[str, str] +Tags = Dict[str, Any] +Refs = Dict[str, Any] class LinkDTO(BaseModel): diff --git a/services/completion-serverless-sdk/agenta/sdk/tracing/processors.py b/services/completion-stateless-sdk/agenta/sdk/tracing/processors.py similarity index 100% rename from services/completion-serverless-sdk/agenta/sdk/tracing/processors.py rename to services/completion-stateless-sdk/agenta/sdk/tracing/processors.py diff --git a/services/completion-serverless-sdk/agenta/sdk/tracing/spans.py b/services/completion-stateless-sdk/agenta/sdk/tracing/spans.py similarity index 100% rename from services/completion-serverless-sdk/agenta/sdk/tracing/spans.py rename to services/completion-stateless-sdk/agenta/sdk/tracing/spans.py diff --git a/services/completion-serverless-sdk/agenta/sdk/tracing/tracing.py b/services/completion-stateless-sdk/agenta/sdk/tracing/tracing.py similarity index 100% rename from services/completion-serverless-sdk/agenta/sdk/tracing/tracing.py rename to services/completion-stateless-sdk/agenta/sdk/tracing/tracing.py diff --git a/services/completion-serverless-sdk/agenta/sdk/types.py b/services/completion-stateless-sdk/agenta/sdk/types.py similarity index 100% rename from services/completion-serverless-sdk/agenta/sdk/types.py rename to services/completion-stateless-sdk/agenta/sdk/types.py diff --git a/services/completion-serverless-sdk/agenta/sdk/utils/__init__.py b/services/completion-stateless-sdk/agenta/sdk/utils/__init__.py similarity index 100% rename from services/completion-serverless-sdk/agenta/sdk/utils/__init__.py rename to services/completion-stateless-sdk/agenta/sdk/utils/__init__.py diff --git a/services/completion-stateless-sdk/agenta/sdk/utils/constants.py b/services/completion-stateless-sdk/agenta/sdk/utils/constants.py new file mode 100644 index 000000000..fc2e1ae25 --- /dev/null +++ b/services/completion-stateless-sdk/agenta/sdk/utils/constants.py @@ -0,0 +1 @@ +TRUTHY = {"true", "1", "t", "y", "yes", "on", "enable", "enabled"} diff --git a/services/completion-serverless-sdk/agenta/sdk/utils/costs.py b/services/completion-stateless-sdk/agenta/sdk/utils/costs.py similarity index 100% rename from services/completion-serverless-sdk/agenta/sdk/utils/costs.py rename to services/completion-stateless-sdk/agenta/sdk/utils/costs.py diff --git a/services/completion-serverless-sdk/agenta/sdk/utils/exceptions.py b/services/completion-stateless-sdk/agenta/sdk/utils/exceptions.py similarity index 100% rename from services/completion-serverless-sdk/agenta/sdk/utils/exceptions.py rename to services/completion-stateless-sdk/agenta/sdk/utils/exceptions.py diff --git a/services/completion-stateless-sdk/agenta/sdk/utils/globals.py b/services/completion-stateless-sdk/agenta/sdk/utils/globals.py new file mode 100644 index 000000000..ceae07642 --- /dev/null +++ b/services/completion-stateless-sdk/agenta/sdk/utils/globals.py @@ -0,0 +1,10 @@ +import agenta as ag + + +def set_global(config=None, tracing=None): + """Allows usage of agenta.config and agenta.tracing in the user's code.""" + + if config is not None: + ag.config = config + if tracing is not None: + ag.tracing = tracing diff --git a/services/completion-serverless-sdk/agenta/sdk/utils/helpers.py b/services/completion-stateless-sdk/agenta/sdk/utils/helpers.py similarity index 100% rename from services/completion-serverless-sdk/agenta/sdk/utils/helpers.py rename to services/completion-stateless-sdk/agenta/sdk/utils/helpers.py diff --git a/services/completion-serverless-sdk/agenta/sdk/utils/logging.py b/services/completion-stateless-sdk/agenta/sdk/utils/logging.py similarity index 100% rename from services/completion-serverless-sdk/agenta/sdk/utils/logging.py rename to services/completion-stateless-sdk/agenta/sdk/utils/logging.py diff --git a/services/completion-serverless-sdk/agenta/sdk/utils/preinit.py b/services/completion-stateless-sdk/agenta/sdk/utils/preinit.py similarity index 100% rename from services/completion-serverless-sdk/agenta/sdk/utils/preinit.py rename to services/completion-stateless-sdk/agenta/sdk/utils/preinit.py diff --git a/services/completion-serverless-sdk/agenta/sdk/utils/singleton.py b/services/completion-stateless-sdk/agenta/sdk/utils/singleton.py similarity index 100% rename from services/completion-serverless-sdk/agenta/sdk/utils/singleton.py rename to services/completion-stateless-sdk/agenta/sdk/utils/singleton.py diff --git a/services/completion-serverless-sdk/agenta/sdk/utils/timing.py b/services/completion-stateless-sdk/agenta/sdk/utils/timing.py similarity index 100% rename from services/completion-serverless-sdk/agenta/sdk/utils/timing.py rename to services/completion-stateless-sdk/agenta/sdk/utils/timing.py diff --git a/services/completion-serverless-sdk/agenta/templates/compose_email/README.md b/services/completion-stateless-sdk/agenta/templates/compose_email/README.md similarity index 100% rename from services/completion-serverless-sdk/agenta/templates/compose_email/README.md rename to services/completion-stateless-sdk/agenta/templates/compose_email/README.md diff --git a/services/completion-serverless-sdk/agenta/templates/compose_email/app.py b/services/completion-stateless-sdk/agenta/templates/compose_email/app.py similarity index 100% rename from services/completion-serverless-sdk/agenta/templates/compose_email/app.py rename to services/completion-stateless-sdk/agenta/templates/compose_email/app.py diff --git a/services/completion-serverless-sdk/agenta/templates/compose_email/env.example b/services/completion-stateless-sdk/agenta/templates/compose_email/env.example similarity index 100% rename from services/completion-serverless-sdk/agenta/templates/compose_email/env.example rename to services/completion-stateless-sdk/agenta/templates/compose_email/env.example diff --git a/services/completion-serverless-sdk/agenta/templates/compose_email/requirements.txt b/services/completion-stateless-sdk/agenta/templates/compose_email/requirements.txt similarity index 100% rename from services/completion-serverless-sdk/agenta/templates/compose_email/requirements.txt rename to services/completion-stateless-sdk/agenta/templates/compose_email/requirements.txt diff --git a/services/completion-serverless-sdk/agenta/templates/compose_email/template.toml b/services/completion-stateless-sdk/agenta/templates/compose_email/template.toml similarity index 100% rename from services/completion-serverless-sdk/agenta/templates/compose_email/template.toml rename to services/completion-stateless-sdk/agenta/templates/compose_email/template.toml diff --git a/services/completion-serverless-sdk/agenta/templates/extract_data_to_json/README.md b/services/completion-stateless-sdk/agenta/templates/extract_data_to_json/README.md similarity index 100% rename from services/completion-serverless-sdk/agenta/templates/extract_data_to_json/README.md rename to services/completion-stateless-sdk/agenta/templates/extract_data_to_json/README.md diff --git a/services/completion-serverless-sdk/agenta/templates/extract_data_to_json/app.py b/services/completion-stateless-sdk/agenta/templates/extract_data_to_json/app.py similarity index 100% rename from services/completion-serverless-sdk/agenta/templates/extract_data_to_json/app.py rename to services/completion-stateless-sdk/agenta/templates/extract_data_to_json/app.py diff --git a/services/completion-serverless-sdk/agenta/templates/extract_data_to_json/env.example b/services/completion-stateless-sdk/agenta/templates/extract_data_to_json/env.example similarity index 100% rename from services/completion-serverless-sdk/agenta/templates/extract_data_to_json/env.example rename to services/completion-stateless-sdk/agenta/templates/extract_data_to_json/env.example diff --git a/services/completion-serverless-sdk/agenta/templates/extract_data_to_json/requirements.txt b/services/completion-stateless-sdk/agenta/templates/extract_data_to_json/requirements.txt similarity index 100% rename from services/completion-serverless-sdk/agenta/templates/extract_data_to_json/requirements.txt rename to services/completion-stateless-sdk/agenta/templates/extract_data_to_json/requirements.txt diff --git a/services/completion-serverless-sdk/agenta/templates/extract_data_to_json/template.toml b/services/completion-stateless-sdk/agenta/templates/extract_data_to_json/template.toml similarity index 100% rename from services/completion-serverless-sdk/agenta/templates/extract_data_to_json/template.toml rename to services/completion-stateless-sdk/agenta/templates/extract_data_to_json/template.toml diff --git a/services/completion-serverless-sdk/agenta/templates/simple_prompt/README.md b/services/completion-stateless-sdk/agenta/templates/simple_prompt/README.md similarity index 100% rename from services/completion-serverless-sdk/agenta/templates/simple_prompt/README.md rename to services/completion-stateless-sdk/agenta/templates/simple_prompt/README.md diff --git a/services/completion-serverless-sdk/agenta/templates/simple_prompt/app.py b/services/completion-stateless-sdk/agenta/templates/simple_prompt/app.py similarity index 100% rename from services/completion-serverless-sdk/agenta/templates/simple_prompt/app.py rename to services/completion-stateless-sdk/agenta/templates/simple_prompt/app.py diff --git a/services/completion-serverless-sdk/agenta/templates/simple_prompt/env.example b/services/completion-stateless-sdk/agenta/templates/simple_prompt/env.example similarity index 100% rename from services/completion-serverless-sdk/agenta/templates/simple_prompt/env.example rename to services/completion-stateless-sdk/agenta/templates/simple_prompt/env.example diff --git a/services/completion-serverless-sdk/agenta/templates/simple_prompt/requirements.txt b/services/completion-stateless-sdk/agenta/templates/simple_prompt/requirements.txt similarity index 100% rename from services/completion-serverless-sdk/agenta/templates/simple_prompt/requirements.txt rename to services/completion-stateless-sdk/agenta/templates/simple_prompt/requirements.txt diff --git a/services/completion-serverless-sdk/agenta/templates/simple_prompt/template.toml b/services/completion-stateless-sdk/agenta/templates/simple_prompt/template.toml similarity index 100% rename from services/completion-serverless-sdk/agenta/templates/simple_prompt/template.toml rename to services/completion-stateless-sdk/agenta/templates/simple_prompt/template.toml diff --git a/services/completion-serverless-sdk/agenta/tests/__init__.py b/services/completion-stateless-sdk/agenta/tests/__init__.py similarity index 100% rename from services/completion-serverless-sdk/agenta/tests/__init__.py rename to services/completion-stateless-sdk/agenta/tests/__init__.py diff --git a/services/completion-serverless-sdk/agenta/tests/management_sdk/manual_tests/apps_with_new_sdk/new_baby_name.py b/services/completion-stateless-sdk/agenta/tests/management_sdk/manual_tests/apps_with_new_sdk/new_baby_name.py similarity index 100% rename from services/completion-serverless-sdk/agenta/tests/management_sdk/manual_tests/apps_with_new_sdk/new_baby_name.py rename to services/completion-stateless-sdk/agenta/tests/management_sdk/manual_tests/apps_with_new_sdk/new_baby_name.py diff --git a/services/completion-serverless-sdk/agenta/tests/management_sdk/manual_tests/apps_with_new_sdk/new_chat_prompt.py b/services/completion-stateless-sdk/agenta/tests/management_sdk/manual_tests/apps_with_new_sdk/new_chat_prompt.py similarity index 100% rename from services/completion-serverless-sdk/agenta/tests/management_sdk/manual_tests/apps_with_new_sdk/new_chat_prompt.py rename to services/completion-stateless-sdk/agenta/tests/management_sdk/manual_tests/apps_with_new_sdk/new_chat_prompt.py diff --git a/services/completion-serverless-sdk/agenta/tests/management_sdk/manual_tests/apps_with_new_sdk/new_single_prompt.py b/services/completion-stateless-sdk/agenta/tests/management_sdk/manual_tests/apps_with_new_sdk/new_single_prompt.py similarity index 100% rename from services/completion-serverless-sdk/agenta/tests/management_sdk/manual_tests/apps_with_new_sdk/new_single_prompt.py rename to services/completion-stateless-sdk/agenta/tests/management_sdk/manual_tests/apps_with_new_sdk/new_single_prompt.py diff --git a/services/completion-serverless-sdk/agenta/tests/management_sdk/manual_tests/apps_with_new_sdk/requirements.txt b/services/completion-stateless-sdk/agenta/tests/management_sdk/manual_tests/apps_with_new_sdk/requirements.txt similarity index 100% rename from services/completion-serverless-sdk/agenta/tests/management_sdk/manual_tests/apps_with_new_sdk/requirements.txt rename to services/completion-stateless-sdk/agenta/tests/management_sdk/manual_tests/apps_with_new_sdk/requirements.txt diff --git a/services/completion-serverless-sdk/agenta/tests/management_sdk/manual_tests/apps_with_new_sdk/run_local.py b/services/completion-stateless-sdk/agenta/tests/management_sdk/manual_tests/apps_with_new_sdk/run_local.py similarity index 100% rename from services/completion-serverless-sdk/agenta/tests/management_sdk/manual_tests/apps_with_new_sdk/run_local.py rename to services/completion-stateless-sdk/agenta/tests/management_sdk/manual_tests/apps_with_new_sdk/run_local.py diff --git a/services/completion-serverless-sdk/agenta/tests/management_sdk/manual_tests/apps_with_new_sdk/v3.py b/services/completion-stateless-sdk/agenta/tests/management_sdk/manual_tests/apps_with_new_sdk/v3.py similarity index 100% rename from services/completion-serverless-sdk/agenta/tests/management_sdk/manual_tests/apps_with_new_sdk/v3.py rename to services/completion-stateless-sdk/agenta/tests/management_sdk/manual_tests/apps_with_new_sdk/v3.py diff --git a/services/completion-serverless-sdk/agenta/tests/management_sdk/manual_tests/apps_with_old_sdk/baby_name.py b/services/completion-stateless-sdk/agenta/tests/management_sdk/manual_tests/apps_with_old_sdk/baby_name.py similarity index 100% rename from services/completion-serverless-sdk/agenta/tests/management_sdk/manual_tests/apps_with_old_sdk/baby_name.py rename to services/completion-stateless-sdk/agenta/tests/management_sdk/manual_tests/apps_with_old_sdk/baby_name.py diff --git a/services/completion-serverless-sdk/agenta/tests/management_sdk/manual_tests/apps_with_old_sdk/chat_prompt.py b/services/completion-stateless-sdk/agenta/tests/management_sdk/manual_tests/apps_with_old_sdk/chat_prompt.py similarity index 100% rename from services/completion-serverless-sdk/agenta/tests/management_sdk/manual_tests/apps_with_old_sdk/chat_prompt.py rename to services/completion-stateless-sdk/agenta/tests/management_sdk/manual_tests/apps_with_old_sdk/chat_prompt.py diff --git a/services/completion-serverless-sdk/agenta/tests/management_sdk/manual_tests/apps_with_old_sdk/requirements.txt b/services/completion-stateless-sdk/agenta/tests/management_sdk/manual_tests/apps_with_old_sdk/requirements.txt similarity index 100% rename from services/completion-serverless-sdk/agenta/tests/management_sdk/manual_tests/apps_with_old_sdk/requirements.txt rename to services/completion-stateless-sdk/agenta/tests/management_sdk/manual_tests/apps_with_old_sdk/requirements.txt diff --git a/services/completion-serverless-sdk/agenta/tests/management_sdk/manual_tests/apps_with_old_sdk/run_local.py b/services/completion-stateless-sdk/agenta/tests/management_sdk/manual_tests/apps_with_old_sdk/run_local.py similarity index 100% rename from services/completion-serverless-sdk/agenta/tests/management_sdk/manual_tests/apps_with_old_sdk/run_local.py rename to services/completion-stateless-sdk/agenta/tests/management_sdk/manual_tests/apps_with_old_sdk/run_local.py diff --git a/services/completion-serverless-sdk/agenta/tests/management_sdk/manual_tests/apps_with_old_sdk/single_prompt.py b/services/completion-stateless-sdk/agenta/tests/management_sdk/manual_tests/apps_with_old_sdk/single_prompt.py similarity index 100% rename from services/completion-serverless-sdk/agenta/tests/management_sdk/manual_tests/apps_with_old_sdk/single_prompt.py rename to services/completion-stateless-sdk/agenta/tests/management_sdk/manual_tests/apps_with_old_sdk/single_prompt.py diff --git a/services/completion-serverless-sdk/agenta/tests/management_sdk/run_local.py b/services/completion-stateless-sdk/agenta/tests/management_sdk/run_local.py similarity index 100% rename from services/completion-serverless-sdk/agenta/tests/management_sdk/run_local.py rename to services/completion-stateless-sdk/agenta/tests/management_sdk/run_local.py diff --git a/services/completion-serverless-sdk/agenta/tests/management_sdk/v1.py b/services/completion-stateless-sdk/agenta/tests/management_sdk/v1.py similarity index 100% rename from services/completion-serverless-sdk/agenta/tests/management_sdk/v1.py rename to services/completion-stateless-sdk/agenta/tests/management_sdk/v1.py diff --git a/services/completion-serverless-sdk/agenta/tests/management_sdk/v2.py b/services/completion-stateless-sdk/agenta/tests/management_sdk/v2.py similarity index 100% rename from services/completion-serverless-sdk/agenta/tests/management_sdk/v2.py rename to services/completion-stateless-sdk/agenta/tests/management_sdk/v2.py diff --git a/services/completion-serverless-sdk/agenta/tests/management_sdk/v4_prompt.py b/services/completion-stateless-sdk/agenta/tests/management_sdk/v4_prompt.py similarity index 100% rename from services/completion-serverless-sdk/agenta/tests/management_sdk/v4_prompt.py rename to services/completion-stateless-sdk/agenta/tests/management_sdk/v4_prompt.py diff --git a/services/completion-serverless-sdk/agenta/tests/prompt_sdk/conftest.py b/services/completion-stateless-sdk/agenta/tests/prompt_sdk/conftest.py similarity index 100% rename from services/completion-serverless-sdk/agenta/tests/prompt_sdk/conftest.py rename to services/completion-stateless-sdk/agenta/tests/prompt_sdk/conftest.py diff --git a/services/completion-serverless-sdk/agenta/tests/prompt_sdk/test_client.py b/services/completion-stateless-sdk/agenta/tests/prompt_sdk/test_client.py similarity index 100% rename from services/completion-serverless-sdk/agenta/tests/prompt_sdk/test_client.py rename to services/completion-stateless-sdk/agenta/tests/prompt_sdk/test_client.py diff --git a/services/completion-serverless-sdk/agenta/tests/prompt_sdk/test_config_manager.py b/services/completion-stateless-sdk/agenta/tests/prompt_sdk/test_config_manager.py similarity index 100% rename from services/completion-serverless-sdk/agenta/tests/prompt_sdk/test_config_manager.py rename to services/completion-stateless-sdk/agenta/tests/prompt_sdk/test_config_manager.py diff --git a/services/completion-serverless-sdk/agenta/tests/prompt_sdk/test_deployment_manager.py b/services/completion-stateless-sdk/agenta/tests/prompt_sdk/test_deployment_manager.py similarity index 100% rename from services/completion-serverless-sdk/agenta/tests/prompt_sdk/test_deployment_manager.py rename to services/completion-stateless-sdk/agenta/tests/prompt_sdk/test_deployment_manager.py diff --git a/services/completion-serverless-sdk/agenta/tests/prompt_sdk/test_variant_manager.py b/services/completion-stateless-sdk/agenta/tests/prompt_sdk/test_variant_manager.py similarity index 100% rename from services/completion-serverless-sdk/agenta/tests/prompt_sdk/test_variant_manager.py rename to services/completion-stateless-sdk/agenta/tests/prompt_sdk/test_variant_manager.py diff --git a/services/completion-stateless-sdk/docker-compose.yml b/services/completion-stateless-sdk/docker-compose.yml new file mode 100644 index 000000000..e8b8bedea --- /dev/null +++ b/services/completion-stateless-sdk/docker-compose.yml @@ -0,0 +1,21 @@ +services: + completion-stateless-sdk: + build: . + volumes: + - .:/app + environment: + - AGENTA_UNAUTHORIZED_EXECUTION_ALLOWED=True + networks: + - agenta-network + labels: + - "traefik.http.routers.completion-stateless-sdk.rule=PathPrefix(`/completion-stateless-sdk/`)" + - "traefik.http.routers.completion-stateless-sdk.entrypoints=web" + - "traefik.http.middlewares.completion-stateless-sdk-strip.stripprefix.prefixes=/completion-stateless-sdk" + - "traefik.http.middlewares.completion-stateless-sdk-strip.stripprefix.forceslash=true" + - "traefik.http.routers.completion-stateless-sdk.middlewares=completion-stateless-sdk-strip" + - "traefik.http.services.completion-stateless-sdk.loadbalancer.server.port=80" + - "traefik.http.routers.completion-stateless-sdk.service=completion-stateless-sdk" + +networks: + agenta-network: + external: true diff --git a/services/completion-serverless-sdk/entrypoint.sh b/services/completion-stateless-sdk/entrypoint.sh similarity index 100% rename from services/completion-serverless-sdk/entrypoint.sh rename to services/completion-stateless-sdk/entrypoint.sh diff --git a/services/completion-serverless-sdk/main.py b/services/completion-stateless-sdk/main.py similarity index 100% rename from services/completion-serverless-sdk/main.py rename to services/completion-stateless-sdk/main.py diff --git a/services/completion-serverless-sdk/supported_llm_models.py b/services/completion-stateless-sdk/supported_llm_models.py similarity index 100% rename from services/completion-serverless-sdk/supported_llm_models.py rename to services/completion-stateless-sdk/supported_llm_models.py