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.
Files changed (537) hide show
  1. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/PKG-INFO +15 -12
  2. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/README.md +6 -4
  3. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/pyproject.toml +22 -14
  4. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/a2a_storage/postgres_context_store.py +1 -1
  5. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/a2a_storage/sqlite_context_store.py +1 -1
  6. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/a2a_storage/storage_factory.py +5 -6
  7. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/app/database.py +3 -3
  8. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/app/endpoints/README.md +9 -0
  9. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/app/endpoints/a2a.py +5 -6
  10. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/app/endpoints/conversations_v1.py +11 -31
  11. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/app/endpoints/health.py +2 -3
  12. lightspeed_stack-0.5.0/src/app/endpoints/mcp_servers.py +247 -0
  13. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/app/endpoints/models.py +3 -4
  14. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/app/endpoints/query.py +48 -64
  15. lightspeed_stack-0.5.0/src/app/endpoints/responses.py +765 -0
  16. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/app/endpoints/rlsapi_v1.py +65 -11
  17. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/app/endpoints/streaming_query.py +151 -36
  18. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/app/endpoints/tools.py +41 -20
  19. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/app/main.py +3 -1
  20. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/app/routers.py +20 -17
  21. lightspeed_stack-0.5.0/src/authentication/.ruff_cache/.gitignore +2 -0
  22. lightspeed_stack-0.5.0/src/authentication/.ruff_cache/0.9.1/13770435568462002823 +0 -0
  23. lightspeed_stack-0.5.0/src/authentication/.ruff_cache/0.9.1/2640992821107041526 +0 -0
  24. lightspeed_stack-0.5.0/src/authentication/.ruff_cache/0.9.1/README.md +2 -0
  25. lightspeed_stack-0.5.0/src/authentication/.ruff_cache/CACHEDIR.TAG +1 -0
  26. lightspeed_stack-0.5.0/src/authentication/.ruff_cache/README.md +2 -0
  27. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/authentication/__init__.py +2 -1
  28. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/authentication/api_key_token.py +4 -4
  29. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/authentication/jwk_token.py +15 -12
  30. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/authentication/k8s.py +207 -52
  31. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/authentication/rh_identity.py +124 -36
  32. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/authentication/utils.py +1 -0
  33. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/authorization/resolvers.py +4 -5
  34. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/cache/postgres_cache.py +2 -1
  35. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/cache/sqlite_cache.py +3 -4
  36. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/metrics/utils.py +2 -2
  37. lightspeed_stack-0.5.0/src/models/.ruff_cache/.gitignore +2 -0
  38. lightspeed_stack-0.5.0/src/models/.ruff_cache/0.9.1/2435063725374233068 +0 -0
  39. lightspeed_stack-0.5.0/src/models/.ruff_cache/0.9.1/README.md +2 -0
  40. lightspeed_stack-0.5.0/src/models/.ruff_cache/CACHEDIR.TAG +1 -0
  41. lightspeed_stack-0.5.0/src/models/.ruff_cache/README.md +2 -0
  42. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/models/cache_entry.py +2 -0
  43. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/models/config.py +46 -11
  44. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/models/context.py +6 -0
  45. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/models/database/conversations.py +5 -0
  46. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/models/requests.py +245 -41
  47. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/models/responses.py +291 -30
  48. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/models/rlsapi/requests.py +10 -0
  49. lightspeed_stack-0.5.0/src/models/rlsapi/responses.py +93 -0
  50. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/observability/README.md +1 -1
  51. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/observability/__init__.py +1 -1
  52. lightspeed_stack-0.5.0/src/quota/.ruff_cache/.gitignore +2 -0
  53. lightspeed_stack-0.5.0/src/quota/.ruff_cache/0.14.1/13216894937928385266 +0 -0
  54. lightspeed_stack-0.5.0/src/quota/.ruff_cache/0.14.1/README.md +2 -0
  55. lightspeed_stack-0.5.0/src/quota/.ruff_cache/0.9.1/11326792315657745171 +0 -0
  56. lightspeed_stack-0.5.0/src/quota/.ruff_cache/0.9.1/README.md +2 -0
  57. lightspeed_stack-0.5.0/src/quota/.ruff_cache/CACHEDIR.TAG +1 -0
  58. lightspeed_stack-0.5.0/src/quota/.ruff_cache/README.md +2 -0
  59. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/quota/connect_pg.py +1 -0
  60. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/quota/quota_limiter.py +3 -4
  61. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/quota/quota_limiter_factory.py +2 -3
  62. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/quota/revokable_quota_limiter.py +11 -11
  63. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/quota/token_usage_history.py +8 -10
  64. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/runners/quota_scheduler.py +1 -4
  65. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/utils/README.md +4 -1
  66. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/utils/checks.py +2 -1
  67. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/utils/conversations.py +107 -2
  68. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/utils/endpoints.py +173 -2
  69. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/utils/llama_stack_version.py +45 -14
  70. lightspeed_stack-0.5.0/src/utils/mcp_headers.py +254 -0
  71. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/utils/mcp_oauth_probe.py +13 -6
  72. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/utils/prompts.py +1 -0
  73. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/utils/query.py +62 -3
  74. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/utils/responses.py +583 -103
  75. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/utils/schema_dumper.py +1 -0
  76. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/utils/shields.py +75 -63
  77. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/utils/stream_interrupts.py +2 -1
  78. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/utils/suid.py +9 -1
  79. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/utils/token_counter.py +1 -0
  80. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/utils/tool_formatter.py +30 -3
  81. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/utils/transcripts.py +3 -4
  82. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/utils/types.py +73 -54
  83. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/utils/vector_search.py +118 -38
  84. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/benchmarks/conftest.py +2 -2
  85. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/benchmarks/data_generators.py +1 -2
  86. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/configs/run-azure.yaml +6 -2
  87. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/configs/run-ci.yaml +2 -15
  88. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/configs/run-rhaiis.yaml +5 -1
  89. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/configs/run-vertexai.yaml +4 -1
  90. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/configs/run-watsonx.yaml +4 -6
  91. lightspeed_stack-0.5.0/tests/e2e/configuration/library-mode/lightspeed-stack-auth-noop-token.yaml +41 -0
  92. lightspeed_stack-0.5.0/tests/e2e/configuration/library-mode/lightspeed-stack-inline-rag.yaml +40 -0
  93. lightspeed_stack-0.5.0/tests/e2e/configuration/library-mode/lightspeed-stack-invalid-mcp-file-auth.yaml +24 -0
  94. 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
  95. lightspeed_stack-0.5.0/tests/e2e/configuration/library-mode/lightspeed-stack-mcp-client-auth.yaml +24 -0
  96. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/configuration/library-mode/lightspeed-stack-mcp-file-auth.yaml +2 -3
  97. 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
  98. lightspeed_stack-0.5.0/tests/e2e/configuration/library-mode/lightspeed-stack-mcp-oauth-auth.yaml +24 -0
  99. lightspeed_stack-0.5.0/tests/e2e/configuration/library-mode/lightspeed-stack-mcp.yaml +36 -0
  100. lightspeed_stack-0.5.0/tests/e2e/configuration/library-mode/lightspeed-stack-no-mcp.yaml +19 -0
  101. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/configuration/library-mode/lightspeed-stack.yaml +13 -0
  102. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/configuration/server-mode/lightspeed-stack-auth-noop-token.yaml +13 -0
  103. lightspeed_stack-0.5.0/tests/e2e/configuration/server-mode/lightspeed-stack-inline-rag.yaml +41 -0
  104. lightspeed_stack-0.5.0/tests/e2e/configuration/server-mode/lightspeed-stack-invalid-mcp-file-auth.yaml +25 -0
  105. 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
  106. lightspeed_stack-0.5.0/tests/e2e/configuration/server-mode/lightspeed-stack-mcp-client-auth.yaml +25 -0
  107. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/configuration/server-mode/lightspeed-stack-mcp-file-auth.yaml +2 -3
  108. lightspeed_stack-0.5.0/tests/e2e/configuration/server-mode/lightspeed-stack-mcp-kubernetes-auth.yaml +25 -0
  109. lightspeed_stack-0.5.0/tests/e2e/configuration/server-mode/lightspeed-stack-mcp-oauth-auth.yaml +25 -0
  110. lightspeed_stack-0.5.0/tests/e2e/configuration/server-mode/lightspeed-stack-mcp.yaml +37 -0
  111. lightspeed_stack-0.5.0/tests/e2e/configuration/server-mode/lightspeed-stack-no-mcp.yaml +20 -0
  112. lightspeed_stack-0.5.0/tests/e2e/configuration/server-mode/lightspeed-stack-tls.yaml +22 -0
  113. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/configuration/server-mode/lightspeed-stack.yaml +13 -0
  114. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/environment.py +146 -7
  115. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/faiss.feature +1 -1
  116. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/info.feature +2 -2
  117. lightspeed_stack-0.5.0/tests/e2e/features/inline_rag.feature +69 -0
  118. lightspeed_stack-0.5.0/tests/e2e/features/mcp.feature +519 -0
  119. lightspeed_stack-0.5.0/tests/e2e/features/mcp_servers_api.feature +133 -0
  120. lightspeed_stack-0.5.0/tests/e2e/features/mcp_servers_api_auth.feature +30 -0
  121. lightspeed_stack-0.5.0/tests/e2e/features/mcp_servers_api_no_config.feature +18 -0
  122. lightspeed_stack-0.5.0/tests/e2e/features/proxy.feature +106 -0
  123. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/query.feature +1 -1
  124. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/rbac.feature +9 -3
  125. lightspeed_stack-0.5.0/tests/e2e/features/responses.feature +598 -0
  126. lightspeed_stack-0.5.0/tests/e2e/features/responses_streaming.feature +493 -0
  127. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/steps/README.md +15 -0
  128. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/steps/auth.py +1 -0
  129. lightspeed_stack-0.5.0/tests/e2e/features/steps/common.py +84 -0
  130. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/steps/common_http.py +41 -6
  131. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/steps/conversation.py +67 -3
  132. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/steps/health.py +1 -0
  133. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/steps/info.py +1 -0
  134. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/steps/llm_query_response.py +138 -3
  135. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/steps/models.py +1 -2
  136. lightspeed_stack-0.5.0/tests/e2e/features/steps/place_holder.py +16 -0
  137. lightspeed_stack-0.5.0/tests/e2e/features/steps/proxy.py +382 -0
  138. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/steps/rbac.py +1 -0
  139. lightspeed_stack-0.5.0/tests/e2e/features/steps/responses_steps.py +80 -0
  140. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/steps/rlsapi_v1.py +1 -1
  141. lightspeed_stack-0.5.0/tests/e2e/features/steps/tls.py +224 -0
  142. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/steps/token_counters.py +0 -1
  143. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/streaming_query.feature +1 -1
  144. lightspeed_stack-0.5.0/tests/e2e/features/tls.feature +182 -0
  145. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/mock_jwks_server/server.py +1 -1
  146. lightspeed_stack-0.5.0/tests/e2e/mock_mcp_server/README.md +5 -0
  147. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/mock_mcp_server/server.py +10 -4
  148. lightspeed_stack-0.5.0/tests/e2e/mock_tls_inference_server/Dockerfile +14 -0
  149. lightspeed_stack-0.5.0/tests/e2e/mock_tls_inference_server/server.py +318 -0
  150. lightspeed_stack-0.5.0/tests/e2e/proxy/README.md +11 -0
  151. lightspeed_stack-0.5.0/tests/e2e/proxy/__init__.py +1 -0
  152. lightspeed_stack-0.5.0/tests/e2e/proxy/interception_proxy.py +215 -0
  153. lightspeed_stack-0.5.0/tests/e2e/proxy/tunnel_proxy.py +153 -0
  154. lightspeed_stack-0.5.0/tests/e2e/secrets/README.md +18 -0
  155. lightspeed_stack-0.5.0/tests/e2e/secrets/invalid-mcp-token +1 -0
  156. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/test_list.txt +5 -1
  157. lightspeed_stack-0.5.0/tests/e2e/utils/README.md +11 -0
  158. 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
  159. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/utils/prow_utils.py +43 -8
  160. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/utils/utils.py +94 -4
  161. lightspeed_stack-0.5.0/tests/e2e-prow/rhoai/configs/lightspeed-stack-inline-rag.yaml +38 -0
  162. lightspeed_stack-0.5.0/tests/e2e-prow/rhoai/configs/lightspeed-stack-invalid-mcp-file-auth.yaml +25 -0
  163. lightspeed_stack-0.5.0/tests/e2e-prow/rhoai/configs/lightspeed-stack-mcp-client-auth.yaml +25 -0
  164. lightspeed_stack-0.5.0/tests/e2e-prow/rhoai/configs/lightspeed-stack-mcp-file-auth.yaml +25 -0
  165. lightspeed_stack-0.5.0/tests/e2e-prow/rhoai/configs/lightspeed-stack-mcp-kubernetes-auth.yaml +25 -0
  166. lightspeed_stack-0.5.0/tests/e2e-prow/rhoai/configs/lightspeed-stack-mcp-oauth-auth.yaml +25 -0
  167. lightspeed_stack-0.5.0/tests/e2e-prow/rhoai/configs/lightspeed-stack-mcp.yaml +30 -0
  168. lightspeed_stack-0.5.0/tests/e2e-prow/rhoai/configs/lightspeed-stack-tls.yaml +22 -0
  169. lightspeed_stack-0.5.0/tests/e2e-prow/rhoai/manifests/lightspeed/lightspeed-stack.yaml +65 -0
  170. lightspeed_stack-0.5.0/tests/e2e-prow/rhoai/manifests/lightspeed/llama-stack-openai.yaml +168 -0
  171. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/manifests/lightspeed/llama-stack.yaml +0 -1
  172. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/manifests/lightspeed/mcp-mock-server.yaml +26 -8
  173. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/manifests/lightspeed/mock-jwks.yaml +12 -2
  174. lightspeed_stack-0.5.0/tests/e2e-prow/rhoai/pipeline-konflux.sh +394 -0
  175. lightspeed_stack-0.5.0/tests/e2e-prow/rhoai/pipeline-services-konflux.sh +41 -0
  176. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/pipeline.sh +1 -1
  177. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/run-tests.sh +27 -9
  178. lightspeed_stack-0.5.0/tests/e2e-prow/rhoai/scripts/e2e-ops.sh +538 -0
  179. lightspeed_stack-0.5.0/tests/integration/README.md +422 -0
  180. lightspeed_stack-0.5.0/tests/integration/conftest.py +478 -0
  181. lightspeed_stack-0.5.0/tests/integration/endpoints/README.md +44 -0
  182. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/integration/endpoints/test_authorized_endpoint.py +2 -3
  183. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/integration/endpoints/test_config_integration.py +1 -2
  184. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/integration/endpoints/test_health_integration.py +1 -2
  185. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/integration/endpoints/test_info_integration.py +5 -5
  186. lightspeed_stack-0.5.0/tests/integration/endpoints/test_query_byok_integration.py +1085 -0
  187. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/integration/endpoints/test_query_integration.py +54 -172
  188. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/integration/endpoints/test_rlsapi_v1_integration.py +1 -1
  189. lightspeed_stack-0.5.0/tests/integration/endpoints/test_streaming_query_byok_integration.py +1072 -0
  190. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/integration/test_openapi_json.py +32 -0
  191. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/test_results/.coverage.unit +0 -0
  192. lightspeed_stack-0.5.0/tests/test_results/coverage_unit.json +1 -0
  193. lightspeed_stack-0.5.0/tests/test_results/junit_unit.xml +1 -0
  194. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/__init__.py +1 -0
  195. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/a2a_storage/test_storage_factory.py +2 -3
  196. lightspeed_stack-0.5.0/tests/unit/app/.ruff_cache/.gitignore +2 -0
  197. lightspeed_stack-0.5.0/tests/unit/app/.ruff_cache/0.9.1/10631576872848856737 +0 -0
  198. lightspeed_stack-0.5.0/tests/unit/app/.ruff_cache/0.9.1/README.md +2 -0
  199. lightspeed_stack-0.5.0/tests/unit/app/.ruff_cache/CACHEDIR.TAG +1 -0
  200. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/app/README.md +1 -1
  201. lightspeed_stack-0.5.0/tests/unit/app/endpoints/.ruff_cache/.gitignore +2 -0
  202. lightspeed_stack-0.5.0/tests/unit/app/endpoints/.ruff_cache/0.9.1/15310180828563549007 +0 -0
  203. lightspeed_stack-0.5.0/tests/unit/app/endpoints/.ruff_cache/0.9.1/README.md +2 -0
  204. lightspeed_stack-0.5.0/tests/unit/app/endpoints/.ruff_cache/CACHEDIR.TAG +1 -0
  205. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/app/endpoints/README.md +12 -0
  206. lightspeed_stack-0.5.0/tests/unit/app/endpoints/conftest.py +41 -0
  207. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/app/endpoints/test_a2a.py +8 -9
  208. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/app/endpoints/test_conversations.py +25 -19
  209. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/app/endpoints/test_conversations_v2.py +1 -2
  210. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/app/endpoints/test_feedback.py +0 -5
  211. lightspeed_stack-0.5.0/tests/unit/app/endpoints/test_mcp_servers.py +437 -0
  212. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/app/endpoints/test_query.py +139 -40
  213. lightspeed_stack-0.5.0/tests/unit/app/endpoints/test_responses.py +1374 -0
  214. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/app/endpoints/test_rlsapi_v1.py +228 -78
  215. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/app/endpoints/test_streaming_query.py +373 -42
  216. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/app/endpoints/test_tools.py +3 -9
  217. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/app/test_database.py +3 -2
  218. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/app/test_routers.py +25 -20
  219. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/authentication/test_auth.py +2 -3
  220. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/authentication/test_jwk_token.py +9 -11
  221. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/authentication/test_k8s.py +416 -21
  222. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/authentication/test_noop.py +1 -1
  223. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/authentication/test_noop_with_token.py +2 -1
  224. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/authentication/test_rh_identity.py +183 -0
  225. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/authentication/test_utils.py +1 -0
  226. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/authorization/test_resolvers.py +5 -6
  227. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/cache/test_cache_factory.py +9 -11
  228. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/cache/test_sqlite_cache.py +5 -8
  229. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/metrics/test_utis.py +0 -1
  230. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/config/README.md +3 -0
  231. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/config/test_a2a_state_configuration.py +1 -2
  232. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/config/test_authentication_configuration.py +40 -24
  233. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/config/test_byok_rag.py +0 -9
  234. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/config/test_conversation_history.py +2 -3
  235. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/config/test_database_configuration.py +2 -3
  236. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/config/test_dump_configuration.py +22 -18
  237. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/config/test_jwt_role_rule.py +1 -2
  238. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/config/test_llama_stack_configuration.py +2 -3
  239. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/config/test_model_context_protocol_server.py +0 -2
  240. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/config/test_postgresql_database_configuration.py +2 -4
  241. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/config/test_quota_scheduler_config.py +0 -1
  242. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/config/test_rag_configuration.py +8 -10
  243. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/config/test_service_configuration.py +0 -1
  244. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/config/test_splunk_configuration.py +0 -1
  245. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/requests/test_feedback_request.py +1 -1
  246. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/requests/test_query_request.py +0 -1
  247. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/responses/README.md +1 -1
  248. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/responses/test_error_responses.py +10 -5
  249. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/responses/test_successful_responses.py +4 -2
  250. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/observability/formats/test_rlsapi.py +2 -2
  251. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/observability/test_splunk.py +1 -1
  252. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/quota/test_connect_pg.py +3 -4
  253. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/quota/test_quota_limiter_factory.py +3 -5
  254. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/test_configuration.py +107 -13
  255. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/test_llama_stack_configuration.py +74 -16
  256. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/utils/README.md +6 -0
  257. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/utils/test_checks.py +1 -2
  258. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/utils/test_common.py +6 -7
  259. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/utils/test_conversations.py +136 -1
  260. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/utils/test_endpoints.py +265 -8
  261. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/utils/test_llama_stack_version.py +48 -14
  262. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/utils/test_mcp_auth_headers.py +0 -1
  263. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/utils/test_mcp_headers.py +167 -3
  264. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/utils/test_query.py +3 -1
  265. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/utils/test_responses.py +831 -55
  266. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/utils/test_shields.py +140 -44
  267. lightspeed_stack-0.5.0/tests/unit/utils/test_tool_formatter.py +76 -0
  268. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/utils/test_transcripts.py +1 -3
  269. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/utils/test_types.py +3 -57
  270. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/utils/test_vector_search.py +183 -27
  271. lightspeed_stack-0.4.2/src/models/rlsapi/responses.py +0 -54
  272. lightspeed_stack-0.4.2/src/utils/mcp_headers.py +0 -123
  273. lightspeed_stack-0.4.2/tests/e2e/features/mcp.feature +0 -168
  274. lightspeed_stack-0.4.2/tests/e2e/features/mcp_file_auth.feature +0 -20
  275. lightspeed_stack-0.4.2/tests/e2e/features/steps/common.py +0 -38
  276. lightspeed_stack-0.4.2/tests/e2e/utils/README.md +0 -5
  277. lightspeed_stack-0.4.2/tests/e2e-prow/rhoai/manifests/lightspeed/lightspeed-stack.yaml +0 -25
  278. lightspeed_stack-0.4.2/tests/e2e-prow/rhoai/scripts/e2e-ops.sh +0 -234
  279. lightspeed_stack-0.4.2/tests/integration/README.md +0 -23
  280. lightspeed_stack-0.4.2/tests/integration/conftest.py +0 -191
  281. lightspeed_stack-0.4.2/tests/integration/endpoints/README.md +0 -23
  282. lightspeed_stack-0.4.2/tests/test_results/coverage_unit.json +0 -1
  283. lightspeed_stack-0.4.2/tests/test_results/junit_unit.xml +0 -1
  284. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/LICENSE +0 -0
  285. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/a2a_storage/README.md +0 -0
  286. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/a2a_storage/__init__.py +3 -3
  287. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/a2a_storage/context_store.py +0 -0
  288. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/a2a_storage/in_memory_context_store.py +0 -0
  289. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/app/README.md +0 -0
  290. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/app/__init__.py +0 -0
  291. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/app/endpoints/__init__.py +0 -0
  292. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/app/endpoints/authorized.py +1 -1
  293. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/app/endpoints/config.py +1 -1
  294. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/app/endpoints/conversations_v2.py +2 -2
  295. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/app/endpoints/feedback.py +1 -1
  296. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/app/endpoints/info.py +1 -1
  297. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/app/endpoints/mcp_auth.py +1 -1
  298. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/app/endpoints/metrics.py +0 -0
  299. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/app/endpoints/providers.py +1 -1
  300. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/app/endpoints/rags.py +1 -1
  301. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/app/endpoints/root.py +1 -1
  302. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/app/endpoints/shields.py +1 -1
  303. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/app/endpoints/stream_interrupt.py +0 -0
  304. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/authentication/README.md +0 -0
  305. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/authentication/interface.py +1 -1
  306. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/authentication/noop.py +2 -2
  307. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/authentication/noop_with_token.py +2 -2
  308. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/authorization/README.md +0 -0
  309. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/authorization/__init__.py +0 -0
  310. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/authorization/azure_token_manager.py +1 -1
  311. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/authorization/middleware.py +1 -1
  312. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/cache/README.md +0 -0
  313. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/cache/__init__.py +0 -0
  314. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/cache/cache.py +0 -0
  315. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/cache/cache_error.py +0 -0
  316. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/cache/cache_factory.py +2 -2
  317. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/cache/in_memory_cache.py +1 -1
  318. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/cache/noop_cache.py +1 -1
  319. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/metrics/README.md +0 -0
  320. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/metrics/__init__.py +0 -0
  321. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/models/README.md +0 -0
  322. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/models/__init__.py +0 -0
  323. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/models/database/README.md +0 -0
  324. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/models/database/__init__.py +0 -0
  325. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/models/database/base.py +0 -0
  326. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/models/rlsapi/README.md +0 -0
  327. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/models/rlsapi/__init__.py +0 -0
  328. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/observability/formats/README.md +0 -0
  329. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/observability/formats/__init__.py +0 -0
  330. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/observability/formats/rlsapi.py +0 -0
  331. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/observability/splunk.py +1 -1
  332. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/quota/README.md +0 -0
  333. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/quota/__init__.py +0 -0
  334. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/quota/cluster_quota_limiter.py +1 -1
  335. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/quota/connect_sqlite.py +0 -0
  336. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/quota/quota_exceed_error.py +0 -0
  337. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/quota/sql.py +0 -0
  338. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/quota/user_quota_limiter.py +1 -1
  339. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/runners/README.md +0 -0
  340. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/runners/__init__.py +0 -0
  341. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/runners/uvicorn.py +0 -0
  342. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/telemetry/README.md +0 -0
  343. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/telemetry/__init__.py +0 -0
  344. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/telemetry/configuration_snapshot.py +0 -0
  345. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/utils/__init__.py +0 -0
  346. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/utils/common.py +3 -3
  347. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/utils/connection_decorator.py +1 -1
  348. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/utils/mcp_auth_headers.py +0 -0
  349. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/src/utils/quota.py +0 -0
  350. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/__init__.py +0 -0
  351. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/benchmarks/README.md +0 -0
  352. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/benchmarks/db_benchmarks.py +5 -5
  353. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/benchmarks/test_app_database.py +2 -2
  354. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/benchmarks/test_app_database_comparison.py +2 -2
  355. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/configuration/benchmarks-postgres.yaml +0 -0
  356. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/configuration/benchmarks-sqlite.yaml +0 -0
  357. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/configuration/lightspeed-stack-proper-name.yaml +0 -0
  358. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/configuration/lightspeed-stack.yaml +0 -0
  359. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/configuration/minimal-stack.yaml +0 -0
  360. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/configuration/multiline_system_prompt.txt +0 -0
  361. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/configuration/password +0 -0
  362. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/configuration/rag.txt +0 -0
  363. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/configuration/rh-identity-config.yaml +0 -0
  364. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/configuration/run.yaml +0 -0
  365. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/configuration/server.crt +0 -0
  366. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/configuration/server.key +0 -0
  367. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/configuration/system_prompt.txt +0 -0
  368. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/.pdm-python +0 -0
  369. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/README.md +0 -0
  370. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/__init__.py +0 -0
  371. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/configs/README.md +0 -0
  372. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/configs/run-rhelai.yaml +0 -0
  373. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/configuration/README.md +0 -0
  374. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/configuration/library-mode/README.md +0 -0
  375. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/configuration/library-mode/lightspeed-stack-auth-rh-identity.yaml +0 -0
  376. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/configuration/library-mode/lightspeed-stack-invalid-feedback-storage.yaml +0 -0
  377. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/configuration/library-mode/lightspeed-stack-no-cache.yaml +0 -0
  378. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/configuration/library-mode/lightspeed-stack-rbac.yaml +0 -0
  379. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/configuration/server-mode/README.md +0 -0
  380. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/configuration/server-mode/lightspeed-stack-auth-rh-identity.yaml +0 -0
  381. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/configuration/server-mode/lightspeed-stack-invalid-feedback-storage.yaml +0 -0
  382. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/configuration/server-mode/lightspeed-stack-no-cache.yaml +0 -0
  383. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/configuration/server-mode/lightspeed-stack-rbac.yaml +0 -0
  384. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/README.md +0 -0
  385. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/authorized_noop.feature +0 -0
  386. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/authorized_noop_token.feature +0 -0
  387. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/authorized_rh_identity.feature +0 -0
  388. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/conversation_cache_v2.feature +0 -0
  389. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/conversations.feature +0 -0
  390. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/feedback.feature +0 -0
  391. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/health.feature +0 -0
  392. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/models.feature +0 -0
  393. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/rest_api.feature +0 -0
  394. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/rlsapi_v1.feature +0 -0
  395. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/rlsapi_v1_errors.feature +0 -0
  396. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/smoketests.feature +0 -0
  397. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/steps/__init__.py +0 -0
  398. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/features/steps/feedback.py +0 -0
  399. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/gen_scenario_list.py +0 -0
  400. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/mock_jwks_server/Dockerfile +0 -0
  401. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/mock_jwks_server/README.md +0 -0
  402. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/mock_jwks_server/generate_tokens.py +2 -2
  403. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/mock_mcp_server/Dockerfile +0 -0
  404. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/rag/README.md +0 -0
  405. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/rag/kv_store.db +0 -0
  406. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/secrets/mcp-token +0 -0
  407. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e/test_api.py +0 -0
  408. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/configs/lightspeed-stack-auth-noop-token.yaml +0 -0
  409. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/configs/lightspeed-stack-auth-rh-identity.yaml +0 -0
  410. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/configs/lightspeed-stack-invalid-feedback-storage.yaml +0 -0
  411. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/configs/lightspeed-stack-no-cache.yaml +0 -0
  412. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/configs/lightspeed-stack-rbac.yaml +0 -0
  413. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/configs/lightspeed-stack.yaml +0 -0
  414. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/configs/run.yaml +0 -0
  415. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/manifests/gpu/cluster-policy.yaml +0 -0
  416. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/manifests/gpu/create-nfd.yaml +0 -0
  417. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/manifests/namespaces/nfd.yaml +0 -0
  418. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/manifests/namespaces/nvidia-operator.yaml +0 -0
  419. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/manifests/operators/ds-cluster.yaml +0 -0
  420. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/manifests/operators/operatorgroup.yaml +0 -0
  421. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/manifests/operators/operators.yaml +0 -0
  422. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/manifests/vllm/vllm-inference-service-cpu.yaml +0 -0
  423. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/manifests/vllm/vllm-inference-service-gpu.yaml +0 -0
  424. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/manifests/vllm/vllm-runtime-cpu.yaml +0 -0
  425. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/manifests/vllm/vllm-runtime-gpu.yaml +0 -0
  426. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/pipeline-services.sh +0 -0
  427. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/pipeline-test-pod.sh +0 -0
  428. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/pipeline-vllm.sh +0 -0
  429. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/scripts/bootstrap.sh +0 -0
  430. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/scripts/deploy-vllm.sh +0 -0
  431. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/scripts/fetch-vllm-image.sh +0 -0
  432. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/scripts/get-vllm-pod-info.sh +0 -0
  433. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/e2e-prow/rhoai/scripts/gpu-setup.sh +0 -0
  434. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/integration/__init__.py +0 -0
  435. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/integration/endpoints/__init__.py +0 -0
  436. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/integration/endpoints/test_model_list.py +3 -3
  437. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/integration/endpoints/test_root_endpoint.py +5 -5
  438. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/integration/endpoints/test_stream_interrupt_integration.py +0 -0
  439. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/integration/endpoints/test_streaming_query_integration.py +0 -0
  440. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/integration/endpoints/test_tools_integration.py +1 -1
  441. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/integration/test_configuration.py +1 -1
  442. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/integration/test_middleware_integration.py +0 -0
  443. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/integration/test_rh_identity_integration.py +0 -0
  444. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/integration/test_version.py +0 -0
  445. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/profiles/empty.py +0 -0
  446. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/profiles/syntax_error.py +0 -0
  447. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/profiles/test/profile.py +0 -0
  448. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/profiles/test_four/profile.py +0 -0
  449. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/profiles/test_three/profile.py +0 -0
  450. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/profiles/test_two/test.txt +0 -0
  451. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/test_results/.coverage.integration +0 -0
  452. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/test_results/coverage_integration.json +0 -0
  453. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/test_results/junit_integration.xml +0 -0
  454. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/README.md +0 -0
  455. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/a2a_storage/README.md +0 -0
  456. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/a2a_storage/__init__.py +0 -0
  457. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/a2a_storage/test_in_memory_context_store.py +0 -0
  458. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/a2a_storage/test_sqlite_context_store.py +0 -0
  459. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/app/__init__.py +0 -0
  460. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/app/endpoints/__init__.py +0 -0
  461. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/app/endpoints/test_authorized.py +0 -0
  462. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/app/endpoints/test_config.py +0 -0
  463. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/app/endpoints/test_health.py +1 -1
  464. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/app/endpoints/test_info.py +0 -0
  465. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/app/endpoints/test_mcp_auth.py +0 -0
  466. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/app/endpoints/test_metrics.py +0 -0
  467. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/app/endpoints/test_models.py +1 -1
  468. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/app/endpoints/test_providers.py +0 -0
  469. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/app/endpoints/test_rags.py +0 -0
  470. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/app/endpoints/test_root.py +0 -0
  471. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/app/endpoints/test_shields.py +0 -0
  472. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/app/endpoints/test_stream_interrupt.py +0 -0
  473. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/app/test_main_middleware.py +1 -1
  474. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/authentication/README.md +0 -0
  475. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/authentication/__init__.py +0 -0
  476. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/authentication/test_api_key_token.py +0 -0
  477. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/authorization/README.md +0 -0
  478. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/authorization/__init__.py +0 -0
  479. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/authorization/test_azure_token_manager.py +2 -2
  480. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/authorization/test_middleware.py +0 -0
  481. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/cache/README.md +0 -0
  482. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/cache/__init__.py +0 -0
  483. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/cache/test_noop_cache.py +1 -1
  484. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/cache/test_postgres_cache.py +0 -0
  485. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/conftest.py +0 -0
  486. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/metrics/README.md +0 -0
  487. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/metrics/__init__.py +0 -0
  488. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/README.md +0 -0
  489. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/__init__.py +0 -0
  490. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/config/__init__.py +0 -0
  491. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/config/test_cors.py +0 -0
  492. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/config/test_customization.py +2 -2
  493. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/config/test_inference_configuration.py +0 -0
  494. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/config/test_quota_handlers_config.py +0 -0
  495. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/config/test_quota_limiter_config.py +0 -0
  496. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/config/test_tls_configuration.py +0 -0
  497. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/config/test_user_data_collection.py +0 -0
  498. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/requests/README.md +0 -0
  499. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/requests/__init__.py +0 -0
  500. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/requests/test_attachment.py +0 -0
  501. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/requests/test_feedback_status_update_request.py +0 -0
  502. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/responses/__init__.py +0 -0
  503. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/responses/test_authorized_response.py +0 -0
  504. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/responses/test_query_response.py +0 -0
  505. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/responses/test_rag_chunk.py +1 -1
  506. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/responses/test_response_types.py +0 -0
  507. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/responses/test_types.py +0 -0
  508. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/rlsapi/README.md +0 -0
  509. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/rlsapi/__init__.py +0 -0
  510. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/rlsapi/test_requests.py +1 -1
  511. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/models/rlsapi/test_responses.py +1 -1
  512. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/observability/README.md +0 -0
  513. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/observability/__init__.py +0 -0
  514. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/observability/formats/README.md +0 -0
  515. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/observability/formats/__init__.py +0 -0
  516. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/quota/README.md +0 -0
  517. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/quota/__init__.py +0 -0
  518. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/quota/test_cluster_quota_limiter.py +1 -1
  519. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/quota/test_connect_sqlite.py +1 -1
  520. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/quota/test_quota_exceed_error.py +0 -0
  521. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/quota/test_user_quota_limiter.py +2 -2
  522. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/runners/README.md +0 -0
  523. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/runners/__init__.py +0 -0
  524. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/runners/test_uvicorn_runner.py +0 -0
  525. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/telemetry/README.md +0 -0
  526. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/telemetry/__init__.py +0 -0
  527. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/telemetry/conftest.py +1 -1
  528. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/telemetry/test_configuration_snapshot.py +0 -0
  529. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/test_client.py +1 -1
  530. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/test_configuration_unknown_fields.py +0 -0
  531. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/test_lightspeed_stack.py +0 -0
  532. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/test_log.py +0 -0
  533. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/utils/__init__.py +0 -0
  534. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/utils/auth_helpers.py +0 -0
  535. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/utils/test_connection_decorator.py +0 -0
  536. {lightspeed_stack-0.4.2 → lightspeed_stack-0.5.0}/tests/unit/utils/test_prompts.py +0 -0
  537. {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.4.2
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.4.3
222
- Requires-Dist: llama-stack-client==0.4.3
223
- Requires-Dist: llama-stack-api==0.4.4
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.12.14
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>=1.75.5.post1
240
- Requires-Dist: urllib3==2.6.3
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.2
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
  [![License](https://img.shields.io/badge/license-Apache-blue)](https://github.com/lightspeed-core/lightspeed-stack/blob/main/LICENSE)
255
256
  [![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg)](https://www.python.org/)
256
257
  [![Required Python version](https://img.shields.io/python/required-version-toml?tomlFilePath=https%3A%2F%2Fraw.githubusercontent.com%2Flightspeed-core%2Flightspeed-stack%2Frefs%2Fheads%2Fmain%2Fpyproject.toml)](https://www.python.org/)
257
- [![Tag](https://img.shields.io/github/v/tag/lightspeed-core/lightspeed-stack)](https://github.com/lightspeed-core/lightspeed-stack/releases/tag/0.4.2)
258
+ [![Tag](https://img.shields.io/github/v/tag/lightspeed-core/lightspeed-stack)](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 Generate rpm.lock.yaml file for konflux build
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
  [![License](https://img.shields.io/badge/license-Apache-blue)](https://github.com/lightspeed-core/lightspeed-stack/blob/main/LICENSE)
7
7
  [![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg)](https://www.python.org/)
8
8
  [![Required Python version](https://img.shields.io/python/required-version-toml?tomlFilePath=https%3A%2F%2Fraw.githubusercontent.com%2Flightspeed-core%2Flightspeed-stack%2Frefs%2Fheads%2Fmain%2Fpyproject.toml)](https://www.python.org/)
9
- [![Tag](https://img.shields.io/github/v/tag/lightspeed-core/lightspeed-stack)](https://github.com/lightspeed-core/lightspeed-stack/releases/tag/0.4.2)
9
+ [![Tag](https://img.shields.io/github/v/tag/lightspeed-core/lightspeed-stack)](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 Generate rpm.lock.yaml file for konflux build
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.4.3",
28
- "llama-stack-client==0.4.3",
29
- "llama-stack-api==0.4.4",
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.12.14",
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==2.6.3",
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.2",
51
+ "pyasn1>=0.6.3",
52
52
  "jinja2>=3.1.0",
53
+ "requests>=2.33.0",
53
54
  ]
54
- version = "0.4.2"
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.32.4",
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, MetaData, select, delete
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, MetaData, select, delete
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 sqlalchemy.ext.asyncio import create_async_engine, AsyncEngine
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 models.config import A2AStateConfiguration
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 sessionmaker, Session
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 Mapping, AsyncIterator, MutableMapping
7
- from datetime import datetime, UTC
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 mcp_headers_dependency, McpHeaders
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: {str(e)}. "
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
- # Use Conversations API to retrieve conversation items
240
- conversation_items_response = await client.conversations.items.list(
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
- if not conversation_items_response.data:
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
- health_results = [
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: {str(e)}",
93
+ message=f"Failed to initialize health check: {e!s}",
95
94
  )
96
95
  ]
97
96