lightspeed-stack 0.6.0rc2__tar.gz → 0.6.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 (733) hide show
  1. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/PKG-INFO +24 -6
  2. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/README.md +21 -5
  3. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/pyproject.toml +15 -2
  4. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/app/endpoints/README.md +3 -0
  5. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/app/endpoints/a2a.py +109 -41
  6. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/app/endpoints/config.py +8 -0
  7. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/app/endpoints/health.py +84 -17
  8. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/app/endpoints/info.py +4 -4
  9. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/app/endpoints/metrics.py +1 -9
  10. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/app/endpoints/models.py +8 -2
  11. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/app/endpoints/prompts.py +36 -12
  12. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/app/endpoints/providers.py +17 -15
  13. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/app/endpoints/query.py +66 -11
  14. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/app/endpoints/rags.py +31 -19
  15. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/app/endpoints/responses.py +78 -26
  16. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/app/endpoints/rlsapi_v1.py +22 -108
  17. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/app/endpoints/root.py +4 -0
  18. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/app/endpoints/shields.py +8 -4
  19. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/app/endpoints/streaming_query.py +243 -388
  20. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/app/endpoints/tools.py +26 -4
  21. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/app/main.py +16 -1
  22. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/authentication/README.md +3 -0
  23. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/authentication/__init__.py +7 -1
  24. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/authentication/rh_identity.py +73 -15
  25. lightspeed_stack-0.6.2/src/authentication/trusted_proxy.py +127 -0
  26. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/authorization/middleware.py +1 -1
  27. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/cache/README.md +1 -1
  28. lightspeed_stack-0.6.2/src/data/README.md +5 -0
  29. lightspeed_stack-0.6.2/src/data/__init__.py +8 -0
  30. lightspeed_stack-0.6.2/src/data/default_run.yaml +131 -0
  31. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/metrics/__init__.py +6 -0
  32. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/metrics/recording.py +15 -0
  33. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/metrics/utils.py +6 -12
  34. lightspeed_stack-0.6.2/src/models/README.md +11 -0
  35. lightspeed_stack-0.6.2/src/models/api/README.md +5 -0
  36. lightspeed_stack-0.6.2/src/models/api/requests/README.md +32 -0
  37. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/api/responses/README.md +0 -5
  38. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/api/responses/error/README.md +1 -0
  39. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/api/responses/successful/README.md +4 -3
  40. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/api/responses/successful/probes.py +46 -10
  41. lightspeed_stack-0.6.2/src/models/common/README.md +29 -0
  42. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/common/__init__.py +8 -1
  43. lightspeed_stack-0.6.2/src/models/common/agents/README.md +11 -0
  44. lightspeed_stack-0.6.2/src/models/common/agents/__init__.py +39 -0
  45. lightspeed_stack-0.6.2/src/models/common/agents/stream_payloads.py +270 -0
  46. lightspeed_stack-0.6.2/src/models/common/agents/turn_accumulator.py +46 -0
  47. lightspeed_stack-0.6.2/src/models/common/health.py +58 -0
  48. lightspeed_stack-0.6.2/src/models/common/responses/README.md +17 -0
  49. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/common/responses/contexts.py +9 -0
  50. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/common/responses/responses_api_params.py +12 -2
  51. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/common/turn_summary.py +42 -0
  52. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/config.py +460 -25
  53. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/observability/README.md +1 -1
  54. lightspeed_stack-0.6.2/src/pydantic_ai_lightspeed/README.md +5 -0
  55. lightspeed_stack-0.6.2/src/pydantic_ai_lightspeed/__init__.py +1 -0
  56. lightspeed_stack-0.6.2/src/pydantic_ai_lightspeed/capabilities/README.md +5 -0
  57. lightspeed_stack-0.6.2/src/pydantic_ai_lightspeed/capabilities/__init__.py +10 -0
  58. lightspeed_stack-0.6.2/src/pydantic_ai_lightspeed/capabilities/question_validity/README.md +8 -0
  59. lightspeed_stack-0.6.2/src/pydantic_ai_lightspeed/capabilities/question_validity/__init__.py +7 -0
  60. lightspeed_stack-0.6.2/src/pydantic_ai_lightspeed/capabilities/question_validity/_capability.py +151 -0
  61. lightspeed_stack-0.6.2/src/pydantic_ai_lightspeed/capabilities/redaction/__init__.py +21 -0
  62. lightspeed_stack-0.6.2/src/pydantic_ai_lightspeed/capabilities/redaction/capability.py +323 -0
  63. lightspeed_stack-0.6.2/src/pydantic_ai_lightspeed/capabilities/redaction/core.py +53 -0
  64. lightspeed_stack-0.6.2/src/pydantic_ai_lightspeed/llamastack/README.md +14 -0
  65. lightspeed_stack-0.6.2/src/pydantic_ai_lightspeed/llamastack/__init__.py +6 -0
  66. lightspeed_stack-0.6.2/src/pydantic_ai_lightspeed/llamastack/_model.py +309 -0
  67. lightspeed_stack-0.6.2/src/pydantic_ai_lightspeed/llamastack/_provider.py +123 -0
  68. lightspeed_stack-0.6.2/src/pydantic_ai_lightspeed/llamastack/_transport.py +205 -0
  69. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/runners/uvicorn.py +13 -6
  70. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/utils/README.md +25 -1
  71. lightspeed_stack-0.6.2/src/utils/agents/README.md +11 -0
  72. lightspeed_stack-0.6.2/src/utils/agents/query.py +334 -0
  73. lightspeed_stack-0.6.2/src/utils/agents/streaming.py +560 -0
  74. lightspeed_stack-0.6.2/src/utils/agents/tool_processor.py +529 -0
  75. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/utils/compaction.py +12 -6
  76. lightspeed_stack-0.6.2/src/utils/conversation_compaction.py +710 -0
  77. lightspeed_stack-0.6.2/src/utils/degraded_mode.py +60 -0
  78. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/utils/endpoints.py +7 -7
  79. lightspeed_stack-0.6.2/src/utils/markdown_repair.py +280 -0
  80. lightspeed_stack-0.6.2/src/utils/pydantic_ai.py +256 -0
  81. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/utils/query.py +32 -5
  82. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/utils/responses.py +56 -30
  83. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/utils/schema_dumper.py +11 -3
  84. lightspeed_stack-0.6.2/src/utils/stream_interrupts.py +393 -0
  85. lightspeed_stack-0.6.2/src/utils/streaming_sse.py +259 -0
  86. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/utils/token_estimator.py +15 -33
  87. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/utils/types.py +3 -0
  88. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/utils/vector_search.py +9 -14
  89. lightspeed_stack-0.6.2/tests/benchmarks/data/js_10000_lines.js +10000 -0
  90. lightspeed_stack-0.6.2/tests/benchmarks/data/js_1000_lines.js +1000 -0
  91. lightspeed_stack-0.6.2/tests/benchmarks/data/js_100_lines.js +100 -0
  92. lightspeed_stack-0.6.2/tests/benchmarks/data/js_10_lines.js +10 -0
  93. lightspeed_stack-0.6.2/tests/benchmarks/data/json_10000_lines.json +10000 -0
  94. lightspeed_stack-0.6.2/tests/benchmarks/data/json_1000_lines.json +1000 -0
  95. lightspeed_stack-0.6.2/tests/benchmarks/data/json_100_lines.json +100 -0
  96. lightspeed_stack-0.6.2/tests/benchmarks/data/json_10_lines.json +10 -0
  97. lightspeed_stack-0.6.2/tests/benchmarks/data/python_10000_lines.py +10000 -0
  98. lightspeed_stack-0.6.2/tests/benchmarks/data/python_1000_lines.py +1000 -0
  99. lightspeed_stack-0.6.2/tests/benchmarks/data/python_100_lines.py +100 -0
  100. lightspeed_stack-0.6.2/tests/benchmarks/data/python_10_lines.py +10 -0
  101. lightspeed_stack-0.6.2/tests/benchmarks/data/xml_10000_lines.xml +10000 -0
  102. lightspeed_stack-0.6.2/tests/benchmarks/data/xml_1000_lines.xml +1000 -0
  103. lightspeed_stack-0.6.2/tests/benchmarks/data/xml_100_lines.xml +100 -0
  104. lightspeed_stack-0.6.2/tests/benchmarks/data/xml_10_lines.xml +10 -0
  105. lightspeed_stack-0.6.2/tests/benchmarks/data/yaml_10000_lines.yml +10000 -0
  106. lightspeed_stack-0.6.2/tests/benchmarks/data/yaml_1000_lines.yml +1000 -0
  107. lightspeed_stack-0.6.2/tests/benchmarks/data/yaml_100_lines.yml +100 -0
  108. lightspeed_stack-0.6.2/tests/benchmarks/data/yaml_10_lines.yml +10 -0
  109. lightspeed_stack-0.6.2/tests/benchmarks/test_token_estimator.py +437 -0
  110. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/configs/run-rhelai.yaml +6 -6
  111. lightspeed_stack-0.6.2/tests/e2e/configuration/library-mode/lightspeed-stack-byok-pdf.yaml +45 -0
  112. lightspeed_stack-0.6.2/tests/e2e/configuration/library-mode/lightspeed-stack-skills-directory.yaml +25 -0
  113. lightspeed_stack-0.6.2/tests/e2e/configuration/library-mode/lightspeed-stack-skills.yaml +25 -0
  114. lightspeed_stack-0.6.2/tests/e2e/configuration/server-mode/lightspeed-stack-degraded-mode.yaml +25 -0
  115. lightspeed_stack-0.6.2/tests/e2e/configuration/server-mode/lightspeed-stack-rhelai.yaml +35 -0
  116. lightspeed_stack-0.6.2/tests/e2e/configuration/server-mode/lightspeed-stack-skills-directory.yaml +26 -0
  117. lightspeed_stack-0.6.2/tests/e2e/configuration/server-mode/lightspeed-stack-skills.yaml +26 -0
  118. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/configuration/server-mode/lightspeed-stack-tls.yaml +1 -1
  119. lightspeed_stack-0.6.2/tests/e2e/features/byok_pdf.feature +52 -0
  120. lightspeed_stack-0.6.2/tests/e2e/features/degraded_mode_startup.feature +40 -0
  121. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/features/environment.py +42 -20
  122. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/features/feedback.feature +56 -1
  123. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/features/health.feature +3 -1
  124. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/features/http_401_unauthorized.feature +67 -0
  125. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/features/info.feature +1 -1
  126. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/features/llama_stack_disrupted.feature +52 -1
  127. lightspeed_stack-0.6.2/tests/e2e/features/prompts.feature +233 -0
  128. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/features/proxy.feature +1 -1
  129. lightspeed_stack-0.6.2/tests/e2e/features/skills.feature +766 -0
  130. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/features/steps/README.md +3 -0
  131. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/features/steps/common_http.py +40 -0
  132. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/features/steps/llm_query_response.py +10 -6
  133. lightspeed_stack-0.6.2/tests/e2e/features/steps/prompts.py +167 -0
  134. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/features/steps/proxy.py +9 -0
  135. lightspeed_stack-0.6.2/tests/e2e/features/steps/tls.py +402 -0
  136. lightspeed_stack-0.6.2/tests/e2e/features/tls-ca.feature +80 -0
  137. lightspeed_stack-0.6.2/tests/e2e/features/tls-mtls.feature +80 -0
  138. lightspeed_stack-0.6.2/tests/e2e/features/tls-tlsv13.feature +58 -0
  139. lightspeed_stack-0.6.2/tests/e2e/features/unified-mode-boot.feature +116 -0
  140. lightspeed_stack-0.6.2/tests/e2e/features/unified-mode-legacy.feature +39 -0
  141. lightspeed_stack-0.6.2/tests/e2e/features/unified-mode-migration.feature +53 -0
  142. lightspeed_stack-0.6.2/tests/e2e/features/unified-mode-synthesis.feature +59 -0
  143. lightspeed_stack-0.6.2/tests/e2e/features/unified-mode-validation.feature +25 -0
  144. lightspeed_stack-0.6.2/tests/e2e/features/vector_stores.feature +45 -0
  145. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/mock_tls_inference_server/server.py +64 -4
  146. lightspeed_stack-0.6.2/tests/e2e/rag/README.md +45 -0
  147. lightspeed_stack-0.6.2/tests/e2e/rag/pdf_kv_store.db +0 -0
  148. lightspeed_stack-0.6.2/tests/e2e/rag/sources/README.md +2 -0
  149. lightspeed_stack-0.6.2/tests/e2e/rag/sources/lightspeed-field-notes.pdf +45 -0
  150. lightspeed_stack-0.6.2/tests/e2e/skills/echo/SKILL.md +19 -0
  151. lightspeed_stack-0.6.2/tests/e2e/skills/echo/references/guide.md +19 -0
  152. lightspeed_stack-0.6.2/tests/e2e/skills/summarize/SKILL.md +21 -0
  153. lightspeed_stack-0.6.2/tests/e2e/skills/summarize/references/guide.md +20 -0
  154. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/test_list.txt +12 -1
  155. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/utils/README.md +6 -0
  156. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/utils/llama_config_utils.py +18 -0
  157. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/utils/prow_utils.py +25 -7
  158. lightspeed_stack-0.6.2/tests/e2e-prow/rhoai/manifests/lightspeed/e2e-mock-tls-inference.yaml +104 -0
  159. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e-prow/rhoai/manifests/lightspeed/lightspeed-stack.yaml +6 -0
  160. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e-prow/rhoai/manifests/lightspeed/llama-stack-openai.yaml +51 -1
  161. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e-prow/rhoai/pipeline-konflux.sh +45 -8
  162. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e-prow/rhoai/pipeline-services-konflux.sh +17 -1
  163. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e-prow/rhoai/scripts/e2e-ops.sh +315 -69
  164. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/integration/conftest.py +317 -9
  165. lightspeed_stack-0.6.2/tests/integration/container_lifecycle/README.md +5 -0
  166. lightspeed_stack-0.6.2/tests/integration/container_lifecycle/test_container_lifecycle.py +628 -0
  167. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/integration/endpoints/README.md +6 -0
  168. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/integration/endpoints/test_health_integration.py +2 -2
  169. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/integration/endpoints/test_query_byok_integration.py +178 -134
  170. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/integration/endpoints/test_query_integration.py +139 -153
  171. lightspeed_stack-0.6.2/tests/integration/endpoints/test_responses_byok_integration.py +716 -0
  172. lightspeed_stack-0.6.2/tests/integration/endpoints/test_responses_integration.py +374 -0
  173. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/integration/endpoints/test_rlsapi_v1_integration.py +1 -1
  174. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/integration/endpoints/test_stream_interrupt_integration.py +19 -1
  175. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/integration/endpoints/test_streaming_query_byok_integration.py +195 -187
  176. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/integration/endpoints/test_streaming_query_integration.py +12 -12
  177. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/integration/test_rh_identity_integration.py +41 -0
  178. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/README.md +7 -1
  179. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/app/endpoints/conftest.py +3 -1
  180. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/app/endpoints/test_a2a.py +67 -0
  181. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/app/endpoints/test_feedback.py +123 -0
  182. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/app/endpoints/test_health.py +58 -1
  183. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/app/endpoints/test_mcp_servers.py +60 -2
  184. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/app/endpoints/test_metrics.py +2 -6
  185. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/app/endpoints/test_query.py +24 -15
  186. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/app/endpoints/test_responses.py +94 -10
  187. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/app/endpoints/test_responses_splunk.py +3 -3
  188. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/app/endpoints/test_rlsapi_v1.py +62 -126
  189. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/app/endpoints/test_shields.py +122 -8
  190. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/app/endpoints/test_stream_interrupt.py +78 -1
  191. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/app/endpoints/test_streaming_query.py +206 -313
  192. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/app/endpoints/test_tools.py +42 -0
  193. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/app/endpoints/test_vector_stores.py +100 -0
  194. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/authentication/README.md +3 -0
  195. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/authentication/test_auth.py +25 -2
  196. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/authentication/test_rh_identity.py +236 -6
  197. lightspeed_stack-0.6.2/tests/unit/authentication/test_trusted_proxy.py +507 -0
  198. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/authorization/test_azure_token_manager.py +9 -11
  199. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/authorization/test_middleware.py +25 -0
  200. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/cache/README.md +3 -0
  201. lightspeed_stack-0.6.2/tests/unit/conftest.py +144 -0
  202. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/models/README.md +3 -0
  203. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/models/config/README.md +12 -0
  204. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/models/config/test_byok_rag.py +68 -0
  205. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/models/config/test_dump_configuration.py +537 -1
  206. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/models/config/test_inference_configuration.py +68 -0
  207. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/models/config/test_llama_stack_configuration.py +134 -15
  208. lightspeed_stack-0.6.2/tests/unit/models/config/test_quota_handlers_config.py +750 -0
  209. lightspeed_stack-0.6.2/tests/unit/models/config/test_quota_limiter_config.py +408 -0
  210. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/models/config/test_quota_scheduler_config.py +94 -0
  211. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/models/config/test_rlsapi_v1_configuration.py +12 -17
  212. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/models/requests/README.md +1 -1
  213. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/models/requests/test_vector_store_requests.py +65 -1
  214. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/models/responses/test_successful_responses.py +53 -35
  215. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/observability/formats/test_rlsapi.py +4 -3
  216. lightspeed_stack-0.6.2/tests/unit/pydantic_ai_lightspeed/README.md +5 -0
  217. lightspeed_stack-0.6.2/tests/unit/pydantic_ai_lightspeed/__init__.py +1 -0
  218. lightspeed_stack-0.6.2/tests/unit/pydantic_ai_lightspeed/capabilities/README.md +5 -0
  219. lightspeed_stack-0.6.2/tests/unit/pydantic_ai_lightspeed/capabilities/__init__.py +1 -0
  220. lightspeed_stack-0.6.2/tests/unit/pydantic_ai_lightspeed/capabilities/question_validity/README.md +8 -0
  221. lightspeed_stack-0.6.2/tests/unit/pydantic_ai_lightspeed/capabilities/question_validity/__init__.py +1 -0
  222. lightspeed_stack-0.6.2/tests/unit/pydantic_ai_lightspeed/capabilities/question_validity/test_capability.py +571 -0
  223. lightspeed_stack-0.6.2/tests/unit/pydantic_ai_lightspeed/capabilities/redaction/__init__.py +1 -0
  224. lightspeed_stack-0.6.2/tests/unit/pydantic_ai_lightspeed/capabilities/redaction/test_capability.py +316 -0
  225. lightspeed_stack-0.6.2/tests/unit/pydantic_ai_lightspeed/capabilities/redaction/test_config.py +157 -0
  226. lightspeed_stack-0.6.2/tests/unit/pydantic_ai_lightspeed/capabilities/redaction/test_core.py +153 -0
  227. lightspeed_stack-0.6.2/tests/unit/pydantic_ai_lightspeed/llamastack/README.md +11 -0
  228. lightspeed_stack-0.6.2/tests/unit/pydantic_ai_lightspeed/llamastack/__init__.py +1 -0
  229. lightspeed_stack-0.6.2/tests/unit/pydantic_ai_lightspeed/llamastack/test_provider.py +156 -0
  230. lightspeed_stack-0.6.2/tests/unit/pydantic_ai_lightspeed/llamastack/test_transport.py +344 -0
  231. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/runners/test_uvicorn_runner.py +25 -12
  232. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/test_client.py +13 -3
  233. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/test_configuration.py +290 -2
  234. lightspeed_stack-0.6.2/tests/unit/test_degraded_mode.py +59 -0
  235. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/test_llama_stack_configuration.py +156 -0
  236. lightspeed_stack-0.6.2/tests/unit/test_llama_stack_synthesize.py +371 -0
  237. lightspeed_stack-0.6.2/tests/unit/test_log.py +115 -0
  238. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/utils/README.md +24 -0
  239. lightspeed_stack-0.6.2/tests/unit/utils/agents/README.md +11 -0
  240. lightspeed_stack-0.6.2/tests/unit/utils/agents/test_query.py +499 -0
  241. lightspeed_stack-0.6.2/tests/unit/utils/agents/test_streaming.py +1146 -0
  242. lightspeed_stack-0.6.2/tests/unit/utils/agents/test_tool_processor.py +637 -0
  243. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/utils/test_compaction.py +6 -21
  244. lightspeed_stack-0.6.2/tests/unit/utils/test_conversation_compaction.py +668 -0
  245. lightspeed_stack-0.6.2/tests/unit/utils/test_markdown_repair.py +518 -0
  246. lightspeed_stack-0.6.2/tests/unit/utils/test_pydantic_ai.py +409 -0
  247. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/utils/test_responses.py +101 -106
  248. lightspeed_stack-0.6.2/tests/unit/utils/test_schema_dumper.py +520 -0
  249. lightspeed_stack-0.6.2/tests/unit/utils/test_stream_interrupts.py +193 -0
  250. lightspeed_stack-0.6.2/tests/unit/utils/test_streaming_sse.py +277 -0
  251. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/utils/test_suid.py +53 -0
  252. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/utils/test_token_estimator.py +7 -35
  253. lightspeed_stack-0.6.0rc2/src/authentication/.ruff_cache/.gitignore +0 -2
  254. lightspeed_stack-0.6.0rc2/src/authentication/.ruff_cache/0.9.1/13770435568462002823 +0 -0
  255. lightspeed_stack-0.6.0rc2/src/authentication/.ruff_cache/0.9.1/2640992821107041526 +0 -0
  256. lightspeed_stack-0.6.0rc2/src/authentication/.ruff_cache/0.9.1/README.md +0 -2
  257. lightspeed_stack-0.6.0rc2/src/authentication/.ruff_cache/CACHEDIR.TAG +0 -1
  258. lightspeed_stack-0.6.0rc2/src/authentication/.ruff_cache/README.md +0 -2
  259. lightspeed_stack-0.6.0rc2/src/models/.ruff_cache/.gitignore +0 -2
  260. lightspeed_stack-0.6.0rc2/src/models/.ruff_cache/0.9.1/2435063725374233068 +0 -0
  261. lightspeed_stack-0.6.0rc2/src/models/.ruff_cache/0.9.1/README.md +0 -2
  262. lightspeed_stack-0.6.0rc2/src/models/.ruff_cache/CACHEDIR.TAG +0 -1
  263. lightspeed_stack-0.6.0rc2/src/models/.ruff_cache/README.md +0 -2
  264. lightspeed_stack-0.6.0rc2/src/models/README.md +0 -16
  265. lightspeed_stack-0.6.0rc2/src/models/api/README.md +0 -10
  266. lightspeed_stack-0.6.0rc2/src/models/common/README.md +0 -2
  267. lightspeed_stack-0.6.0rc2/src/models/common/health.py +0 -39
  268. lightspeed_stack-0.6.0rc2/src/models/common/responses/README.md +0 -8
  269. lightspeed_stack-0.6.0rc2/src/quota/.ruff_cache/.gitignore +0 -2
  270. lightspeed_stack-0.6.0rc2/src/quota/.ruff_cache/0.14.1/13216894937928385266 +0 -0
  271. lightspeed_stack-0.6.0rc2/src/quota/.ruff_cache/0.14.1/README.md +0 -2
  272. lightspeed_stack-0.6.0rc2/src/quota/.ruff_cache/0.9.1/11326792315657745171 +0 -0
  273. lightspeed_stack-0.6.0rc2/src/quota/.ruff_cache/0.9.1/README.md +0 -2
  274. lightspeed_stack-0.6.0rc2/src/quota/.ruff_cache/CACHEDIR.TAG +0 -1
  275. lightspeed_stack-0.6.0rc2/src/quota/.ruff_cache/README.md +0 -2
  276. lightspeed_stack-0.6.0rc2/src/utils/stream_interrupts.py +0 -148
  277. lightspeed_stack-0.6.0rc2/tests/e2e/.pdm-python +0 -1
  278. lightspeed_stack-0.6.0rc2/tests/e2e/features/skills.feature +0 -631
  279. lightspeed_stack-0.6.0rc2/tests/e2e/features/steps/tls.py +0 -225
  280. lightspeed_stack-0.6.0rc2/tests/e2e/features/tls.feature +0 -185
  281. lightspeed_stack-0.6.0rc2/tests/e2e/rag/README.md +0 -2
  282. lightspeed_stack-0.6.0rc2/tests/test_results/.coverage.integration +0 -0
  283. lightspeed_stack-0.6.0rc2/tests/test_results/.coverage.unit +0 -0
  284. lightspeed_stack-0.6.0rc2/tests/test_results/coverage_integration.json +0 -1
  285. lightspeed_stack-0.6.0rc2/tests/test_results/coverage_unit.json +0 -1
  286. lightspeed_stack-0.6.0rc2/tests/test_results/junit_integration.xml +0 -1
  287. lightspeed_stack-0.6.0rc2/tests/test_results/junit_unit.xml +0 -225
  288. lightspeed_stack-0.6.0rc2/tests/unit/app/.ruff_cache/.gitignore +0 -2
  289. lightspeed_stack-0.6.0rc2/tests/unit/app/.ruff_cache/0.9.1/10631576872848856737 +0 -0
  290. lightspeed_stack-0.6.0rc2/tests/unit/app/.ruff_cache/0.9.1/README.md +0 -2
  291. lightspeed_stack-0.6.0rc2/tests/unit/app/.ruff_cache/CACHEDIR.TAG +0 -1
  292. lightspeed_stack-0.6.0rc2/tests/unit/app/endpoints/.ruff_cache/.gitignore +0 -2
  293. lightspeed_stack-0.6.0rc2/tests/unit/app/endpoints/.ruff_cache/0.9.1/15310180828563549007 +0 -0
  294. lightspeed_stack-0.6.0rc2/tests/unit/app/endpoints/.ruff_cache/0.9.1/README.md +0 -2
  295. lightspeed_stack-0.6.0rc2/tests/unit/app/endpoints/.ruff_cache/CACHEDIR.TAG +0 -1
  296. lightspeed_stack-0.6.0rc2/tests/unit/conftest.py +0 -74
  297. lightspeed_stack-0.6.0rc2/tests/unit/models/config/test_quota_handlers_config.py +0 -24
  298. lightspeed_stack-0.6.0rc2/tests/unit/models/config/test_quota_limiter_config.py +0 -79
  299. lightspeed_stack-0.6.0rc2/tests/unit/test_log.py +0 -160
  300. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/LICENSE +0 -0
  301. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/a2a_storage/README.md +0 -0
  302. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/a2a_storage/__init__.py +0 -0
  303. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/a2a_storage/context_store.py +0 -0
  304. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/a2a_storage/in_memory_context_store.py +0 -0
  305. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/a2a_storage/postgres_context_store.py +0 -0
  306. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/a2a_storage/sqlite_context_store.py +0 -0
  307. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/a2a_storage/storage_factory.py +0 -0
  308. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/app/README.md +0 -0
  309. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/app/__init__.py +0 -0
  310. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/app/database.py +0 -0
  311. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/app/endpoints/TODO +0 -0
  312. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/app/endpoints/__init__.py +0 -0
  313. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/app/endpoints/a2a_openapi.py +0 -0
  314. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/app/endpoints/authorized.py +0 -0
  315. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/app/endpoints/conversations_v1.py +0 -0
  316. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/app/endpoints/conversations_v2.py +0 -0
  317. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/app/endpoints/feedback.py +0 -0
  318. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/app/endpoints/mcp_auth.py +0 -0
  319. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/app/endpoints/mcp_servers.py +0 -0
  320. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/app/endpoints/responses_telemetry.py +0 -0
  321. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/app/endpoints/stream_interrupt.py +0 -0
  322. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/app/endpoints/vector_stores.py +0 -0
  323. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/app/routers.py +0 -0
  324. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/authentication/api_key_token.py +0 -0
  325. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/authentication/interface.py +0 -0
  326. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/authentication/jwk_token.py +0 -0
  327. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/authentication/k8s.py +0 -0
  328. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/authentication/noop.py +0 -0
  329. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/authentication/noop_with_token.py +0 -0
  330. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/authentication/utils.py +0 -0
  331. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/authorization/README.md +0 -0
  332. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/authorization/__init__.py +0 -0
  333. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/authorization/azure_token_manager.py +0 -0
  334. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/authorization/resolvers.py +0 -0
  335. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/cache/__init__.py +0 -0
  336. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/cache/cache.py +0 -0
  337. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/cache/cache_entry.py +0 -0
  338. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/cache/cache_error.py +0 -0
  339. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/cache/cache_factory.py +0 -0
  340. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/cache/in_memory_cache.py +0 -0
  341. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/cache/noop_cache.py +0 -0
  342. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/cache/postgres_cache.py +0 -0
  343. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/cache/sqlite_cache.py +0 -0
  344. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/metrics/README.md +0 -0
  345. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/__init__.py +0 -0
  346. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/api/__init__.py +0 -0
  347. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/api/requests/__init__.py +0 -0
  348. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/api/requests/catalog.py +0 -0
  349. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/api/requests/conversations.py +0 -0
  350. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/api/requests/feedback.py +0 -0
  351. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/api/requests/mcp_servers.py +0 -0
  352. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/api/requests/prompts.py +0 -0
  353. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/api/requests/query.py +0 -0
  354. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/api/requests/responses_openai.py +0 -0
  355. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/api/requests/rlsapi.py +0 -0
  356. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/api/requests/vector_stores.py +0 -0
  357. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/api/responses/__init__.py +0 -0
  358. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/api/responses/constants.py +0 -0
  359. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/api/responses/error/__init__.py +0 -0
  360. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/api/responses/error/bad_request.py +0 -0
  361. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/api/responses/error/bases.py +0 -0
  362. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/api/responses/error/conflict.py +0 -0
  363. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/api/responses/error/content_too_large.py +0 -0
  364. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/api/responses/error/forbidden.py +0 -0
  365. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/api/responses/error/internal.py +0 -0
  366. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/api/responses/error/not_found.py +0 -0
  367. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/api/responses/error/service_unavailable.py +0 -0
  368. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/api/responses/error/too_many_requests.py +0 -0
  369. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/api/responses/error/unauthorized.py +0 -0
  370. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/api/responses/error/unprocessable_entity.py +0 -0
  371. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/api/responses/successful/__init__.py +0 -0
  372. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/api/responses/successful/bases.py +0 -0
  373. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/api/responses/successful/catalog.py +0 -0
  374. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/api/responses/successful/configuration.py +0 -0
  375. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/api/responses/successful/conversations.py +0 -0
  376. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/api/responses/successful/feedback.py +0 -0
  377. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/api/responses/successful/mcp_servers.py +0 -0
  378. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/api/responses/successful/prompts.py +0 -0
  379. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/api/responses/successful/query.py +0 -0
  380. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/api/responses/successful/responses_openai.py +0 -0
  381. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/api/responses/successful/rlsapi.py +0 -0
  382. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/api/responses/successful/vector_stores.py +0 -0
  383. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/common/conversation.py +0 -0
  384. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/common/feedback.py +0 -0
  385. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/common/mcp.py +0 -0
  386. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/common/moderation.py +0 -0
  387. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/common/query.py +0 -0
  388. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/common/responses/__init__.py +0 -0
  389. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/common/responses/responses_conversation_context.py +0 -0
  390. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/common/responses/types.py +0 -0
  391. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/common/transcripts.py +0 -0
  392. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/compaction.py +0 -0
  393. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/database/README.md +0 -0
  394. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/database/__init__.py +0 -0
  395. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/database/base.py +0 -0
  396. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/models/database/conversations.py +0 -0
  397. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/observability/__init__.py +0 -0
  398. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/observability/formats/README.md +0 -0
  399. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/observability/formats/__init__.py +0 -0
  400. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/observability/formats/responses.py +0 -0
  401. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/observability/formats/rlsapi.py +0 -0
  402. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/observability/splunk.py +0 -0
  403. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/quota/README.md +0 -0
  404. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/quota/__init__.py +0 -0
  405. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/quota/cluster_quota_limiter.py +0 -0
  406. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/quota/connect_pg.py +0 -0
  407. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/quota/connect_sqlite.py +0 -0
  408. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/quota/quota_exceed_error.py +0 -0
  409. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/quota/quota_limiter.py +0 -0
  410. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/quota/quota_limiter_factory.py +0 -0
  411. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/quota/revokable_quota_limiter.py +0 -0
  412. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/quota/sql.py +0 -0
  413. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/quota/token_usage_history.py +0 -0
  414. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/quota/user_quota_limiter.py +0 -0
  415. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/runners/README.md +0 -0
  416. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/runners/__init__.py +0 -0
  417. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/runners/quota_scheduler.py +0 -0
  418. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/telemetry/README.md +0 -0
  419. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/telemetry/__init__.py +0 -0
  420. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/telemetry/configuration_snapshot.py +0 -0
  421. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/utils/__init__.py +0 -0
  422. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/utils/checks.py +0 -0
  423. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/utils/common.py +0 -0
  424. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/utils/connection_decorator.py +0 -0
  425. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/utils/conversations.py +0 -0
  426. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/utils/llama_stack_version.py +0 -0
  427. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/utils/mcp_auth_headers.py +0 -0
  428. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/utils/mcp_headers.py +0 -0
  429. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/utils/mcp_oauth_probe.py +0 -0
  430. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/utils/prompts.py +0 -0
  431. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/utils/quota.py +0 -0
  432. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/utils/reranker.py +0 -0
  433. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/utils/rh_identity.py +0 -0
  434. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/utils/shields.py +0 -0
  435. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/utils/suid.py +0 -0
  436. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/utils/token_counter.py +0 -0
  437. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/utils/tool_formatter.py +0 -0
  438. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/src/utils/transcripts.py +0 -0
  439. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/__init__.py +0 -0
  440. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/benchmarks/README.md +0 -0
  441. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/benchmarks/conftest.py +0 -0
  442. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/benchmarks/data_generators.py +0 -0
  443. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/benchmarks/db_benchmarks.py +0 -0
  444. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/benchmarks/test_app_database.py +0 -0
  445. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/benchmarks/test_app_database_comparison.py +0 -0
  446. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/configuration/benchmarks-postgres.yaml +0 -0
  447. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/configuration/benchmarks-sqlite.yaml +0 -0
  448. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/configuration/lightspeed-stack-proper-name.yaml +0 -0
  449. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/configuration/lightspeed-stack.yaml +0 -0
  450. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/configuration/minimal-stack.yaml +0 -0
  451. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/configuration/multiline_system_prompt.txt +0 -0
  452. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/configuration/password +0 -0
  453. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/configuration/rag.txt +0 -0
  454. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/configuration/rh-identity-config.yaml +0 -0
  455. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/configuration/run.yaml +0 -0
  456. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/configuration/server.crt +0 -0
  457. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/configuration/server.key +0 -0
  458. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/configuration/system_prompt.txt +0 -0
  459. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/README.md +0 -0
  460. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/__init__.py +0 -0
  461. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/configs/README.md +0 -0
  462. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/configs/run-azure.yaml +0 -0
  463. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/configs/run-bedrock.yaml +0 -0
  464. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/configs/run-ci.yaml +0 -0
  465. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/configs/run-rhaiis.yaml +0 -0
  466. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/configs/run-vertexai.yaml +0 -0
  467. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/configs/run-watsonx.yaml +0 -0
  468. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/configuration/README.md +0 -0
  469. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/configuration/library-mode/README.md +0 -0
  470. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/configuration/library-mode/lightspeed-stack-auth-noop-token.yaml +0 -0
  471. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/configuration/library-mode/lightspeed-stack-auth-rh-identity.yaml +0 -0
  472. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/configuration/library-mode/lightspeed-stack-inline-rag.yaml +0 -0
  473. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/configuration/library-mode/lightspeed-stack-invalid-feedback-storage.yaml +0 -0
  474. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/configuration/library-mode/lightspeed-stack-invalid-mcp-file-auth.yaml +0 -0
  475. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/configuration/library-mode/lightspeed-stack-mcp-auth.yaml +0 -0
  476. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/configuration/library-mode/lightspeed-stack-mcp-client-auth.yaml +0 -0
  477. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/configuration/library-mode/lightspeed-stack-mcp-file-auth.yaml +0 -0
  478. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/configuration/library-mode/lightspeed-stack-mcp-kubernetes-auth.yaml +0 -0
  479. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/configuration/library-mode/lightspeed-stack-mcp-oauth-auth.yaml +0 -0
  480. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/configuration/library-mode/lightspeed-stack-mcp.yaml +0 -0
  481. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/configuration/library-mode/lightspeed-stack-no-cache.yaml +0 -0
  482. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/configuration/library-mode/lightspeed-stack-rbac.yaml +0 -0
  483. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/configuration/library-mode/lightspeed-stack.yaml +0 -0
  484. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/configuration/server-mode/README.md +0 -0
  485. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/configuration/server-mode/lightspeed-stack-auth-noop-token.yaml +0 -0
  486. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/configuration/server-mode/lightspeed-stack-auth-rh-identity.yaml +0 -0
  487. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/configuration/server-mode/lightspeed-stack-inline-rag.yaml +0 -0
  488. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/configuration/server-mode/lightspeed-stack-invalid-feedback-storage.yaml +0 -0
  489. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/configuration/server-mode/lightspeed-stack-invalid-mcp-file-auth.yaml +0 -0
  490. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/configuration/server-mode/lightspeed-stack-mcp-auth.yaml +0 -0
  491. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/configuration/server-mode/lightspeed-stack-mcp-client-auth.yaml +0 -0
  492. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/configuration/server-mode/lightspeed-stack-mcp-file-auth.yaml +0 -0
  493. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/configuration/server-mode/lightspeed-stack-mcp-kubernetes-auth.yaml +0 -0
  494. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/configuration/server-mode/lightspeed-stack-mcp-oauth-auth.yaml +0 -0
  495. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/configuration/server-mode/lightspeed-stack-mcp.yaml +0 -0
  496. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/configuration/server-mode/lightspeed-stack-no-cache.yaml +0 -0
  497. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/configuration/server-mode/lightspeed-stack-rbac.yaml +0 -0
  498. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/configuration/server-mode/lightspeed-stack.yaml +0 -0
  499. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/features/README.md +0 -0
  500. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/features/authorized_noop.feature +0 -0
  501. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/features/authorized_noop_token.feature +0 -0
  502. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/features/authorized_rh_identity.feature +0 -0
  503. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/features/conversation_cache_v2.feature +0 -0
  504. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/features/conversations.feature +0 -0
  505. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/features/faiss.feature +0 -0
  506. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/features/inline_rag.feature +0 -0
  507. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/features/mcp.feature +0 -0
  508. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/features/mcp_servers_api.feature +0 -0
  509. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/features/mcp_servers_api_auth.feature +0 -0
  510. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/features/mcp_servers_api_no_config.feature +0 -0
  511. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/features/models.feature +0 -0
  512. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/features/opentelemetry.feature +0 -0
  513. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/features/query.feature +0 -0
  514. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/features/rbac.feature +0 -0
  515. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/features/responses.feature +0 -0
  516. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/features/responses_streaming.feature +0 -0
  517. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/features/rest_api.feature +0 -0
  518. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/features/rlsapi_v1.feature +0 -0
  519. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/features/rlsapi_v1_errors.feature +0 -0
  520. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/features/smoketests.feature +0 -0
  521. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/features/steps/__init__.py +0 -0
  522. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/features/steps/auth.py +0 -0
  523. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/features/steps/common.py +0 -0
  524. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/features/steps/conversation.py +0 -0
  525. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/features/steps/feedback.py +0 -0
  526. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/features/steps/health.py +0 -0
  527. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/features/steps/info.py +0 -0
  528. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/features/steps/models.py +0 -0
  529. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/features/steps/place_holder.py +0 -0
  530. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/features/steps/rbac.py +0 -0
  531. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/features/steps/responses_steps.py +0 -0
  532. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/features/steps/rlsapi_v1.py +0 -0
  533. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/features/steps/shields.py +0 -0
  534. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/features/steps/token_counters.py +0 -0
  535. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/features/streaming_query.feature +0 -0
  536. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/gen_scenario_list.py +0 -0
  537. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/mock_jwks_server/Dockerfile +0 -0
  538. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/mock_jwks_server/README.md +0 -0
  539. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/mock_jwks_server/generate_tokens.py +0 -0
  540. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/mock_jwks_server/server.py +0 -0
  541. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/mock_mcp_server/Dockerfile +0 -0
  542. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/mock_mcp_server/README.md +0 -0
  543. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/mock_mcp_server/server.py +0 -0
  544. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/mock_tls_inference_server/Dockerfile +0 -0
  545. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/mock_tls_inference_server/README.md +0 -0
  546. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/patches/README.md +0 -0
  547. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/patches/docker-compose-mcp-volumes-selinux.patch +0 -0
  548. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/proxy/README.md +0 -0
  549. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/proxy/__init__.py +0 -0
  550. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/proxy/interception_proxy.py +0 -0
  551. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/proxy/tunnel_proxy.py +0 -0
  552. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/rag/kv_store.db +0 -0
  553. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/secrets/README.md +0 -0
  554. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/secrets/invalid-mcp-token +0 -0
  555. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/secrets/mcp-token +0 -0
  556. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/test_api.py +0 -0
  557. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/utils/llama_prow_utils.py +0 -0
  558. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/utils/llama_stack_utils.py +0 -0
  559. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e/utils/utils.py +0 -0
  560. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e-prow/rhoai/.e2e_exit_code +0 -0
  561. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e-prow/rhoai/configs/run.yaml +0 -0
  562. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e-prow/rhoai/manifests/gpu/cluster-policy.yaml +0 -0
  563. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e-prow/rhoai/manifests/gpu/create-nfd.yaml +0 -0
  564. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e-prow/rhoai/manifests/lightspeed/e2e-interception-proxy.yaml +0 -0
  565. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e-prow/rhoai/manifests/lightspeed/e2e-tunnel-proxy.yaml +0 -0
  566. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e-prow/rhoai/manifests/lightspeed/llama-stack-prow.yaml +0 -0
  567. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e-prow/rhoai/manifests/lightspeed/mock-jwks.yaml +0 -0
  568. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e-prow/rhoai/manifests/lightspeed/mock-mcp.yaml +0 -0
  569. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e-prow/rhoai/manifests/namespaces/nfd.yaml +0 -0
  570. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e-prow/rhoai/manifests/namespaces/nvidia-operator.yaml +0 -0
  571. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e-prow/rhoai/manifests/operators/ds-cluster.yaml +0 -0
  572. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e-prow/rhoai/manifests/operators/operatorgroup.yaml +0 -0
  573. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e-prow/rhoai/manifests/operators/operators.yaml +0 -0
  574. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e-prow/rhoai/manifests/vllm/vllm-inference-service-cpu.yaml +0 -0
  575. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e-prow/rhoai/manifests/vllm/vllm-inference-service-gpu.yaml +0 -0
  576. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e-prow/rhoai/manifests/vllm/vllm-runtime-cpu.yaml +0 -0
  577. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e-prow/rhoai/manifests/vllm/vllm-runtime-gpu.yaml +0 -0
  578. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e-prow/rhoai/pipeline-services.sh +0 -0
  579. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e-prow/rhoai/pipeline-test-pod.sh +0 -0
  580. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e-prow/rhoai/pipeline-vllm.sh +0 -0
  581. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e-prow/rhoai/pipeline.sh +0 -0
  582. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e-prow/rhoai/run-tests.sh +0 -0
  583. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e-prow/rhoai/scripts/bootstrap.sh +0 -0
  584. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e-prow/rhoai/scripts/deploy-vllm.sh +0 -0
  585. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e-prow/rhoai/scripts/fetch-vllm-image.sh +0 -0
  586. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e-prow/rhoai/scripts/get-vllm-pod-info.sh +0 -0
  587. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/e2e-prow/rhoai/scripts/gpu-setup.sh +0 -0
  588. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/integration/README.md +0 -0
  589. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/integration/__init__.py +0 -0
  590. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/integration/endpoints/__init__.py +0 -0
  591. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/integration/endpoints/test_authorized_endpoint.py +0 -0
  592. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/integration/endpoints/test_config_integration.py +0 -0
  593. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/integration/endpoints/test_conversations_v1_integration.py +0 -0
  594. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/integration/endpoints/test_conversations_v2_integration.py +0 -0
  595. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/integration/endpoints/test_info_integration.py +0 -0
  596. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/integration/endpoints/test_model_list.py +0 -0
  597. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/integration/endpoints/test_root_endpoint.py +0 -0
  598. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/integration/endpoints/test_tools_integration.py +0 -0
  599. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/integration/test_configuration.py +0 -0
  600. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/integration/test_middleware_integration.py +0 -0
  601. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/integration/test_openapi_json.py +0 -0
  602. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/integration/test_version.py +0 -0
  603. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/profiles/empty.py +0 -0
  604. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/profiles/syntax_error.py +0 -0
  605. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/profiles/test/profile.py +0 -0
  606. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/profiles/test_four/profile.py +0 -0
  607. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/profiles/test_three/profile.py +0 -0
  608. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/profiles/test_two/test.txt +0 -0
  609. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/__init__.py +0 -0
  610. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/a2a_storage/README.md +0 -0
  611. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/a2a_storage/__init__.py +0 -0
  612. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/a2a_storage/test_in_memory_context_store.py +0 -0
  613. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/a2a_storage/test_sqlite_context_store.py +0 -0
  614. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/a2a_storage/test_storage_factory.py +0 -0
  615. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/app/README.md +0 -0
  616. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/app/__init__.py +0 -0
  617. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/app/endpoints/README.md +0 -0
  618. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/app/endpoints/__init__.py +0 -0
  619. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/app/endpoints/test_authorized.py +0 -0
  620. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/app/endpoints/test_config.py +0 -0
  621. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/app/endpoints/test_conversations.py +0 -0
  622. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/app/endpoints/test_conversations_v2.py +0 -0
  623. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/app/endpoints/test_info.py +0 -0
  624. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/app/endpoints/test_mcp_auth.py +0 -0
  625. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/app/endpoints/test_models.py +0 -0
  626. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/app/endpoints/test_prompts.py +0 -0
  627. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/app/endpoints/test_providers.py +0 -0
  628. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/app/endpoints/test_rags.py +0 -0
  629. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/app/endpoints/test_root.py +0 -0
  630. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/app/test_database.py +0 -0
  631. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/app/test_main_middleware.py +0 -0
  632. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/app/test_routers.py +0 -0
  633. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/authentication/__init__.py +0 -0
  634. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/authentication/test_api_key_token.py +0 -0
  635. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/authentication/test_jwk_token.py +0 -0
  636. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/authentication/test_k8s.py +0 -0
  637. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/authentication/test_noop.py +0 -0
  638. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/authentication/test_noop_with_token.py +0 -0
  639. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/authentication/test_utils.py +0 -0
  640. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/authorization/README.md +0 -0
  641. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/authorization/__init__.py +0 -0
  642. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/authorization/test_resolvers.py +0 -0
  643. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/cache/__init__.py +0 -0
  644. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/cache/test_cache_factory.py +0 -0
  645. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/cache/test_in_memory_cache.py +0 -0
  646. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/cache/test_noop_cache.py +0 -0
  647. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/cache/test_postgres_cache.py +0 -0
  648. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/cache/test_sqlite_cache.py +0 -0
  649. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/metrics/README.md +0 -0
  650. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/metrics/__init__.py +0 -0
  651. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/metrics/test_recording.py +0 -0
  652. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/metrics/test_utis.py +0 -0
  653. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/models/__init__.py +0 -0
  654. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/models/config/__init__.py +0 -0
  655. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/models/config/test_a2a_state_configuration.py +0 -0
  656. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/models/config/test_approvals_configuration.py +0 -0
  657. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/models/config/test_authentication_configuration.py +0 -0
  658. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/models/config/test_compaction_configuration.py +0 -0
  659. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/models/config/test_conversation_history.py +0 -0
  660. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/models/config/test_cors.py +0 -0
  661. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/models/config/test_customization.py +0 -0
  662. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/models/config/test_database_configuration.py +0 -0
  663. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/models/config/test_in_memory_cache_configuration.py +0 -0
  664. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/models/config/test_jwt_role_rule.py +0 -0
  665. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/models/config/test_model_context_protocol_server.py +0 -0
  666. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/models/config/test_postgresql_database_configuration.py +0 -0
  667. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/models/config/test_rag_configuration.py +0 -0
  668. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/models/config/test_reranker_configuration.py +0 -0
  669. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/models/config/test_service_configuration.py +0 -0
  670. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/models/config/test_skills_configuration.py +0 -0
  671. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/models/config/test_splunk_configuration.py +0 -0
  672. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/models/config/test_tls_configuration.py +0 -0
  673. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/models/config/test_user_data_collection.py +0 -0
  674. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/models/requests/__init__.py +0 -0
  675. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/models/requests/test_attachment.py +0 -0
  676. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/models/requests/test_feedback_request.py +0 -0
  677. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/models/requests/test_feedback_status_update_request.py +0 -0
  678. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/models/requests/test_query_request.py +0 -0
  679. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/models/requests/test_responses_request.py +0 -0
  680. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/models/responses/README.md +0 -0
  681. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/models/responses/__init__.py +0 -0
  682. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/models/responses/test_authorized_response.py +0 -0
  683. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/models/responses/test_error_responses.py +0 -0
  684. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/models/responses/test_query_response.py +0 -0
  685. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/models/responses/test_rag_chunk.py +0 -0
  686. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/models/responses/test_response_types.py +0 -0
  687. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/models/responses/test_types.py +0 -0
  688. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/models/rlsapi/README.md +0 -0
  689. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/models/rlsapi/__init__.py +0 -0
  690. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/models/rlsapi/test_requests.py +0 -0
  691. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/models/rlsapi/test_responses.py +0 -0
  692. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/models/test_compaction.py +0 -0
  693. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/observability/README.md +0 -0
  694. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/observability/__init__.py +0 -0
  695. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/observability/formats/README.md +0 -0
  696. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/observability/formats/__init__.py +0 -0
  697. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/observability/formats/test_responses.py +0 -0
  698. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/observability/test_splunk.py +0 -0
  699. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/quota/README.md +0 -0
  700. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/quota/__init__.py +0 -0
  701. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/quota/test_cluster_quota_limiter.py +0 -0
  702. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/quota/test_connect_pg.py +0 -0
  703. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/quota/test_connect_sqlite.py +0 -0
  704. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/quota/test_quota_exceed_error.py +0 -0
  705. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/quota/test_quota_limiter_factory.py +0 -0
  706. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/quota/test_user_quota_limiter.py +0 -0
  707. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/runners/README.md +0 -0
  708. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/runners/__init__.py +0 -0
  709. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/telemetry/README.md +0 -0
  710. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/telemetry/__init__.py +0 -0
  711. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/telemetry/conftest.py +0 -0
  712. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/telemetry/test_configuration_snapshot.py +0 -0
  713. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/test_configuration_unknown_fields.py +0 -0
  714. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/test_lightspeed_stack.py +0 -0
  715. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/test_sentry.py +0 -0
  716. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/utils/__init__.py +0 -0
  717. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/utils/auth_helpers.py +0 -0
  718. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/utils/test_checks.py +0 -0
  719. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/utils/test_common.py +0 -0
  720. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/utils/test_connection_decorator.py +0 -0
  721. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/utils/test_conversations.py +0 -0
  722. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/utils/test_endpoints.py +0 -0
  723. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/utils/test_llama_stack_version.py +0 -0
  724. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/utils/test_mcp_auth_headers.py +0 -0
  725. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/utils/test_mcp_headers.py +0 -0
  726. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/utils/test_prompts.py +0 -0
  727. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/utils/test_query.py +0 -0
  728. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/utils/test_rh_identity.py +0 -0
  729. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/utils/test_shields.py +0 -0
  730. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/utils/test_tool_formatter.py +0 -0
  731. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/utils/test_transcripts.py +0 -0
  732. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/utils/test_types.py +0 -0
  733. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.2}/tests/unit/utils/test_vector_search.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: lightspeed-stack
3
- Version: 0.6.0rc2
3
+ Version: 0.6.2
4
4
  Summary: LLM tooling stack
5
5
  Keywords: LLM,RAG
6
6
  Maintainer-Email: =?utf-8?b?UGF2ZWwgVGnFoW5vdnNrw70=?= <tisnik@centrum.cz>
@@ -249,6 +249,8 @@ Requires-Dist: datasets>=4.7.0
249
249
  Requires-Dist: sentry-sdk[fastapi]>=2.58.0
250
250
  Requires-Dist: python-dotenv>=1.2.2
251
251
  Requires-Dist: tiktoken>=0.8.0
252
+ Requires-Dist: pydantic-ai>=1.99.0
253
+ Requires-Dist: pydantic-ai-skills>=0.11.0
252
254
  Description-Content-Type: text/markdown
253
255
 
254
256
  # Lightspeed Core Stack (LCS)
@@ -395,7 +397,7 @@ Lightspeed Core Stack is based on the FastAPI framework (Uvicorn). The service i
395
397
  | IBM WatsonX | https://www.ibm.com/products/watsonx |
396
398
  | AWS Bedrock | https://aws.amazon.com/bedrock |
397
399
  | RHOAI (vLLM) | See tests/e2e-prow/rhoai/configs/run.yaml |
398
- | RHEL AI (vLLM) | See tests/e2e/configs/run-rhelai.yaml |
400
+ | RHEL AI (RHAIIS/vLLM) | See tests/e2e/configs/run-rhelai.yaml |
399
401
 
400
402
  See `docs/providers.md` for configuration details.
401
403
 
@@ -413,8 +415,23 @@ Lightspeed Core Stack is based on the FastAPI framework (Uvicorn). The service i
413
415
 
414
416
  # Installation
415
417
 
416
- Installation steps depends on operation system. Please look at instructions for your system:
418
+ ## Clone the Repository
419
+
420
+ Lightspeed Stack uses a git submodule for external providers (required for features like OKP RAG). Clone with submodules:
417
421
 
422
+ ```bash
423
+ git clone --recursive https://github.com/lightspeed-core/lightspeed-stack.git
424
+ cd lightspeed-stack
425
+ ```
426
+
427
+ **If you already cloned without `--recursive`:**
428
+ ```bash
429
+ git submodule update --init
430
+ ```
431
+
432
+ ## System-Specific Installation
433
+
434
+ Installation steps depends on operation system. Please look at instructions for your system:
418
435
 
419
436
  - [Linux installation](https://lightspeed-core.github.io/lightspeed-stack/installation_linux)
420
437
  - [macOS installation](https://lightspeed-core.github.io/lightspeed-stack/installation_macos)
@@ -441,7 +458,7 @@ To quickly get hands on LCS, we can run it using the default configurations prov
441
458
  ```
442
459
  4. access LCS web UI at [http://localhost:8080/](http://localhost:8080/)
443
460
 
444
- **Note**: `make run` uses containerized llama-stack (service mode). To run llama-stack manually instead, see the [Llama Stack as separate server](#llama-stack-as-separate-server) section below.
461
+ **Note**: `make run` uses containerized llama-stack (service mode). For details on container lifecycle management, customization, and troubleshooting, see the [Container Orchestration Guide](docs/container_orchestration.md). To run llama-stack manually instead, see the [Llama Stack as separate server](#llama-stack-as-separate-server) section below.
445
462
 
446
463
  ## Container Runtime Requirements
447
464
 
@@ -452,6 +469,8 @@ The Makefile requires either Podman or Docker to launch the Llama Stack containe
452
469
 
453
470
  The Makefile will auto-detect which runtime is available.
454
471
 
472
+ **For advanced usage** including customization options, cleanup commands, and troubleshooting, see the [Container Orchestration Guide](docs/container_orchestration.md).
473
+
455
474
 
456
475
  # Configuration
457
476
 
@@ -478,8 +497,7 @@ __Note__: Support for individual models is dependent on the specific inference p
478
497
  | 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) |
479
498
  | OpenAI | gpt-3.5-turbo, gpt-4 | No | remote::openai | |
480
499
  | RHOAI (vLLM) | meta-llama/Llama-3.2-1B-Instruct | Yes | remote::vllm | [1](tests/e2e-prow/rhoai/configs/run.yaml) |
481
- | RHAIIS (vLLM) | meta-llama/Llama-3.1-8B-Instruct | Yes | remote::vllm | [1](tests/e2e/configs/run-rhaiis.yaml) |
482
- | RHEL AI (vLLM) | meta-llama/Llama-3.1-8B-Instruct | Yes | remote::vllm | [1](tests/e2e/configs/run-rhelai.yaml) |
500
+ | RHEL AI (RHAIIS/vLLM) | meta-llama/Llama-3.1-8B-Instruct | Yes | remote::vllm | [1](tests/e2e/configs/run-rhelai.yaml) [2](tests/e2e/configs/run-rhaiis.yaml) |
483
501
  | 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) |
484
502
  | Azure | gpt-5-chat, gpt-4.1, gpt-4.1-mini, gpt-4.1-nano, o1-mini | No or limited | remote::azure | |
485
503
  | 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) |
@@ -142,7 +142,7 @@ Lightspeed Core Stack is based on the FastAPI framework (Uvicorn). The service i
142
142
  | IBM WatsonX | https://www.ibm.com/products/watsonx |
143
143
  | AWS Bedrock | https://aws.amazon.com/bedrock |
144
144
  | RHOAI (vLLM) | See tests/e2e-prow/rhoai/configs/run.yaml |
145
- | RHEL AI (vLLM) | See tests/e2e/configs/run-rhelai.yaml |
145
+ | RHEL AI (RHAIIS/vLLM) | See tests/e2e/configs/run-rhelai.yaml |
146
146
 
147
147
  See `docs/providers.md` for configuration details.
148
148
 
@@ -160,8 +160,23 @@ Lightspeed Core Stack is based on the FastAPI framework (Uvicorn). The service i
160
160
 
161
161
  # Installation
162
162
 
163
- Installation steps depends on operation system. Please look at instructions for your system:
163
+ ## Clone the Repository
164
+
165
+ Lightspeed Stack uses a git submodule for external providers (required for features like OKP RAG). Clone with submodules:
164
166
 
167
+ ```bash
168
+ git clone --recursive https://github.com/lightspeed-core/lightspeed-stack.git
169
+ cd lightspeed-stack
170
+ ```
171
+
172
+ **If you already cloned without `--recursive`:**
173
+ ```bash
174
+ git submodule update --init
175
+ ```
176
+
177
+ ## System-Specific Installation
178
+
179
+ Installation steps depends on operation system. Please look at instructions for your system:
165
180
 
166
181
  - [Linux installation](https://lightspeed-core.github.io/lightspeed-stack/installation_linux)
167
182
  - [macOS installation](https://lightspeed-core.github.io/lightspeed-stack/installation_macos)
@@ -188,7 +203,7 @@ To quickly get hands on LCS, we can run it using the default configurations prov
188
203
  ```
189
204
  4. access LCS web UI at [http://localhost:8080/](http://localhost:8080/)
190
205
 
191
- **Note**: `make run` uses containerized llama-stack (service mode). To run llama-stack manually instead, see the [Llama Stack as separate server](#llama-stack-as-separate-server) section below.
206
+ **Note**: `make run` uses containerized llama-stack (service mode). For details on container lifecycle management, customization, and troubleshooting, see the [Container Orchestration Guide](docs/container_orchestration.md). To run llama-stack manually instead, see the [Llama Stack as separate server](#llama-stack-as-separate-server) section below.
192
207
 
193
208
  ## Container Runtime Requirements
194
209
 
@@ -199,6 +214,8 @@ The Makefile requires either Podman or Docker to launch the Llama Stack containe
199
214
 
200
215
  The Makefile will auto-detect which runtime is available.
201
216
 
217
+ **For advanced usage** including customization options, cleanup commands, and troubleshooting, see the [Container Orchestration Guide](docs/container_orchestration.md).
218
+
202
219
 
203
220
  # Configuration
204
221
 
@@ -225,8 +242,7 @@ __Note__: Support for individual models is dependent on the specific inference p
225
242
  | 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) |
226
243
  | OpenAI | gpt-3.5-turbo, gpt-4 | No | remote::openai | |
227
244
  | RHOAI (vLLM) | meta-llama/Llama-3.2-1B-Instruct | Yes | remote::vllm | [1](tests/e2e-prow/rhoai/configs/run.yaml) |
228
- | RHAIIS (vLLM) | meta-llama/Llama-3.1-8B-Instruct | Yes | remote::vllm | [1](tests/e2e/configs/run-rhaiis.yaml) |
229
- | RHEL AI (vLLM) | meta-llama/Llama-3.1-8B-Instruct | Yes | remote::vllm | [1](tests/e2e/configs/run-rhelai.yaml) |
245
+ | RHEL AI (RHAIIS/vLLM) | meta-llama/Llama-3.1-8B-Instruct | Yes | remote::vllm | [1](tests/e2e/configs/run-rhelai.yaml) [2](tests/e2e/configs/run-rhaiis.yaml) |
230
246
  | 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) |
231
247
  | Azure | gpt-5-chat, gpt-4.1, gpt-4.1-mini, gpt-4.1-nano, o1-mini | No or limited | remote::azure | |
232
248
  | 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) |
@@ -55,8 +55,10 @@ dependencies = [
55
55
  "sentry-sdk[fastapi]>=2.58.0",
56
56
  "python-dotenv>=1.2.2",
57
57
  "tiktoken>=0.8.0",
58
+ "pydantic-ai>=1.99.0",
59
+ "pydantic-ai-skills>=0.11.0",
58
60
  ]
59
- version = "0.6.0rc2"
61
+ version = "0.6.2"
60
62
 
61
63
  [project.license]
62
64
  file = "LICENSE"
@@ -104,6 +106,10 @@ pythonpath = [
104
106
  addopts = [
105
107
  "--import-mode=importlib",
106
108
  ]
109
+ markers = [
110
+ "destructive: marks tests as destructive (deselect with '-m \"not destructive\"')",
111
+ "order: controls test execution order (requires pytest-order plugin)",
112
+ ]
107
113
 
108
114
  [tool.pylint.main]
109
115
  source-roots = "src"
@@ -116,6 +122,11 @@ disable = [
116
122
  "R0801",
117
123
  ]
118
124
 
125
+ [tool.black]
126
+ target-version = [
127
+ "py312",
128
+ ]
129
+
119
130
  [tool.ruff]
120
131
  line-length = 88
121
132
  extend-exclude = [
@@ -157,6 +168,7 @@ dev = [
157
168
  "pytest-cov>=5.0.0",
158
169
  "pytest-mock>=3.14.0",
159
170
  "pytest-asyncio>=1.0.0",
171
+ "pytest-order>=1.2.0",
160
172
  "pyright>=1.1.401",
161
173
  "pylint>=3.3.7",
162
174
  "pydocstyle>=6.3.0",
@@ -196,7 +208,7 @@ llslibdev = [
196
208
  "transformers>=4.34.0",
197
209
  "numpy==2.3.5",
198
210
  "mcp>=1.23.0",
199
- "torch==2.9.0",
211
+ "torch==2.10.0",
200
212
  "trl>=0.18.2",
201
213
  "peft>=0.15.2",
202
214
  "google-cloud-aiplatform>=1.130.0",
@@ -210,6 +222,7 @@ llslibdev = [
210
222
  "pydantic>=2.10.6",
211
223
  "protobuf>=6.33.5",
212
224
  "filelock>=3.20.3",
225
+ "uv-build==0.11.8",
213
226
  ]
214
227
  build = [
215
228
  "build>=1.2.2.post1",
@@ -57,6 +57,9 @@ Handler for REST API calls to list and retrieve available RAGs.
57
57
  ## [responses.py](responses.py)
58
58
  Handler for REST API call to provide answer using Responses API (LCORE specification).
59
59
 
60
+ ## [responses_telemetry.py](responses_telemetry.py)
61
+ Splunk telemetry helpers for the Responses API endpoint.
62
+
60
63
  ## [rlsapi_v1.py](rlsapi_v1.py)
61
64
  Handler for RHEL Lightspeed rlsapi v1 REST API endpoints.
62
65
 
@@ -1,5 +1,7 @@
1
1
  """Handler for A2A (Agent-to-Agent) protocol endpoints using Responses API."""
2
2
 
3
+ # pylint: disable=too-many-lines
4
+
3
5
  import asyncio
4
6
  import json
5
7
  import uuid
@@ -32,7 +34,7 @@ from fastapi import APIRouter, Depends, HTTPException, Request, status
32
34
  from llama_stack_api.openai_responses import (
33
35
  OpenAIResponseObjectStream,
34
36
  )
35
- from llama_stack_client import APIConnectionError
37
+ from llama_stack_client import APIConnectionError, AsyncLlamaStackClient
36
38
  from starlette.responses import Response, StreamingResponse
37
39
 
38
40
  from a2a_storage import A2AContextStore, A2AStorageFactory
@@ -45,13 +47,18 @@ from configuration import configuration
45
47
  from constants import MEDIA_TYPE_EVENT_STREAM
46
48
  from log import get_logger
47
49
  from models.api.requests import QueryRequest
50
+ from models.common.responses.types import ResponseInput
48
51
  from models.config import Action
52
+ from utils.conversation_compaction import (
53
+ apply_compaction_blocking,
54
+ store_compacted_turn,
55
+ )
49
56
  from utils.mcp_headers import McpHeaders, mcp_headers_dependency
50
57
  from utils.responses import (
51
58
  extract_text_from_response_item,
52
59
  prepare_responses_params,
53
60
  )
54
- from utils.suid import normalize_conversation_id
61
+ from utils.suid import normalize_conversation_id, to_llama_stack_conversation_id
55
62
  from version import __version__
56
63
 
57
64
  logger = get_logger(__name__)
@@ -336,6 +343,19 @@ class A2AAgentExecutor(AgentExecutor):
336
343
  store=True,
337
344
  request_headers=self.request_headers,
338
345
  )
346
+ # Compact the conversation if it is approaching the context window
347
+ # limit. A2A is not a browser SSE stream, so no progress event is
348
+ # emitted; the blocking variant summarizes inline before the call.
349
+ # No conversation cache is passed: the A2A executor has no resolved
350
+ # user_id for the (user_id, conversation_id) cache key, so A2A runs
351
+ # in marker-only mode (additive summaries, no persisted fold).
352
+ compaction = await apply_compaction_blocking(
353
+ client,
354
+ responses_params,
355
+ configuration.inference,
356
+ configuration.compaction,
357
+ )
358
+ responses_params = compaction.params
339
359
  # Stream response from LLM using the Responses API
340
360
  stream = await client.responses.create(**responses_params.model_dump())
341
361
  except APIConnectionError as e:
@@ -392,9 +412,16 @@ class A2AAgentExecutor(AgentExecutor):
392
412
  )
393
413
  )
394
414
 
395
- # Process stream using generator and aggregator pattern
415
+ # Process stream using generator and aggregator pattern. In compacted
416
+ # mode the conversation parameter is not sent, so the turn is stored
417
+ # explicitly once the response completes (see _convert_stream_to_events).
396
418
  async for a2a_event in self._convert_stream_to_events(
397
- stream, task_id, context_id, conversation_id
419
+ stream,
420
+ task_id,
421
+ context_id,
422
+ conversation_id,
423
+ client,
424
+ compaction.original_input if compaction.compacted else None,
398
425
  ):
399
426
  aggregator.process_event(a2a_event)
400
427
  await event_queue.enqueue_event(a2a_event)
@@ -414,12 +441,14 @@ class A2AAgentExecutor(AgentExecutor):
414
441
  final=True,
415
442
  )
416
443
 
417
- async def _convert_stream_to_events( # pylint: disable=too-many-branches,too-many-locals
444
+ async def _convert_stream_to_events( # pylint: disable=too-many-branches,too-many-locals,too-many-arguments,too-many-positional-arguments
418
445
  self,
419
446
  stream: AsyncIterator[OpenAIResponseObjectStream],
420
447
  task_id: str,
421
448
  context_id: str,
422
449
  conversation_id: Optional[str],
450
+ client: Optional[AsyncLlamaStackClient] = None,
451
+ compacted_original_input: Optional[ResponseInput] = None,
423
452
  ) -> AsyncIterator[Any]:
424
453
  """Convert Responses API stream chunks to A2A events.
425
454
 
@@ -508,6 +537,20 @@ class A2AAgentExecutor(AgentExecutor):
508
537
 
509
538
  if response_obj:
510
539
  output = getattr(response_obj, "output", [])
540
+ # In compacted mode the conversation parameter was not sent,
541
+ # so persist this turn ourselves to keep the recent-turn
542
+ # buffer and audit history intact for the next request.
543
+ if (
544
+ compacted_original_input is not None
545
+ and client is not None
546
+ and conversation_id
547
+ ):
548
+ await store_compacted_turn(
549
+ client,
550
+ to_llama_stack_conversation_id(conversation_id),
551
+ compacted_original_input,
552
+ output,
553
+ )
511
554
  a2a_parts = _convert_responses_content_to_a2a_parts(output)
512
555
  if not a2a_parts and final_text:
513
556
  a2a_parts = [Part(root=TextPart(text=final_text))]
@@ -642,8 +685,17 @@ async def get_agent_card( # pylint: disable=unused-argument
642
685
  This endpoint provides the agent card that describes Lightspeed's
643
686
  capabilities according to the A2A protocol specification.
644
687
 
645
- Returns:
646
- AgentCard: The agent card describing this agent's capabilities.
688
+ ### Parameters:
689
+ - auth: Authentication tuple from the auth dependency (used by middleware).
690
+
691
+ ### Raises:
692
+ - HTTPException: with status 500 and a detail object containing `response`
693
+ and `cause` when service configuration is wrong or incomplete.
694
+ - HTTPException: with status 503 and a detail object containing `response`
695
+ and `cause` when unable to connect to Llama Stack.
696
+
697
+ ### Returns:
698
+ - AgentCard: The agent card describing this agent's capabilities.
647
699
  """
648
700
  try:
649
701
  logger.info("Serving A2A Agent Card")
@@ -714,23 +766,29 @@ async def handle_a2a_jsonrpc_get(
714
766
  Thin wrapper that delegates to ``_handle_a2a_jsonrpc`` so GET and POST share
715
767
  the same processing path while keeping distinct OpenAPI operation metadata.
716
768
 
717
- Args:
718
- request: Incoming ASGI/FastAPI request (body, scope, headers).
719
- auth: Resolved authentication tuple from ``auth_dependency`` (user
720
- identity and bearer token used to build the per-request A2A app).
721
- mcp_headers: MCP-related headers from ``mcp_headers_dependency``, forwarded
722
- into the A2A executor for downstream tool/context propagation.
769
+ ### Parameters:
770
+ - request: Incoming ASGI/FastAPI request (body, scope, headers).
771
+ - auth: Resolved authentication tuple from ``auth_dependency`` (user
772
+ identity and bearer token used to build the per-request A2A app).
773
+ - mcp_headers: MCP-related headers from ``mcp_headers_dependency``, forwarded
774
+ into the A2A executor for downstream tool/context propagation.
775
+
776
+ ### Raises:
777
+ - HTTPException: with status 401 for unauthorized access.
778
+ - HTTPException: with status 403 if permission is denied.
779
+ - HTTPException: with status 500 and a detail object containing `response`
780
+ and `cause` when service configuration is wrong or incomplete.
781
+ - HTTPException: with status 503 and a detail object containing `response`
782
+ and `cause` when unable to connect to Llama Stack.
783
+
784
+ ### Returns:
785
+ - ``Response`` with the full buffered JSON-RPC (or HTTP)
786
+ payload when the request is non-streaming, or
787
+ ``StreamingResponse`` (SSE) when the JSON-RPC method is
788
+ ``message/stream`` and chunks are streamed to the client.
789
+ Error conditions are generally expressed as JSON-RPC or HTTP
790
+ responses rather than by raising from this wrapper.
723
791
 
724
- Returns:
725
- ``Response`` with the full buffered JSON-RPC (or HTTP) payload when the
726
- request is non-streaming, or ``StreamingResponse`` (SSE) when the
727
- JSON-RPC method is ``message/stream`` and chunks are streamed to the
728
- client. Error conditions are generally expressed as JSON-RPC or HTTP
729
- responses rather than by raising from this wrapper.
730
-
731
- Raises:
732
- HTTPException: If authentication or ``@authorize`` rejects the request
733
- before or while entering the handler chain.
734
792
  """
735
793
  return await _handle_a2a_jsonrpc(request, auth, mcp_headers)
736
794
 
@@ -756,23 +814,27 @@ async def handle_a2a_jsonrpc_post(
756
814
  Thin wrapper that delegates to ``_handle_a2a_jsonrpc`` so GET and POST share
757
815
  the same processing path while keeping distinct OpenAPI operation metadata.
758
816
 
759
- Args:
760
- request: Incoming ASGI/FastAPI request (body, scope, headers).
761
- auth: Resolved authentication tuple from ``auth_dependency`` (user
762
- identity and bearer token used to build the per-request A2A app).
763
- mcp_headers: MCP-related headers from ``mcp_headers_dependency``, forwarded
764
- into the A2A executor for downstream tool/context propagation.
817
+ ### Parameters:
818
+ - request: Incoming ASGI/FastAPI request (body, scope, headers).
819
+ - auth: Resolved authentication tuple from ``auth_dependency`` (user
820
+ identity and bearer token used to build the per-request A2A app).
821
+ - mcp_headers: MCP-related headers from ``mcp_headers_dependency``, forwarded
822
+ into the A2A executor for downstream tool/context propagation.
823
+
824
+ ### Raises:
825
+ - HTTPException: with status 401 for unauthorized access.
826
+ - HTTPException: with status 403 if permission is denied.
827
+ - HTTPException: with status 503 and a detail object containing `response`
828
+ and `cause` when unable to connect to Llama Stack.
829
+
830
+ ### Returns:
831
+ - ``Response`` with the full buffered JSON-RPC (or HTTP)
832
+ payload when the request is non-streaming, or
833
+ ``StreamingResponse`` (SSE) when the JSON-RPC method is
834
+ ``message/stream`` and chunks are streamed to the client.
835
+ Error conditions are generally expressed as JSON-RPC or HTTP
836
+ responses rather than by raising from this wrapper.
765
837
 
766
- Returns:
767
- ``Response`` with the full buffered JSON-RPC (or HTTP) payload when the
768
- request is non-streaming, or ``StreamingResponse`` (SSE) when the
769
- JSON-RPC method is ``message/stream`` and chunks are streamed to the
770
- client. Error conditions are generally expressed as JSON-RPC or HTTP
771
- responses rather than by raising from this wrapper.
772
-
773
- Raises:
774
- HTTPException: If authentication or ``@authorize`` rejects the request
775
- before or while entering the handler chain.
776
838
  """
777
839
  return await _handle_a2a_jsonrpc(request, auth, mcp_headers)
778
840
 
@@ -965,8 +1027,14 @@ async def a2a_health_check() -> dict[str, str]:
965
1027
  """
966
1028
  Health check endpoint for A2A service.
967
1029
 
968
- Returns:
969
- Dict with health status information.
1030
+ ### Parameters:
1031
+ - None
1032
+
1033
+ ### Raises:
1034
+ - None
1035
+
1036
+ ### Returns:
1037
+ - Dict with health status information.
970
1038
  """
971
1039
  return {
972
1040
  "status": "healthy",
@@ -51,6 +51,14 @@ async def config_endpoint_handler(
51
51
  - request: The incoming HTTP request.
52
52
  - auth: Authentication tuple from the auth dependency.
53
53
 
54
+ ### Raises:
55
+ - HTTPException: with status 401 for unauthorized access.
56
+ - HTTPException: with status 403 if permission is denied.
57
+ - HTTPException: with status 500 and a detail object containing `response`
58
+ and `cause` when service configuration is wrong or incomplete.
59
+ - HTTPException: with status 503 and a detail object containing `response`
60
+ and `cause` when unable to connect to Llama Stack.
61
+
54
62
  ### Returns:
55
63
  - ConfigurationResponse: The loaded service configuration response.
56
64
  """
@@ -26,8 +26,12 @@ from models.api.responses.successful import (
26
26
  LivenessResponse,
27
27
  ReadinessResponse,
28
28
  )
29
- from models.common import HealthStatus, ProviderHealthStatus
29
+ from models.common import (
30
+ HealthStatus,
31
+ ProviderHealthStatus,
32
+ )
30
33
  from models.config import Action
34
+ from utils.degraded_mode import DegradedModeTracker
31
35
 
32
36
  logger = get_logger(__name__)
33
37
  router = APIRouter(tags=["health"])
@@ -117,40 +121,86 @@ async def readiness_probe_get_method(
117
121
  response: Response,
118
122
  ) -> ReadinessResponse:
119
123
  """
120
- Handle the readiness probe endpoint, returning service readiness.
124
+ Handle the readiness probe endpoint, returning service readiness and health status.
121
125
 
122
- If any provider reports an error status, responds with HTTP 503
123
- and details of unhealthy providers; otherwise, indicates the
124
- service is ready.
126
+ Returns comprehensive health information including overall service status,
127
+ provider health, and functional impacts. The service is considered "ready" even
128
+ in degraded mode (returns 200), but reports reduced functionality.
125
129
 
126
130
  ### Parameters:
127
131
  - response: The outgoing HTTP response (used by middleware).
128
132
  - auth: Authentication tuple from the auth dependency (used by middleware).
129
133
 
134
+ ### Raises:
135
+ - HTTPException: with status 401 for unauthorized access.
136
+ - HTTPException: with status 403 if permission is denied.
137
+ - HTTPException: with status 503 when service is unhealthy (providers down,
138
+ models unavailable) and degraded mode is not enabled.
139
+
130
140
  ### Returns:
131
- - ReadinessResponse: Object with `ready` indicating overall readiness,
132
- `reason` explaining the outcome, and `providers` containing the list of
133
- unhealthy ProviderHealthStatus entries (empty when ready).
141
+ - ReadinessResponse: Object with comprehensive health status including:
142
+ - ready: True if service can handle requests (even in degraded mode)
143
+ - reason: Description of service state
144
+ - overall_status: healthy, degraded, or unhealthy
145
+ - impacts: Functional limitations when degraded/unhealthy
146
+ - providers: List of unhealthy providers
134
147
  """
135
148
  # Used only for authorization
136
149
  _ = auth
137
150
 
138
- logger.info("Response to /v1/readiness endpoint")
151
+ logger.info("Response to /readiness endpoint")
139
152
 
140
- provider_statuses = await get_providers_health_statuses()
153
+ degraded_tracker = DegradedModeTracker()
154
+ is_degraded = degraded_tracker.is_degraded()
155
+
156
+ # Determine overall status
157
+ if is_degraded:
158
+ # Service is ready (can serve health checks, metrics, etc.) but degraded
159
+ impacts = [
160
+ "LLM inference unavailable",
161
+ "RAG functionality unavailable",
162
+ "Agent tools unavailable",
163
+ ]
164
+ return ReadinessResponse(
165
+ ready=True,
166
+ reason="Service running in degraded mode",
167
+ overall_status=HealthStatus.DEGRADED,
168
+ impacts=impacts,
169
+ providers=[],
170
+ )
141
171
 
142
- # Check if any provider is unhealthy (not counting not_implemented as unhealthy)
172
+ # Not in degraded mode - check provider health
173
+ provider_statuses = await get_providers_health_statuses()
143
174
  unhealthy_providers = [
144
175
  p for p in provider_statuses if p.status == HealthStatus.ERROR.value
145
176
  ]
146
177
 
147
178
  if unhealthy_providers:
148
- ready = False
149
- unhealthy_provider_names = [p.provider_id for p in unhealthy_providers]
150
- reason = f"Providers not healthy: {', '.join(unhealthy_provider_names)}"
179
+ # Check if this is a connection error (provider_id="unknown")
180
+ is_connection_error = any(
181
+ p.provider_id == "unknown" for p in unhealthy_providers
182
+ )
183
+
184
+ if is_connection_error:
185
+ reason = "Cannot connect to backend service"
186
+ impacts = [
187
+ "LLM inference unavailable",
188
+ "Provider health checks unavailable",
189
+ ]
190
+ else:
191
+ unhealthy_provider_names = [p.provider_id for p in unhealthy_providers]
192
+ reason = f"Providers not healthy: {', '.join(unhealthy_provider_names)}"
193
+ impacts = [
194
+ f"Provider {p.provider_id}: {p.message}" for p in unhealthy_providers
195
+ ]
196
+
151
197
  response.status_code = status.HTTP_503_SERVICE_UNAVAILABLE
152
198
  return ReadinessResponse(
153
- ready=ready, reason=reason, providers=unhealthy_providers
199
+ ready=False,
200
+ reason=reason,
201
+ overall_status=HealthStatus.UNHEALTHY,
202
+ impacts=impacts,
203
+ providers=unhealthy_providers if not is_connection_error else [],
154
204
  )
155
205
 
156
206
  # Check that the default model is registered in the model registry
@@ -158,11 +208,20 @@ async def readiness_probe_get_method(
158
208
  if not model_available:
159
209
  response.status_code = status.HTTP_503_SERVICE_UNAVAILABLE
160
210
  return ReadinessResponse(
161
- ready=False, reason=model_reason, providers=unhealthy_providers
211
+ ready=False,
212
+ reason=model_reason,
213
+ overall_status=HealthStatus.UNHEALTHY,
214
+ impacts=["Default model not available in registry"],
215
+ providers=[],
162
216
  )
163
217
 
218
+ # All healthy
164
219
  return ReadinessResponse(
165
- ready=True, reason="All providers are healthy", providers=unhealthy_providers
220
+ ready=True,
221
+ reason="All providers are healthy",
222
+ overall_status=HealthStatus.HEALTHY,
223
+ impacts=None,
224
+ providers=[],
166
225
  )
167
226
 
168
227
 
@@ -177,6 +236,14 @@ async def liveness_probe_get_method(
177
236
  ### Parameters:
178
237
  - auth: Authentication tuple from the auth dependency (used by middleware).
179
238
 
239
+ ### Raises:
240
+ - HTTPException: with status 401 for unauthorized access.
241
+ - HTTPException: with status 403 if permission is denied.
242
+ - HTTPException: with status 500 and a detail object containing `response`
243
+ and `cause` when service configuration is wrong or incomplete.
244
+ - HTTPException: with status 503 and a detail object containing `response`
245
+ and `cause` when unable to connect to Llama Stack.
246
+
180
247
  ### Returns:
181
248
  - LivenessResponse: Indicates that the service is alive.
182
249
  """
@@ -52,10 +52,10 @@ async def info_endpoint_handler(
52
52
  - auth: Authentication tuple from the auth dependency (used by middleware).
53
53
 
54
54
  ### Raises:
55
- - HTTPException: with status 500 and a detail object
56
- containing `response` and `cause` when unable to connect to
57
- Llama Stack. It can also return status 401 or 403 for
58
- unauthorized access.
55
+ - HTTPException: with status 401 for unauthorized access.
56
+ - HTTPException: with status 403 if permission is denied.
57
+ - HTTPException: with status 503 and a detail object containing `response`
58
+ and `cause` when unable to connect to Llama Stack.
59
59
 
60
60
  ### Returns:
61
61
  - InfoResponse: An object containing the service's name and version.
@@ -12,7 +12,6 @@ from prometheus_client import (
12
12
  from authentication import get_auth_dependency
13
13
  from authentication.interface import AuthTuple
14
14
  from authorization.middleware import authorize
15
- from metrics.utils import setup_model_metrics
16
15
  from models.api.responses.constants import UNAUTHORIZED_OPENAPI_EXAMPLES
17
16
  from models.api.responses.error import (
18
17
  ForbiddenResponse,
@@ -47,11 +46,7 @@ async def metrics_endpoint_handler(
47
46
  Handle request to the /metrics endpoint.
48
47
 
49
48
  Process GET requests to the /metrics endpoint, returning the
50
- latest Prometheus metrics in form of a plain text.
51
-
52
- Initializes model metrics on the first request if not already
53
- set up, then responds with the current metrics snapshot in
54
- Prometheus format.
49
+ latest Prometheus metrics in plain text Prometheus format.
55
50
 
56
51
  ### Parameters:
57
52
  - request: The incoming HTTP request (used by middleware).
@@ -67,7 +62,4 @@ async def metrics_endpoint_handler(
67
62
  # Nothing interesting in the request
68
63
  _ = request
69
64
 
70
- # Setup the model metrics if not already done. This is a one-time setup
71
- # and will not be run again on subsequent calls to this endpoint
72
- await setup_model_metrics()
73
65
  return PlainTextResponse(generate_latest(), media_type=str(CONTENT_TYPE_LATEST))