lightspeed-stack 0.6.0rc2__tar.gz → 0.6.5__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.5}/PKG-INFO +27 -8
  2. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/README.md +21 -5
  3. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/pyproject.toml +17 -3
  4. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/app/endpoints/README.md +3 -0
  5. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/app/endpoints/a2a.py +109 -41
  6. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/app/endpoints/config.py +8 -0
  7. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/app/endpoints/health.py +84 -17
  8. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/app/endpoints/info.py +4 -4
  9. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/app/endpoints/metrics.py +1 -9
  10. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/app/endpoints/models.py +8 -2
  11. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/app/endpoints/prompts.py +36 -12
  12. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/app/endpoints/providers.py +17 -15
  13. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/app/endpoints/query.py +66 -11
  14. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/app/endpoints/rags.py +31 -19
  15. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/app/endpoints/responses.py +78 -26
  16. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/app/endpoints/rlsapi_v1.py +22 -108
  17. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/app/endpoints/root.py +4 -0
  18. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/app/endpoints/shields.py +8 -4
  19. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/app/endpoints/streaming_query.py +243 -388
  20. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/app/endpoints/tools.py +26 -4
  21. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/app/main.py +22 -6
  22. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/authentication/README.md +3 -0
  23. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/authentication/__init__.py +7 -1
  24. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/authentication/rh_identity.py +73 -15
  25. lightspeed_stack-0.6.5/src/authentication/trusted_proxy.py +127 -0
  26. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/authorization/middleware.py +1 -1
  27. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/cache/README.md +1 -1
  28. lightspeed_stack-0.6.5/src/data/README.md +5 -0
  29. lightspeed_stack-0.6.5/src/data/__init__.py +8 -0
  30. lightspeed_stack-0.6.5/src/data/default_run.yaml +131 -0
  31. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/metrics/__init__.py +6 -0
  32. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/metrics/recording.py +15 -0
  33. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/metrics/utils.py +6 -12
  34. lightspeed_stack-0.6.5/src/models/README.md +11 -0
  35. lightspeed_stack-0.6.5/src/models/api/README.md +5 -0
  36. lightspeed_stack-0.6.5/src/models/api/requests/README.md +32 -0
  37. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/api/responses/README.md +0 -5
  38. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/api/responses/error/README.md +1 -0
  39. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/api/responses/successful/README.md +4 -3
  40. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/api/responses/successful/probes.py +46 -10
  41. lightspeed_stack-0.6.5/src/models/common/README.md +29 -0
  42. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/common/__init__.py +8 -1
  43. lightspeed_stack-0.6.5/src/models/common/agents/README.md +11 -0
  44. lightspeed_stack-0.6.5/src/models/common/agents/__init__.py +39 -0
  45. lightspeed_stack-0.6.5/src/models/common/agents/stream_payloads.py +270 -0
  46. lightspeed_stack-0.6.5/src/models/common/agents/turn_accumulator.py +46 -0
  47. lightspeed_stack-0.6.5/src/models/common/health.py +58 -0
  48. lightspeed_stack-0.6.5/src/models/common/responses/README.md +17 -0
  49. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/common/responses/contexts.py +9 -0
  50. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/common/responses/responses_api_params.py +12 -2
  51. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/common/turn_summary.py +42 -0
  52. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/config.py +460 -25
  53. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/observability/README.md +1 -1
  54. lightspeed_stack-0.6.5/src/pydantic_ai_lightspeed/README.md +5 -0
  55. lightspeed_stack-0.6.5/src/pydantic_ai_lightspeed/__init__.py +1 -0
  56. lightspeed_stack-0.6.5/src/pydantic_ai_lightspeed/capabilities/README.md +5 -0
  57. lightspeed_stack-0.6.5/src/pydantic_ai_lightspeed/capabilities/__init__.py +10 -0
  58. lightspeed_stack-0.6.5/src/pydantic_ai_lightspeed/capabilities/question_validity/README.md +8 -0
  59. lightspeed_stack-0.6.5/src/pydantic_ai_lightspeed/capabilities/question_validity/__init__.py +7 -0
  60. lightspeed_stack-0.6.5/src/pydantic_ai_lightspeed/capabilities/question_validity/_capability.py +151 -0
  61. lightspeed_stack-0.6.5/src/pydantic_ai_lightspeed/capabilities/redaction/__init__.py +21 -0
  62. lightspeed_stack-0.6.5/src/pydantic_ai_lightspeed/capabilities/redaction/capability.py +323 -0
  63. lightspeed_stack-0.6.5/src/pydantic_ai_lightspeed/capabilities/redaction/core.py +53 -0
  64. lightspeed_stack-0.6.5/src/pydantic_ai_lightspeed/llamastack/README.md +14 -0
  65. lightspeed_stack-0.6.5/src/pydantic_ai_lightspeed/llamastack/__init__.py +6 -0
  66. lightspeed_stack-0.6.5/src/pydantic_ai_lightspeed/llamastack/_model.py +309 -0
  67. lightspeed_stack-0.6.5/src/pydantic_ai_lightspeed/llamastack/_provider.py +123 -0
  68. lightspeed_stack-0.6.5/src/pydantic_ai_lightspeed/llamastack/_transport.py +205 -0
  69. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/runners/uvicorn.py +13 -6
  70. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/utils/README.md +25 -1
  71. lightspeed_stack-0.6.5/src/utils/agents/README.md +11 -0
  72. lightspeed_stack-0.6.5/src/utils/agents/query.py +334 -0
  73. lightspeed_stack-0.6.5/src/utils/agents/streaming.py +560 -0
  74. lightspeed_stack-0.6.5/src/utils/agents/tool_processor.py +529 -0
  75. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/utils/compaction.py +12 -6
  76. lightspeed_stack-0.6.5/src/utils/conversation_compaction.py +710 -0
  77. lightspeed_stack-0.6.5/src/utils/degraded_mode.py +60 -0
  78. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/utils/endpoints.py +7 -7
  79. lightspeed_stack-0.6.5/src/utils/markdown_repair.py +280 -0
  80. lightspeed_stack-0.6.5/src/utils/pydantic_ai.py +256 -0
  81. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/utils/query.py +32 -5
  82. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/utils/responses.py +56 -30
  83. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/utils/schema_dumper.py +11 -3
  84. lightspeed_stack-0.6.5/src/utils/stream_interrupts.py +393 -0
  85. lightspeed_stack-0.6.5/src/utils/streaming_sse.py +259 -0
  86. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/utils/token_estimator.py +15 -33
  87. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/utils/types.py +3 -0
  88. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/utils/vector_search.py +9 -14
  89. lightspeed_stack-0.6.5/tests/benchmarks/data/js_10000_lines.js +10000 -0
  90. lightspeed_stack-0.6.5/tests/benchmarks/data/js_1000_lines.js +1000 -0
  91. lightspeed_stack-0.6.5/tests/benchmarks/data/js_100_lines.js +100 -0
  92. lightspeed_stack-0.6.5/tests/benchmarks/data/js_10_lines.js +10 -0
  93. lightspeed_stack-0.6.5/tests/benchmarks/data/json_10000_lines.json +10000 -0
  94. lightspeed_stack-0.6.5/tests/benchmarks/data/json_1000_lines.json +1000 -0
  95. lightspeed_stack-0.6.5/tests/benchmarks/data/json_100_lines.json +100 -0
  96. lightspeed_stack-0.6.5/tests/benchmarks/data/json_10_lines.json +10 -0
  97. lightspeed_stack-0.6.5/tests/benchmarks/data/python_10000_lines.py +10000 -0
  98. lightspeed_stack-0.6.5/tests/benchmarks/data/python_1000_lines.py +1000 -0
  99. lightspeed_stack-0.6.5/tests/benchmarks/data/python_100_lines.py +100 -0
  100. lightspeed_stack-0.6.5/tests/benchmarks/data/python_10_lines.py +10 -0
  101. lightspeed_stack-0.6.5/tests/benchmarks/data/xml_10000_lines.xml +10000 -0
  102. lightspeed_stack-0.6.5/tests/benchmarks/data/xml_1000_lines.xml +1000 -0
  103. lightspeed_stack-0.6.5/tests/benchmarks/data/xml_100_lines.xml +100 -0
  104. lightspeed_stack-0.6.5/tests/benchmarks/data/xml_10_lines.xml +10 -0
  105. lightspeed_stack-0.6.5/tests/benchmarks/data/yaml_10000_lines.yml +10000 -0
  106. lightspeed_stack-0.6.5/tests/benchmarks/data/yaml_1000_lines.yml +1000 -0
  107. lightspeed_stack-0.6.5/tests/benchmarks/data/yaml_100_lines.yml +100 -0
  108. lightspeed_stack-0.6.5/tests/benchmarks/data/yaml_10_lines.yml +10 -0
  109. lightspeed_stack-0.6.5/tests/benchmarks/test_token_estimator.py +437 -0
  110. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/configs/run-rhelai.yaml +6 -6
  111. lightspeed_stack-0.6.5/tests/e2e/configuration/library-mode/lightspeed-stack-byok-pdf.yaml +45 -0
  112. lightspeed_stack-0.6.5/tests/e2e/configuration/library-mode/lightspeed-stack-skills-directory.yaml +25 -0
  113. lightspeed_stack-0.6.5/tests/e2e/configuration/library-mode/lightspeed-stack-skills.yaml +25 -0
  114. lightspeed_stack-0.6.5/tests/e2e/configuration/server-mode/lightspeed-stack-degraded-mode.yaml +25 -0
  115. lightspeed_stack-0.6.5/tests/e2e/configuration/server-mode/lightspeed-stack-rhelai.yaml +35 -0
  116. lightspeed_stack-0.6.5/tests/e2e/configuration/server-mode/lightspeed-stack-skills-directory.yaml +26 -0
  117. lightspeed_stack-0.6.5/tests/e2e/configuration/server-mode/lightspeed-stack-skills.yaml +26 -0
  118. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/configuration/server-mode/lightspeed-stack-tls.yaml +1 -1
  119. lightspeed_stack-0.6.5/tests/e2e/features/byok_pdf.feature +52 -0
  120. lightspeed_stack-0.6.5/tests/e2e/features/degraded_mode_startup.feature +40 -0
  121. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/features/environment.py +42 -20
  122. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/features/feedback.feature +56 -1
  123. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/features/health.feature +3 -1
  124. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/features/http_401_unauthorized.feature +67 -0
  125. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/features/info.feature +1 -1
  126. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/features/llama_stack_disrupted.feature +52 -1
  127. lightspeed_stack-0.6.5/tests/e2e/features/prompts.feature +233 -0
  128. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/features/proxy.feature +1 -1
  129. lightspeed_stack-0.6.5/tests/e2e/features/skills.feature +766 -0
  130. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/features/steps/README.md +3 -0
  131. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/features/steps/common_http.py +40 -0
  132. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/features/steps/llm_query_response.py +10 -6
  133. lightspeed_stack-0.6.5/tests/e2e/features/steps/prompts.py +167 -0
  134. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/features/steps/proxy.py +9 -0
  135. lightspeed_stack-0.6.5/tests/e2e/features/steps/tls.py +402 -0
  136. lightspeed_stack-0.6.5/tests/e2e/features/tls-ca.feature +80 -0
  137. lightspeed_stack-0.6.5/tests/e2e/features/tls-mtls.feature +80 -0
  138. lightspeed_stack-0.6.5/tests/e2e/features/tls-tlsv13.feature +58 -0
  139. lightspeed_stack-0.6.5/tests/e2e/features/unified-mode-boot.feature +116 -0
  140. lightspeed_stack-0.6.5/tests/e2e/features/unified-mode-legacy.feature +39 -0
  141. lightspeed_stack-0.6.5/tests/e2e/features/unified-mode-migration.feature +53 -0
  142. lightspeed_stack-0.6.5/tests/e2e/features/unified-mode-synthesis.feature +59 -0
  143. lightspeed_stack-0.6.5/tests/e2e/features/unified-mode-validation.feature +25 -0
  144. lightspeed_stack-0.6.5/tests/e2e/features/vector_stores.feature +45 -0
  145. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/mock_tls_inference_server/server.py +64 -4
  146. lightspeed_stack-0.6.5/tests/e2e/rag/README.md +45 -0
  147. lightspeed_stack-0.6.5/tests/e2e/rag/pdf_kv_store.db +0 -0
  148. lightspeed_stack-0.6.5/tests/e2e/rag/sources/README.md +2 -0
  149. lightspeed_stack-0.6.5/tests/e2e/rag/sources/lightspeed-field-notes.pdf +45 -0
  150. lightspeed_stack-0.6.5/tests/e2e/skills/echo/SKILL.md +19 -0
  151. lightspeed_stack-0.6.5/tests/e2e/skills/echo/references/guide.md +19 -0
  152. lightspeed_stack-0.6.5/tests/e2e/skills/summarize/SKILL.md +21 -0
  153. lightspeed_stack-0.6.5/tests/e2e/skills/summarize/references/guide.md +20 -0
  154. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/test_list.txt +12 -1
  155. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/utils/README.md +6 -0
  156. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/utils/llama_config_utils.py +18 -0
  157. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/utils/prow_utils.py +25 -7
  158. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/utils/utils.py +72 -0
  159. lightspeed_stack-0.6.5/tests/e2e-prow/rhoai/manifests/lightspeed/e2e-mock-tls-inference.yaml +104 -0
  160. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e-prow/rhoai/manifests/lightspeed/lightspeed-stack.yaml +6 -0
  161. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e-prow/rhoai/manifests/lightspeed/llama-stack-openai.yaml +51 -1
  162. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e-prow/rhoai/pipeline-konflux.sh +45 -8
  163. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e-prow/rhoai/pipeline-services-konflux.sh +17 -1
  164. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e-prow/rhoai/scripts/e2e-ops.sh +315 -69
  165. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/integration/conftest.py +317 -9
  166. lightspeed_stack-0.6.5/tests/integration/container_lifecycle/README.md +5 -0
  167. lightspeed_stack-0.6.5/tests/integration/container_lifecycle/test_container_lifecycle.py +628 -0
  168. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/integration/endpoints/README.md +6 -0
  169. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/integration/endpoints/test_health_integration.py +2 -2
  170. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/integration/endpoints/test_query_byok_integration.py +178 -134
  171. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/integration/endpoints/test_query_integration.py +139 -153
  172. lightspeed_stack-0.6.5/tests/integration/endpoints/test_responses_byok_integration.py +716 -0
  173. lightspeed_stack-0.6.5/tests/integration/endpoints/test_responses_integration.py +374 -0
  174. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/integration/endpoints/test_rlsapi_v1_integration.py +1 -1
  175. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/integration/endpoints/test_stream_interrupt_integration.py +19 -1
  176. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/integration/endpoints/test_streaming_query_byok_integration.py +195 -187
  177. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/integration/endpoints/test_streaming_query_integration.py +12 -12
  178. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/integration/test_rh_identity_integration.py +41 -0
  179. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/README.md +7 -1
  180. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/app/endpoints/conftest.py +3 -1
  181. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/app/endpoints/test_a2a.py +67 -0
  182. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/app/endpoints/test_feedback.py +123 -0
  183. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/app/endpoints/test_health.py +58 -1
  184. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/app/endpoints/test_mcp_servers.py +60 -2
  185. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/app/endpoints/test_metrics.py +2 -6
  186. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/app/endpoints/test_query.py +24 -15
  187. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/app/endpoints/test_responses.py +94 -10
  188. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/app/endpoints/test_responses_splunk.py +3 -3
  189. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/app/endpoints/test_rlsapi_v1.py +62 -126
  190. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/app/endpoints/test_shields.py +122 -8
  191. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/app/endpoints/test_stream_interrupt.py +78 -1
  192. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/app/endpoints/test_streaming_query.py +206 -313
  193. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/app/endpoints/test_tools.py +42 -0
  194. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/app/endpoints/test_vector_stores.py +100 -0
  195. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/app/test_main_middleware.py +65 -3
  196. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/authentication/README.md +3 -0
  197. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/authentication/test_auth.py +25 -2
  198. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/authentication/test_rh_identity.py +236 -6
  199. lightspeed_stack-0.6.5/tests/unit/authentication/test_trusted_proxy.py +507 -0
  200. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/authorization/test_azure_token_manager.py +9 -11
  201. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/authorization/test_middleware.py +25 -0
  202. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/cache/README.md +3 -0
  203. lightspeed_stack-0.6.5/tests/unit/conftest.py +144 -0
  204. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/models/README.md +3 -0
  205. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/models/config/README.md +12 -0
  206. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/models/config/test_byok_rag.py +68 -0
  207. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/models/config/test_dump_configuration.py +537 -1
  208. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/models/config/test_inference_configuration.py +68 -0
  209. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/models/config/test_llama_stack_configuration.py +134 -15
  210. lightspeed_stack-0.6.5/tests/unit/models/config/test_quota_handlers_config.py +750 -0
  211. lightspeed_stack-0.6.5/tests/unit/models/config/test_quota_limiter_config.py +408 -0
  212. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/models/config/test_quota_scheduler_config.py +94 -0
  213. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/models/config/test_rlsapi_v1_configuration.py +12 -17
  214. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/models/requests/README.md +1 -1
  215. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/models/requests/test_vector_store_requests.py +65 -1
  216. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/models/responses/test_successful_responses.py +53 -35
  217. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/observability/formats/test_rlsapi.py +4 -3
  218. lightspeed_stack-0.6.5/tests/unit/pydantic_ai_lightspeed/README.md +5 -0
  219. lightspeed_stack-0.6.5/tests/unit/pydantic_ai_lightspeed/__init__.py +1 -0
  220. lightspeed_stack-0.6.5/tests/unit/pydantic_ai_lightspeed/capabilities/README.md +5 -0
  221. lightspeed_stack-0.6.5/tests/unit/pydantic_ai_lightspeed/capabilities/__init__.py +1 -0
  222. lightspeed_stack-0.6.5/tests/unit/pydantic_ai_lightspeed/capabilities/question_validity/README.md +8 -0
  223. lightspeed_stack-0.6.5/tests/unit/pydantic_ai_lightspeed/capabilities/question_validity/__init__.py +1 -0
  224. lightspeed_stack-0.6.5/tests/unit/pydantic_ai_lightspeed/capabilities/question_validity/test_capability.py +571 -0
  225. lightspeed_stack-0.6.5/tests/unit/pydantic_ai_lightspeed/capabilities/redaction/__init__.py +1 -0
  226. lightspeed_stack-0.6.5/tests/unit/pydantic_ai_lightspeed/capabilities/redaction/test_capability.py +316 -0
  227. lightspeed_stack-0.6.5/tests/unit/pydantic_ai_lightspeed/capabilities/redaction/test_config.py +157 -0
  228. lightspeed_stack-0.6.5/tests/unit/pydantic_ai_lightspeed/capabilities/redaction/test_core.py +153 -0
  229. lightspeed_stack-0.6.5/tests/unit/pydantic_ai_lightspeed/llamastack/README.md +11 -0
  230. lightspeed_stack-0.6.5/tests/unit/pydantic_ai_lightspeed/llamastack/__init__.py +1 -0
  231. lightspeed_stack-0.6.5/tests/unit/pydantic_ai_lightspeed/llamastack/test_provider.py +156 -0
  232. lightspeed_stack-0.6.5/tests/unit/pydantic_ai_lightspeed/llamastack/test_transport.py +344 -0
  233. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/runners/test_uvicorn_runner.py +25 -12
  234. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/test_client.py +13 -3
  235. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/test_configuration.py +290 -2
  236. lightspeed_stack-0.6.5/tests/unit/test_degraded_mode.py +59 -0
  237. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/test_llama_stack_configuration.py +156 -0
  238. lightspeed_stack-0.6.5/tests/unit/test_llama_stack_synthesize.py +371 -0
  239. lightspeed_stack-0.6.5/tests/unit/test_log.py +115 -0
  240. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/utils/README.md +24 -0
  241. lightspeed_stack-0.6.5/tests/unit/utils/agents/README.md +11 -0
  242. lightspeed_stack-0.6.5/tests/unit/utils/agents/test_query.py +499 -0
  243. lightspeed_stack-0.6.5/tests/unit/utils/agents/test_streaming.py +1146 -0
  244. lightspeed_stack-0.6.5/tests/unit/utils/agents/test_tool_processor.py +637 -0
  245. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/utils/test_compaction.py +6 -21
  246. lightspeed_stack-0.6.5/tests/unit/utils/test_conversation_compaction.py +668 -0
  247. lightspeed_stack-0.6.5/tests/unit/utils/test_markdown_repair.py +518 -0
  248. lightspeed_stack-0.6.5/tests/unit/utils/test_pydantic_ai.py +409 -0
  249. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/utils/test_responses.py +101 -106
  250. lightspeed_stack-0.6.5/tests/unit/utils/test_schema_dumper.py +520 -0
  251. lightspeed_stack-0.6.5/tests/unit/utils/test_stream_interrupts.py +193 -0
  252. lightspeed_stack-0.6.5/tests/unit/utils/test_streaming_sse.py +277 -0
  253. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/utils/test_suid.py +53 -0
  254. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/utils/test_token_estimator.py +7 -35
  255. lightspeed_stack-0.6.0rc2/src/authentication/.ruff_cache/.gitignore +0 -2
  256. lightspeed_stack-0.6.0rc2/src/authentication/.ruff_cache/0.9.1/13770435568462002823 +0 -0
  257. lightspeed_stack-0.6.0rc2/src/authentication/.ruff_cache/0.9.1/2640992821107041526 +0 -0
  258. lightspeed_stack-0.6.0rc2/src/authentication/.ruff_cache/0.9.1/README.md +0 -2
  259. lightspeed_stack-0.6.0rc2/src/authentication/.ruff_cache/CACHEDIR.TAG +0 -1
  260. lightspeed_stack-0.6.0rc2/src/authentication/.ruff_cache/README.md +0 -2
  261. lightspeed_stack-0.6.0rc2/src/models/.ruff_cache/.gitignore +0 -2
  262. lightspeed_stack-0.6.0rc2/src/models/.ruff_cache/0.9.1/2435063725374233068 +0 -0
  263. lightspeed_stack-0.6.0rc2/src/models/.ruff_cache/0.9.1/README.md +0 -2
  264. lightspeed_stack-0.6.0rc2/src/models/.ruff_cache/CACHEDIR.TAG +0 -1
  265. lightspeed_stack-0.6.0rc2/src/models/.ruff_cache/README.md +0 -2
  266. lightspeed_stack-0.6.0rc2/src/models/README.md +0 -16
  267. lightspeed_stack-0.6.0rc2/src/models/api/README.md +0 -10
  268. lightspeed_stack-0.6.0rc2/src/models/common/README.md +0 -2
  269. lightspeed_stack-0.6.0rc2/src/models/common/health.py +0 -39
  270. lightspeed_stack-0.6.0rc2/src/models/common/responses/README.md +0 -8
  271. lightspeed_stack-0.6.0rc2/src/quota/.ruff_cache/.gitignore +0 -2
  272. lightspeed_stack-0.6.0rc2/src/quota/.ruff_cache/0.14.1/13216894937928385266 +0 -0
  273. lightspeed_stack-0.6.0rc2/src/quota/.ruff_cache/0.14.1/README.md +0 -2
  274. lightspeed_stack-0.6.0rc2/src/quota/.ruff_cache/0.9.1/11326792315657745171 +0 -0
  275. lightspeed_stack-0.6.0rc2/src/quota/.ruff_cache/0.9.1/README.md +0 -2
  276. lightspeed_stack-0.6.0rc2/src/quota/.ruff_cache/CACHEDIR.TAG +0 -1
  277. lightspeed_stack-0.6.0rc2/src/quota/.ruff_cache/README.md +0 -2
  278. lightspeed_stack-0.6.0rc2/src/utils/stream_interrupts.py +0 -148
  279. lightspeed_stack-0.6.0rc2/tests/e2e/.pdm-python +0 -1
  280. lightspeed_stack-0.6.0rc2/tests/e2e/features/skills.feature +0 -631
  281. lightspeed_stack-0.6.0rc2/tests/e2e/features/steps/tls.py +0 -225
  282. lightspeed_stack-0.6.0rc2/tests/e2e/features/tls.feature +0 -185
  283. lightspeed_stack-0.6.0rc2/tests/e2e/rag/README.md +0 -2
  284. lightspeed_stack-0.6.0rc2/tests/test_results/.coverage.integration +0 -0
  285. lightspeed_stack-0.6.0rc2/tests/test_results/.coverage.unit +0 -0
  286. lightspeed_stack-0.6.0rc2/tests/test_results/coverage_integration.json +0 -1
  287. lightspeed_stack-0.6.0rc2/tests/test_results/coverage_unit.json +0 -1
  288. lightspeed_stack-0.6.0rc2/tests/test_results/junit_integration.xml +0 -1
  289. lightspeed_stack-0.6.0rc2/tests/test_results/junit_unit.xml +0 -225
  290. lightspeed_stack-0.6.0rc2/tests/unit/app/.ruff_cache/.gitignore +0 -2
  291. lightspeed_stack-0.6.0rc2/tests/unit/app/.ruff_cache/0.9.1/10631576872848856737 +0 -0
  292. lightspeed_stack-0.6.0rc2/tests/unit/app/.ruff_cache/0.9.1/README.md +0 -2
  293. lightspeed_stack-0.6.0rc2/tests/unit/app/.ruff_cache/CACHEDIR.TAG +0 -1
  294. lightspeed_stack-0.6.0rc2/tests/unit/app/endpoints/.ruff_cache/.gitignore +0 -2
  295. lightspeed_stack-0.6.0rc2/tests/unit/app/endpoints/.ruff_cache/0.9.1/15310180828563549007 +0 -0
  296. lightspeed_stack-0.6.0rc2/tests/unit/app/endpoints/.ruff_cache/0.9.1/README.md +0 -2
  297. lightspeed_stack-0.6.0rc2/tests/unit/app/endpoints/.ruff_cache/CACHEDIR.TAG +0 -1
  298. lightspeed_stack-0.6.0rc2/tests/unit/conftest.py +0 -74
  299. lightspeed_stack-0.6.0rc2/tests/unit/models/config/test_quota_handlers_config.py +0 -24
  300. lightspeed_stack-0.6.0rc2/tests/unit/models/config/test_quota_limiter_config.py +0 -79
  301. lightspeed_stack-0.6.0rc2/tests/unit/test_log.py +0 -160
  302. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/LICENSE +0 -0
  303. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/a2a_storage/README.md +0 -0
  304. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/a2a_storage/__init__.py +0 -0
  305. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/a2a_storage/context_store.py +0 -0
  306. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/a2a_storage/in_memory_context_store.py +0 -0
  307. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/a2a_storage/postgres_context_store.py +0 -0
  308. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/a2a_storage/sqlite_context_store.py +0 -0
  309. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/a2a_storage/storage_factory.py +0 -0
  310. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/app/README.md +0 -0
  311. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/app/__init__.py +0 -0
  312. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/app/database.py +0 -0
  313. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/app/endpoints/TODO +0 -0
  314. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/app/endpoints/__init__.py +0 -0
  315. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/app/endpoints/a2a_openapi.py +0 -0
  316. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/app/endpoints/authorized.py +0 -0
  317. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/app/endpoints/conversations_v1.py +0 -0
  318. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/app/endpoints/conversations_v2.py +0 -0
  319. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/app/endpoints/feedback.py +0 -0
  320. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/app/endpoints/mcp_auth.py +0 -0
  321. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/app/endpoints/mcp_servers.py +0 -0
  322. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/app/endpoints/responses_telemetry.py +0 -0
  323. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/app/endpoints/stream_interrupt.py +0 -0
  324. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/app/endpoints/vector_stores.py +0 -0
  325. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/app/routers.py +0 -0
  326. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/authentication/api_key_token.py +0 -0
  327. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/authentication/interface.py +0 -0
  328. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/authentication/jwk_token.py +0 -0
  329. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/authentication/k8s.py +0 -0
  330. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/authentication/noop.py +0 -0
  331. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/authentication/noop_with_token.py +0 -0
  332. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/authentication/utils.py +0 -0
  333. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/authorization/README.md +0 -0
  334. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/authorization/__init__.py +0 -0
  335. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/authorization/azure_token_manager.py +0 -0
  336. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/authorization/resolvers.py +0 -0
  337. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/cache/__init__.py +0 -0
  338. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/cache/cache.py +0 -0
  339. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/cache/cache_entry.py +0 -0
  340. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/cache/cache_error.py +0 -0
  341. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/cache/cache_factory.py +0 -0
  342. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/cache/in_memory_cache.py +0 -0
  343. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/cache/noop_cache.py +0 -0
  344. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/cache/postgres_cache.py +0 -0
  345. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/cache/sqlite_cache.py +0 -0
  346. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/metrics/README.md +0 -0
  347. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/__init__.py +0 -0
  348. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/api/__init__.py +0 -0
  349. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/api/requests/__init__.py +0 -0
  350. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/api/requests/catalog.py +0 -0
  351. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/api/requests/conversations.py +0 -0
  352. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/api/requests/feedback.py +0 -0
  353. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/api/requests/mcp_servers.py +0 -0
  354. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/api/requests/prompts.py +0 -0
  355. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/api/requests/query.py +0 -0
  356. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/api/requests/responses_openai.py +0 -0
  357. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/api/requests/rlsapi.py +0 -0
  358. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/api/requests/vector_stores.py +0 -0
  359. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/api/responses/__init__.py +0 -0
  360. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/api/responses/constants.py +0 -0
  361. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/api/responses/error/__init__.py +0 -0
  362. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/api/responses/error/bad_request.py +0 -0
  363. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/api/responses/error/bases.py +0 -0
  364. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/api/responses/error/conflict.py +0 -0
  365. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/api/responses/error/content_too_large.py +0 -0
  366. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/api/responses/error/forbidden.py +0 -0
  367. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/api/responses/error/internal.py +0 -0
  368. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/api/responses/error/not_found.py +0 -0
  369. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/api/responses/error/service_unavailable.py +0 -0
  370. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/api/responses/error/too_many_requests.py +0 -0
  371. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/api/responses/error/unauthorized.py +0 -0
  372. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/api/responses/error/unprocessable_entity.py +0 -0
  373. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/api/responses/successful/__init__.py +0 -0
  374. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/api/responses/successful/bases.py +0 -0
  375. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/api/responses/successful/catalog.py +0 -0
  376. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/api/responses/successful/configuration.py +0 -0
  377. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/api/responses/successful/conversations.py +0 -0
  378. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/api/responses/successful/feedback.py +0 -0
  379. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/api/responses/successful/mcp_servers.py +0 -0
  380. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/api/responses/successful/prompts.py +0 -0
  381. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/api/responses/successful/query.py +0 -0
  382. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/api/responses/successful/responses_openai.py +0 -0
  383. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/api/responses/successful/rlsapi.py +0 -0
  384. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/api/responses/successful/vector_stores.py +0 -0
  385. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/common/conversation.py +0 -0
  386. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/common/feedback.py +0 -0
  387. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/common/mcp.py +0 -0
  388. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/common/moderation.py +0 -0
  389. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/common/query.py +0 -0
  390. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/common/responses/__init__.py +0 -0
  391. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/common/responses/responses_conversation_context.py +0 -0
  392. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/common/responses/types.py +0 -0
  393. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/common/transcripts.py +0 -0
  394. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/compaction.py +0 -0
  395. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/database/README.md +0 -0
  396. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/database/__init__.py +0 -0
  397. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/database/base.py +0 -0
  398. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/models/database/conversations.py +0 -0
  399. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/observability/__init__.py +0 -0
  400. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/observability/formats/README.md +0 -0
  401. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/observability/formats/__init__.py +0 -0
  402. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/observability/formats/responses.py +0 -0
  403. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/observability/formats/rlsapi.py +0 -0
  404. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/observability/splunk.py +0 -0
  405. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/quota/README.md +0 -0
  406. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/quota/__init__.py +0 -0
  407. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/quota/cluster_quota_limiter.py +0 -0
  408. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/quota/connect_pg.py +0 -0
  409. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/quota/connect_sqlite.py +0 -0
  410. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/quota/quota_exceed_error.py +0 -0
  411. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/quota/quota_limiter.py +0 -0
  412. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/quota/quota_limiter_factory.py +0 -0
  413. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/quota/revokable_quota_limiter.py +0 -0
  414. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/quota/sql.py +0 -0
  415. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/quota/token_usage_history.py +0 -0
  416. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/quota/user_quota_limiter.py +0 -0
  417. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/runners/README.md +0 -0
  418. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/runners/__init__.py +0 -0
  419. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/runners/quota_scheduler.py +0 -0
  420. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/telemetry/README.md +0 -0
  421. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/telemetry/__init__.py +0 -0
  422. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/telemetry/configuration_snapshot.py +0 -0
  423. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/utils/__init__.py +0 -0
  424. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/utils/checks.py +0 -0
  425. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/utils/common.py +0 -0
  426. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/utils/connection_decorator.py +0 -0
  427. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/utils/conversations.py +0 -0
  428. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/utils/llama_stack_version.py +0 -0
  429. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/utils/mcp_auth_headers.py +0 -0
  430. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/utils/mcp_headers.py +0 -0
  431. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/utils/mcp_oauth_probe.py +0 -0
  432. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/utils/prompts.py +0 -0
  433. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/utils/quota.py +0 -0
  434. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/utils/reranker.py +0 -0
  435. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/utils/rh_identity.py +0 -0
  436. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/utils/shields.py +0 -0
  437. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/utils/suid.py +0 -0
  438. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/utils/token_counter.py +0 -0
  439. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/utils/tool_formatter.py +0 -0
  440. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/src/utils/transcripts.py +0 -0
  441. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/__init__.py +0 -0
  442. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/benchmarks/README.md +0 -0
  443. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/benchmarks/conftest.py +0 -0
  444. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/benchmarks/data_generators.py +0 -0
  445. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/benchmarks/db_benchmarks.py +0 -0
  446. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/benchmarks/test_app_database.py +0 -0
  447. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/benchmarks/test_app_database_comparison.py +0 -0
  448. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/configuration/benchmarks-postgres.yaml +0 -0
  449. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/configuration/benchmarks-sqlite.yaml +0 -0
  450. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/configuration/lightspeed-stack-proper-name.yaml +0 -0
  451. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/configuration/lightspeed-stack.yaml +0 -0
  452. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/configuration/minimal-stack.yaml +0 -0
  453. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/configuration/multiline_system_prompt.txt +0 -0
  454. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/configuration/password +0 -0
  455. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/configuration/rag.txt +0 -0
  456. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/configuration/rh-identity-config.yaml +0 -0
  457. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/configuration/run.yaml +0 -0
  458. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/configuration/server.crt +0 -0
  459. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/configuration/server.key +0 -0
  460. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/configuration/system_prompt.txt +0 -0
  461. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/README.md +0 -0
  462. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/__init__.py +0 -0
  463. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/configs/README.md +0 -0
  464. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/configs/run-azure.yaml +0 -0
  465. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/configs/run-bedrock.yaml +0 -0
  466. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/configs/run-ci.yaml +0 -0
  467. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/configs/run-rhaiis.yaml +0 -0
  468. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/configs/run-vertexai.yaml +0 -0
  469. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/configs/run-watsonx.yaml +0 -0
  470. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/configuration/README.md +0 -0
  471. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/configuration/library-mode/README.md +0 -0
  472. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/configuration/library-mode/lightspeed-stack-auth-noop-token.yaml +0 -0
  473. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/configuration/library-mode/lightspeed-stack-auth-rh-identity.yaml +0 -0
  474. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/configuration/library-mode/lightspeed-stack-inline-rag.yaml +0 -0
  475. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/configuration/library-mode/lightspeed-stack-invalid-feedback-storage.yaml +0 -0
  476. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/configuration/library-mode/lightspeed-stack-invalid-mcp-file-auth.yaml +0 -0
  477. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/configuration/library-mode/lightspeed-stack-mcp-auth.yaml +0 -0
  478. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/configuration/library-mode/lightspeed-stack-mcp-client-auth.yaml +0 -0
  479. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/configuration/library-mode/lightspeed-stack-mcp-file-auth.yaml +0 -0
  480. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/configuration/library-mode/lightspeed-stack-mcp-kubernetes-auth.yaml +0 -0
  481. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/configuration/library-mode/lightspeed-stack-mcp-oauth-auth.yaml +0 -0
  482. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/configuration/library-mode/lightspeed-stack-mcp.yaml +0 -0
  483. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/configuration/library-mode/lightspeed-stack-no-cache.yaml +0 -0
  484. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/configuration/library-mode/lightspeed-stack-rbac.yaml +0 -0
  485. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/configuration/library-mode/lightspeed-stack.yaml +0 -0
  486. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/configuration/server-mode/README.md +0 -0
  487. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/configuration/server-mode/lightspeed-stack-auth-noop-token.yaml +0 -0
  488. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/configuration/server-mode/lightspeed-stack-auth-rh-identity.yaml +0 -0
  489. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/configuration/server-mode/lightspeed-stack-inline-rag.yaml +0 -0
  490. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/configuration/server-mode/lightspeed-stack-invalid-feedback-storage.yaml +0 -0
  491. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/configuration/server-mode/lightspeed-stack-invalid-mcp-file-auth.yaml +0 -0
  492. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/configuration/server-mode/lightspeed-stack-mcp-auth.yaml +0 -0
  493. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/configuration/server-mode/lightspeed-stack-mcp-client-auth.yaml +0 -0
  494. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/configuration/server-mode/lightspeed-stack-mcp-file-auth.yaml +0 -0
  495. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/configuration/server-mode/lightspeed-stack-mcp-kubernetes-auth.yaml +0 -0
  496. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/configuration/server-mode/lightspeed-stack-mcp-oauth-auth.yaml +0 -0
  497. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/configuration/server-mode/lightspeed-stack-mcp.yaml +0 -0
  498. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/configuration/server-mode/lightspeed-stack-no-cache.yaml +0 -0
  499. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/configuration/server-mode/lightspeed-stack-rbac.yaml +0 -0
  500. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/configuration/server-mode/lightspeed-stack.yaml +0 -0
  501. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/features/README.md +0 -0
  502. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/features/authorized_noop.feature +0 -0
  503. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/features/authorized_noop_token.feature +0 -0
  504. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/features/authorized_rh_identity.feature +0 -0
  505. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/features/conversation_cache_v2.feature +0 -0
  506. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/features/conversations.feature +0 -0
  507. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/features/faiss.feature +0 -0
  508. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/features/inline_rag.feature +0 -0
  509. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/features/mcp.feature +0 -0
  510. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/features/mcp_servers_api.feature +0 -0
  511. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/features/mcp_servers_api_auth.feature +0 -0
  512. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/features/mcp_servers_api_no_config.feature +0 -0
  513. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/features/models.feature +0 -0
  514. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/features/opentelemetry.feature +0 -0
  515. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/features/query.feature +0 -0
  516. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/features/rbac.feature +0 -0
  517. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/features/responses.feature +0 -0
  518. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/features/responses_streaming.feature +0 -0
  519. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/features/rest_api.feature +0 -0
  520. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/features/rlsapi_v1.feature +0 -0
  521. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/features/rlsapi_v1_errors.feature +0 -0
  522. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/features/smoketests.feature +0 -0
  523. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/features/steps/__init__.py +0 -0
  524. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/features/steps/auth.py +0 -0
  525. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/features/steps/common.py +0 -0
  526. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/features/steps/conversation.py +0 -0
  527. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/features/steps/feedback.py +0 -0
  528. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/features/steps/health.py +0 -0
  529. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/features/steps/info.py +0 -0
  530. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/features/steps/models.py +0 -0
  531. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/features/steps/place_holder.py +0 -0
  532. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/features/steps/rbac.py +0 -0
  533. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/features/steps/responses_steps.py +0 -0
  534. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/features/steps/rlsapi_v1.py +0 -0
  535. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/features/steps/shields.py +0 -0
  536. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/features/steps/token_counters.py +0 -0
  537. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/features/streaming_query.feature +0 -0
  538. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/gen_scenario_list.py +0 -0
  539. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/mock_jwks_server/Dockerfile +0 -0
  540. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/mock_jwks_server/README.md +0 -0
  541. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/mock_jwks_server/generate_tokens.py +0 -0
  542. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/mock_jwks_server/server.py +0 -0
  543. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/mock_mcp_server/Dockerfile +0 -0
  544. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/mock_mcp_server/README.md +0 -0
  545. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/mock_mcp_server/server.py +0 -0
  546. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/mock_tls_inference_server/Dockerfile +0 -0
  547. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/mock_tls_inference_server/README.md +0 -0
  548. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/patches/README.md +0 -0
  549. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/patches/docker-compose-mcp-volumes-selinux.patch +0 -0
  550. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/proxy/README.md +0 -0
  551. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/proxy/__init__.py +0 -0
  552. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/proxy/interception_proxy.py +0 -0
  553. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/proxy/tunnel_proxy.py +0 -0
  554. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/rag/kv_store.db +0 -0
  555. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/secrets/README.md +0 -0
  556. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/secrets/invalid-mcp-token +0 -0
  557. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/secrets/mcp-token +0 -0
  558. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/test_api.py +0 -0
  559. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/utils/llama_prow_utils.py +0 -0
  560. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e/utils/llama_stack_utils.py +0 -0
  561. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e-prow/rhoai/.e2e_exit_code +0 -0
  562. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e-prow/rhoai/configs/run.yaml +0 -0
  563. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e-prow/rhoai/manifests/gpu/cluster-policy.yaml +0 -0
  564. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e-prow/rhoai/manifests/gpu/create-nfd.yaml +0 -0
  565. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e-prow/rhoai/manifests/lightspeed/e2e-interception-proxy.yaml +0 -0
  566. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e-prow/rhoai/manifests/lightspeed/e2e-tunnel-proxy.yaml +0 -0
  567. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e-prow/rhoai/manifests/lightspeed/llama-stack-prow.yaml +0 -0
  568. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e-prow/rhoai/manifests/lightspeed/mock-jwks.yaml +0 -0
  569. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e-prow/rhoai/manifests/lightspeed/mock-mcp.yaml +0 -0
  570. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e-prow/rhoai/manifests/namespaces/nfd.yaml +0 -0
  571. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e-prow/rhoai/manifests/namespaces/nvidia-operator.yaml +0 -0
  572. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e-prow/rhoai/manifests/operators/ds-cluster.yaml +0 -0
  573. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e-prow/rhoai/manifests/operators/operatorgroup.yaml +0 -0
  574. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e-prow/rhoai/manifests/operators/operators.yaml +0 -0
  575. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e-prow/rhoai/manifests/vllm/vllm-inference-service-cpu.yaml +0 -0
  576. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e-prow/rhoai/manifests/vllm/vllm-inference-service-gpu.yaml +0 -0
  577. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e-prow/rhoai/manifests/vllm/vllm-runtime-cpu.yaml +0 -0
  578. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e-prow/rhoai/manifests/vllm/vllm-runtime-gpu.yaml +0 -0
  579. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e-prow/rhoai/pipeline-services.sh +0 -0
  580. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e-prow/rhoai/pipeline-test-pod.sh +0 -0
  581. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e-prow/rhoai/pipeline-vllm.sh +0 -0
  582. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e-prow/rhoai/pipeline.sh +0 -0
  583. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e-prow/rhoai/run-tests.sh +0 -0
  584. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e-prow/rhoai/scripts/bootstrap.sh +0 -0
  585. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e-prow/rhoai/scripts/deploy-vllm.sh +0 -0
  586. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e-prow/rhoai/scripts/fetch-vllm-image.sh +0 -0
  587. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e-prow/rhoai/scripts/get-vllm-pod-info.sh +0 -0
  588. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/e2e-prow/rhoai/scripts/gpu-setup.sh +0 -0
  589. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/integration/README.md +0 -0
  590. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/integration/__init__.py +0 -0
  591. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/integration/endpoints/__init__.py +0 -0
  592. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/integration/endpoints/test_authorized_endpoint.py +0 -0
  593. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/integration/endpoints/test_config_integration.py +0 -0
  594. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/integration/endpoints/test_conversations_v1_integration.py +0 -0
  595. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/integration/endpoints/test_conversations_v2_integration.py +0 -0
  596. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/integration/endpoints/test_info_integration.py +0 -0
  597. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/integration/endpoints/test_model_list.py +0 -0
  598. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/integration/endpoints/test_root_endpoint.py +0 -0
  599. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/integration/endpoints/test_tools_integration.py +0 -0
  600. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/integration/test_configuration.py +0 -0
  601. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/integration/test_middleware_integration.py +0 -0
  602. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/integration/test_openapi_json.py +0 -0
  603. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/integration/test_version.py +0 -0
  604. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/profiles/empty.py +0 -0
  605. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/profiles/syntax_error.py +0 -0
  606. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/profiles/test/profile.py +0 -0
  607. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/profiles/test_four/profile.py +0 -0
  608. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/profiles/test_three/profile.py +0 -0
  609. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/profiles/test_two/test.txt +0 -0
  610. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/__init__.py +0 -0
  611. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/a2a_storage/README.md +0 -0
  612. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/a2a_storage/__init__.py +0 -0
  613. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/a2a_storage/test_in_memory_context_store.py +0 -0
  614. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/a2a_storage/test_sqlite_context_store.py +0 -0
  615. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/a2a_storage/test_storage_factory.py +0 -0
  616. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/app/README.md +0 -0
  617. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/app/__init__.py +0 -0
  618. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/app/endpoints/README.md +0 -0
  619. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/app/endpoints/__init__.py +0 -0
  620. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/app/endpoints/test_authorized.py +0 -0
  621. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/app/endpoints/test_config.py +0 -0
  622. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/app/endpoints/test_conversations.py +0 -0
  623. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/app/endpoints/test_conversations_v2.py +0 -0
  624. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/app/endpoints/test_info.py +0 -0
  625. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/app/endpoints/test_mcp_auth.py +0 -0
  626. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/app/endpoints/test_models.py +0 -0
  627. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/app/endpoints/test_prompts.py +0 -0
  628. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/app/endpoints/test_providers.py +0 -0
  629. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/app/endpoints/test_rags.py +0 -0
  630. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/app/endpoints/test_root.py +0 -0
  631. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/app/test_database.py +0 -0
  632. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/app/test_routers.py +0 -0
  633. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/authentication/__init__.py +0 -0
  634. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/authentication/test_api_key_token.py +0 -0
  635. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/authentication/test_jwk_token.py +0 -0
  636. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/authentication/test_k8s.py +0 -0
  637. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/authentication/test_noop.py +0 -0
  638. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/authentication/test_noop_with_token.py +0 -0
  639. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/authentication/test_utils.py +0 -0
  640. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/authorization/README.md +0 -0
  641. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/authorization/__init__.py +0 -0
  642. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/authorization/test_resolvers.py +0 -0
  643. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/cache/__init__.py +0 -0
  644. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/cache/test_cache_factory.py +0 -0
  645. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/cache/test_in_memory_cache.py +0 -0
  646. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/cache/test_noop_cache.py +0 -0
  647. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/cache/test_postgres_cache.py +0 -0
  648. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/cache/test_sqlite_cache.py +0 -0
  649. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/metrics/README.md +0 -0
  650. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/metrics/__init__.py +0 -0
  651. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/metrics/test_recording.py +0 -0
  652. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/metrics/test_utis.py +0 -0
  653. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/models/__init__.py +0 -0
  654. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/models/config/__init__.py +0 -0
  655. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/models/config/test_a2a_state_configuration.py +0 -0
  656. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/models/config/test_approvals_configuration.py +0 -0
  657. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/models/config/test_authentication_configuration.py +0 -0
  658. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/models/config/test_compaction_configuration.py +0 -0
  659. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/models/config/test_conversation_history.py +0 -0
  660. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/models/config/test_cors.py +0 -0
  661. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/models/config/test_customization.py +0 -0
  662. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/models/config/test_database_configuration.py +0 -0
  663. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/models/config/test_in_memory_cache_configuration.py +0 -0
  664. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/models/config/test_jwt_role_rule.py +0 -0
  665. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/models/config/test_model_context_protocol_server.py +0 -0
  666. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/models/config/test_postgresql_database_configuration.py +0 -0
  667. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/models/config/test_rag_configuration.py +0 -0
  668. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/models/config/test_reranker_configuration.py +0 -0
  669. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/models/config/test_service_configuration.py +0 -0
  670. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/models/config/test_skills_configuration.py +0 -0
  671. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/models/config/test_splunk_configuration.py +0 -0
  672. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/models/config/test_tls_configuration.py +0 -0
  673. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/models/config/test_user_data_collection.py +0 -0
  674. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/models/requests/__init__.py +0 -0
  675. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/models/requests/test_attachment.py +0 -0
  676. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/models/requests/test_feedback_request.py +0 -0
  677. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/models/requests/test_feedback_status_update_request.py +0 -0
  678. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/models/requests/test_query_request.py +0 -0
  679. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/models/requests/test_responses_request.py +0 -0
  680. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/models/responses/README.md +0 -0
  681. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/models/responses/__init__.py +0 -0
  682. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/models/responses/test_authorized_response.py +0 -0
  683. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/models/responses/test_error_responses.py +0 -0
  684. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/models/responses/test_query_response.py +0 -0
  685. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/models/responses/test_rag_chunk.py +0 -0
  686. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/models/responses/test_response_types.py +0 -0
  687. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/models/responses/test_types.py +0 -0
  688. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/models/rlsapi/README.md +0 -0
  689. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/models/rlsapi/__init__.py +0 -0
  690. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/models/rlsapi/test_requests.py +0 -0
  691. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/models/rlsapi/test_responses.py +0 -0
  692. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/models/test_compaction.py +0 -0
  693. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/observability/README.md +0 -0
  694. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/observability/__init__.py +0 -0
  695. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/observability/formats/README.md +0 -0
  696. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/observability/formats/__init__.py +0 -0
  697. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/observability/formats/test_responses.py +0 -0
  698. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/observability/test_splunk.py +0 -0
  699. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/quota/README.md +0 -0
  700. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/quota/__init__.py +0 -0
  701. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/quota/test_cluster_quota_limiter.py +0 -0
  702. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/quota/test_connect_pg.py +0 -0
  703. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/quota/test_connect_sqlite.py +0 -0
  704. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/quota/test_quota_exceed_error.py +0 -0
  705. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/quota/test_quota_limiter_factory.py +0 -0
  706. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/quota/test_user_quota_limiter.py +0 -0
  707. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/runners/README.md +0 -0
  708. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/runners/__init__.py +0 -0
  709. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/telemetry/README.md +0 -0
  710. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/telemetry/__init__.py +0 -0
  711. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/telemetry/conftest.py +0 -0
  712. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/telemetry/test_configuration_snapshot.py +0 -0
  713. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/test_configuration_unknown_fields.py +0 -0
  714. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/test_lightspeed_stack.py +0 -0
  715. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/test_sentry.py +0 -0
  716. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/utils/__init__.py +0 -0
  717. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/utils/auth_helpers.py +0 -0
  718. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/utils/test_checks.py +0 -0
  719. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/utils/test_common.py +0 -0
  720. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/utils/test_connection_decorator.py +0 -0
  721. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/utils/test_conversations.py +0 -0
  722. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/utils/test_endpoints.py +0 -0
  723. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/utils/test_llama_stack_version.py +0 -0
  724. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/utils/test_mcp_auth_headers.py +0 -0
  725. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/utils/test_mcp_headers.py +0 -0
  726. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/utils/test_prompts.py +0 -0
  727. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/utils/test_query.py +0 -0
  728. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/utils/test_rh_identity.py +0 -0
  729. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/utils/test_shields.py +0 -0
  730. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/utils/test_tool_formatter.py +0 -0
  731. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/utils/test_transcripts.py +0 -0
  732. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/utils/test_types.py +0 -0
  733. {lightspeed_stack-0.6.0rc2 → lightspeed_stack-0.6.5}/tests/unit/utils/test_vector_search.py +0 -0
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: lightspeed-stack
3
- Version: 0.6.0rc2
3
+ Version: 0.6.5
4
4
  Summary: LLM tooling stack
5
5
  Keywords: LLM,RAG
6
- Maintainer-Email: =?utf-8?b?UGF2ZWwgVGnFoW5vdnNrw70=?= <tisnik@centrum.cz>
6
+ Maintainer-Email: Pavel Tišnovský <tisnik@centrum.cz>
7
7
  License: Apache License
8
8
  Version 2.0, January 2004
9
9
  http://www.apache.org/licenses/
@@ -215,7 +215,7 @@ Classifier: License :: OSI Approved :: Apache Software License
215
215
  Project-URL: Homepage, https://github.com/lightspeed-core/lightspeed-stack
216
216
  Project-URL: Issues, https://github.com/lightspeed-core/lightspeed-stack/issues
217
217
  Requires-Python: <3.14,>=3.12
218
- Requires-Dist: fastapi>=0.115.12
218
+ Requires-Dist: fastapi>=0.138.0
219
219
  Requires-Dist: uvicorn>=0.34.3
220
220
  Requires-Dist: kubernetes>=30.1.0
221
221
  Requires-Dist: llama-stack==0.6.0
@@ -249,6 +249,9 @@ 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
254
+ Requires-Dist: setuptools-scm<10
252
255
  Description-Content-Type: text/markdown
253
256
 
254
257
  # Lightspeed Core Stack (LCS)
@@ -395,7 +398,7 @@ Lightspeed Core Stack is based on the FastAPI framework (Uvicorn). The service i
395
398
  | IBM WatsonX | https://www.ibm.com/products/watsonx |
396
399
  | AWS Bedrock | https://aws.amazon.com/bedrock |
397
400
  | RHOAI (vLLM) | See tests/e2e-prow/rhoai/configs/run.yaml |
398
- | RHEL AI (vLLM) | See tests/e2e/configs/run-rhelai.yaml |
401
+ | RHEL AI (RHAIIS/vLLM) | See tests/e2e/configs/run-rhelai.yaml |
399
402
 
400
403
  See `docs/providers.md` for configuration details.
401
404
 
@@ -413,8 +416,23 @@ Lightspeed Core Stack is based on the FastAPI framework (Uvicorn). The service i
413
416
 
414
417
  # Installation
415
418
 
416
- Installation steps depends on operation system. Please look at instructions for your system:
419
+ ## Clone the Repository
420
+
421
+ Lightspeed Stack uses a git submodule for external providers (required for features like OKP RAG). Clone with submodules:
417
422
 
423
+ ```bash
424
+ git clone --recursive https://github.com/lightspeed-core/lightspeed-stack.git
425
+ cd lightspeed-stack
426
+ ```
427
+
428
+ **If you already cloned without `--recursive`:**
429
+ ```bash
430
+ git submodule update --init
431
+ ```
432
+
433
+ ## System-Specific Installation
434
+
435
+ Installation steps depends on operation system. Please look at instructions for your system:
418
436
 
419
437
  - [Linux installation](https://lightspeed-core.github.io/lightspeed-stack/installation_linux)
420
438
  - [macOS installation](https://lightspeed-core.github.io/lightspeed-stack/installation_macos)
@@ -441,7 +459,7 @@ To quickly get hands on LCS, we can run it using the default configurations prov
441
459
  ```
442
460
  4. access LCS web UI at [http://localhost:8080/](http://localhost:8080/)
443
461
 
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.
462
+ **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
463
 
446
464
  ## Container Runtime Requirements
447
465
 
@@ -452,6 +470,8 @@ The Makefile requires either Podman or Docker to launch the Llama Stack containe
452
470
 
453
471
  The Makefile will auto-detect which runtime is available.
454
472
 
473
+ **For advanced usage** including customization options, cleanup commands, and troubleshooting, see the [Container Orchestration Guide](docs/container_orchestration.md).
474
+
455
475
 
456
476
  # Configuration
457
477
 
@@ -478,8 +498,7 @@ __Note__: Support for individual models is dependent on the specific inference p
478
498
  | 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
499
  | OpenAI | gpt-3.5-turbo, gpt-4 | No | remote::openai | |
480
500
  | 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) |
501
+ | 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
502
  | 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
503
  | Azure | gpt-5-chat, gpt-4.1, gpt-4.1-mini, gpt-4.1-nano, o1-mini | No or limited | remote::azure | |
485
504
  | 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) |
@@ -21,7 +21,7 @@ keywords = [
21
21
  requires-python = ">=3.12,<3.14"
22
22
  readme = "README.md"
23
23
  dependencies = [
24
- "fastapi>=0.115.12",
24
+ "fastapi>=0.138.0",
25
25
  "uvicorn>=0.34.3",
26
26
  "kubernetes>=30.1.0",
27
27
  "llama-stack==0.6.0",
@@ -55,8 +55,11 @@ 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",
60
+ "setuptools-scm<10",
58
61
  ]
59
- version = "0.6.0rc2"
62
+ version = "0.6.5"
60
63
 
61
64
  [project.license]
62
65
  file = "LICENSE"
@@ -104,6 +107,10 @@ pythonpath = [
104
107
  addopts = [
105
108
  "--import-mode=importlib",
106
109
  ]
110
+ markers = [
111
+ "destructive: marks tests as destructive (deselect with '-m \"not destructive\"')",
112
+ "order: controls test execution order (requires pytest-order plugin)",
113
+ ]
107
114
 
108
115
  [tool.pylint.main]
109
116
  source-roots = "src"
@@ -116,6 +123,11 @@ disable = [
116
123
  "R0801",
117
124
  ]
118
125
 
126
+ [tool.black]
127
+ target-version = [
128
+ "py312",
129
+ ]
130
+
119
131
  [tool.ruff]
120
132
  line-length = 88
121
133
  extend-exclude = [
@@ -157,6 +169,7 @@ dev = [
157
169
  "pytest-cov>=5.0.0",
158
170
  "pytest-mock>=3.14.0",
159
171
  "pytest-asyncio>=1.0.0",
172
+ "pytest-order>=1.2.0",
160
173
  "pyright>=1.1.401",
161
174
  "pylint>=3.3.7",
162
175
  "pydocstyle>=6.3.0",
@@ -196,7 +209,7 @@ llslibdev = [
196
209
  "transformers>=4.34.0",
197
210
  "numpy==2.3.5",
198
211
  "mcp>=1.23.0",
199
- "torch==2.9.0",
212
+ "torch==2.10.0",
200
213
  "trl>=0.18.2",
201
214
  "peft>=0.15.2",
202
215
  "google-cloud-aiplatform>=1.130.0",
@@ -210,6 +223,7 @@ llslibdev = [
210
223
  "pydantic>=2.10.6",
211
224
  "protobuf>=6.33.5",
212
225
  "filelock>=3.20.3",
226
+ "uv-build==0.11.8",
213
227
  ]
214
228
  build = [
215
229
  "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.