lightspeed-stack 0.4.2__tar.gz → 0.5.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/PKG-INFO +15 -12
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/README.md +6 -4
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/pyproject.toml +22 -14
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/a2a_storage/postgres_context_store.py +1 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/a2a_storage/sqlite_context_store.py +1 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/a2a_storage/storage_factory.py +5 -6
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/app/database.py +3 -3
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/app/endpoints/README.md +9 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/app/endpoints/a2a.py +5 -6
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/app/endpoints/conversations_v1.py +11 -31
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/app/endpoints/health.py +2 -3
- lightspeed_stack-0.5.0/src/app/endpoints/mcp_servers.py +247 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/app/endpoints/models.py +3 -4
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/app/endpoints/query.py +48 -64
- lightspeed_stack-0.5.0/src/app/endpoints/responses.py +765 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/app/endpoints/rlsapi_v1.py +65 -11
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/app/endpoints/streaming_query.py +151 -36
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/app/endpoints/tools.py +41 -20
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/app/main.py +3 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/app/routers.py +20 -17
- lightspeed_stack-0.5.0/src/authentication/.ruff_cache/.gitignore +2 -0
- lightspeed_stack-0.5.0/src/authentication/.ruff_cache/0.9.1/13770435568462002823 +0 -0
- lightspeed_stack-0.5.0/src/authentication/.ruff_cache/0.9.1/2640992821107041526 +0 -0
- lightspeed_stack-0.5.0/src/authentication/.ruff_cache/0.9.1/README.md +2 -0
- lightspeed_stack-0.5.0/src/authentication/.ruff_cache/CACHEDIR.TAG +1 -0
- lightspeed_stack-0.5.0/src/authentication/.ruff_cache/README.md +2 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/authentication/__init__.py +2 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/authentication/api_key_token.py +4 -4
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/authentication/jwk_token.py +15 -12
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/authentication/k8s.py +207 -52
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/authentication/rh_identity.py +124 -36
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/authentication/utils.py +1 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/authorization/resolvers.py +4 -5
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/cache/postgres_cache.py +2 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/cache/sqlite_cache.py +3 -4
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/metrics/utils.py +2 -2
- lightspeed_stack-0.5.0/src/models/.ruff_cache/.gitignore +2 -0
- lightspeed_stack-0.5.0/src/models/.ruff_cache/0.9.1/2435063725374233068 +0 -0
- lightspeed_stack-0.5.0/src/models/.ruff_cache/0.9.1/README.md +2 -0
- lightspeed_stack-0.5.0/src/models/.ruff_cache/CACHEDIR.TAG +1 -0
- lightspeed_stack-0.5.0/src/models/.ruff_cache/README.md +2 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/models/cache_entry.py +2 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/models/config.py +46 -11
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/models/context.py +6 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/models/database/conversations.py +5 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/models/requests.py +245 -41
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/models/responses.py +291 -30
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/models/rlsapi/requests.py +10 -0
- lightspeed_stack-0.5.0/src/models/rlsapi/responses.py +93 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/observability/README.md +1 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/observability/__init__.py +1 -1
- lightspeed_stack-0.5.0/src/quota/.ruff_cache/.gitignore +2 -0
- lightspeed_stack-0.5.0/src/quota/.ruff_cache/0.14.1/13216894937928385266 +0 -0
- lightspeed_stack-0.5.0/src/quota/.ruff_cache/0.14.1/README.md +2 -0
- lightspeed_stack-0.5.0/src/quota/.ruff_cache/0.9.1/11326792315657745171 +0 -0
- lightspeed_stack-0.5.0/src/quota/.ruff_cache/0.9.1/README.md +2 -0
- lightspeed_stack-0.5.0/src/quota/.ruff_cache/CACHEDIR.TAG +1 -0
- lightspeed_stack-0.5.0/src/quota/.ruff_cache/README.md +2 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/quota/connect_pg.py +1 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/quota/quota_limiter.py +3 -4
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/quota/quota_limiter_factory.py +2 -3
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/quota/revokable_quota_limiter.py +11 -11
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/quota/token_usage_history.py +8 -10
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/runners/quota_scheduler.py +1 -4
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/utils/README.md +4 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/utils/checks.py +2 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/utils/conversations.py +107 -2
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/utils/endpoints.py +173 -2
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/utils/llama_stack_version.py +45 -14
- lightspeed_stack-0.5.0/src/utils/mcp_headers.py +254 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/utils/mcp_oauth_probe.py +13 -6
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/utils/prompts.py +1 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/utils/query.py +62 -3
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/utils/responses.py +583 -103
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/utils/schema_dumper.py +1 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/utils/shields.py +75 -63
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/utils/stream_interrupts.py +2 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/utils/suid.py +9 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/utils/token_counter.py +1 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/utils/tool_formatter.py +30 -3
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/utils/transcripts.py +3 -4
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/utils/types.py +73 -54
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/utils/vector_search.py +118 -38
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/benchmarks/conftest.py +2 -2
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/benchmarks/data_generators.py +1 -2
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/configs/run-azure.yaml +6 -2
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/configs/run-ci.yaml +2 -15
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/configs/run-rhaiis.yaml +5 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/configs/run-vertexai.yaml +4 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/configs/run-watsonx.yaml +4 -6
- lightspeed_stack-0.5.0/tests/e2e/configuration/library-mode/lightspeed-stack-auth-noop-token.yaml +41 -0
- lightspeed_stack-0.5.0/tests/e2e/configuration/library-mode/lightspeed-stack-inline-rag.yaml +40 -0
- lightspeed_stack-0.5.0/tests/e2e/configuration/library-mode/lightspeed-stack-invalid-mcp-file-auth.yaml +24 -0
- lightspeed_stack-0.4.2/tests/e2e/configuration/library-mode/lightspeed-stack-mcp.yaml → lightspeed_stack-0.5.0/tests/e2e/configuration/library-mode/lightspeed-stack-mcp-auth.yaml +2 -2
- lightspeed_stack-0.5.0/tests/e2e/configuration/library-mode/lightspeed-stack-mcp-client-auth.yaml +24 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/configuration/library-mode/lightspeed-stack-mcp-file-auth.yaml +2 -3
- lightspeed_stack-0.4.2/tests/e2e/configuration/library-mode/lightspeed-stack-auth-noop-token.yaml → lightspeed_stack-0.5.0/tests/e2e/configuration/library-mode/lightspeed-stack-mcp-kubernetes-auth.yaml +6 -10
- lightspeed_stack-0.5.0/tests/e2e/configuration/library-mode/lightspeed-stack-mcp-oauth-auth.yaml +24 -0
- lightspeed_stack-0.5.0/tests/e2e/configuration/library-mode/lightspeed-stack-mcp.yaml +36 -0
- lightspeed_stack-0.5.0/tests/e2e/configuration/library-mode/lightspeed-stack-no-mcp.yaml +19 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/configuration/library-mode/lightspeed-stack.yaml +13 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/configuration/server-mode/lightspeed-stack-auth-noop-token.yaml +13 -0
- lightspeed_stack-0.5.0/tests/e2e/configuration/server-mode/lightspeed-stack-inline-rag.yaml +41 -0
- lightspeed_stack-0.5.0/tests/e2e/configuration/server-mode/lightspeed-stack-invalid-mcp-file-auth.yaml +25 -0
- lightspeed_stack-0.4.2/tests/e2e/configuration/server-mode/lightspeed-stack-mcp.yaml → lightspeed_stack-0.5.0/tests/e2e/configuration/server-mode/lightspeed-stack-mcp-auth.yaml +2 -2
- lightspeed_stack-0.5.0/tests/e2e/configuration/server-mode/lightspeed-stack-mcp-client-auth.yaml +25 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/configuration/server-mode/lightspeed-stack-mcp-file-auth.yaml +2 -3
- lightspeed_stack-0.5.0/tests/e2e/configuration/server-mode/lightspeed-stack-mcp-kubernetes-auth.yaml +25 -0
- lightspeed_stack-0.5.0/tests/e2e/configuration/server-mode/lightspeed-stack-mcp-oauth-auth.yaml +25 -0
- lightspeed_stack-0.5.0/tests/e2e/configuration/server-mode/lightspeed-stack-mcp.yaml +37 -0
- lightspeed_stack-0.5.0/tests/e2e/configuration/server-mode/lightspeed-stack-no-mcp.yaml +20 -0
- lightspeed_stack-0.5.0/tests/e2e/configuration/server-mode/lightspeed-stack-tls.yaml +22 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/configuration/server-mode/lightspeed-stack.yaml +13 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/environment.py +146 -7
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/faiss.feature +1 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/info.feature +2 -2
- lightspeed_stack-0.5.0/tests/e2e/features/inline_rag.feature +69 -0
- lightspeed_stack-0.5.0/tests/e2e/features/mcp.feature +519 -0
- lightspeed_stack-0.5.0/tests/e2e/features/mcp_servers_api.feature +133 -0
- lightspeed_stack-0.5.0/tests/e2e/features/mcp_servers_api_auth.feature +30 -0
- lightspeed_stack-0.5.0/tests/e2e/features/mcp_servers_api_no_config.feature +18 -0
- lightspeed_stack-0.5.0/tests/e2e/features/proxy.feature +106 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/query.feature +1 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/rbac.feature +9 -3
- lightspeed_stack-0.5.0/tests/e2e/features/responses.feature +598 -0
- lightspeed_stack-0.5.0/tests/e2e/features/responses_streaming.feature +493 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/steps/README.md +15 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/steps/auth.py +1 -0
- lightspeed_stack-0.5.0/tests/e2e/features/steps/common.py +84 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/steps/common_http.py +41 -6
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/steps/conversation.py +67 -3
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/steps/health.py +1 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/steps/info.py +1 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/steps/llm_query_response.py +138 -3
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/steps/models.py +1 -2
- lightspeed_stack-0.5.0/tests/e2e/features/steps/place_holder.py +16 -0
- lightspeed_stack-0.5.0/tests/e2e/features/steps/proxy.py +382 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/steps/rbac.py +1 -0
- lightspeed_stack-0.5.0/tests/e2e/features/steps/responses_steps.py +80 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/steps/rlsapi_v1.py +1 -1
- lightspeed_stack-0.5.0/tests/e2e/features/steps/tls.py +224 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/steps/token_counters.py +0 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/streaming_query.feature +1 -1
- lightspeed_stack-0.5.0/tests/e2e/features/tls.feature +182 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/mock_jwks_server/server.py +1 -1
- lightspeed_stack-0.5.0/tests/e2e/mock_mcp_server/README.md +5 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/mock_mcp_server/server.py +10 -4
- lightspeed_stack-0.5.0/tests/e2e/mock_tls_inference_server/Dockerfile +14 -0
- lightspeed_stack-0.5.0/tests/e2e/mock_tls_inference_server/server.py +318 -0
- lightspeed_stack-0.5.0/tests/e2e/proxy/README.md +11 -0
- lightspeed_stack-0.5.0/tests/e2e/proxy/__init__.py +1 -0
- lightspeed_stack-0.5.0/tests/e2e/proxy/interception_proxy.py +215 -0
- lightspeed_stack-0.5.0/tests/e2e/proxy/tunnel_proxy.py +153 -0
- lightspeed_stack-0.5.0/tests/e2e/secrets/README.md +18 -0
- lightspeed_stack-0.5.0/tests/e2e/secrets/invalid-mcp-token +1 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/test_list.txt +5 -1
- lightspeed_stack-0.5.0/tests/e2e/utils/README.md +11 -0
- lightspeed_stack-0.4.2/tests/e2e/utils/llama_stack_shields.py → lightspeed_stack-0.5.0/tests/e2e/utils/llama_stack_utils.py +57 -6
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/utils/prow_utils.py +43 -8
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/utils/utils.py +94 -4
- lightspeed_stack-0.5.0/tests/e2e-prow/rhoai/configs/lightspeed-stack-inline-rag.yaml +38 -0
- lightspeed_stack-0.5.0/tests/e2e-prow/rhoai/configs/lightspeed-stack-invalid-mcp-file-auth.yaml +25 -0
- lightspeed_stack-0.5.0/tests/e2e-prow/rhoai/configs/lightspeed-stack-mcp-client-auth.yaml +25 -0
- lightspeed_stack-0.5.0/tests/e2e-prow/rhoai/configs/lightspeed-stack-mcp-file-auth.yaml +25 -0
- lightspeed_stack-0.5.0/tests/e2e-prow/rhoai/configs/lightspeed-stack-mcp-kubernetes-auth.yaml +25 -0
- lightspeed_stack-0.5.0/tests/e2e-prow/rhoai/configs/lightspeed-stack-mcp-oauth-auth.yaml +25 -0
- lightspeed_stack-0.5.0/tests/e2e-prow/rhoai/configs/lightspeed-stack-mcp.yaml +30 -0
- lightspeed_stack-0.5.0/tests/e2e-prow/rhoai/configs/lightspeed-stack-tls.yaml +22 -0
- lightspeed_stack-0.5.0/tests/e2e-prow/rhoai/manifests/lightspeed/lightspeed-stack.yaml +65 -0
- lightspeed_stack-0.5.0/tests/e2e-prow/rhoai/manifests/lightspeed/llama-stack-openai.yaml +168 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/manifests/lightspeed/llama-stack.yaml +0 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/manifests/lightspeed/mcp-mock-server.yaml +26 -8
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/manifests/lightspeed/mock-jwks.yaml +12 -2
- lightspeed_stack-0.5.0/tests/e2e-prow/rhoai/pipeline-konflux.sh +394 -0
- lightspeed_stack-0.5.0/tests/e2e-prow/rhoai/pipeline-services-konflux.sh +41 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/pipeline.sh +1 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/run-tests.sh +27 -9
- lightspeed_stack-0.5.0/tests/e2e-prow/rhoai/scripts/e2e-ops.sh +538 -0
- lightspeed_stack-0.5.0/tests/integration/README.md +422 -0
- lightspeed_stack-0.5.0/tests/integration/conftest.py +478 -0
- lightspeed_stack-0.5.0/tests/integration/endpoints/README.md +44 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/integration/endpoints/test_authorized_endpoint.py +2 -3
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/integration/endpoints/test_config_integration.py +1 -2
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/integration/endpoints/test_health_integration.py +1 -2
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/integration/endpoints/test_info_integration.py +5 -5
- lightspeed_stack-0.5.0/tests/integration/endpoints/test_query_byok_integration.py +1085 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/integration/endpoints/test_query_integration.py +54 -172
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/integration/endpoints/test_rlsapi_v1_integration.py +1 -1
- lightspeed_stack-0.5.0/tests/integration/endpoints/test_streaming_query_byok_integration.py +1072 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/integration/test_openapi_json.py +32 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/test_results/.coverage.unit +0 -0
- lightspeed_stack-0.5.0/tests/test_results/coverage_unit.json +1 -0
- lightspeed_stack-0.5.0/tests/test_results/junit_unit.xml +1 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/__init__.py +1 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/a2a_storage/test_storage_factory.py +2 -3
- lightspeed_stack-0.5.0/tests/unit/app/.ruff_cache/.gitignore +2 -0
- lightspeed_stack-0.5.0/tests/unit/app/.ruff_cache/0.9.1/10631576872848856737 +0 -0
- lightspeed_stack-0.5.0/tests/unit/app/.ruff_cache/0.9.1/README.md +2 -0
- lightspeed_stack-0.5.0/tests/unit/app/.ruff_cache/CACHEDIR.TAG +1 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/app/README.md +1 -1
- lightspeed_stack-0.5.0/tests/unit/app/endpoints/.ruff_cache/.gitignore +2 -0
- lightspeed_stack-0.5.0/tests/unit/app/endpoints/.ruff_cache/0.9.1/15310180828563549007 +0 -0
- lightspeed_stack-0.5.0/tests/unit/app/endpoints/.ruff_cache/0.9.1/README.md +2 -0
- lightspeed_stack-0.5.0/tests/unit/app/endpoints/.ruff_cache/CACHEDIR.TAG +1 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/app/endpoints/README.md +12 -0
- lightspeed_stack-0.5.0/tests/unit/app/endpoints/conftest.py +41 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/app/endpoints/test_a2a.py +8 -9
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/app/endpoints/test_conversations.py +25 -19
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/app/endpoints/test_conversations_v2.py +1 -2
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/app/endpoints/test_feedback.py +0 -5
- lightspeed_stack-0.5.0/tests/unit/app/endpoints/test_mcp_servers.py +437 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/app/endpoints/test_query.py +139 -40
- lightspeed_stack-0.5.0/tests/unit/app/endpoints/test_responses.py +1374 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/app/endpoints/test_rlsapi_v1.py +228 -78
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/app/endpoints/test_streaming_query.py +373 -42
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/app/endpoints/test_tools.py +3 -9
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/app/test_database.py +3 -2
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/app/test_routers.py +25 -20
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/authentication/test_auth.py +2 -3
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/authentication/test_jwk_token.py +9 -11
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/authentication/test_k8s.py +416 -21
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/authentication/test_noop.py +1 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/authentication/test_noop_with_token.py +2 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/authentication/test_rh_identity.py +183 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/authentication/test_utils.py +1 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/authorization/test_resolvers.py +5 -6
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/cache/test_cache_factory.py +9 -11
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/cache/test_sqlite_cache.py +5 -8
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/metrics/test_utis.py +0 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/config/README.md +3 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/config/test_a2a_state_configuration.py +1 -2
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/config/test_authentication_configuration.py +40 -24
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/config/test_byok_rag.py +0 -9
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/config/test_conversation_history.py +2 -3
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/config/test_database_configuration.py +2 -3
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/config/test_dump_configuration.py +22 -18
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/config/test_jwt_role_rule.py +1 -2
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/config/test_llama_stack_configuration.py +2 -3
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/config/test_model_context_protocol_server.py +0 -2
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/config/test_postgresql_database_configuration.py +2 -4
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/config/test_quota_scheduler_config.py +0 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/config/test_rag_configuration.py +8 -10
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/config/test_service_configuration.py +0 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/config/test_splunk_configuration.py +0 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/requests/test_feedback_request.py +1 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/requests/test_query_request.py +0 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/responses/README.md +1 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/responses/test_error_responses.py +10 -5
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/responses/test_successful_responses.py +4 -2
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/observability/formats/test_rlsapi.py +2 -2
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/observability/test_splunk.py +1 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/quota/test_connect_pg.py +3 -4
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/quota/test_quota_limiter_factory.py +3 -5
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/test_configuration.py +107 -13
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/test_llama_stack_configuration.py +74 -16
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/utils/README.md +6 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/utils/test_checks.py +1 -2
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/utils/test_common.py +6 -7
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/utils/test_conversations.py +136 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/utils/test_endpoints.py +265 -8
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/utils/test_llama_stack_version.py +48 -14
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/utils/test_mcp_auth_headers.py +0 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/utils/test_mcp_headers.py +167 -3
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/utils/test_query.py +3 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/utils/test_responses.py +831 -55
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/utils/test_shields.py +140 -44
- lightspeed_stack-0.5.0/tests/unit/utils/test_tool_formatter.py +76 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/utils/test_transcripts.py +1 -3
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/utils/test_types.py +3 -57
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/utils/test_vector_search.py +183 -27
- lightspeed_stack-0.4.2/src/models/rlsapi/responses.py +0 -54
- lightspeed_stack-0.4.2/src/utils/mcp_headers.py +0 -123
- lightspeed_stack-0.4.2/tests/e2e/features/mcp.feature +0 -168
- lightspeed_stack-0.4.2/tests/e2e/features/mcp_file_auth.feature +0 -20
- lightspeed_stack-0.4.2/tests/e2e/features/steps/common.py +0 -38
- lightspeed_stack-0.4.2/tests/e2e/utils/README.md +0 -5
- lightspeed_stack-0.4.2/tests/e2e-prow/rhoai/manifests/lightspeed/lightspeed-stack.yaml +0 -25
- lightspeed_stack-0.4.2/tests/e2e-prow/rhoai/scripts/e2e-ops.sh +0 -234
- lightspeed_stack-0.4.2/tests/integration/README.md +0 -23
- lightspeed_stack-0.4.2/tests/integration/conftest.py +0 -191
- lightspeed_stack-0.4.2/tests/integration/endpoints/README.md +0 -23
- lightspeed_stack-0.4.2/tests/test_results/coverage_unit.json +0 -1
- lightspeed_stack-0.4.2/tests/test_results/junit_unit.xml +0 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/LICENSE +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/a2a_storage/README.md +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/a2a_storage/__init__.py +3 -3
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/a2a_storage/context_store.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/a2a_storage/in_memory_context_store.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/app/README.md +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/app/__init__.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/app/endpoints/__init__.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/app/endpoints/authorized.py +1 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/app/endpoints/config.py +1 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/app/endpoints/conversations_v2.py +2 -2
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/app/endpoints/feedback.py +1 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/app/endpoints/info.py +1 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/app/endpoints/mcp_auth.py +1 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/app/endpoints/metrics.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/app/endpoints/providers.py +1 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/app/endpoints/rags.py +1 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/app/endpoints/root.py +1 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/app/endpoints/shields.py +1 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/app/endpoints/stream_interrupt.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/authentication/README.md +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/authentication/interface.py +1 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/authentication/noop.py +2 -2
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/authentication/noop_with_token.py +2 -2
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/authorization/README.md +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/authorization/__init__.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/authorization/azure_token_manager.py +1 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/authorization/middleware.py +1 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/cache/README.md +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/cache/__init__.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/cache/cache.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/cache/cache_error.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/cache/cache_factory.py +2 -2
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/cache/in_memory_cache.py +1 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/cache/noop_cache.py +1 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/metrics/README.md +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/metrics/__init__.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/models/README.md +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/models/__init__.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/models/database/README.md +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/models/database/__init__.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/models/database/base.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/models/rlsapi/README.md +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/models/rlsapi/__init__.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/observability/formats/README.md +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/observability/formats/__init__.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/observability/formats/rlsapi.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/observability/splunk.py +1 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/quota/README.md +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/quota/__init__.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/quota/cluster_quota_limiter.py +1 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/quota/connect_sqlite.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/quota/quota_exceed_error.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/quota/sql.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/quota/user_quota_limiter.py +1 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/runners/README.md +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/runners/__init__.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/runners/uvicorn.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/telemetry/README.md +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/telemetry/__init__.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/telemetry/configuration_snapshot.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/utils/__init__.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/utils/common.py +3 -3
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/utils/connection_decorator.py +1 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/utils/mcp_auth_headers.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/utils/quota.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/__init__.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/benchmarks/README.md +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/benchmarks/db_benchmarks.py +5 -5
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/benchmarks/test_app_database.py +2 -2
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/benchmarks/test_app_database_comparison.py +2 -2
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/configuration/benchmarks-postgres.yaml +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/configuration/benchmarks-sqlite.yaml +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/configuration/lightspeed-stack-proper-name.yaml +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/configuration/lightspeed-stack.yaml +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/configuration/minimal-stack.yaml +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/configuration/multiline_system_prompt.txt +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/configuration/password +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/configuration/rag.txt +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/configuration/rh-identity-config.yaml +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/configuration/run.yaml +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/configuration/server.crt +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/configuration/server.key +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/configuration/system_prompt.txt +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/.pdm-python +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/README.md +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/__init__.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/configs/README.md +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/configs/run-rhelai.yaml +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/configuration/README.md +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/configuration/library-mode/README.md +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/configuration/library-mode/lightspeed-stack-auth-rh-identity.yaml +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/configuration/library-mode/lightspeed-stack-invalid-feedback-storage.yaml +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/configuration/library-mode/lightspeed-stack-no-cache.yaml +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/configuration/library-mode/lightspeed-stack-rbac.yaml +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/configuration/server-mode/README.md +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/configuration/server-mode/lightspeed-stack-auth-rh-identity.yaml +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/configuration/server-mode/lightspeed-stack-invalid-feedback-storage.yaml +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/configuration/server-mode/lightspeed-stack-no-cache.yaml +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/configuration/server-mode/lightspeed-stack-rbac.yaml +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/README.md +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/authorized_noop.feature +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/authorized_noop_token.feature +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/authorized_rh_identity.feature +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/conversation_cache_v2.feature +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/conversations.feature +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/feedback.feature +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/health.feature +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/models.feature +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/rest_api.feature +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/rlsapi_v1.feature +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/rlsapi_v1_errors.feature +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/smoketests.feature +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/steps/__init__.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/steps/feedback.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/gen_scenario_list.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/mock_jwks_server/Dockerfile +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/mock_jwks_server/README.md +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/mock_jwks_server/generate_tokens.py +2 -2
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/mock_mcp_server/Dockerfile +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/rag/README.md +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/rag/kv_store.db +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/secrets/mcp-token +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/test_api.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/configs/lightspeed-stack-auth-noop-token.yaml +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/configs/lightspeed-stack-auth-rh-identity.yaml +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/configs/lightspeed-stack-invalid-feedback-storage.yaml +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/configs/lightspeed-stack-no-cache.yaml +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/configs/lightspeed-stack-rbac.yaml +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/configs/lightspeed-stack.yaml +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/configs/run.yaml +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/manifests/gpu/cluster-policy.yaml +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/manifests/gpu/create-nfd.yaml +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/manifests/namespaces/nfd.yaml +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/manifests/namespaces/nvidia-operator.yaml +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/manifests/operators/ds-cluster.yaml +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/manifests/operators/operatorgroup.yaml +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/manifests/operators/operators.yaml +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/manifests/vllm/vllm-inference-service-cpu.yaml +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/manifests/vllm/vllm-inference-service-gpu.yaml +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/manifests/vllm/vllm-runtime-cpu.yaml +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/manifests/vllm/vllm-runtime-gpu.yaml +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/pipeline-services.sh +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/pipeline-test-pod.sh +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/pipeline-vllm.sh +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/scripts/bootstrap.sh +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/scripts/deploy-vllm.sh +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/scripts/fetch-vllm-image.sh +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/scripts/get-vllm-pod-info.sh +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/scripts/gpu-setup.sh +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/integration/__init__.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/integration/endpoints/__init__.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/integration/endpoints/test_model_list.py +3 -3
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/integration/endpoints/test_root_endpoint.py +5 -5
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/integration/endpoints/test_stream_interrupt_integration.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/integration/endpoints/test_streaming_query_integration.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/integration/endpoints/test_tools_integration.py +1 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/integration/test_configuration.py +1 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/integration/test_middleware_integration.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/integration/test_rh_identity_integration.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/integration/test_version.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/profiles/empty.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/profiles/syntax_error.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/profiles/test/profile.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/profiles/test_four/profile.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/profiles/test_three/profile.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/profiles/test_two/test.txt +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/test_results/.coverage.integration +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/test_results/coverage_integration.json +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/test_results/junit_integration.xml +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/README.md +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/a2a_storage/README.md +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/a2a_storage/__init__.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/a2a_storage/test_in_memory_context_store.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/a2a_storage/test_sqlite_context_store.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/app/__init__.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/app/endpoints/__init__.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/app/endpoints/test_authorized.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/app/endpoints/test_config.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/app/endpoints/test_health.py +1 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/app/endpoints/test_info.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/app/endpoints/test_mcp_auth.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/app/endpoints/test_metrics.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/app/endpoints/test_models.py +1 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/app/endpoints/test_providers.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/app/endpoints/test_rags.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/app/endpoints/test_root.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/app/endpoints/test_shields.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/app/endpoints/test_stream_interrupt.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/app/test_main_middleware.py +1 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/authentication/README.md +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/authentication/__init__.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/authentication/test_api_key_token.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/authorization/README.md +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/authorization/__init__.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/authorization/test_azure_token_manager.py +2 -2
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/authorization/test_middleware.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/cache/README.md +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/cache/__init__.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/cache/test_noop_cache.py +1 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/cache/test_postgres_cache.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/conftest.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/metrics/README.md +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/metrics/__init__.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/README.md +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/__init__.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/config/__init__.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/config/test_cors.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/config/test_customization.py +2 -2
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/config/test_inference_configuration.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/config/test_quota_handlers_config.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/config/test_quota_limiter_config.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/config/test_tls_configuration.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/config/test_user_data_collection.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/requests/README.md +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/requests/__init__.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/requests/test_attachment.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/requests/test_feedback_status_update_request.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/responses/__init__.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/responses/test_authorized_response.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/responses/test_query_response.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/responses/test_rag_chunk.py +1 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/responses/test_response_types.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/responses/test_types.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/rlsapi/README.md +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/rlsapi/__init__.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/rlsapi/test_requests.py +1 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/rlsapi/test_responses.py +1 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/observability/README.md +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/observability/__init__.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/observability/formats/README.md +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/observability/formats/__init__.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/quota/README.md +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/quota/__init__.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/quota/test_cluster_quota_limiter.py +1 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/quota/test_connect_sqlite.py +1 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/quota/test_quota_exceed_error.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/quota/test_user_quota_limiter.py +2 -2
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/runners/README.md +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/runners/__init__.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/runners/test_uvicorn_runner.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/telemetry/README.md +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/telemetry/__init__.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/telemetry/conftest.py +1 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/telemetry/test_configuration_snapshot.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/test_client.py +1 -1
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/test_configuration_unknown_fields.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/test_lightspeed_stack.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/test_log.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/utils/__init__.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/utils/auth_helpers.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/utils/test_connection_decorator.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/utils/test_prompts.py +0 -0
- {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/utils/test_suid.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: lightspeed-stack
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.5.0
|
|
4
4
|
Summary: LLM tooling stack
|
|
5
5
|
Keywords: LLM,RAG
|
|
6
6
|
Maintainer-Email: =?utf-8?b?UGF2ZWwgVGnFoW5vdnNrw70=?= <tisnik@centrum.cz>
|
|
@@ -218,14 +218,14 @@ Requires-Python: <3.14,>=3.12
|
|
|
218
218
|
Requires-Dist: fastapi>=0.115.12
|
|
219
219
|
Requires-Dist: uvicorn>=0.34.3
|
|
220
220
|
Requires-Dist: kubernetes>=30.1.0
|
|
221
|
-
Requires-Dist: llama-stack==0.
|
|
222
|
-
Requires-Dist: llama-stack-client==0.
|
|
223
|
-
Requires-Dist: llama-stack-api==0.
|
|
221
|
+
Requires-Dist: llama-stack==0.5.2
|
|
222
|
+
Requires-Dist: llama-stack-client==0.5.2
|
|
223
|
+
Requires-Dist: llama-stack-api==0.5.2
|
|
224
224
|
Requires-Dist: rich>=14.0.0
|
|
225
225
|
Requires-Dist: cachetools>=6.1.0
|
|
226
226
|
Requires-Dist: prometheus-client>=0.22.1
|
|
227
227
|
Requires-Dist: starlette>=0.47.1
|
|
228
|
-
Requires-Dist: aiohttp>=3.
|
|
228
|
+
Requires-Dist: aiohttp>=3.13.3
|
|
229
229
|
Requires-Dist: authlib>=1.6.0
|
|
230
230
|
Requires-Dist: a2a-sdk<0.4.0,>=0.3.4
|
|
231
231
|
Requires-Dist: email-validator>=2.2.0
|
|
@@ -236,14 +236,15 @@ Requires-Dist: asyncpg>=0.31.0
|
|
|
236
236
|
Requires-Dist: semver<4.0.0
|
|
237
237
|
Requires-Dist: jsonpath-ng>=1.6.1
|
|
238
238
|
Requires-Dist: psycopg2-binary>=2.9.10
|
|
239
|
-
Requires-Dist: litellm
|
|
240
|
-
Requires-Dist: urllib3
|
|
239
|
+
Requires-Dist: litellm<=1.82.6,>=1.75.5.post1
|
|
240
|
+
Requires-Dist: urllib3>=2.6.3
|
|
241
241
|
Requires-Dist: PyYAML>=6.0.0
|
|
242
242
|
Requires-Dist: einops>=0.8.1
|
|
243
243
|
Requires-Dist: azure-core>=1.38.0
|
|
244
244
|
Requires-Dist: azure-identity>=1.21.0
|
|
245
|
-
Requires-Dist: pyasn1>=0.6.
|
|
245
|
+
Requires-Dist: pyasn1>=0.6.3
|
|
246
246
|
Requires-Dist: jinja2>=3.1.0
|
|
247
|
+
Requires-Dist: requests>=2.33.0
|
|
247
248
|
Description-Content-Type: text/markdown
|
|
248
249
|
|
|
249
250
|
# lightspeed-stack
|
|
@@ -254,7 +255,7 @@ Description-Content-Type: text/markdown
|
|
|
254
255
|
[](https://github.com/lightspeed-core/lightspeed-stack/blob/main/LICENSE)
|
|
255
256
|
[](https://www.python.org/)
|
|
256
257
|
[](https://www.python.org/)
|
|
257
|
-
[](https://github.com/lightspeed-core/lightspeed-stack/releases/tag/0.
|
|
258
|
+
[](https://github.com/lightspeed-core/lightspeed-stack/releases/tag/0.5.0)
|
|
258
259
|
|
|
259
260
|
Lightspeed Core Stack (LCS) is an AI-powered assistant that provides answers to product questions using backend LLM services, agents, and RAG databases.
|
|
260
261
|
|
|
@@ -283,6 +284,7 @@ The service includes comprehensive user data collection capabilities for various
|
|
|
283
284
|
* [2. Kubernetes Service Account Tokens (For K8s Deployments)](#2-kubernetes-service-account-tokens-for-k8s-deployments)
|
|
284
285
|
* [3. Client-Provided Tokens (For Per-User Authentication)](#3-client-provided-tokens-for-per-user-authentication)
|
|
285
286
|
* [4. OAuth (For MCP Servers Requiring OAuth)](#4-oauth-for-mcp-servers-requiring-oauth)
|
|
287
|
+
* [5. Automatic Header Propagation (For Gateway-Injected Headers)](#5-automatic-header-propagation-for-gateway-injected-headers)
|
|
286
288
|
* [Client-Authenticated MCP Servers Discovery](#client-authenticated-mcp-servers-discovery)
|
|
287
289
|
* [Combining Authentication Methods](#combining-authentication-methods)
|
|
288
290
|
* [Authentication Method Comparison](#authentication-method-comparison)
|
|
@@ -1077,7 +1079,6 @@ Usage: make <OPTIONS> ... <TARGETS>
|
|
|
1077
1079
|
Available targets are:
|
|
1078
1080
|
|
|
1079
1081
|
run Run the service locally
|
|
1080
|
-
help Show this help screen
|
|
1081
1082
|
run-llama-stack Start Llama Stack with enriched config (for local service mode)
|
|
1082
1083
|
test-unit Run the unit tests
|
|
1083
1084
|
test-integration Run integration tests tests
|
|
@@ -1090,7 +1091,6 @@ format Format the code into unified format
|
|
|
1090
1091
|
schema Generate OpenAPI schema file
|
|
1091
1092
|
openapi-doc Generate OpenAPI documentation
|
|
1092
1093
|
generate-documentation Generate documentation
|
|
1093
|
-
requirements.txt Generate requirements.txt file containing hashes for all non-devel packages
|
|
1094
1094
|
doc Generate documentation for developers
|
|
1095
1095
|
docs/config.puml Generate PlantUML class diagram for configuration
|
|
1096
1096
|
docs/config.png Generate an image with configuration graph
|
|
@@ -1105,9 +1105,12 @@ verify Run all linters
|
|
|
1105
1105
|
distribution-archives Generate distribution archives to be uploaded into Python registry
|
|
1106
1106
|
upload-distribution-archives Upload distribution archives into Python registry
|
|
1107
1107
|
konflux-requirements Generate hermetic requirements.*.txt file for konflux build
|
|
1108
|
-
konflux-rpm-lock
|
|
1108
|
+
konflux-rpm-lock Generate rpm.lock.yaml file for konflux build
|
|
1109
|
+
help Show this help screen
|
|
1109
1110
|
```
|
|
1110
1111
|
|
|
1112
|
+
|
|
1113
|
+
|
|
1111
1114
|
## Running Linux container image
|
|
1112
1115
|
|
|
1113
1116
|
Stable release images are tagged with versions like `0.1.0`. Tag `latest` always points to latest stable release.
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
[](https://github.com/lightspeed-core/lightspeed-stack/blob/main/LICENSE)
|
|
7
7
|
[](https://www.python.org/)
|
|
8
8
|
[](https://www.python.org/)
|
|
9
|
-
[](https://github.com/lightspeed-core/lightspeed-stack/releases/tag/0.
|
|
9
|
+
[](https://github.com/lightspeed-core/lightspeed-stack/releases/tag/0.5.0)
|
|
10
10
|
|
|
11
11
|
Lightspeed Core Stack (LCS) is an AI-powered assistant that provides answers to product questions using backend LLM services, agents, and RAG databases.
|
|
12
12
|
|
|
@@ -35,6 +35,7 @@ The service includes comprehensive user data collection capabilities for various
|
|
|
35
35
|
* [2. Kubernetes Service Account Tokens (For K8s Deployments)](#2-kubernetes-service-account-tokens-for-k8s-deployments)
|
|
36
36
|
* [3. Client-Provided Tokens (For Per-User Authentication)](#3-client-provided-tokens-for-per-user-authentication)
|
|
37
37
|
* [4. OAuth (For MCP Servers Requiring OAuth)](#4-oauth-for-mcp-servers-requiring-oauth)
|
|
38
|
+
* [5. Automatic Header Propagation (For Gateway-Injected Headers)](#5-automatic-header-propagation-for-gateway-injected-headers)
|
|
38
39
|
* [Client-Authenticated MCP Servers Discovery](#client-authenticated-mcp-servers-discovery)
|
|
39
40
|
* [Combining Authentication Methods](#combining-authentication-methods)
|
|
40
41
|
* [Authentication Method Comparison](#authentication-method-comparison)
|
|
@@ -829,7 +830,6 @@ Usage: make <OPTIONS> ... <TARGETS>
|
|
|
829
830
|
Available targets are:
|
|
830
831
|
|
|
831
832
|
run Run the service locally
|
|
832
|
-
help Show this help screen
|
|
833
833
|
run-llama-stack Start Llama Stack with enriched config (for local service mode)
|
|
834
834
|
test-unit Run the unit tests
|
|
835
835
|
test-integration Run integration tests tests
|
|
@@ -842,7 +842,6 @@ format Format the code into unified format
|
|
|
842
842
|
schema Generate OpenAPI schema file
|
|
843
843
|
openapi-doc Generate OpenAPI documentation
|
|
844
844
|
generate-documentation Generate documentation
|
|
845
|
-
requirements.txt Generate requirements.txt file containing hashes for all non-devel packages
|
|
846
845
|
doc Generate documentation for developers
|
|
847
846
|
docs/config.puml Generate PlantUML class diagram for configuration
|
|
848
847
|
docs/config.png Generate an image with configuration graph
|
|
@@ -857,9 +856,12 @@ verify Run all linters
|
|
|
857
856
|
distribution-archives Generate distribution archives to be uploaded into Python registry
|
|
858
857
|
upload-distribution-archives Upload distribution archives into Python registry
|
|
859
858
|
konflux-requirements Generate hermetic requirements.*.txt file for konflux build
|
|
860
|
-
konflux-rpm-lock
|
|
859
|
+
konflux-rpm-lock Generate rpm.lock.yaml file for konflux build
|
|
860
|
+
help Show this help screen
|
|
861
861
|
```
|
|
862
862
|
|
|
863
|
+
|
|
864
|
+
|
|
863
865
|
## Running Linux container image
|
|
864
866
|
|
|
865
867
|
Stable release images are tagged with versions like `0.1.0`. Tag `latest` always points to latest stable release.
|
|
@@ -24,14 +24,14 @@ dependencies = [
|
|
|
24
24
|
"fastapi>=0.115.12",
|
|
25
25
|
"uvicorn>=0.34.3",
|
|
26
26
|
"kubernetes>=30.1.0",
|
|
27
|
-
"llama-stack==0.
|
|
28
|
-
"llama-stack-client==0.
|
|
29
|
-
"llama-stack-api==0.
|
|
27
|
+
"llama-stack==0.5.2",
|
|
28
|
+
"llama-stack-client==0.5.2",
|
|
29
|
+
"llama-stack-api==0.5.2",
|
|
30
30
|
"rich>=14.0.0",
|
|
31
31
|
"cachetools>=6.1.0",
|
|
32
32
|
"prometheus-client>=0.22.1",
|
|
33
33
|
"starlette>=0.47.1",
|
|
34
|
-
"aiohttp>=3.
|
|
34
|
+
"aiohttp>=3.13.3",
|
|
35
35
|
"authlib>=1.6.0",
|
|
36
36
|
"a2a-sdk>=0.3.4,<0.4.0",
|
|
37
37
|
"email-validator>=2.2.0",
|
|
@@ -42,16 +42,17 @@ dependencies = [
|
|
|
42
42
|
"semver<4.0.0",
|
|
43
43
|
"jsonpath-ng>=1.6.1",
|
|
44
44
|
"psycopg2-binary>=2.9.10",
|
|
45
|
-
"litellm>=1.75.5.post1",
|
|
46
|
-
"urllib3
|
|
45
|
+
"litellm>=1.75.5.post1,<=1.82.6",
|
|
46
|
+
"urllib3>=2.6.3",
|
|
47
47
|
"PyYAML>=6.0.0",
|
|
48
48
|
"einops>=0.8.1",
|
|
49
49
|
"azure-core>=1.38.0",
|
|
50
50
|
"azure-identity>=1.21.0",
|
|
51
|
-
"pyasn1>=0.6.
|
|
51
|
+
"pyasn1>=0.6.3",
|
|
52
52
|
"jinja2>=3.1.0",
|
|
53
|
+
"requests>=2.33.0",
|
|
53
54
|
]
|
|
54
|
-
version = "0.
|
|
55
|
+
version = "0.5.0"
|
|
55
56
|
|
|
56
57
|
[project.license]
|
|
57
58
|
file = "LICENSE"
|
|
@@ -64,10 +65,7 @@ Homepage = "https://github.com/lightspeed-core/lightspeed-stack"
|
|
|
64
65
|
Issues = "https://github.com/lightspeed-core/lightspeed-stack/issues"
|
|
65
66
|
|
|
66
67
|
[tool.pyright]
|
|
67
|
-
exclude = [
|
|
68
|
-
"src/authentication/k8s.py",
|
|
69
|
-
"src/app/endpoints/conversations.py",
|
|
70
|
-
]
|
|
68
|
+
exclude = []
|
|
71
69
|
extraPaths = [
|
|
72
70
|
"./src",
|
|
73
71
|
]
|
|
@@ -124,10 +122,15 @@ extend-select = [
|
|
|
124
122
|
"TID251",
|
|
125
123
|
"UP006",
|
|
126
124
|
"UP007",
|
|
125
|
+
"UP010",
|
|
127
126
|
"UP017",
|
|
128
127
|
"UP035",
|
|
129
128
|
"RUF100",
|
|
129
|
+
"B009",
|
|
130
130
|
"B010",
|
|
131
|
+
"DTZ005",
|
|
132
|
+
"D202",
|
|
133
|
+
"I001",
|
|
131
134
|
]
|
|
132
135
|
|
|
133
136
|
[tool.ruff.lint.flake8-tidy-imports.banned-api.unittest]
|
|
@@ -160,6 +163,7 @@ dev = [
|
|
|
160
163
|
"ruff>=0.11.13",
|
|
161
164
|
"aiosqlite",
|
|
162
165
|
"behave>=1.3.0",
|
|
166
|
+
"trustme>=1.2.1",
|
|
163
167
|
"types-cachetools>=6.1.0.20250717",
|
|
164
168
|
"build>=1.2.2.post1",
|
|
165
169
|
"twine>=6.1.0",
|
|
@@ -180,7 +184,7 @@ llslibdev = [
|
|
|
180
184
|
"faiss-cpu>=1.11.0",
|
|
181
185
|
"chardet>=5.2.0",
|
|
182
186
|
"psycopg2-binary>=2.9.10",
|
|
183
|
-
"requests>=2.
|
|
187
|
+
"requests>=2.33.0",
|
|
184
188
|
"aiosqlite>=0.21.0",
|
|
185
189
|
"datasets>=3.6.0",
|
|
186
190
|
"opentelemetry-sdk>=1.34.1",
|
|
@@ -192,13 +196,17 @@ llslibdev = [
|
|
|
192
196
|
"trl>=0.18.2",
|
|
193
197
|
"peft>=0.15.2",
|
|
194
198
|
"google-cloud-aiplatform>=1.130.0",
|
|
195
|
-
"litellm>=1.81.0",
|
|
199
|
+
"litellm>=1.81.0,<=1.82.6",
|
|
196
200
|
"autoevals>=0.0.129",
|
|
197
201
|
"fire>=0.7.0",
|
|
198
202
|
"opentelemetry-instrumentation>=0.55b0",
|
|
199
203
|
"blobfile>=3.0.0",
|
|
200
204
|
"psutil>=7.0.0",
|
|
201
205
|
"azure-identity>=1.21.0",
|
|
206
|
+
"httpx>=0.27.0",
|
|
207
|
+
"pydantic>=2.10.6",
|
|
208
|
+
"protobuf>=6.33.5",
|
|
209
|
+
"filelock>=3.20.3",
|
|
202
210
|
]
|
|
203
211
|
build = [
|
|
204
212
|
"build>=1.2.2.post1",
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
from typing import Optional
|
|
4
4
|
|
|
5
|
-
from sqlalchemy import Column, String, Table,
|
|
5
|
+
from sqlalchemy import Column, MetaData, String, Table, delete, select
|
|
6
6
|
from sqlalchemy.dialects.postgresql import insert as pg_insert
|
|
7
7
|
from sqlalchemy.ext.asyncio import AsyncEngine, async_sessionmaker
|
|
8
8
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
from typing import Optional
|
|
4
4
|
|
|
5
|
-
from sqlalchemy import Column, String, Table,
|
|
5
|
+
from sqlalchemy import Column, MetaData, String, Table, delete, select
|
|
6
6
|
from sqlalchemy.ext.asyncio import AsyncEngine, async_sessionmaker
|
|
7
7
|
|
|
8
8
|
from a2a_storage.context_store import A2AContextStore
|
|
@@ -1,18 +1,17 @@
|
|
|
1
1
|
"""Factory for creating A2A storage backends."""
|
|
2
2
|
|
|
3
|
-
from urllib.parse import quote_plus
|
|
4
3
|
from typing import Optional
|
|
4
|
+
from urllib.parse import quote_plus
|
|
5
5
|
|
|
6
|
-
from
|
|
7
|
-
|
|
8
|
-
from a2a.server.tasks import TaskStore, InMemoryTaskStore, DatabaseTaskStore
|
|
6
|
+
from a2a.server.tasks import DatabaseTaskStore, InMemoryTaskStore, TaskStore
|
|
7
|
+
from sqlalchemy.ext.asyncio import AsyncEngine, create_async_engine
|
|
9
8
|
|
|
10
9
|
from a2a_storage.context_store import A2AContextStore
|
|
11
10
|
from a2a_storage.in_memory_context_store import InMemoryA2AContextStore
|
|
12
|
-
from a2a_storage.sqlite_context_store import SQLiteA2AContextStore
|
|
13
11
|
from a2a_storage.postgres_context_store import PostgresA2AContextStore
|
|
14
|
-
from
|
|
12
|
+
from a2a_storage.sqlite_context_store import SQLiteA2AContextStore
|
|
15
13
|
from log import get_logger
|
|
14
|
+
from models.config import A2AStateConfiguration
|
|
16
15
|
|
|
17
16
|
logger = get_logger(__name__)
|
|
18
17
|
|
|
@@ -6,12 +6,12 @@ from typing import Any, Optional
|
|
|
6
6
|
|
|
7
7
|
from sqlalchemy import create_engine, text
|
|
8
8
|
from sqlalchemy.engine.base import Engine
|
|
9
|
-
from sqlalchemy.orm import
|
|
9
|
+
from sqlalchemy.orm import Session, sessionmaker
|
|
10
10
|
|
|
11
|
-
from log import get_logger
|
|
12
11
|
from configuration import configuration
|
|
12
|
+
from log import get_logger
|
|
13
|
+
from models.config import PostgreSQLDatabaseConfiguration, SQLiteDatabaseConfiguration
|
|
13
14
|
from models.database.base import Base
|
|
14
|
-
from models.config import SQLiteDatabaseConfiguration, PostgreSQLDatabaseConfiguration
|
|
15
15
|
|
|
16
16
|
logger = get_logger(__name__)
|
|
17
17
|
|
|
@@ -30,6 +30,9 @@ Handler for REST API call to provide info.
|
|
|
30
30
|
## [mcp_auth.py](mcp_auth.py)
|
|
31
31
|
Handler for REST API calls related to MCP server authentication.
|
|
32
32
|
|
|
33
|
+
## [mcp_servers.py](mcp_servers.py)
|
|
34
|
+
Handler for REST API calls to dynamically manage MCP servers.
|
|
35
|
+
|
|
33
36
|
## [metrics.py](metrics.py)
|
|
34
37
|
Handler for REST API call to provide metrics.
|
|
35
38
|
|
|
@@ -45,6 +48,9 @@ Handler for REST API call to provide answer to query using Response API.
|
|
|
45
48
|
## [rags.py](rags.py)
|
|
46
49
|
Handler for REST API calls to list and retrieve available RAGs.
|
|
47
50
|
|
|
51
|
+
## [responses.py](responses.py)
|
|
52
|
+
Handler for REST API call to provide answer using Responses API (LCORE specification).
|
|
53
|
+
|
|
48
54
|
## [rlsapi_v1.py](rlsapi_v1.py)
|
|
49
55
|
Handler for RHEL Lightspeed rlsapi v1 REST API endpoints.
|
|
50
56
|
|
|
@@ -54,6 +60,9 @@ Handler for the / endpoint.
|
|
|
54
60
|
## [shields.py](shields.py)
|
|
55
61
|
Handler for REST API call to list available shields.
|
|
56
62
|
|
|
63
|
+
## [stream_interrupt.py](stream_interrupt.py)
|
|
64
|
+
Endpoint for interrupting in-progress streaming query requests.
|
|
65
|
+
|
|
57
66
|
## [streaming_query.py](streaming_query.py)
|
|
58
67
|
Streaming query handler using Responses API.
|
|
59
68
|
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
import asyncio
|
|
4
4
|
import json
|
|
5
5
|
import uuid
|
|
6
|
-
from collections.abc import
|
|
7
|
-
from datetime import
|
|
6
|
+
from collections.abc import AsyncIterator, Mapping, MutableMapping
|
|
7
|
+
from datetime import UTC, datetime
|
|
8
8
|
from typing import Annotated, Any, Optional
|
|
9
9
|
|
|
10
10
|
from a2a.server.agent_execution import AgentExecutor, RequestContext
|
|
@@ -36,23 +36,22 @@ from llama_stack_client import APIConnectionError
|
|
|
36
36
|
from starlette.responses import Response, StreamingResponse
|
|
37
37
|
|
|
38
38
|
from a2a_storage import A2AContextStore, A2AStorageFactory
|
|
39
|
-
|
|
40
39
|
from authentication import get_auth_dependency
|
|
41
40
|
from authentication.interface import AuthTuple
|
|
42
41
|
from authorization.middleware import authorize
|
|
43
42
|
from client import AsyncLlamaStackClientHolder
|
|
44
43
|
from configuration import configuration
|
|
45
44
|
from constants import MEDIA_TYPE_EVENT_STREAM
|
|
45
|
+
from log import get_logger
|
|
46
46
|
from models.config import Action
|
|
47
47
|
from models.requests import QueryRequest
|
|
48
|
-
from utils.mcp_headers import
|
|
48
|
+
from utils.mcp_headers import McpHeaders, mcp_headers_dependency
|
|
49
49
|
from utils.responses import (
|
|
50
50
|
extract_text_from_response_item,
|
|
51
51
|
prepare_responses_params,
|
|
52
52
|
)
|
|
53
53
|
from utils.suid import normalize_conversation_id
|
|
54
54
|
from version import __version__
|
|
55
|
-
from log import get_logger
|
|
56
55
|
|
|
57
56
|
logger = get_logger(__name__)
|
|
58
57
|
router = APIRouter(tags=["a2a"])
|
|
@@ -340,7 +339,7 @@ class A2AAgentExecutor(AgentExecutor):
|
|
|
340
339
|
stream = await client.responses.create(**responses_params.model_dump())
|
|
341
340
|
except APIConnectionError as e:
|
|
342
341
|
error_message = (
|
|
343
|
-
f"Unable to connect to Llama Stack backend service: {
|
|
342
|
+
f"Unable to connect to Llama Stack backend service: {e!s}. "
|
|
344
343
|
"The service may be temporarily unavailable. Please try again later."
|
|
345
344
|
)
|
|
346
345
|
logger.error(
|
|
@@ -14,9 +14,9 @@ from authentication import get_auth_dependency
|
|
|
14
14
|
from authorization.middleware import authorize
|
|
15
15
|
from client import AsyncLlamaStackClientHolder
|
|
16
16
|
from configuration import configuration
|
|
17
|
+
from log import get_logger
|
|
17
18
|
from models.config import Action
|
|
18
19
|
from models.database.conversations import (
|
|
19
|
-
UserTurn,
|
|
20
20
|
UserConversation,
|
|
21
21
|
)
|
|
22
22
|
from models.requests import ConversationUpdateRequest
|
|
@@ -33,11 +33,16 @@ from models.responses import (
|
|
|
33
33
|
ServiceUnavailableResponse,
|
|
34
34
|
UnauthorizedResponse,
|
|
35
35
|
)
|
|
36
|
+
from utils.conversations import (
|
|
37
|
+
build_conversation_turns_from_items,
|
|
38
|
+
get_all_conversation_items,
|
|
39
|
+
)
|
|
36
40
|
from utils.endpoints import (
|
|
37
41
|
can_access_conversation,
|
|
38
42
|
check_configuration_loaded,
|
|
39
43
|
delete_conversation,
|
|
40
44
|
retrieve_conversation,
|
|
45
|
+
retrieve_conversation_turns,
|
|
41
46
|
validate_and_retrieve_conversation,
|
|
42
47
|
)
|
|
43
48
|
from utils.suid import (
|
|
@@ -45,8 +50,6 @@ from utils.suid import (
|
|
|
45
50
|
normalize_conversation_id,
|
|
46
51
|
to_llama_stack_conversation_id,
|
|
47
52
|
)
|
|
48
|
-
from utils.conversations import build_conversation_turns_from_items
|
|
49
|
-
from log import get_logger
|
|
50
53
|
|
|
51
54
|
logger = get_logger(__name__)
|
|
52
55
|
router = APIRouter(tags=["conversations_v1"])
|
|
@@ -236,46 +239,23 @@ async def get_conversation_endpoint_handler( # pylint: disable=too-many-locals,
|
|
|
236
239
|
llama_stack_conv_id,
|
|
237
240
|
)
|
|
238
241
|
|
|
239
|
-
#
|
|
240
|
-
|
|
241
|
-
conversation_id=llama_stack_conv_id,
|
|
242
|
-
after=None,
|
|
243
|
-
include=None,
|
|
244
|
-
limit=None,
|
|
245
|
-
order="asc", # oldest first
|
|
246
|
-
)
|
|
242
|
+
# Retrieve turns metadata from database (can be empty for legacy conversations)
|
|
243
|
+
db_turns = retrieve_conversation_turns(normalized_conv_id)
|
|
247
244
|
|
|
248
|
-
|
|
245
|
+
# Use Conversations API to retrieve conversation items
|
|
246
|
+
items = await get_all_conversation_items(client, llama_stack_conv_id)
|
|
247
|
+
if not items:
|
|
249
248
|
logger.error("No items found for conversation %s", conversation_id)
|
|
250
249
|
response = NotFoundResponse(
|
|
251
250
|
resource="conversation", resource_id=normalized_conv_id
|
|
252
251
|
).model_dump()
|
|
253
252
|
raise HTTPException(**response)
|
|
254
253
|
|
|
255
|
-
items = conversation_items_response.data
|
|
256
|
-
|
|
257
254
|
logger.info(
|
|
258
255
|
"Successfully retrieved %d items for conversation %s",
|
|
259
256
|
len(items),
|
|
260
257
|
conversation_id,
|
|
261
258
|
)
|
|
262
|
-
# Retrieve turns metadata from database
|
|
263
|
-
db_turns: list[UserTurn] = []
|
|
264
|
-
try:
|
|
265
|
-
with get_session() as session:
|
|
266
|
-
db_turns = (
|
|
267
|
-
session.query(UserTurn)
|
|
268
|
-
.filter_by(conversation_id=normalized_conv_id)
|
|
269
|
-
.order_by(UserTurn.turn_number)
|
|
270
|
-
.all()
|
|
271
|
-
)
|
|
272
|
-
except SQLAlchemyError as e:
|
|
273
|
-
logger.error(
|
|
274
|
-
"Database error occurred while retrieving conversation turns for %s.",
|
|
275
|
-
normalized_conv_id,
|
|
276
|
-
)
|
|
277
|
-
response = InternalServerErrorResponse.database_error()
|
|
278
|
-
raise HTTPException(**response.model_dump()) from e
|
|
279
259
|
|
|
280
260
|
# Build conversation turns from items and populate turns metadata
|
|
281
261
|
# Use conversation.created_at for legacy conversations without turn metadata
|
|
@@ -75,7 +75,7 @@ async def get_providers_health_statuses() -> list[ProviderHealthStatus]:
|
|
|
75
75
|
providers = await client.providers.list()
|
|
76
76
|
logger.debug("Found %d providers", len(providers))
|
|
77
77
|
|
|
78
|
-
|
|
78
|
+
return [
|
|
79
79
|
ProviderHealthStatus(
|
|
80
80
|
provider_id=provider.provider_id,
|
|
81
81
|
status=str(provider.health.get("status", "unknown")),
|
|
@@ -83,7 +83,6 @@ async def get_providers_health_statuses() -> list[ProviderHealthStatus]:
|
|
|
83
83
|
)
|
|
84
84
|
for provider in providers
|
|
85
85
|
]
|
|
86
|
-
return health_results
|
|
87
86
|
|
|
88
87
|
except APIConnectionError as e:
|
|
89
88
|
logger.error("Failed to check providers health: %s", e)
|
|
@@ -91,7 +90,7 @@ async def get_providers_health_statuses() -> list[ProviderHealthStatus]:
|
|
|
91
90
|
ProviderHealthStatus(
|
|
92
91
|
provider_id="unknown",
|
|
93
92
|
status=HealthStatus.ERROR.value,
|
|
94
|
-
message=f"Failed to initialize health check: {
|
|
93
|
+
message=f"Failed to initialize health check: {e!s}",
|
|
95
94
|
)
|
|
96
95
|
]
|
|
97
96
|
|