lightspeed-stack 0.4.1__tar.gz → 0.4.2__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 (478) hide show
  1. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/PKG-INFO +250 -104
  2. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/README.md +246 -102
  3. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/pyproject.toml +26 -3
  4. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/a2a_storage/in_memory_context_store.py +2 -2
  5. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/a2a_storage/postgres_context_store.py +2 -2
  6. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/a2a_storage/sqlite_context_store.py +2 -2
  7. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/a2a_storage/storage_factory.py +2 -2
  8. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/app/database.py +4 -2
  9. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/app/endpoints/README.md +3 -12
  10. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/app/endpoints/a2a.py +54 -40
  11. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/app/endpoints/authorized.py +2 -2
  12. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/app/endpoints/config.py +2 -2
  13. lightspeed_stack-0.4.1/src/app/endpoints/conversations_v3.py → lightspeed_stack-0.4.2/src/app/endpoints/conversations_v1.py +51 -128
  14. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/app/endpoints/conversations_v2.py +51 -26
  15. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/app/endpoints/feedback.py +2 -2
  16. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/app/endpoints/health.py +2 -2
  17. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/app/endpoints/info.py +2 -2
  18. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/app/endpoints/mcp_auth.py +2 -2
  19. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/app/endpoints/models.py +31 -8
  20. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/app/endpoints/providers.py +3 -3
  21. lightspeed_stack-0.4.2/src/app/endpoints/query.py +338 -0
  22. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/app/endpoints/rags.py +49 -8
  23. lightspeed_stack-0.4.2/src/app/endpoints/rlsapi_v1.py +501 -0
  24. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/app/endpoints/root.py +2 -2
  25. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/app/endpoints/shields.py +2 -2
  26. lightspeed_stack-0.4.2/src/app/endpoints/stream_interrupt.py +91 -0
  27. lightspeed_stack-0.4.2/src/app/endpoints/streaming_query.py +950 -0
  28. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/app/endpoints/tools.py +73 -4
  29. lightspeed_stack-0.4.2/src/app/main.py +233 -0
  30. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/app/routers.py +10 -12
  31. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/authentication/__init__.py +2 -2
  32. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/authentication/jwk_token.py +4 -3
  33. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/authentication/k8s.py +2 -2
  34. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/authentication/rh_identity.py +38 -22
  35. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/authorization/azure_token_manager.py +2 -2
  36. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/authorization/middleware.py +5 -4
  37. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/authorization/resolvers.py +2 -2
  38. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/cache/cache_factory.py +1 -1
  39. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/cache/in_memory_cache.py +1 -1
  40. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/cache/noop_cache.py +1 -1
  41. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/cache/postgres_cache.py +3 -3
  42. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/cache/sqlite_cache.py +3 -3
  43. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/metrics/__init__.py +3 -1
  44. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/models/cache_entry.py +1 -2
  45. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/models/config.py +156 -18
  46. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/models/context.py +10 -10
  47. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/models/database/conversations.py +31 -1
  48. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/models/requests.py +212 -2
  49. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/models/responses.py +285 -67
  50. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/models/rlsapi/requests.py +37 -3
  51. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/observability/README.md +1 -1
  52. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/observability/splunk.py +4 -4
  53. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/quota/quota_exceed_error.py +2 -2
  54. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/quota/sql.py +4 -4
  55. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/runners/uvicorn.py +5 -6
  56. lightspeed_stack-0.4.2/src/telemetry/README.md +8 -0
  57. lightspeed_stack-0.4.2/src/telemetry/__init__.py +7 -0
  58. lightspeed_stack-0.4.2/src/telemetry/configuration_snapshot.py +525 -0
  59. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/utils/README.md +12 -0
  60. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/utils/common.py +3 -2
  61. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/utils/connection_decorator.py +2 -1
  62. lightspeed_stack-0.4.2/src/utils/conversations.py +425 -0
  63. lightspeed_stack-0.4.2/src/utils/endpoints.py +460 -0
  64. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/utils/llama_stack_version.py +2 -3
  65. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/utils/mcp_auth_headers.py +14 -4
  66. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/utils/mcp_headers.py +37 -6
  67. lightspeed_stack-0.4.2/src/utils/mcp_oauth_probe.py +101 -0
  68. lightspeed_stack-0.4.2/src/utils/prompts.py +95 -0
  69. lightspeed_stack-0.4.2/src/utils/query.py +524 -0
  70. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/utils/quota.py +12 -3
  71. lightspeed_stack-0.4.2/src/utils/responses.py +1170 -0
  72. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/utils/schema_dumper.py +10 -4
  73. lightspeed_stack-0.4.2/src/utils/shields.py +272 -0
  74. lightspeed_stack-0.4.2/src/utils/stream_interrupts.py +141 -0
  75. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/utils/token_counter.py +2 -2
  76. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/utils/tool_formatter.py +2 -2
  77. lightspeed_stack-0.4.2/src/utils/transcripts.py +161 -0
  78. lightspeed_stack-0.4.2/src/utils/types.py +362 -0
  79. lightspeed_stack-0.4.2/src/utils/vector_search.py +627 -0
  80. lightspeed_stack-0.4.2/tests/benchmarks/conftest.py +119 -0
  81. lightspeed_stack-0.4.2/tests/benchmarks/data_generators.py +159 -0
  82. lightspeed_stack-0.4.2/tests/benchmarks/db_benchmarks.py +333 -0
  83. lightspeed_stack-0.4.2/tests/benchmarks/test_app_database.py +761 -0
  84. lightspeed_stack-0.4.2/tests/benchmarks/test_app_database_comparison.py +132 -0
  85. lightspeed_stack-0.4.2/tests/configuration/benchmarks-postgres.yaml +47 -0
  86. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/configuration/run.yaml +2 -2
  87. lightspeed_stack-0.4.2/tests/e2e/README.md +9 -0
  88. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/configs/run-azure.yaml +17 -3
  89. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/configs/run-ci.yaml +14 -12
  90. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/configs/run-rhaiis.yaml +22 -9
  91. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/configs/run-rhelai.yaml +17 -3
  92. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/configs/run-vertexai.yaml +18 -4
  93. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/configs/run-watsonx.yaml +19 -5
  94. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/configuration/library-mode/lightspeed-stack-auth-noop-token.yaml +3 -0
  95. lightspeed_stack-0.4.2/tests/e2e/configuration/library-mode/lightspeed-stack-mcp-file-auth.yaml +25 -0
  96. lightspeed_stack-0.4.2/tests/e2e/configuration/library-mode/lightspeed-stack-mcp.yaml +25 -0
  97. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/configuration/library-mode/lightspeed-stack-rbac.yaml +1 -0
  98. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/configuration/library-mode/lightspeed-stack.yaml +3 -0
  99. lightspeed_stack-0.4.2/tests/e2e/configuration/server-mode/lightspeed-stack-auth-noop-token.yaml +34 -0
  100. lightspeed_stack-0.4.2/tests/e2e/configuration/server-mode/lightspeed-stack-mcp-file-auth.yaml +26 -0
  101. lightspeed_stack-0.4.2/tests/e2e/configuration/server-mode/lightspeed-stack-mcp.yaml +26 -0
  102. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/configuration/server-mode/lightspeed-stack-rbac.yaml +1 -0
  103. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/configuration/server-mode/lightspeed-stack.yaml +3 -0
  104. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/features/authorized_rh_identity.feature +6 -6
  105. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/features/conversation_cache_v2.feature +9 -1
  106. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/features/conversations.feature +12 -1
  107. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/features/environment.py +207 -70
  108. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/features/faiss.feature +1 -1
  109. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/features/feedback.feature +1 -1
  110. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/features/info.feature +3 -21
  111. lightspeed_stack-0.4.2/tests/e2e/features/mcp.feature +168 -0
  112. lightspeed_stack-0.4.2/tests/e2e/features/mcp_file_auth.feature +20 -0
  113. lightspeed_stack-0.4.2/tests/e2e/features/models.feature +40 -0
  114. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/features/query.feature +17 -0
  115. lightspeed_stack-0.4.2/tests/e2e/features/rlsapi_v1.feature +89 -0
  116. lightspeed_stack-0.4.2/tests/e2e/features/rlsapi_v1_errors.feature +49 -0
  117. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/features/steps/README.md +3 -0
  118. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/features/steps/common_http.py +27 -2
  119. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/features/steps/conversation.py +1 -0
  120. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/features/steps/health.py +9 -0
  121. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/features/steps/info.py +1 -51
  122. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/features/steps/llm_query_response.py +78 -8
  123. lightspeed_stack-0.4.2/tests/e2e/features/steps/models.py +115 -0
  124. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/features/steps/rbac.py +4 -1
  125. lightspeed_stack-0.4.2/tests/e2e/features/steps/rlsapi_v1.py +65 -0
  126. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/features/steps/token_counters.py +3 -1
  127. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/features/streaming_query.feature +15 -0
  128. lightspeed_stack-0.4.2/tests/e2e/mock_mcp_server/Dockerfile +5 -0
  129. lightspeed_stack-0.4.2/tests/e2e/mock_mcp_server/server.py +117 -0
  130. lightspeed_stack-0.4.2/tests/e2e/rag/kv_store.db +0 -0
  131. lightspeed_stack-0.4.2/tests/e2e/secrets/mcp-token +1 -0
  132. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/test_list.txt +5 -0
  133. lightspeed_stack-0.4.2/tests/e2e/utils/llama_stack_shields.py +104 -0
  134. lightspeed_stack-0.4.2/tests/e2e/utils/prow_utils.py +217 -0
  135. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/utils/utils.py +35 -1
  136. {lightspeed_stack-0.4.1/tests/e2e/configuration/server-mode → lightspeed_stack-0.4.2/tests/e2e-prow/rhoai/configs}/lightspeed-stack-auth-noop-token.yaml +1 -1
  137. lightspeed_stack-0.4.2/tests/e2e-prow/rhoai/configs/lightspeed-stack-auth-rh-identity.yaml +25 -0
  138. lightspeed_stack-0.4.1/tests/e2e-prow/rhoai/configs/lightspeed-stack.yaml → lightspeed_stack-0.4.2/tests/e2e-prow/rhoai/configs/lightspeed-stack-invalid-feedback-storage.yaml +2 -2
  139. lightspeed_stack-0.4.2/tests/e2e-prow/rhoai/configs/lightspeed-stack-no-cache.yaml +27 -0
  140. lightspeed_stack-0.4.2/tests/e2e-prow/rhoai/configs/lightspeed-stack-rbac.yaml +94 -0
  141. lightspeed_stack-0.4.2/tests/e2e-prow/rhoai/configs/lightspeed-stack.yaml +43 -0
  142. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e-prow/rhoai/configs/run.yaml +47 -28
  143. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e-prow/rhoai/manifests/lightspeed/llama-stack.yaml +27 -0
  144. lightspeed_stack-0.4.2/tests/e2e-prow/rhoai/manifests/lightspeed/mcp-mock-server.yaml +50 -0
  145. lightspeed_stack-0.4.2/tests/e2e-prow/rhoai/manifests/lightspeed/mock-jwks.yaml +46 -0
  146. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e-prow/rhoai/manifests/vllm/vllm-runtime-cpu.yaml +1 -1
  147. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e-prow/rhoai/manifests/vllm/vllm-runtime-gpu.yaml +2 -2
  148. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e-prow/rhoai/pipeline-services.sh +4 -2
  149. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e-prow/rhoai/pipeline.sh +152 -57
  150. lightspeed_stack-0.4.2/tests/e2e-prow/rhoai/run-tests.sh +50 -0
  151. lightspeed_stack-0.4.2/tests/e2e-prow/rhoai/scripts/e2e-ops.sh +234 -0
  152. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/integration/conftest.py +33 -1
  153. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/integration/endpoints/README.md +4 -1
  154. lightspeed_stack-0.4.2/tests/integration/endpoints/test_authorized_endpoint.py +35 -0
  155. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/integration/endpoints/test_config_integration.py +5 -3
  156. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/integration/endpoints/test_health_integration.py +2 -1
  157. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/integration/endpoints/test_info_integration.py +2 -1
  158. lightspeed_stack-0.4.2/tests/integration/endpoints/test_model_list.py +256 -0
  159. lightspeed_stack-0.4.1/tests/integration/endpoints/test_query_v2_integration.py → lightspeed_stack-0.4.2/tests/integration/endpoints/test_query_integration.py +368 -44
  160. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/integration/endpoints/test_rlsapi_v1_integration.py +137 -6
  161. lightspeed_stack-0.4.2/tests/integration/endpoints/test_root_endpoint.py +72 -0
  162. lightspeed_stack-0.4.2/tests/integration/endpoints/test_stream_interrupt_integration.py +66 -0
  163. lightspeed_stack-0.4.2/tests/integration/endpoints/test_streaming_query_integration.py +350 -0
  164. lightspeed_stack-0.4.2/tests/integration/endpoints/test_tools_integration.py +112 -0
  165. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/integration/test_configuration.py +1 -1
  166. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/integration/test_openapi_json.py +17 -4
  167. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/integration/test_rh_identity_integration.py +2 -2
  168. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/integration/test_version.py +2 -2
  169. lightspeed_stack-0.4.2/tests/profiles/empty.py +1 -0
  170. lightspeed_stack-0.4.2/tests/profiles/syntax_error.py +3 -0
  171. lightspeed_stack-0.4.2/tests/profiles/test_four/profile.py +49 -0
  172. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/test_results/.coverage.integration +0 -0
  173. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/test_results/.coverage.unit +0 -0
  174. lightspeed_stack-0.4.2/tests/test_results/coverage_integration.json +1 -0
  175. lightspeed_stack-0.4.2/tests/test_results/coverage_unit.json +1 -0
  176. lightspeed_stack-0.4.2/tests/test_results/junit_integration.xml +1 -0
  177. lightspeed_stack-0.4.2/tests/test_results/junit_unit.xml +1 -0
  178. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/__init__.py +1 -1
  179. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/a2a_storage/test_storage_factory.py +18 -11
  180. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/app/endpoints/README.md +0 -6
  181. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/app/endpoints/test_a2a.py +75 -78
  182. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/app/endpoints/test_conversations.py +964 -387
  183. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/app/endpoints/test_conversations_v2.py +268 -176
  184. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/app/endpoints/test_metrics.py +0 -1
  185. lightspeed_stack-0.4.2/tests/unit/app/endpoints/test_models.py +474 -0
  186. lightspeed_stack-0.4.2/tests/unit/app/endpoints/test_query.py +715 -0
  187. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/app/endpoints/test_rags.py +143 -0
  188. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/app/endpoints/test_rlsapi_v1.py +416 -68
  189. lightspeed_stack-0.4.2/tests/unit/app/endpoints/test_stream_interrupt.py +150 -0
  190. lightspeed_stack-0.4.2/tests/unit/app/endpoints/test_streaming_query.py +2476 -0
  191. lightspeed_stack-0.4.2/tests/unit/app/endpoints/test_tools.py +1143 -0
  192. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/app/test_database.py +1 -1
  193. lightspeed_stack-0.4.2/tests/unit/app/test_main_middleware.py +177 -0
  194. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/app/test_routers.py +18 -18
  195. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/authentication/test_jwk_token.py +2 -1
  196. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/authentication/test_rh_identity.py +134 -35
  197. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/authorization/test_azure_token_manager.py +13 -5
  198. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/cache/test_postgres_cache.py +3 -3
  199. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/cache/test_sqlite_cache.py +2 -2
  200. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/conftest.py +1 -1
  201. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/models/config/test_authentication_configuration.py +10 -5
  202. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/models/config/test_byok_rag.py +32 -8
  203. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/models/config/test_dump_configuration.py +50 -0
  204. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/models/config/test_llama_stack_configuration.py +2 -2
  205. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/models/config/test_model_context_protocol_server.py +51 -0
  206. lightspeed_stack-0.4.2/tests/unit/models/config/test_rag_configuration.py +93 -0
  207. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/models/config/test_service_configuration.py +22 -0
  208. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/models/config/test_splunk_configuration.py +4 -2
  209. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/models/config/test_tls_configuration.py +1 -0
  210. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/models/responses/README.md +6 -0
  211. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/models/responses/test_error_responses.py +2 -1
  212. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/models/responses/test_query_response.py +2 -2
  213. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/models/responses/test_rag_chunk.py +91 -17
  214. lightspeed_stack-0.4.2/tests/unit/models/responses/test_response_types.py +83 -0
  215. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/models/responses/test_successful_responses.py +142 -11
  216. lightspeed_stack-0.4.2/tests/unit/models/responses/test_types.py +83 -0
  217. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/models/rlsapi/test_requests.py +200 -37
  218. lightspeed_stack-0.4.2/tests/unit/observability/formats/test_rlsapi.py +75 -0
  219. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/observability/test_splunk.py +54 -46
  220. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/runners/test_uvicorn_runner.py +80 -1
  221. lightspeed_stack-0.4.2/tests/unit/telemetry/README.md +11 -0
  222. lightspeed_stack-0.4.2/tests/unit/telemetry/__init__.py +1 -0
  223. lightspeed_stack-0.4.2/tests/unit/telemetry/conftest.py +388 -0
  224. lightspeed_stack-0.4.2/tests/unit/telemetry/test_configuration_snapshot.py +711 -0
  225. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/test_client.py +4 -2
  226. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/test_configuration.py +239 -15
  227. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/test_llama_stack_configuration.py +203 -17
  228. lightspeed_stack-0.4.2/tests/unit/test_log.py +155 -0
  229. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/utils/README.md +10 -1
  230. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/utils/test_checks.py +60 -0
  231. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/utils/test_common.py +12 -5
  232. lightspeed_stack-0.4.2/tests/unit/utils/test_conversations.py +722 -0
  233. lightspeed_stack-0.4.2/tests/unit/utils/test_endpoints.py +453 -0
  234. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/utils/test_mcp_auth_headers.py +9 -0
  235. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/utils/test_mcp_headers.py +99 -0
  236. lightspeed_stack-0.4.2/tests/unit/utils/test_prompts.py +335 -0
  237. lightspeed_stack-0.4.2/tests/unit/utils/test_query.py +852 -0
  238. lightspeed_stack-0.4.2/tests/unit/utils/test_responses.py +2394 -0
  239. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/utils/test_shields.py +198 -22
  240. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/utils/test_transcripts.py +45 -55
  241. lightspeed_stack-0.4.2/tests/unit/utils/test_types.py +328 -0
  242. lightspeed_stack-0.4.2/tests/unit/utils/test_vector_search.py +504 -0
  243. lightspeed_stack-0.4.1/src/app/endpoints/conversations.py +0 -390
  244. lightspeed_stack-0.4.1/src/app/endpoints/query.py +0 -579
  245. lightspeed_stack-0.4.1/src/app/endpoints/query_v2.py +0 -860
  246. lightspeed_stack-0.4.1/src/app/endpoints/rlsapi_v1.py +0 -340
  247. lightspeed_stack-0.4.1/src/app/endpoints/streaming_query.py +0 -726
  248. lightspeed_stack-0.4.1/src/app/endpoints/streaming_query_v2.py +0 -478
  249. lightspeed_stack-0.4.1/src/app/main.py +0 -187
  250. lightspeed_stack-0.4.1/src/utils/endpoints.py +0 -828
  251. lightspeed_stack-0.4.1/src/utils/query.py +0 -121
  252. lightspeed_stack-0.4.1/src/utils/responses.py +0 -56
  253. lightspeed_stack-0.4.1/src/utils/shields.py +0 -157
  254. lightspeed_stack-0.4.1/src/utils/transcripts.py +0 -122
  255. lightspeed_stack-0.4.1/src/utils/types.py +0 -212
  256. lightspeed_stack-0.4.1/tests/benchmarks/test_app_database.py +0 -513
  257. lightspeed_stack-0.4.1/tests/e2e/README.md +0 -11
  258. lightspeed_stack-0.4.1/tests/e2e/rag/kv_store.db +0 -0
  259. lightspeed_stack-0.4.1/tests/e2e-prow/rhoai/manifests/test-pod/spin-up.yaml +0 -30
  260. lightspeed_stack-0.4.1/tests/e2e-prow/rhoai/run-tests.sh +0 -17
  261. lightspeed_stack-0.4.1/tests/test_results/coverage_integration.json +0 -1
  262. lightspeed_stack-0.4.1/tests/test_results/coverage_unit.json +0 -1
  263. lightspeed_stack-0.4.1/tests/test_results/junit_integration.xml +0 -1
  264. lightspeed_stack-0.4.1/tests/test_results/junit_unit.xml +0 -1
  265. lightspeed_stack-0.4.1/tests/unit/app/endpoints/test_models.py +0 -224
  266. lightspeed_stack-0.4.1/tests/unit/app/endpoints/test_query.py +0 -486
  267. lightspeed_stack-0.4.1/tests/unit/app/endpoints/test_query_v2.py +0 -1016
  268. lightspeed_stack-0.4.1/tests/unit/app/endpoints/test_streaming_query.py +0 -654
  269. lightspeed_stack-0.4.1/tests/unit/app/endpoints/test_streaming_query_v2.py +0 -627
  270. lightspeed_stack-0.4.1/tests/unit/app/endpoints/test_tools.py +0 -630
  271. lightspeed_stack-0.4.1/tests/unit/app/test_main_middleware.py +0 -74
  272. lightspeed_stack-0.4.1/tests/unit/observability/formats/test_rlsapi.py +0 -74
  273. lightspeed_stack-0.4.1/tests/unit/test_log.py +0 -14
  274. lightspeed_stack-0.4.1/tests/unit/utils/test_endpoints.py +0 -600
  275. lightspeed_stack-0.4.1/tests/unit/utils/test_responses.py +0 -260
  276. lightspeed_stack-0.4.1/tests/unit/utils/test_types.py +0 -58
  277. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/LICENSE +0 -0
  278. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/a2a_storage/README.md +0 -0
  279. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/a2a_storage/__init__.py +0 -0
  280. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/a2a_storage/context_store.py +0 -0
  281. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/app/README.md +0 -0
  282. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/app/__init__.py +0 -0
  283. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/app/endpoints/__init__.py +0 -0
  284. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/app/endpoints/metrics.py +0 -0
  285. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/authentication/README.md +0 -0
  286. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/authentication/api_key_token.py +0 -0
  287. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/authentication/interface.py +0 -0
  288. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/authentication/noop.py +0 -0
  289. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/authentication/noop_with_token.py +0 -0
  290. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/authentication/utils.py +0 -0
  291. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/authorization/README.md +0 -0
  292. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/authorization/__init__.py +0 -0
  293. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/cache/README.md +0 -0
  294. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/cache/__init__.py +0 -0
  295. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/cache/cache.py +0 -0
  296. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/cache/cache_error.py +0 -0
  297. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/metrics/README.md +0 -0
  298. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/metrics/utils.py +0 -0
  299. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/models/README.md +0 -0
  300. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/models/__init__.py +0 -0
  301. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/models/database/README.md +0 -0
  302. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/models/database/__init__.py +0 -0
  303. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/models/database/base.py +0 -0
  304. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/models/rlsapi/README.md +0 -0
  305. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/models/rlsapi/__init__.py +0 -0
  306. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/models/rlsapi/responses.py +0 -0
  307. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/observability/__init__.py +0 -0
  308. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/observability/formats/README.md +0 -0
  309. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/observability/formats/__init__.py +0 -0
  310. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/observability/formats/rlsapi.py +0 -0
  311. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/quota/README.md +0 -0
  312. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/quota/__init__.py +0 -0
  313. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/quota/cluster_quota_limiter.py +0 -0
  314. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/quota/connect_pg.py +0 -0
  315. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/quota/connect_sqlite.py +0 -0
  316. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/quota/quota_limiter.py +0 -0
  317. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/quota/quota_limiter_factory.py +0 -0
  318. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/quota/revokable_quota_limiter.py +0 -0
  319. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/quota/token_usage_history.py +0 -0
  320. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/quota/user_quota_limiter.py +0 -0
  321. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/runners/README.md +0 -0
  322. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/runners/__init__.py +0 -0
  323. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/runners/quota_scheduler.py +0 -0
  324. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/utils/__init__.py +0 -0
  325. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/utils/checks.py +0 -0
  326. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/src/utils/suid.py +0 -0
  327. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/__init__.py +0 -0
  328. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/benchmarks/README.md +0 -0
  329. /lightspeed_stack-0.4.1/tests/configuration/benchmarks-lightspeed-stack.yaml → /lightspeed_stack-0.4.2/tests/configuration/benchmarks-sqlite.yaml +0 -0
  330. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/configuration/lightspeed-stack-proper-name.yaml +0 -0
  331. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/configuration/lightspeed-stack.yaml +0 -0
  332. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/configuration/minimal-stack.yaml +0 -0
  333. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/configuration/multiline_system_prompt.txt +0 -0
  334. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/configuration/password +0 -0
  335. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/configuration/rag.txt +0 -0
  336. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/configuration/rh-identity-config.yaml +0 -0
  337. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/configuration/server.crt +0 -0
  338. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/configuration/server.key +0 -0
  339. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/configuration/system_prompt.txt +0 -0
  340. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/.pdm-python +0 -0
  341. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/__init__.py +0 -0
  342. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/configs/README.md +0 -0
  343. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/configuration/README.md +0 -0
  344. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/configuration/library-mode/README.md +0 -0
  345. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/configuration/library-mode/lightspeed-stack-auth-rh-identity.yaml +0 -0
  346. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/configuration/library-mode/lightspeed-stack-invalid-feedback-storage.yaml +0 -0
  347. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/configuration/library-mode/lightspeed-stack-no-cache.yaml +0 -0
  348. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/configuration/server-mode/README.md +0 -0
  349. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/configuration/server-mode/lightspeed-stack-auth-rh-identity.yaml +0 -0
  350. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/configuration/server-mode/lightspeed-stack-invalid-feedback-storage.yaml +0 -0
  351. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/configuration/server-mode/lightspeed-stack-no-cache.yaml +0 -0
  352. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/features/README.md +0 -0
  353. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/features/authorized_noop.feature +0 -0
  354. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/features/authorized_noop_token.feature +0 -0
  355. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/features/health.feature +0 -0
  356. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/features/rbac.feature +0 -0
  357. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/features/rest_api.feature +0 -0
  358. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/features/smoketests.feature +0 -0
  359. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/features/steps/__init__.py +0 -0
  360. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/features/steps/auth.py +0 -0
  361. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/features/steps/common.py +0 -0
  362. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/features/steps/feedback.py +0 -0
  363. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/gen_scenario_list.py +0 -0
  364. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/mock_jwks_server/Dockerfile +0 -0
  365. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/mock_jwks_server/README.md +0 -0
  366. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/mock_jwks_server/generate_tokens.py +0 -0
  367. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/mock_jwks_server/server.py +0 -0
  368. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/rag/README.md +0 -0
  369. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/test_api.py +0 -0
  370. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e/utils/README.md +0 -0
  371. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e-prow/rhoai/manifests/gpu/cluster-policy.yaml +0 -0
  372. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e-prow/rhoai/manifests/gpu/create-nfd.yaml +0 -0
  373. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e-prow/rhoai/manifests/lightspeed/lightspeed-stack.yaml +0 -0
  374. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e-prow/rhoai/manifests/namespaces/nfd.yaml +0 -0
  375. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e-prow/rhoai/manifests/namespaces/nvidia-operator.yaml +0 -0
  376. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e-prow/rhoai/manifests/operators/ds-cluster.yaml +0 -0
  377. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e-prow/rhoai/manifests/operators/operatorgroup.yaml +0 -0
  378. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e-prow/rhoai/manifests/operators/operators.yaml +0 -0
  379. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e-prow/rhoai/manifests/vllm/vllm-inference-service-cpu.yaml +0 -0
  380. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e-prow/rhoai/manifests/vllm/vllm-inference-service-gpu.yaml +0 -0
  381. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e-prow/rhoai/pipeline-test-pod.sh +0 -0
  382. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e-prow/rhoai/pipeline-vllm.sh +0 -0
  383. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e-prow/rhoai/scripts/bootstrap.sh +0 -0
  384. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e-prow/rhoai/scripts/deploy-vllm.sh +0 -0
  385. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e-prow/rhoai/scripts/fetch-vllm-image.sh +0 -0
  386. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e-prow/rhoai/scripts/get-vllm-pod-info.sh +0 -0
  387. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/e2e-prow/rhoai/scripts/gpu-setup.sh +0 -0
  388. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/integration/README.md +0 -0
  389. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/integration/__init__.py +0 -0
  390. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/integration/endpoints/__init__.py +0 -0
  391. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/integration/test_middleware_integration.py +0 -0
  392. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/profiles/test/profile.py +0 -0
  393. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/profiles/test_three/profile.py +0 -0
  394. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/profiles/test_two/test.txt +0 -0
  395. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/README.md +0 -0
  396. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/a2a_storage/README.md +0 -0
  397. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/a2a_storage/__init__.py +0 -0
  398. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/a2a_storage/test_in_memory_context_store.py +0 -0
  399. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/a2a_storage/test_sqlite_context_store.py +0 -0
  400. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/app/README.md +0 -0
  401. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/app/__init__.py +0 -0
  402. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/app/endpoints/__init__.py +0 -0
  403. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/app/endpoints/test_authorized.py +0 -0
  404. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/app/endpoints/test_config.py +0 -0
  405. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/app/endpoints/test_feedback.py +0 -0
  406. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/app/endpoints/test_health.py +0 -0
  407. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/app/endpoints/test_info.py +0 -0
  408. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/app/endpoints/test_mcp_auth.py +0 -0
  409. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/app/endpoints/test_providers.py +0 -0
  410. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/app/endpoints/test_root.py +0 -0
  411. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/app/endpoints/test_shields.py +0 -0
  412. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/authentication/README.md +0 -0
  413. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/authentication/__init__.py +0 -0
  414. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/authentication/test_api_key_token.py +0 -0
  415. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/authentication/test_auth.py +0 -0
  416. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/authentication/test_k8s.py +0 -0
  417. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/authentication/test_noop.py +0 -0
  418. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/authentication/test_noop_with_token.py +0 -0
  419. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/authentication/test_utils.py +0 -0
  420. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/authorization/README.md +0 -0
  421. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/authorization/__init__.py +0 -0
  422. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/authorization/test_middleware.py +0 -0
  423. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/authorization/test_resolvers.py +0 -0
  424. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/cache/README.md +0 -0
  425. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/cache/__init__.py +0 -0
  426. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/cache/test_cache_factory.py +0 -0
  427. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/cache/test_noop_cache.py +0 -0
  428. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/metrics/README.md +0 -0
  429. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/metrics/__init__.py +0 -0
  430. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/metrics/test_utis.py +0 -0
  431. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/models/README.md +0 -0
  432. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/models/__init__.py +0 -0
  433. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/models/config/README.md +0 -0
  434. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/models/config/__init__.py +0 -0
  435. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/models/config/test_a2a_state_configuration.py +0 -0
  436. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/models/config/test_conversation_history.py +0 -0
  437. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/models/config/test_cors.py +0 -0
  438. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/models/config/test_customization.py +0 -0
  439. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/models/config/test_database_configuration.py +0 -0
  440. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/models/config/test_inference_configuration.py +0 -0
  441. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/models/config/test_jwt_role_rule.py +0 -0
  442. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/models/config/test_postgresql_database_configuration.py +0 -0
  443. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/models/config/test_quota_handlers_config.py +0 -0
  444. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/models/config/test_quota_limiter_config.py +0 -0
  445. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/models/config/test_quota_scheduler_config.py +0 -0
  446. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/models/config/test_user_data_collection.py +0 -0
  447. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/models/requests/README.md +0 -0
  448. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/models/requests/__init__.py +0 -0
  449. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/models/requests/test_attachment.py +0 -0
  450. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/models/requests/test_feedback_request.py +0 -0
  451. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/models/requests/test_feedback_status_update_request.py +0 -0
  452. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/models/requests/test_query_request.py +0 -0
  453. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/models/responses/__init__.py +0 -0
  454. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/models/responses/test_authorized_response.py +0 -0
  455. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/models/rlsapi/README.md +0 -0
  456. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/models/rlsapi/__init__.py +0 -0
  457. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/models/rlsapi/test_responses.py +0 -0
  458. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/observability/README.md +0 -0
  459. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/observability/__init__.py +0 -0
  460. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/observability/formats/README.md +0 -0
  461. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/observability/formats/__init__.py +0 -0
  462. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/quota/README.md +0 -0
  463. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/quota/__init__.py +0 -0
  464. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/quota/test_cluster_quota_limiter.py +0 -0
  465. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/quota/test_connect_pg.py +0 -0
  466. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/quota/test_connect_sqlite.py +0 -0
  467. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/quota/test_quota_exceed_error.py +0 -0
  468. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/quota/test_quota_limiter_factory.py +0 -0
  469. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/quota/test_user_quota_limiter.py +0 -0
  470. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/runners/README.md +0 -0
  471. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/runners/__init__.py +0 -0
  472. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/test_configuration_unknown_fields.py +0 -0
  473. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/test_lightspeed_stack.py +0 -0
  474. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/utils/__init__.py +0 -0
  475. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/utils/auth_helpers.py +0 -0
  476. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/utils/test_connection_decorator.py +0 -0
  477. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/tests/unit/utils/test_llama_stack_version.py +0 -0
  478. {lightspeed_stack-0.4.1 → lightspeed_stack-0.4.2}/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.1
3
+ Version: 0.4.2
4
4
  Summary: LLM tooling stack
5
5
  Keywords: LLM,RAG
6
6
  Maintainer-Email: =?utf-8?b?UGF2ZWwgVGnFoW5vdnNrw70=?= <tisnik@centrum.cz>
@@ -220,6 +220,7 @@ Requires-Dist: uvicorn>=0.34.3
220
220
  Requires-Dist: kubernetes>=30.1.0
221
221
  Requires-Dist: llama-stack==0.4.3
222
222
  Requires-Dist: llama-stack-client==0.4.3
223
+ Requires-Dist: llama-stack-api==0.4.4
223
224
  Requires-Dist: rich>=14.0.0
224
225
  Requires-Dist: cachetools>=6.1.0
225
226
  Requires-Dist: prometheus-client>=0.22.1
@@ -240,8 +241,9 @@ Requires-Dist: urllib3==2.6.3
240
241
  Requires-Dist: PyYAML>=6.0.0
241
242
  Requires-Dist: einops>=0.8.1
242
243
  Requires-Dist: azure-core>=1.38.0
243
- Requires-Dist: azure-identity
244
+ Requires-Dist: azure-identity>=1.21.0
244
245
  Requires-Dist: pyasn1>=0.6.2
246
+ Requires-Dist: jinja2>=3.1.0
245
247
  Description-Content-Type: text/markdown
246
248
 
247
249
  # lightspeed-stack
@@ -252,7 +254,7 @@ Description-Content-Type: text/markdown
252
254
  [![License](https://img.shields.io/badge/license-Apache-blue)](https://github.com/lightspeed-core/lightspeed-stack/blob/main/LICENSE)
253
255
  [![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg)](https://www.python.org/)
254
256
  [![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/)
255
- [![Tag](https://img.shields.io/github/v/tag/lightspeed-core/lightspeed-stack)](https://github.com/lightspeed-core/lightspeed-stack/releases/tag/0.4.1)
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)
256
258
 
257
259
  Lightspeed Core Stack (LCS) is an AI-powered assistant that provides answers to product questions using backend LLM services, agents, and RAG databases.
258
260
 
@@ -261,95 +263,98 @@ The service includes comprehensive user data collection capabilities for various
261
263
 
262
264
  <!-- vim-markdown-toc GFM -->
263
265
 
264
- * [lightspeed-stack](#lightspeed-stack)
265
- * [About The Project](#about-the-project)
266
266
  * [Architecture](#architecture)
267
267
  * [Prerequisites](#prerequisites)
268
268
  * [Installation](#installation)
269
269
  * [Run LCS locally](#run-lcs-locally)
270
270
  * [Configuration](#configuration)
271
- * [LLM Compatibility](#llm-compatibility)
272
- * [Set LLM provider and model](#set-llm-provider-and-model)
273
- * [Selecting provider and model](#selecting-provider-and-model)
274
- * [Provider and model selection in REST API request](#provider-and-model-selection-in-rest-api-request)
275
- * [Default provider and model](#default-provider-and-model)
276
- * [Supported providers](#supported-providers)
277
- * [Integration with Llama Stack](#integration-with-llama-stack)
278
- * [Llama Stack as separate server](#llama-stack-as-separate-server)
279
- * [MCP Server and Tool Configuration](#mcp-server-and-tool-configuration)
280
- * [Configuring MCP Servers](#configuring-mcp-servers)
281
- * [Configuring MCP Server Authentication](#configuring-mcp-server-authentication)
282
- * [1. Static Tokens from Files (Recommended for Service Credentials)](#1-static-tokens-from-files-recommended-for-service-credentials)
283
- * [2. Kubernetes Service Account Tokens (For K8s Deployments)](#2-kubernetes-service-account-tokens-for-k8s-deployments)
284
- * [3. Client-Provided Tokens (For Per-User Authentication)](#3-client-provided-tokens-for-per-user-authentication)
285
- * [Client-Authenticated MCP Servers Discovery](#client-authenticated-mcp-servers-discovery)
286
- * [Combining Authentication Methods](#combining-authentication-methods)
287
- * [Authentication Method Comparison](#authentication-method-comparison)
288
- * [Important: Automatic Server Skipping](#important-automatic-server-skipping)
289
- * [Llama Stack project and configuration](#llama-stack-project-and-configuration)
290
- * [Check connection to Llama Stack](#check-connection-to-llama-stack)
291
- * [Llama Stack as client library](#llama-stack-as-client-library)
292
- * [Llama Stack version check](#llama-stack-version-check)
293
- * [User data collection](#user-data-collection)
294
- * [System prompt](#system-prompt)
295
- * [System Prompt Path](#system-prompt-path)
296
- * [System Prompt Literal](#system-prompt-literal)
297
- * [Custom Profile](#custom-profile)
298
- * [Control model/provider overrides via authorization](#control-modelprovider-overrides-via-authorization)
299
- * [Safety Shields](#safety-shields)
300
- * [Authentication](#authentication)
301
- * [CORS](#cors)
302
- * [Default values](#default-values)
303
- * [Allow credentials](#allow-credentials)
271
+ * [LLM Compatibility](#llm-compatibility)
272
+ * [Set LLM provider and model](#set-llm-provider-and-model)
273
+ * [Selecting provider and model](#selecting-provider-and-model)
274
+ * [Provider and model selection in REST API request](#provider-and-model-selection-in-rest-api-request)
275
+ * [Default provider and model](#default-provider-and-model)
276
+ * [Supported providers](#supported-providers)
277
+ * [Integration with Llama Stack](#integration-with-llama-stack)
278
+ * [Llama Stack as separate server](#llama-stack-as-separate-server)
279
+ * [MCP Server and Tool Configuration](#mcp-server-and-tool-configuration)
280
+ * [Configuring MCP Servers](#configuring-mcp-servers)
281
+ * [Configuring MCP Server Authentication](#configuring-mcp-server-authentication)
282
+ * [1. Static Tokens from Files (Recommended for Service Credentials)](#1-static-tokens-from-files-recommended-for-service-credentials)
283
+ * [2. Kubernetes Service Account Tokens (For K8s Deployments)](#2-kubernetes-service-account-tokens-for-k8s-deployments)
284
+ * [3. Client-Provided Tokens (For Per-User Authentication)](#3-client-provided-tokens-for-per-user-authentication)
285
+ * [4. OAuth (For MCP Servers Requiring OAuth)](#4-oauth-for-mcp-servers-requiring-oauth)
286
+ * [Client-Authenticated MCP Servers Discovery](#client-authenticated-mcp-servers-discovery)
287
+ * [Combining Authentication Methods](#combining-authentication-methods)
288
+ * [Authentication Method Comparison](#authentication-method-comparison)
289
+ * [Important: Automatic Server Skipping](#important-automatic-server-skipping)
290
+ * [Llama Stack project and configuration](#llama-stack-project-and-configuration)
291
+ * [Check connection to Llama Stack](#check-connection-to-llama-stack)
292
+ * [Llama Stack as client library](#llama-stack-as-client-library)
293
+ * [Llama Stack version check](#llama-stack-version-check)
294
+ * [User data collection](#user-data-collection)
295
+ * [System prompt](#system-prompt)
296
+ * [System Prompt Path](#system-prompt-path)
297
+ * [System Prompt Literal](#system-prompt-literal)
298
+ * [Custom Profile](#custom-profile)
299
+ * [Control model/provider overrides via authorization](#control-modelprovider-overrides-via-authorization)
300
+ * [Safety Shields](#safety-shields)
301
+ * [Authentication](#authentication)
302
+ * [CORS](#cors)
303
+ * [Default values](#default-values)
304
+ * [Allow credentials](#allow-credentials)
304
305
  * [RAG Configuration](#rag-configuration)
305
- * [Example configurations for inference](#example-configurations-for-inference)
306
+ * [Example configurations for inference](#example-configurations-for-inference)
306
307
  * [Usage](#usage)
307
- * [Make targets](#make-targets)
308
- * [Running Linux container image](#running-linux-container-image)
309
- * [Building Container Images](#building-container-images)
310
- * [Llama-Stack as Separate Service (Server Mode)](#llama-stack-as-separate-service-server-mode)
311
- * [macOS (arm64)](#macos-arm64)
312
- * [Llama-Stack as Library (Library Mode)](#llama-stack-as-library-library-mode)
313
- * [macOS](#macos)
314
- * [Verify it's running properly](#verify-its-running-properly)
315
- * [Custom Container Image](#custom-container-image)
308
+ * [CLI options](#cli-options)
309
+ * [Dumping configuration](#dumping-configuration)
310
+ * [Dumping configuration schema](#dumping-configuration-schema)
311
+ * [Make targets](#make-targets)
312
+ * [Running Linux container image](#running-linux-container-image)
313
+ * [Building Container Images](#building-container-images)
314
+ * [Llama-Stack as Separate Service (Server Mode)](#llama-stack-as-separate-service-server-mode)
315
+ * [macOS (arm64)](#macos-arm64)
316
+ * [Llama-Stack as Library (Library Mode)](#llama-stack-as-library-library-mode)
317
+ * [macOS](#macos)
318
+ * [Verify it's running properly](#verify-its-running-properly)
319
+ * [Custom Container Image](#custom-container-image)
316
320
  * [Endpoints](#endpoints)
317
- * [OpenAPI specification](#openapi-specification)
318
- * [Readiness Endpoint](#readiness-endpoint)
319
- * [Liveness Endpoint](#liveness-endpoint)
321
+ * [OpenAPI specification](#openapi-specification)
322
+ * [Readiness Endpoint](#readiness-endpoint)
323
+ * [Liveness Endpoint](#liveness-endpoint)
324
+ * [Models endpoint](#models-endpoint)
320
325
  * [Database structure](#database-structure)
321
326
  * [Publish the service as Python package on PyPI](#publish-the-service-as-python-package-on-pypi)
322
- * [Generate distribution archives to be uploaded into Python registry](#generate-distribution-archives-to-be-uploaded-into-python-registry)
323
- * [Upload distribution archives into selected Python registry](#upload-distribution-archives-into-selected-python-registry)
324
- * [Packages on PyPI and Test PyPI](#packages-on-pypi-and-test-pypi)
327
+ * [Generate distribution archives to be uploaded into Python registry](#generate-distribution-archives-to-be-uploaded-into-python-registry)
328
+ * [Upload distribution archives into selected Python registry](#upload-distribution-archives-into-selected-python-registry)
329
+ * [Packages on PyPI and Test PyPI](#packages-on-pypi-and-test-pypi)
325
330
  * [Contributing](#contributing)
326
331
  * [Testing](#testing)
327
332
  * [License](#license)
328
333
  * [Additional tools](#additional-tools)
329
- * [Utility to generate OpenAPI schema](#utility-to-generate-openapi-schema)
330
- * [Path](#path)
331
- * [Usage](#usage-1)
332
- * [Makefile target to generate OpenAPI specification](#makefile-target-to-generate-openapi-specification)
333
- * [Utility to generate documentation from source code](#utility-to-generate-documentation-from-source-code)
334
- * [Path](#path-1)
335
- * [Usage](#usage-2)
334
+ * [Utility to generate OpenAPI schema](#utility-to-generate-openapi-schema)
335
+ * [Path](#path)
336
+ * [Usage](#usage-1)
337
+ * [Makefile target to generate OpenAPI specification](#makefile-target-to-generate-openapi-specification)
338
+ * [Utility to generate documentation from source code](#utility-to-generate-documentation-from-source-code)
339
+ * [Path](#path-1)
340
+ * [Usage](#usage-2)
336
341
  * [Data Export Integration](#data-export-integration)
337
- * [Quick Integration](#quick-integration)
338
- * [Documentation](#documentation)
342
+ * [Quick Integration](#quick-integration)
343
+ * [Documentation](#documentation)
339
344
  * [Project structure](#project-structure)
340
- * [Configuration classes](#configuration-classes)
341
- * [REST API](#rest-api)
342
- * [Sequence diagrams](#sequence-diagrams)
343
- * [Query endpoint REST API handler](#query-endpoint-rest-api-handler)
344
- * [Streaming query endpoint REST API handler](#streaming-query-endpoint-rest-api-handler)
345
- * [Versioning](#versioning)
345
+ * [Configuration classes](#configuration-classes)
346
+ * [REST API](#rest-api)
347
+ * [Sequence diagrams](#sequence-diagrams)
348
+ * [Query endpoint REST API handler](#query-endpoint-rest-api-handler)
349
+ * [Streaming query endpoint REST API handler](#streaming-query-endpoint-rest-api-handler)
350
+ * [Versioning](#versioning)
346
351
  * [Development Tools](#development-tools)
347
- * [MCP Mock Server](#mcp-mock-server)
352
+ * [MCP Mock Server](#mcp-mock-server)
348
353
  * [Konflux](#konflux)
349
- * [Updating Dependencies for Hermetic Builds](#updating-dependencies-for-hermetic-builds)
350
- * [When to Update Dependency Files](#when-to-update-dependency-files)
351
- * [Updating Python Dependencies](#updating-python-dependencies)
352
- * [Updating RPM Dependencies](#updating-rpm-dependencies)
354
+ * [Updating Dependencies for Hermetic Builds](#updating-dependencies-for-hermetic-builds)
355
+ * [When to Update Dependency Files](#when-to-update-dependency-files)
356
+ * [Updating Python Dependencies](#updating-python-dependencies)
357
+ * [Updating RPM Dependencies](#updating-rpm-dependencies)
353
358
 
354
359
  <!-- vim-markdown-toc -->
355
360
 
@@ -373,14 +378,14 @@ Lightspeed Core Stack is based on the FastAPI framework (Uvicorn). The service i
373
378
 
374
379
  Lightspeed Stack supports multiple LLM providers.
375
380
 
376
- | Provider | Setup Documentation |
377
- |----------------|-----------------------------------------------------------------------|
378
- | OpenAI | https://platform.openai.com |
379
- | Azure OpenAI | https://azure.microsoft.com/en-us/products/ai-services/openai-service |
380
- | Google VertexAI| https://cloud.google.com/vertex-ai |
381
- | IBM WatsonX | https://www.ibm.com/products/watsonx |
382
- | RHOAI (vLLM) | See tests/e2e-prow/rhoai/configs/run.yaml |
383
- | RHEL AI (vLLM) | See tests/e2e/configs/run-rhelai.yaml |
381
+ | Provider | Setup Documentation |
382
+ |-----------------|-----------------------------------------------------------------------|
383
+ | OpenAI | https://platform.openai.com |
384
+ | Azure OpenAI | https://azure.microsoft.com/en-us/products/ai-services/openai-service |
385
+ | Google VertexAI | https://cloud.google.com/vertex-ai |
386
+ | IBM WatsonX | https://www.ibm.com/products/watsonx |
387
+ | RHOAI (vLLM) | See tests/e2e-prow/rhoai/configs/run.yaml |
388
+ | RHEL AI (vLLM) | See tests/e2e/configs/run-rhelai.yaml |
384
389
 
385
390
  See `docs/providers.md` for configuration details.
386
391
 
@@ -443,17 +448,17 @@ To quickly get hands on LCS, we can run it using the default configurations prov
443
448
  Lightspeed Core Stack (LCS) provides support for Large Language Model providers. The models listed in the table below represent specific examples that have been tested within LCS.
444
449
  __Note__: Support for individual models is dependent on the specific inference provider's implementation within the currently supported version of Llama Stack.
445
450
 
446
- | Provider | Model | Tool Calling | provider_type | Example |
447
- | -------- | ---------------------------------------------- | ------------ | -------------- | -------------------------------------------------------------------------- |
448
- | OpenAI | gpt-5, gpt-4o, gpt4-turbo, gpt-4.1, o1, o3, o4 | Yes | remote::openai | [1](examples/openai-faiss-run.yaml) [2](examples/openai-pgvector-run.yaml) |
449
- | OpenAI | gpt-3.5-turbo, gpt-4 | No | remote::openai | |
450
- | RHOAI (vLLM)| meta-llama/Llama-3.2-1B-Instruct | Yes | remote::vllm | [1](tests/e2e-prow/rhoai/configs/run.yaml) |
451
- | RHAIIS (vLLM)| meta-llama/Llama-3.1-8B-Instruct | Yes | remote::vllm | [1](tests/e2e/configs/run-rhaiis.yaml) |
452
- | RHEL AI (vLLM)| meta-llama/Llama-3.1-8B-Instruct | Yes | remote::vllm | [1](tests/e2e/configs/run-rhelai.yaml) |
453
- | Azure | gpt-5, gpt-5-mini, gpt-5-nano, gpt-4o-mini, o3-mini, o4-mini, o1| Yes | remote::azure | [1](examples/azure-run.yaml) |
454
- | Azure | gpt-5-chat, gpt-4.1, gpt-4.1-mini, gpt-4.1-nano, o1-mini | No or limited | remote::azure | |
455
- | VertexAI | google/gemini-2.0-flash, google/gemini-2.5-flash, google/gemini-2.5-pro [^1] | Yes | remote::vertexai | [1](examples/vertexai-run.yaml) |
456
- | WatsonX | meta-llama/llama-3-3-70b-instruct | Yes | remote::watsonx | [1](examples/watsonx-run.yaml) |
451
+ | Provider | Model | Tool Calling | provider_type | Example |
452
+ |----------------|------------------------------------------------------------------------------|---------------|------------------|----------------------------------------------------------------------------|
453
+ | OpenAI | gpt-5, gpt-4o, gpt-4-turbo, gpt-4.1, o1, o3, o4 | Yes | remote::openai | [1](examples/openai-faiss-run.yaml) [2](examples/openai-pgvector-run.yaml) |
454
+ | OpenAI | gpt-3.5-turbo, gpt-4 | No | remote::openai | |
455
+ | RHOAI (vLLM) | meta-llama/Llama-3.2-1B-Instruct | Yes | remote::vllm | [1](tests/e2e-prow/rhoai/configs/run.yaml) |
456
+ | RHAIIS (vLLM) | meta-llama/Llama-3.1-8B-Instruct | Yes | remote::vllm | [1](tests/e2e/configs/run-rhaiis.yaml) |
457
+ | RHEL AI (vLLM) | meta-llama/Llama-3.1-8B-Instruct | Yes | remote::vllm | [1](tests/e2e/configs/run-rhelai.yaml) |
458
+ | Azure | gpt-5, gpt-5-mini, gpt-5-nano, gpt-4o-mini, o3-mini, o4-mini, o1 | Yes | remote::azure | [1](examples/azure-run.yaml) |
459
+ | Azure | gpt-5-chat, gpt-4.1, gpt-4.1-mini, gpt-4.1-nano, o1-mini | No or limited | remote::azure | |
460
+ | VertexAI | google/gemini-2.0-flash, google/gemini-2.5-flash, google/gemini-2.5-pro [^1] | Yes | remote::vertexai | [1](examples/vertexai-run.yaml) |
461
+ | WatsonX | meta-llama/llama-3-3-70b-instruct | Yes | remote::watsonx | [1](examples/watsonx-run.yaml) |
457
462
 
458
463
  [^1]: List of models is limited by design in llama-stack, future versions will probably allow to use more models (see [here](https://github.com/llamastack/llama-stack/blob/release-0.3.x/llama_stack/providers/remote/inference/vertexai/vertexai.py#L54))
459
464
 
@@ -573,6 +578,15 @@ user_data_collection:
573
578
 
574
579
  **Important**: Only MCP servers defined in the `lightspeed-stack.yaml` configuration are available to the agents. Tools configured in the llama-stack `run.yaml` are not accessible to lightspeed-core agents.
575
580
 
581
+ Besides configuring the MCP Servers in `lightspeed-stack.yaml` we also need to enable the appropriate tool in llama-stack's `run.yaml` file under the `tool_runtime` section. Here's an example using the default `provider_id` name used by lightspeed-stack for MCPs:
582
+
583
+ ```yaml
584
+ tool_runtime:
585
+ - provider_id: model-context-protocol
586
+ provider_type: remote::model-context-protocol
587
+ config: {}
588
+ ```
589
+
576
590
  #### Configuring MCP Servers
577
591
 
578
592
  MCP (Model Context Protocol) servers provide tools and capabilities to the AI agents. These are configured in the `mcp_servers` section of your `lightspeed-stack.yaml`.
@@ -583,8 +597,9 @@ Each MCP server requires two fields:
583
597
  - `name`: Unique identifier for the MCP server
584
598
  - `url`: The endpoint where the MCP server is running
585
599
 
586
- And one optional field:
600
+ And optional fields:
587
601
  - `provider_id`: MCP provider identification (defaults to `"model-context-protocol"`)
602
+ - `headers`: List of HTTP header names to automatically forward from the incoming request to this MCP server (see [Automatic Header Propagation](#5-automatic-header-propagation-for-gateway-injected-headers))
588
603
 
589
604
  **Minimal Example:**
590
605
 
@@ -600,7 +615,7 @@ In addition to the basic configuration above, you can configure authentication h
600
615
 
601
616
  #### Configuring MCP Server Authentication
602
617
 
603
- Lightspeed Core Stack supports three methods for authenticating with MCP servers, each suited for different use cases:
618
+ Lightspeed Core Stack supports four methods for authenticating with MCP servers, each suited for different use cases:
604
619
 
605
620
  ##### 1. Static Tokens from Files (Recommended for Service Credentials)
606
621
 
@@ -619,7 +634,7 @@ The secret files should contain only the header value (tokens are automatically
619
634
 
620
635
  ```bash
621
636
  # /var/secrets/api-token
622
- Bearer sk-abc123def456...
637
+ sk-abc123def456...
623
638
 
624
639
  # /var/secrets/api-key
625
640
  my-api-key-value
@@ -637,7 +652,7 @@ mcp_servers:
637
652
  Authorization: "kubernetes" # Uses user's k8s token from request auth
638
653
  ```
639
654
 
640
- **Note:** Kubernetes token-based MCP authorization only works when Lightspeed Core Stack is configured with Kubernetes authentication (`authentication.k8s`). For any other authentication types, MCP servers configured with `Authorization: "kubernetes"` are removed from the available MCP servers list.
655
+ **Note:** Kubernetes token-based MCP authorization only works when Lightspeed Core Stack is configured with Kubernetes authentication (`authentication.module` is `k8s`) or `noop-with-token`. For any other authentication types, MCP servers configured with `Authorization: "kubernetes"` are removed from the available MCP servers list.
641
656
 
642
657
  ##### 3. Client-Provided Tokens (For Per-User Authentication)
643
658
 
@@ -665,6 +680,55 @@ curl -X POST "http://localhost:8080/v1/query" \
665
680
 
666
681
  **Structure**: `MCP-HEADERS: {"<server-name>": {"<header-name>": "<header-value>", ...}, ...}`
667
682
 
683
+ ##### 4. OAuth (For MCP Servers Requiring OAuth)
684
+
685
+ Use the special `"oauth"` keyword when the MCP server requires OAuth and the client will supply a token (e.g. via `MCP-HEADERS` after obtaining it from an OAuth flow):
686
+
687
+ ```yaml
688
+ mcp_servers:
689
+ - name: "oauth-protected-service"
690
+ url: "https://mcp.example.com"
691
+ authorization_headers:
692
+ Authorization: "oauth" # Token provided via MCP-HEADERS (from OAuth flow)
693
+ ```
694
+
695
+ When no token is provided for an OAuth-configured server, the service may respond with **401 Unauthorized** and a **`WWW-Authenticate`** header (probed from the MCP server). Clients can use this to drive an OAuth flow and then retry with the token in `MCP-HEADERS`.
696
+
697
+ ##### 5. Automatic Header Propagation (For Gateway-Injected Headers)
698
+
699
+ Use the `headers` field to automatically forward specific headers from the incoming HTTP request to an MCP server. This is designed for environments where infrastructure components (e.g. API gateways) inject headers that MCP servers need but clients cannot provide.
700
+
701
+ **HCC Use Case:** In Hybrid Cloud Console (HCC), the gateway strips the client's `Authorization` header and replaces it with `x-rh-identity` (a base64-encoded user identity). Backend services use `x-rh-identity` to identify users. Since clients never see this header, the existing `MCP-HEADERS` mechanism cannot be used. Instead, configure `headers` to automatically forward it:
702
+
703
+ ```yaml
704
+ mcp_servers:
705
+ - name: "rbac"
706
+ url: "http://rbac-service:8080"
707
+ headers:
708
+ - x-rh-identity
709
+ - x-rh-insights-request-id
710
+ ```
711
+
712
+ When a request arrives at Lightspeed with these headers, they are automatically extracted and forwarded to the `rbac` MCP server. No client-side configuration is needed.
713
+
714
+ **Key behaviors:**
715
+
716
+ - **Case-insensitive matching**: Header names in the allowlist are matched case-insensitively against the incoming request.
717
+ - **Missing headers are skipped**: If a header in the allowlist is not present on the incoming request, it is silently skipped. The MCP server is **not** skipped (unlike `authorization_headers` behavior).
718
+ - **Additive with other methods**: Propagated headers can be combined with `authorization_headers` and `MCP-HEADERS`. If the same header name appears in both `authorization_headers` and `headers`, the `authorization_headers` value takes precedence.
719
+
720
+ **Combined example:**
721
+
722
+ ```yaml
723
+ mcp_servers:
724
+ - name: "notifications"
725
+ url: "http://notifications-service:8080"
726
+ headers:
727
+ - x-rh-identity # From incoming request
728
+ authorization_headers:
729
+ X-API-Key: "/var/secrets/notifications-key" # Static service credential
730
+ ```
731
+
668
732
  ##### Client-Authenticated MCP Servers Discovery
669
733
 
670
734
  To help clients determine which MCP servers require client-provided tokens, use the **MCP Client Auth Options** endpoint:
@@ -721,11 +785,13 @@ mcp_servers:
721
785
 
722
786
  ##### Authentication Method Comparison
723
787
 
724
- | Method | Use Case | Configuration | Token Scope | Example |
725
- |--------|----------|---------------|-------------|---------|
726
- | **Static File** | Service tokens, API keys | File path in config | Global (all users) | `"/var/secrets/token"` |
727
- | **Kubernetes** | K8s service accounts | `"kubernetes"` keyword | Per-user (from auth) | `"kubernetes"` |
728
- | **Client** | User-specific tokens | `"client"` keyword + HTTP header | Per-request | `"client"` |
788
+ | Method | Use Case | Configuration | Token Scope | Example |
789
+ |------------------------|----------------------------------|----------------------------------|------------------------------------|-------------------------------|
790
+ | **Static File** | Service tokens, API keys | File path in config | Global (all users) | `"/var/secrets/token"` |
791
+ | **Kubernetes** | K8s service accounts | `"kubernetes"` keyword | Per-user (from auth) | `"kubernetes"` |
792
+ | **Client** | User-specific tokens | `"client"` keyword + HTTP header | Per-request | `"client"` |
793
+ | **OAuth** | OAuth-protected MCP servers | `"oauth"` keyword + HTTP header | Per-request (from OAuth flow) | `"oauth"` |
794
+ | **Header Propagation** | Gateway-injected headers (HCC) | `headers` list | Per-request (from incoming request)| `headers: [x-rh-identity]` |
729
795
 
730
796
  ##### Important: Automatic Server Skipping
731
797
 
@@ -734,6 +800,7 @@ mcp_servers:
734
800
  **Examples:**
735
801
  - A server with `Authorization: "kubernetes"` will be skipped if the user's request doesn't include a Kubernetes token
736
802
  - A server with `Authorization: "client"` will be skipped if no `MCP-HEADERS` are provided in the request
803
+ - A server with `Authorization: "oauth"` and no token in `MCP-HEADERS` may cause the API to return **401 Unauthorized** with a **`WWW-Authenticate`** header (so the client can perform OAuth and retry)
737
804
  - A server with multiple headers will be skipped if **any** required header cannot be resolved
738
805
 
739
806
  Skipped servers are logged as warnings. Check Lightspeed Core logs to see which servers were skipped and why.
@@ -902,6 +969,13 @@ utilized:
902
969
  1. If the `shield_id` starts with `inout_`, it will be used both for input and output.
903
970
  1. Otherwise, it will be used for input only.
904
971
 
972
+ Additionally, an optional list parameter `shield_ids` can be specified in `/query` and `/streaming_query` endpoints to override which shields are applied. You can use this config to disable shield overrides:
973
+
974
+ ```yaml
975
+ customization:
976
+ disable_shield_ids_override: true
977
+ ```
978
+
905
979
  ## Authentication
906
980
 
907
981
  See [authentication and authorization](docs/auth.md).
@@ -979,6 +1053,22 @@ options:
979
1053
 
980
1054
  ```
981
1055
 
1056
+ ## CLI options
1057
+
1058
+ ### Dumping configuration
1059
+
1060
+ If `--dump-configuration` CLI option is provided, LCORE writes the active
1061
+ configuration to a file named `configuration.json` and exits (exits with status
1062
+ 1 on failure).
1063
+
1064
+ ### Dumping configuration schema
1065
+
1066
+ If `--dump-schema` CLI option is provided, LCORE writes the active
1067
+ configuration schema to a file named `schema.json` and exits (exits with status
1068
+ 1 on failure).
1069
+
1070
+
1071
+
982
1072
  ## Make targets
983
1073
 
984
1074
  ```
@@ -1014,8 +1104,8 @@ ruff Check source code using Ruff linter
1014
1104
  verify Run all linters
1015
1105
  distribution-archives Generate distribution archives to be uploaded into Python registry
1016
1106
  upload-distribution-archives Upload distribution archives into Python registry
1017
- konflux-requirements generate hermetic requirements.*.txt file for konflux build
1018
- konflux-rpm-lock generate rpm.lock.yaml file for konflux build
1107
+ konflux-requirements Generate hermetic requirements.*.txt file for konflux build
1108
+ konflux-rpm-lock Generate rpm.lock.yaml file for konflux build
1019
1109
  ```
1020
1110
 
1021
1111
  ## Running Linux container image
@@ -1257,6 +1347,62 @@ The liveness endpoint performs a basic health check to verify the service is ali
1257
1347
  }
1258
1348
  ```
1259
1349
 
1350
+ ## Models endpoint
1351
+
1352
+ **Endpoint:** `GET /v1/models`
1353
+
1354
+ Process GET requests and returns a list of available models from the Llama
1355
+ Stack service. It is possible to specify "model_type" query parameter that is
1356
+ used as a filter. For example, if model type is set to "llm", only LLM models
1357
+ will be returned:
1358
+
1359
+ ```bash
1360
+ curl http://localhost:8080/v1/models?model_type=llm
1361
+ ```
1362
+
1363
+ The "model_type" query parameter is optional. When not specified, all models
1364
+ will be returned.
1365
+
1366
+ **Response Body:**
1367
+ ```json
1368
+ {
1369
+ "models": [
1370
+ {
1371
+ "identifier": "sentence-transformers/.llama",
1372
+ "metadata": {
1373
+ "embedding_dimension": 384
1374
+ },
1375
+ "api_model_type": "embedding",
1376
+ "provider_id": "sentence-transformers",
1377
+ "type": "model",
1378
+ "provider_resource_id": ".llama",
1379
+ "model_type": "embedding"
1380
+ },
1381
+ {
1382
+ "identifier": "openai/gpt-4o-mini",
1383
+ "metadata": {},
1384
+ "api_model_type": "llm",
1385
+ "provider_id": "openai",
1386
+ "type": "model",
1387
+ "provider_resource_id": "gpt-4o-mini",
1388
+ "model_type": "llm"
1389
+ },
1390
+ {
1391
+ "identifier": "sentence-transformers/nomic-ai/nomic-embed-text-v1.5",
1392
+ "metadata": {
1393
+ "embedding_dimension": 768
1394
+ },
1395
+ "api_model_type": "embedding",
1396
+ "provider_id": "sentence-transformers",
1397
+ "type": "model",
1398
+ "provider_resource_id": "nomic-ai/nomic-embed-text-v1.5",
1399
+ "model_type": "embedding"
1400
+ }
1401
+ ]
1402
+ }
1403
+ ```
1404
+
1405
+
1260
1406
  # Database structure
1261
1407
 
1262
1408
  Database structure is described on [this page](https://lightspeed-core.github.io/lightspeed-stack/DB/index.html)