lightspeed-stack 0.6.2__tar.gz → 0.7.0rc2__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 (1168) hide show
  1. lightspeed_stack-0.7.0rc2/PKG-INFO +1819 -0
  2. lightspeed_stack-0.7.0rc2/README.md +1561 -0
  3. lightspeed_stack-0.7.0rc2/pyproject.toml +269 -0
  4. lightspeed_stack-0.7.0rc2/src/a2a_storage/README.md +26 -0
  5. lightspeed_stack-0.7.0rc2/src/a2a_storage/context_store.py +58 -0
  6. lightspeed_stack-0.7.0rc2/src/a2a_storage/in_memory_context_store.py +93 -0
  7. lightspeed_stack-0.7.0rc2/src/a2a_storage/postgres_context_store.py +143 -0
  8. lightspeed_stack-0.7.0rc2/src/a2a_storage/sqlite_context_store.py +144 -0
  9. lightspeed_stack-0.7.0rc2/src/app/README.md +18 -0
  10. lightspeed_stack-0.7.0rc2/src/app/endpoints/README.md +114 -0
  11. lightspeed_stack-0.7.0rc2/src/app/endpoints/a2a.py +1253 -0
  12. lightspeed_stack-0.7.0rc2/src/app/endpoints/authorized.py +56 -0
  13. lightspeed_stack-0.7.0rc2/src/app/endpoints/config.py +77 -0
  14. lightspeed_stack-0.7.0rc2/src/app/endpoints/conversations_v1.py +574 -0
  15. lightspeed_stack-0.7.0rc2/src/app/endpoints/conversations_v2.py +300 -0
  16. lightspeed_stack-0.7.0rc2/src/app/endpoints/feedback.py +349 -0
  17. lightspeed_stack-0.7.0rc2/src/app/endpoints/health.py +264 -0
  18. lightspeed_stack-0.7.0rc2/src/app/endpoints/info.py +100 -0
  19. lightspeed_stack-0.7.0rc2/src/app/endpoints/mcp_auth.py +102 -0
  20. lightspeed_stack-0.7.0rc2/src/app/endpoints/mcp_servers.py +225 -0
  21. lightspeed_stack-0.7.0rc2/src/app/endpoints/metrics.py +69 -0
  22. lightspeed_stack-0.7.0rc2/src/app/endpoints/models.py +116 -0
  23. lightspeed_stack-0.7.0rc2/src/app/endpoints/prompts.py +399 -0
  24. lightspeed_stack-0.7.0rc2/src/app/endpoints/providers.py +187 -0
  25. lightspeed_stack-0.7.0rc2/src/app/endpoints/query.py +363 -0
  26. lightspeed_stack-0.7.0rc2/src/app/endpoints/rags.py +221 -0
  27. lightspeed_stack-0.7.0rc2/src/app/endpoints/responses.py +1470 -0
  28. lightspeed_stack-0.7.0rc2/src/app/endpoints/rlsapi_v1.py +888 -0
  29. lightspeed_stack-0.7.0rc2/src/app/endpoints/root.py +824 -0
  30. lightspeed_stack-0.7.0rc2/src/app/endpoints/saved_prompts.py +353 -0
  31. lightspeed_stack-0.7.0rc2/src/app/endpoints/shields.py +78 -0
  32. lightspeed_stack-0.7.0rc2/src/app/endpoints/skills.py +69 -0
  33. lightspeed_stack-0.7.0rc2/src/app/endpoints/streaming_query.py +507 -0
  34. lightspeed_stack-0.7.0rc2/src/app/endpoints/tools.py +182 -0
  35. lightspeed_stack-0.7.0rc2/src/app/endpoints/vector_stores.py +969 -0
  36. lightspeed_stack-0.7.0rc2/src/app/main.py +309 -0
  37. lightspeed_stack-0.7.0rc2/src/app/routers.py +83 -0
  38. lightspeed_stack-0.7.0rc2/src/authentication/README.md +42 -0
  39. lightspeed_stack-0.7.0rc2/src/authentication/rh_identity.py +453 -0
  40. lightspeed_stack-0.7.0rc2/src/authorization/README.md +18 -0
  41. lightspeed_stack-0.7.0rc2/src/cache/README.md +38 -0
  42. lightspeed_stack-0.7.0rc2/src/data/README.md +6 -0
  43. lightspeed_stack-0.7.0rc2/src/data/__init__.py +8 -0
  44. lightspeed_stack-0.7.0rc2/src/data/default_run.yaml +124 -0
  45. lightspeed_stack-0.7.0rc2/src/metrics/README.md +14 -0
  46. lightspeed_stack-0.7.0rc2/src/metrics/utils.py +53 -0
  47. lightspeed_stack-0.7.0rc2/src/models/README.md +14 -0
  48. lightspeed_stack-0.7.0rc2/src/models/api/README.md +6 -0
  49. lightspeed_stack-0.7.0rc2/src/models/api/requests/README.md +46 -0
  50. lightspeed_stack-0.7.0rc2/src/models/api/requests/__init__.py +46 -0
  51. lightspeed_stack-0.7.0rc2/src/models/api/requests/prompts.py +86 -0
  52. lightspeed_stack-0.7.0rc2/src/models/api/requests/query.py +253 -0
  53. lightspeed_stack-0.7.0rc2/src/models/api/requests/responses_openai.py +175 -0
  54. lightspeed_stack-0.7.0rc2/src/models/api/requests/saved_prompts.py +38 -0
  55. lightspeed_stack-0.7.0rc2/src/models/api/responses/README.md +10 -0
  56. lightspeed_stack-0.7.0rc2/src/models/api/responses/__init__.py +5 -0
  57. lightspeed_stack-0.7.0rc2/src/models/api/responses/constants.py +35 -0
  58. lightspeed_stack-0.7.0rc2/src/models/api/responses/error/README.md +50 -0
  59. lightspeed_stack-0.7.0rc2/src/models/api/responses/error/__init__.py +36 -0
  60. lightspeed_stack-0.7.0rc2/src/models/api/responses/error/bad_request.py +61 -0
  61. lightspeed_stack-0.7.0rc2/src/models/api/responses/error/conflict.py +130 -0
  62. lightspeed_stack-0.7.0rc2/src/models/api/responses/error/content_too_large.py +148 -0
  63. lightspeed_stack-0.7.0rc2/src/models/api/responses/error/forbidden.py +228 -0
  64. lightspeed_stack-0.7.0rc2/src/models/api/responses/error/service_unavailable.py +51 -0
  65. lightspeed_stack-0.7.0rc2/src/models/api/responses/error/too_many_requests.py +188 -0
  66. lightspeed_stack-0.7.0rc2/src/models/api/responses/error/unprocessable_entity.py +72 -0
  67. lightspeed_stack-0.7.0rc2/src/models/api/responses/successful/README.md +58 -0
  68. lightspeed_stack-0.7.0rc2/src/models/api/responses/successful/__init__.py +121 -0
  69. lightspeed_stack-0.7.0rc2/src/models/api/responses/successful/catalog.py +312 -0
  70. lightspeed_stack-0.7.0rc2/src/models/api/responses/successful/configuration.py +126 -0
  71. lightspeed_stack-0.7.0rc2/src/models/api/responses/successful/probes.py +220 -0
  72. lightspeed_stack-0.7.0rc2/src/models/api/responses/successful/prompts.py +119 -0
  73. lightspeed_stack-0.7.0rc2/src/models/api/responses/successful/query.py +255 -0
  74. lightspeed_stack-0.7.0rc2/src/models/api/responses/successful/responses_openai.py +210 -0
  75. lightspeed_stack-0.7.0rc2/src/models/api/responses/successful/saved_prompts.py +177 -0
  76. lightspeed_stack-0.7.0rc2/src/models/api/responses/successful/vector_stores.py +304 -0
  77. lightspeed_stack-0.7.0rc2/src/models/common/README.md +54 -0
  78. lightspeed_stack-0.7.0rc2/src/models/common/__init__.py +74 -0
  79. lightspeed_stack-0.7.0rc2/src/models/common/agents/README.md +14 -0
  80. lightspeed_stack-0.7.0rc2/src/models/common/agents/__init__.py +39 -0
  81. lightspeed_stack-0.7.0rc2/src/models/common/agents/stream_payloads.py +281 -0
  82. lightspeed_stack-0.7.0rc2/src/models/common/health.py +58 -0
  83. lightspeed_stack-0.7.0rc2/src/models/common/models.py +31 -0
  84. lightspeed_stack-0.7.0rc2/src/models/common/moderation.py +36 -0
  85. lightspeed_stack-0.7.0rc2/src/models/common/query.py +215 -0
  86. lightspeed_stack-0.7.0rc2/src/models/common/responses/README.md +22 -0
  87. lightspeed_stack-0.7.0rc2/src/models/common/responses/__init__.py +25 -0
  88. lightspeed_stack-0.7.0rc2/src/models/common/responses/contexts.py +116 -0
  89. lightspeed_stack-0.7.0rc2/src/models/common/responses/responses_api_params.py +170 -0
  90. lightspeed_stack-0.7.0rc2/src/models/common/responses/responses_conversation_context.py +33 -0
  91. lightspeed_stack-0.7.0rc2/src/models/common/responses/types.py +81 -0
  92. lightspeed_stack-0.7.0rc2/src/models/common/shields.py +30 -0
  93. lightspeed_stack-0.7.0rc2/src/models/common/skills.py +17 -0
  94. lightspeed_stack-0.7.0rc2/src/models/common/tools.py +37 -0
  95. lightspeed_stack-0.7.0rc2/src/models/common/turn_summary.py +159 -0
  96. lightspeed_stack-0.7.0rc2/src/models/compaction.py +70 -0
  97. lightspeed_stack-0.7.0rc2/src/models/config.py +3595 -0
  98. lightspeed_stack-0.7.0rc2/src/models/database/README.md +18 -0
  99. lightspeed_stack-0.7.0rc2/src/models/database/conversations.py +73 -0
  100. lightspeed_stack-0.7.0rc2/src/models/database/saved_prompts.py +35 -0
  101. lightspeed_stack-0.7.0rc2/src/observability/README.md +18 -0
  102. lightspeed_stack-0.7.0rc2/src/observability/__init__.py +121 -0
  103. lightspeed_stack-0.7.0rc2/src/observability/formats/README.md +14 -0
  104. lightspeed_stack-0.7.0rc2/src/observability/formats/__init__.py +15 -0
  105. lightspeed_stack-0.7.0rc2/src/observability/profiling.py +38 -0
  106. lightspeed_stack-0.7.0rc2/src/observability/sentry.py +112 -0
  107. lightspeed_stack-0.7.0rc2/src/pydantic_ai_lightspeed/README.md +6 -0
  108. lightspeed_stack-0.7.0rc2/src/pydantic_ai_lightspeed/capabilities/README.md +10 -0
  109. lightspeed_stack-0.7.0rc2/src/pydantic_ai_lightspeed/capabilities/base.py +18 -0
  110. lightspeed_stack-0.7.0rc2/src/pydantic_ai_lightspeed/capabilities/question_validity/README.md +10 -0
  111. lightspeed_stack-0.7.0rc2/src/pydantic_ai_lightspeed/capabilities/question_validity/_capability.py +231 -0
  112. lightspeed_stack-0.7.0rc2/src/pydantic_ai_lightspeed/capabilities/redaction/README.md +14 -0
  113. lightspeed_stack-0.7.0rc2/src/pydantic_ai_lightspeed/capabilities/redaction/__init__.py +21 -0
  114. lightspeed_stack-0.7.0rc2/src/pydantic_ai_lightspeed/capabilities/redaction/_capability.py +340 -0
  115. lightspeed_stack-0.7.0rc2/src/pydantic_ai_lightspeed/ogx/README.md +18 -0
  116. lightspeed_stack-0.7.0rc2/src/pydantic_ai_lightspeed/ogx/__init__.py +6 -0
  117. lightspeed_stack-0.7.0rc2/src/pydantic_ai_lightspeed/ogx/_model.py +543 -0
  118. lightspeed_stack-0.7.0rc2/src/pydantic_ai_lightspeed/ogx/_provider.py +152 -0
  119. lightspeed_stack-0.7.0rc2/src/pydantic_ai_lightspeed/ogx/_transport.py +328 -0
  120. lightspeed_stack-0.7.0rc2/src/quota/README.md +46 -0
  121. lightspeed_stack-0.7.0rc2/src/quota/quota_limiter.py +195 -0
  122. lightspeed_stack-0.7.0rc2/src/quota/token_usage_history.py +202 -0
  123. lightspeed_stack-0.7.0rc2/src/runners/README.md +14 -0
  124. lightspeed_stack-0.7.0rc2/src/runners/quota_scheduler.py +400 -0
  125. lightspeed_stack-0.7.0rc2/src/runners/uvicorn.py +47 -0
  126. lightspeed_stack-0.7.0rc2/src/telemetry/README.md +10 -0
  127. lightspeed_stack-0.7.0rc2/src/telemetry/__init__.py +7 -0
  128. lightspeed_stack-0.7.0rc2/src/telemetry/configuration_snapshot.py +790 -0
  129. lightspeed_stack-0.7.0rc2/src/utils/README.md +158 -0
  130. lightspeed_stack-0.7.0rc2/src/utils/agents/README.md +22 -0
  131. lightspeed_stack-0.7.0rc2/src/utils/agents/__init__.py +1 -0
  132. lightspeed_stack-0.7.0rc2/src/utils/agents/error_handler.py +123 -0
  133. lightspeed_stack-0.7.0rc2/src/utils/agents/query.py +358 -0
  134. lightspeed_stack-0.7.0rc2/src/utils/agents/streaming.py +692 -0
  135. lightspeed_stack-0.7.0rc2/src/utils/agents/tool_processor.py +538 -0
  136. lightspeed_stack-0.7.0rc2/src/utils/builtin_tools.py +117 -0
  137. lightspeed_stack-0.7.0rc2/src/utils/common.py +45 -0
  138. lightspeed_stack-0.7.0rc2/src/utils/compaction.py +402 -0
  139. lightspeed_stack-0.7.0rc2/src/utils/conversation_compaction.py +798 -0
  140. lightspeed_stack-0.7.0rc2/src/utils/conversations.py +644 -0
  141. lightspeed_stack-0.7.0rc2/src/utils/degraded_mode.py +60 -0
  142. lightspeed_stack-0.7.0rc2/src/utils/dumpers/README.md +10 -0
  143. lightspeed_stack-0.7.0rc2/src/utils/dumpers/config_dumper.py +23 -0
  144. lightspeed_stack-0.7.0rc2/src/utils/dumpers/models_dumper.py +257 -0
  145. lightspeed_stack-0.7.0rc2/src/utils/dumpers/openapi_schema_dumper.py +39 -0
  146. lightspeed_stack-0.7.0rc2/src/utils/endpoints.py +626 -0
  147. lightspeed_stack-0.7.0rc2/src/utils/input_sanitization.py +193 -0
  148. lightspeed_stack-0.7.0rc2/src/utils/json_schema_updater.py +55 -0
  149. lightspeed_stack-0.7.0rc2/src/utils/mcp_auth_headers.py +103 -0
  150. lightspeed_stack-0.7.0rc2/src/utils/mcp_tools.py +157 -0
  151. lightspeed_stack-0.7.0rc2/src/utils/model_list.py +122 -0
  152. lightspeed_stack-0.7.0rc2/src/utils/ogx_serialization.py +19 -0
  153. lightspeed_stack-0.7.0rc2/src/utils/ogx_version.py +130 -0
  154. lightspeed_stack-0.7.0rc2/src/utils/otel_tracing.py +165 -0
  155. lightspeed_stack-0.7.0rc2/src/utils/pydantic_ai_helpers.py +291 -0
  156. lightspeed_stack-0.7.0rc2/src/utils/query.py +582 -0
  157. lightspeed_stack-0.7.0rc2/src/utils/quota_utils.py +134 -0
  158. lightspeed_stack-0.7.0rc2/src/utils/reranker.py +207 -0
  159. lightspeed_stack-0.7.0rc2/src/utils/responses.py +1959 -0
  160. lightspeed_stack-0.7.0rc2/src/utils/saved_prompts.py +237 -0
  161. lightspeed_stack-0.7.0rc2/src/utils/shields.py +233 -0
  162. lightspeed_stack-0.7.0rc2/src/utils/stream_interrupts.py +395 -0
  163. lightspeed_stack-0.7.0rc2/src/utils/suid.py +136 -0
  164. lightspeed_stack-0.7.0rc2/src/utils/token_estimator.py +170 -0
  165. lightspeed_stack-0.7.0rc2/src/utils/tool_formatter.py +176 -0
  166. lightspeed_stack-0.7.0rc2/src/utils/transcripts.py +168 -0
  167. lightspeed_stack-0.7.0rc2/src/utils/types.py +28 -0
  168. lightspeed_stack-0.7.0rc2/src/utils/vector_search.py +890 -0
  169. lightspeed_stack-0.7.0rc2/tests/benchmarks/data/python_10000_lines.py +10000 -0
  170. lightspeed_stack-0.7.0rc2/tests/benchmarks/data/python_1000_lines.py +1000 -0
  171. lightspeed_stack-0.7.0rc2/tests/benchmarks/data/python_100_lines.py +100 -0
  172. lightspeed_stack-0.7.0rc2/tests/benchmarks/data/python_10_lines.py +10 -0
  173. lightspeed_stack-0.7.0rc2/tests/configuration/benchmarks-postgres.yaml +47 -0
  174. lightspeed_stack-0.7.0rc2/tests/configuration/benchmarks-sqlite.yaml +42 -0
  175. lightspeed_stack-0.7.0rc2/tests/configuration/lightspeed-stack-proper-name.yaml +44 -0
  176. lightspeed_stack-0.7.0rc2/tests/configuration/lightspeed-stack.yaml +44 -0
  177. lightspeed_stack-0.7.0rc2/tests/configuration/minimal-stack.yaml +33 -0
  178. lightspeed_stack-0.7.0rc2/tests/configuration/rh-identity-config.yaml +17 -0
  179. lightspeed_stack-0.7.0rc2/tests/configuration/run.yaml +106 -0
  180. lightspeed_stack-0.7.0rc2/tests/e2e/configs/run-azure.yaml +117 -0
  181. lightspeed_stack-0.7.0rc2/tests/e2e/configs/run-bedrock.yaml +115 -0
  182. lightspeed_stack-0.7.0rc2/tests/e2e/configs/run-ci.yaml +106 -0
  183. lightspeed_stack-0.7.0rc2/tests/e2e/configs/run-rhaiis.yaml +117 -0
  184. lightspeed_stack-0.7.0rc2/tests/e2e/configs/run-rhelai.yaml +117 -0
  185. lightspeed_stack-0.7.0rc2/tests/e2e/configs/run-vertexai.yaml +116 -0
  186. lightspeed_stack-0.7.0rc2/tests/e2e/configs/run-watsonx.yaml +113 -0
  187. lightspeed_stack-0.7.0rc2/tests/e2e/configuration/README.md +80 -0
  188. lightspeed_stack-0.7.0rc2/tests/e2e/configuration/library-mode/lightspeed-stack-authorized.yaml +54 -0
  189. lightspeed_stack-0.7.0rc2/tests/e2e/configuration/library-mode/lightspeed-stack-byok-pdf.yaml +53 -0
  190. lightspeed_stack-0.7.0rc2/tests/e2e/configuration/library-mode/lightspeed-stack-default.yaml +58 -0
  191. lightspeed_stack-0.7.0rc2/tests/e2e/configuration/library-mode/lightspeed-stack-mcp-api-auth.yaml +32 -0
  192. lightspeed_stack-0.7.0rc2/tests/e2e/configuration/library-mode/lightspeed-stack-mcp-client-auth.yaml +27 -0
  193. lightspeed_stack-0.7.0rc2/tests/e2e/configuration/library-mode/lightspeed-stack-mcp-file-auth.yaml +27 -0
  194. lightspeed_stack-0.7.0rc2/tests/e2e/configuration/library-mode/lightspeed-stack-mcp-invalid.yaml +30 -0
  195. lightspeed_stack-0.7.0rc2/tests/e2e/configuration/library-mode/lightspeed-stack-mcp-kubernetes-auth.yaml +27 -0
  196. lightspeed_stack-0.7.0rc2/tests/e2e/configuration/library-mode/lightspeed-stack-mcp-oauth-auth.yaml +27 -0
  197. lightspeed_stack-0.7.0rc2/tests/e2e/configuration/library-mode/lightspeed-stack-mcp.yaml +45 -0
  198. lightspeed_stack-0.7.0rc2/tests/e2e/configuration/library-mode/lightspeed-stack-negative.yaml +29 -0
  199. lightspeed_stack-0.7.0rc2/tests/e2e/configuration/library-mode/lightspeed-stack-rbac.yaml +118 -0
  200. lightspeed_stack-0.7.0rc2/tests/e2e/configuration/library-mode/lightspeed-stack-rh-identity.yaml +29 -0
  201. lightspeed_stack-0.7.0rc2/tests/e2e/configuration/library-mode/lightspeed-stack-shields-empty.yaml +28 -0
  202. lightspeed_stack-0.7.0rc2/tests/e2e/configuration/library-mode/lightspeed-stack-shields-override-disabled.yaml +46 -0
  203. lightspeed_stack-0.7.0rc2/tests/e2e/configuration/library-mode/lightspeed-stack-shields.yaml +46 -0
  204. lightspeed_stack-0.7.0rc2/tests/e2e/configuration/library-mode/lightspeed-stack-skills-directory.yaml +30 -0
  205. lightspeed_stack-0.7.0rc2/tests/e2e/configuration/library-mode/lightspeed-stack-skills.yaml +31 -0
  206. lightspeed_stack-0.7.0rc2/tests/e2e/configuration/library-mode/lightspeed-stack.yaml +47 -0
  207. lightspeed_stack-0.7.0rc2/tests/e2e/configuration/server-mode/lightspeed-stack-authorized.yaml +53 -0
  208. lightspeed_stack-0.7.0rc2/tests/e2e/configuration/server-mode/lightspeed-stack-default.yaml +56 -0
  209. lightspeed_stack-0.7.0rc2/tests/e2e/configuration/server-mode/lightspeed-stack-degraded.yaml +27 -0
  210. lightspeed_stack-0.7.0rc2/tests/e2e/configuration/server-mode/lightspeed-stack-mcp-api-auth.yaml +28 -0
  211. lightspeed_stack-0.7.0rc2/tests/e2e/configuration/server-mode/lightspeed-stack-mcp-client-auth.yaml +25 -0
  212. lightspeed_stack-0.7.0rc2/tests/e2e/configuration/server-mode/lightspeed-stack-mcp-file-auth.yaml +25 -0
  213. lightspeed_stack-0.7.0rc2/tests/e2e/configuration/server-mode/lightspeed-stack-mcp-invalid.yaml +28 -0
  214. lightspeed_stack-0.7.0rc2/tests/e2e/configuration/server-mode/lightspeed-stack-mcp-kubernetes-auth.yaml +25 -0
  215. lightspeed_stack-0.7.0rc2/tests/e2e/configuration/server-mode/lightspeed-stack-mcp-oauth-auth.yaml +25 -0
  216. lightspeed_stack-0.7.0rc2/tests/e2e/configuration/server-mode/lightspeed-stack-mcp.yaml +43 -0
  217. lightspeed_stack-0.7.0rc2/tests/e2e/configuration/server-mode/lightspeed-stack-negative.yaml +32 -0
  218. lightspeed_stack-0.7.0rc2/tests/e2e/configuration/server-mode/lightspeed-stack-rbac.yaml +116 -0
  219. lightspeed_stack-0.7.0rc2/tests/e2e/configuration/server-mode/lightspeed-stack-rh-identity.yaml +27 -0
  220. lightspeed_stack-0.7.0rc2/tests/e2e/configuration/server-mode/lightspeed-stack-rhelai.yaml +37 -0
  221. lightspeed_stack-0.7.0rc2/tests/e2e/configuration/server-mode/lightspeed-stack-rhoai.yaml +37 -0
  222. lightspeed_stack-0.7.0rc2/tests/e2e/configuration/server-mode/lightspeed-stack-shields-empty.yaml +26 -0
  223. lightspeed_stack-0.7.0rc2/tests/e2e/configuration/server-mode/lightspeed-stack-shields-override-disabled.yaml +44 -0
  224. lightspeed_stack-0.7.0rc2/tests/e2e/configuration/server-mode/lightspeed-stack-shields.yaml +44 -0
  225. lightspeed_stack-0.7.0rc2/tests/e2e/configuration/server-mode/lightspeed-stack-skills-directory.yaml +27 -0
  226. lightspeed_stack-0.7.0rc2/tests/e2e/configuration/server-mode/lightspeed-stack-skills.yaml +27 -0
  227. lightspeed_stack-0.7.0rc2/tests/e2e/configuration/server-mode/lightspeed-stack-tls.yaml +24 -0
  228. lightspeed_stack-0.7.0rc2/tests/e2e/configuration/server-mode/lightspeed-stack.yaml +45 -0
  229. lightspeed_stack-0.7.0rc2/tests/e2e/features/README.md +6 -0
  230. lightspeed_stack-0.7.0rc2/tests/e2e/features/authorized_noop.feature +56 -0
  231. lightspeed_stack-0.7.0rc2/tests/e2e/features/authorized_noop_token.feature +35 -0
  232. lightspeed_stack-0.7.0rc2/tests/e2e/features/authorized_rh_identity.feature +147 -0
  233. lightspeed_stack-0.7.0rc2/tests/e2e/features/byok_pdf.feature +52 -0
  234. lightspeed_stack-0.7.0rc2/tests/e2e/features/conversation_cache_v2.feature +271 -0
  235. lightspeed_stack-0.7.0rc2/tests/e2e/features/conversations.feature +127 -0
  236. lightspeed_stack-0.7.0rc2/tests/e2e/features/degraded_mode_startup.feature +41 -0
  237. lightspeed_stack-0.7.0rc2/tests/e2e/features/environment.py +562 -0
  238. lightspeed_stack-0.7.0rc2/tests/e2e/features/faiss.feature +33 -0
  239. lightspeed_stack-0.7.0rc2/tests/e2e/features/feedback.feature +383 -0
  240. lightspeed_stack-0.7.0rc2/tests/e2e/features/health.feature +47 -0
  241. lightspeed_stack-0.7.0rc2/tests/e2e/features/http_401_unauthorized.feature +595 -0
  242. lightspeed_stack-0.7.0rc2/tests/e2e/features/info.feature +72 -0
  243. lightspeed_stack-0.7.0rc2/tests/e2e/features/inline_rag.feature +71 -0
  244. lightspeed_stack-0.7.0rc2/tests/e2e/features/mcp.feature +593 -0
  245. lightspeed_stack-0.7.0rc2/tests/e2e/features/mcp_servers_api.feature +133 -0
  246. lightspeed_stack-0.7.0rc2/tests/e2e/features/mcp_servers_api_auth.feature +31 -0
  247. lightspeed_stack-0.7.0rc2/tests/e2e/features/mcp_servers_api_no_config.feature +23 -0
  248. lightspeed_stack-0.7.0rc2/tests/e2e/features/models.feature +33 -0
  249. lightspeed_stack-0.7.0rc2/tests/e2e/features/ogx_disrupted.feature +311 -0
  250. lightspeed_stack-0.7.0rc2/tests/e2e/features/okp_rag.feature +165 -0
  251. lightspeed_stack-0.7.0rc2/tests/e2e/features/opentelemetry.feature +29 -0
  252. lightspeed_stack-0.7.0rc2/tests/e2e/features/prompts.feature +233 -0
  253. lightspeed_stack-0.7.0rc2/tests/e2e/features/proxy.feature +116 -0
  254. lightspeed_stack-0.7.0rc2/tests/e2e/features/query.feature +345 -0
  255. lightspeed_stack-0.7.0rc2/tests/e2e/features/rbac.feature +272 -0
  256. lightspeed_stack-0.7.0rc2/tests/e2e/features/responses.feature +550 -0
  257. lightspeed_stack-0.7.0rc2/tests/e2e/features/responses_streaming.feature +432 -0
  258. lightspeed_stack-0.7.0rc2/tests/e2e/features/rest_api.feature +17 -0
  259. lightspeed_stack-0.7.0rc2/tests/e2e/features/rlsapi_v1.feature +57 -0
  260. lightspeed_stack-0.7.0rc2/tests/e2e/features/rlsapi_v1_errors.feature +36 -0
  261. lightspeed_stack-0.7.0rc2/tests/e2e/features/shields.feature +65 -0
  262. lightspeed_stack-0.7.0rc2/tests/e2e/features/shields_overrides.feature +45 -0
  263. lightspeed_stack-0.7.0rc2/tests/e2e/features/shields_question_validity.feature +44 -0
  264. lightspeed_stack-0.7.0rc2/tests/e2e/features/shields_redaction.feature +50 -0
  265. lightspeed_stack-0.7.0rc2/tests/e2e/features/skills.feature +795 -0
  266. lightspeed_stack-0.7.0rc2/tests/e2e/features/smoketests.feature +18 -0
  267. lightspeed_stack-0.7.0rc2/tests/e2e/features/steps/README.md +78 -0
  268. lightspeed_stack-0.7.0rc2/tests/e2e/features/steps/common.py +234 -0
  269. lightspeed_stack-0.7.0rc2/tests/e2e/features/steps/common_http.py +348 -0
  270. lightspeed_stack-0.7.0rc2/tests/e2e/features/steps/feedback.py +172 -0
  271. lightspeed_stack-0.7.0rc2/tests/e2e/features/steps/health.py +125 -0
  272. lightspeed_stack-0.7.0rc2/tests/e2e/features/steps/info.py +159 -0
  273. lightspeed_stack-0.7.0rc2/tests/e2e/features/steps/llm_query_response.py +419 -0
  274. lightspeed_stack-0.7.0rc2/tests/e2e/features/steps/place_holder.py +16 -0
  275. lightspeed_stack-0.7.0rc2/tests/e2e/features/steps/proxy.py +653 -0
  276. lightspeed_stack-0.7.0rc2/tests/e2e/features/steps/rbac.py +44 -0
  277. lightspeed_stack-0.7.0rc2/tests/e2e/features/steps/shields.py +35 -0
  278. lightspeed_stack-0.7.0rc2/tests/e2e/features/steps/tls.py +400 -0
  279. lightspeed_stack-0.7.0rc2/tests/e2e/features/streaming_query.feature +289 -0
  280. lightspeed_stack-0.7.0rc2/tests/e2e/features/tls-ca.feature +80 -0
  281. lightspeed_stack-0.7.0rc2/tests/e2e/features/tls-mtls.feature +80 -0
  282. lightspeed_stack-0.7.0rc2/tests/e2e/features/tls-tlsv13.feature +58 -0
  283. lightspeed_stack-0.7.0rc2/tests/e2e/features/unified-mode-boot.feature +116 -0
  284. lightspeed_stack-0.7.0rc2/tests/e2e/features/unified-mode-legacy.feature +39 -0
  285. lightspeed_stack-0.7.0rc2/tests/e2e/features/unified-mode-migration.feature +53 -0
  286. lightspeed_stack-0.7.0rc2/tests/e2e/features/unified-mode-synthesis.feature +59 -0
  287. lightspeed_stack-0.7.0rc2/tests/e2e/features/unified-mode-validation.feature +26 -0
  288. lightspeed_stack-0.7.0rc2/tests/e2e/features/vector_stores.feature +45 -0
  289. lightspeed_stack-0.7.0rc2/tests/e2e/gen_scenario_list.py +66 -0
  290. lightspeed_stack-0.7.0rc2/tests/e2e/mock_jwks_server/README.md +10 -0
  291. lightspeed_stack-0.7.0rc2/tests/e2e/mock_jwks_server/generate_tokens.py +91 -0
  292. lightspeed_stack-0.7.0rc2/tests/e2e/mock_jwks_server/server.py +68 -0
  293. lightspeed_stack-0.7.0rc2/tests/e2e/mock_mcp_server/README.md +6 -0
  294. lightspeed_stack-0.7.0rc2/tests/e2e/mock_tls_inference_server/README.md +6 -0
  295. lightspeed_stack-0.7.0rc2/tests/e2e/mock_tls_inference_server/server.py +383 -0
  296. lightspeed_stack-0.7.0rc2/tests/e2e/proxy/README.md +14 -0
  297. lightspeed_stack-0.7.0rc2/tests/e2e/proxy/interception_proxy.py +333 -0
  298. lightspeed_stack-0.7.0rc2/tests/e2e/proxy/tunnel_proxy.py +265 -0
  299. lightspeed_stack-0.7.0rc2/tests/e2e/rag/README.md +61 -0
  300. lightspeed_stack-0.7.0rc2/tests/e2e/rag/kv_store.db +0 -0
  301. lightspeed_stack-0.7.0rc2/tests/e2e/rag/pdf_kv_store.db +0 -0
  302. lightspeed_stack-0.7.0rc2/tests/e2e/test_list.txt +46 -0
  303. lightspeed_stack-0.7.0rc2/tests/e2e/utils/README.md +22 -0
  304. lightspeed_stack-0.7.0rc2/tests/e2e/utils/ogx_config_utils.py +121 -0
  305. lightspeed_stack-0.7.0rc2/tests/e2e/utils/ogx_prow_utils.py +41 -0
  306. lightspeed_stack-0.7.0rc2/tests/e2e/utils/ogx_utils.py +115 -0
  307. lightspeed_stack-0.7.0rc2/tests/e2e/utils/prow_utils.py +348 -0
  308. lightspeed_stack-0.7.0rc2/tests/e2e/utils/utils.py +610 -0
  309. lightspeed_stack-0.7.0rc2/tests/e2e-prow/rhoai/configs/run.yaml +105 -0
  310. lightspeed_stack-0.7.0rc2/tests/e2e-prow/rhoai/manifests/lightspeed/e2e-interception-proxy.yaml +77 -0
  311. lightspeed_stack-0.7.0rc2/tests/e2e-prow/rhoai/manifests/lightspeed/e2e-mock-tls-inference.yaml +104 -0
  312. lightspeed_stack-0.7.0rc2/tests/e2e-prow/rhoai/manifests/lightspeed/e2e-tunnel-proxy.yaml +69 -0
  313. lightspeed_stack-0.7.0rc2/tests/e2e-prow/rhoai/manifests/lightspeed/lightspeed-stack.yaml +120 -0
  314. lightspeed_stack-0.7.0rc2/tests/e2e-prow/rhoai/manifests/lightspeed/ogx-openai.yaml +279 -0
  315. lightspeed_stack-0.7.0rc2/tests/e2e-prow/rhoai/manifests/lightspeed/ogx-prow.yaml +210 -0
  316. lightspeed_stack-0.7.0rc2/tests/e2e-prow/rhoai/pipeline-konflux.sh +468 -0
  317. lightspeed_stack-0.7.0rc2/tests/e2e-prow/rhoai/pipeline-services-konflux.sh +61 -0
  318. lightspeed_stack-0.7.0rc2/tests/e2e-prow/rhoai/pipeline-services.sh +30 -0
  319. lightspeed_stack-0.7.0rc2/tests/e2e-prow/rhoai/pipeline.sh +506 -0
  320. lightspeed_stack-0.7.0rc2/tests/e2e-prow/rhoai/scripts/e2e-ops.sh +1089 -0
  321. lightspeed_stack-0.7.0rc2/tests/integration/README.md +524 -0
  322. lightspeed_stack-0.7.0rc2/tests/integration/conftest.py +972 -0
  323. lightspeed_stack-0.7.0rc2/tests/integration/container_lifecycle/README.md +6 -0
  324. lightspeed_stack-0.7.0rc2/tests/integration/container_lifecycle/test_container_lifecycle.py +195 -0
  325. lightspeed_stack-0.7.0rc2/tests/integration/endpoints/README.md +82 -0
  326. lightspeed_stack-0.7.0rc2/tests/integration/endpoints/test_config_integration.py +172 -0
  327. lightspeed_stack-0.7.0rc2/tests/integration/endpoints/test_conversations_v1_integration.py +813 -0
  328. lightspeed_stack-0.7.0rc2/tests/integration/endpoints/test_health_integration.py +195 -0
  329. lightspeed_stack-0.7.0rc2/tests/integration/endpoints/test_info_integration.py +155 -0
  330. lightspeed_stack-0.7.0rc2/tests/integration/endpoints/test_model_list.py +209 -0
  331. lightspeed_stack-0.7.0rc2/tests/integration/endpoints/test_query_byok_integration.py +1291 -0
  332. lightspeed_stack-0.7.0rc2/tests/integration/endpoints/test_query_integration.py +1516 -0
  333. lightspeed_stack-0.7.0rc2/tests/integration/endpoints/test_responses_byok_integration.py +702 -0
  334. lightspeed_stack-0.7.0rc2/tests/integration/endpoints/test_responses_integration.py +355 -0
  335. lightspeed_stack-0.7.0rc2/tests/integration/endpoints/test_rlsapi_v1_integration.py +541 -0
  336. lightspeed_stack-0.7.0rc2/tests/integration/endpoints/test_root_endpoint.py +75 -0
  337. lightspeed_stack-0.7.0rc2/tests/integration/endpoints/test_saved_prompts_integration.py +283 -0
  338. lightspeed_stack-0.7.0rc2/tests/integration/endpoints/test_skills_integration.py +96 -0
  339. lightspeed_stack-0.7.0rc2/tests/integration/endpoints/test_streaming_query_byok_integration.py +1065 -0
  340. lightspeed_stack-0.7.0rc2/tests/integration/endpoints/test_streaming_query_integration.py +315 -0
  341. lightspeed_stack-0.7.0rc2/tests/integration/endpoints/test_tools_integration.py +107 -0
  342. lightspeed_stack-0.7.0rc2/tests/integration/test_configuration.py +94 -0
  343. lightspeed_stack-0.7.0rc2/tests/integration/test_openapi_json.py +440 -0
  344. lightspeed_stack-0.7.0rc2/tests/integration/test_otel_trace_propagation.py +201 -0
  345. lightspeed_stack-0.7.0rc2/tests/integration/test_responses_otel_trace.py +96 -0
  346. lightspeed_stack-0.7.0rc2/tests/integration/test_unified_synthesis.py +524 -0
  347. lightspeed_stack-0.7.0rc2/tests/unit/README.md +38 -0
  348. lightspeed_stack-0.7.0rc2/tests/unit/__init__.py +41 -0
  349. lightspeed_stack-0.7.0rc2/tests/unit/a2a_storage/README.md +18 -0
  350. lightspeed_stack-0.7.0rc2/tests/unit/app/README.md +18 -0
  351. lightspeed_stack-0.7.0rc2/tests/unit/app/endpoints/README.md +122 -0
  352. lightspeed_stack-0.7.0rc2/tests/unit/app/endpoints/responses_otel_helpers.py +320 -0
  353. lightspeed_stack-0.7.0rc2/tests/unit/app/endpoints/test_a2a.py +1750 -0
  354. lightspeed_stack-0.7.0rc2/tests/unit/app/endpoints/test_authorized.py +116 -0
  355. lightspeed_stack-0.7.0rc2/tests/unit/app/endpoints/test_config.py +137 -0
  356. lightspeed_stack-0.7.0rc2/tests/unit/app/endpoints/test_conversations.py +2511 -0
  357. lightspeed_stack-0.7.0rc2/tests/unit/app/endpoints/test_conversations_v2.py +1234 -0
  358. lightspeed_stack-0.7.0rc2/tests/unit/app/endpoints/test_feedback.py +867 -0
  359. lightspeed_stack-0.7.0rc2/tests/unit/app/endpoints/test_health.py +502 -0
  360. lightspeed_stack-0.7.0rc2/tests/unit/app/endpoints/test_info.py +251 -0
  361. lightspeed_stack-0.7.0rc2/tests/unit/app/endpoints/test_mcp_auth.py +446 -0
  362. lightspeed_stack-0.7.0rc2/tests/unit/app/endpoints/test_mcp_servers.py +597 -0
  363. lightspeed_stack-0.7.0rc2/tests/unit/app/endpoints/test_metrics.py +71 -0
  364. lightspeed_stack-0.7.0rc2/tests/unit/app/endpoints/test_models.py +535 -0
  365. lightspeed_stack-0.7.0rc2/tests/unit/app/endpoints/test_prompts.py +353 -0
  366. lightspeed_stack-0.7.0rc2/tests/unit/app/endpoints/test_providers.py +344 -0
  367. lightspeed_stack-0.7.0rc2/tests/unit/app/endpoints/test_query.py +655 -0
  368. lightspeed_stack-0.7.0rc2/tests/unit/app/endpoints/test_rags.py +572 -0
  369. lightspeed_stack-0.7.0rc2/tests/unit/app/endpoints/test_responses.py +2902 -0
  370. lightspeed_stack-0.7.0rc2/tests/unit/app/endpoints/test_responses_otel.py +254 -0
  371. lightspeed_stack-0.7.0rc2/tests/unit/app/endpoints/test_rlsapi_v1.py +2083 -0
  372. lightspeed_stack-0.7.0rc2/tests/unit/app/endpoints/test_root.py +52 -0
  373. lightspeed_stack-0.7.0rc2/tests/unit/app/endpoints/test_saved_prompts.py +1117 -0
  374. lightspeed_stack-0.7.0rc2/tests/unit/app/endpoints/test_shields.py +200 -0
  375. lightspeed_stack-0.7.0rc2/tests/unit/app/endpoints/test_skills.py +139 -0
  376. lightspeed_stack-0.7.0rc2/tests/unit/app/endpoints/test_streaming_query.py +1000 -0
  377. lightspeed_stack-0.7.0rc2/tests/unit/app/endpoints/test_tools.py +428 -0
  378. lightspeed_stack-0.7.0rc2/tests/unit/app/endpoints/test_vector_stores.py +1502 -0
  379. lightspeed_stack-0.7.0rc2/tests/unit/app/test_main_middleware.py +305 -0
  380. lightspeed_stack-0.7.0rc2/tests/unit/app/test_routers.py +196 -0
  381. lightspeed_stack-0.7.0rc2/tests/unit/authentication/README.md +42 -0
  382. lightspeed_stack-0.7.0rc2/tests/unit/authentication/test_k8s.py +1137 -0
  383. lightspeed_stack-0.7.0rc2/tests/unit/authentication/test_rh_identity.py +1075 -0
  384. lightspeed_stack-0.7.0rc2/tests/unit/authentication/test_trusted_proxy.py +507 -0
  385. lightspeed_stack-0.7.0rc2/tests/unit/authorization/README.md +18 -0
  386. lightspeed_stack-0.7.0rc2/tests/unit/authorization/test_azure_token_manager.py +179 -0
  387. lightspeed_stack-0.7.0rc2/tests/unit/authorization/test_middleware.py +408 -0
  388. lightspeed_stack-0.7.0rc2/tests/unit/cache/README.md +26 -0
  389. lightspeed_stack-0.7.0rc2/tests/unit/cache/test_cache_factory.py +265 -0
  390. lightspeed_stack-0.7.0rc2/tests/unit/cache/test_postgres_cache.py +1129 -0
  391. lightspeed_stack-0.7.0rc2/tests/unit/client/README.md +6 -0
  392. lightspeed_stack-0.7.0rc2/tests/unit/client/test_ogx.py +472 -0
  393. lightspeed_stack-0.7.0rc2/tests/unit/conftest.py +294 -0
  394. lightspeed_stack-0.7.0rc2/tests/unit/metrics/README.md +14 -0
  395. lightspeed_stack-0.7.0rc2/tests/unit/metrics/test_utis.py +65 -0
  396. lightspeed_stack-0.7.0rc2/tests/unit/models/README.md +18 -0
  397. lightspeed_stack-0.7.0rc2/tests/unit/models/config/README.md +126 -0
  398. lightspeed_stack-0.7.0rc2/tests/unit/models/config/test_a2a_state_configuration.py +117 -0
  399. lightspeed_stack-0.7.0rc2/tests/unit/models/config/test_approvals_configuration.py +121 -0
  400. lightspeed_stack-0.7.0rc2/tests/unit/models/config/test_authentication_configuration.py +616 -0
  401. lightspeed_stack-0.7.0rc2/tests/unit/models/config/test_byok_rag.py +357 -0
  402. lightspeed_stack-0.7.0rc2/tests/unit/models/config/test_dump_configuration.py +2884 -0
  403. lightspeed_stack-0.7.0rc2/tests/unit/models/config/test_inference_configuration.py +193 -0
  404. lightspeed_stack-0.7.0rc2/tests/unit/models/config/test_model_context_protocol_server.py +405 -0
  405. lightspeed_stack-0.7.0rc2/tests/unit/models/config/test_observability_configuration.py +366 -0
  406. lightspeed_stack-0.7.0rc2/tests/unit/models/config/test_ogx_configuration.py +543 -0
  407. lightspeed_stack-0.7.0rc2/tests/unit/models/config/test_rag_configuration.py +280 -0
  408. lightspeed_stack-0.7.0rc2/tests/unit/models/config/test_rlsapi_v1_configuration.py +169 -0
  409. lightspeed_stack-0.7.0rc2/tests/unit/models/config/test_shields_configuration.py +196 -0
  410. lightspeed_stack-0.7.0rc2/tests/unit/models/config/test_vector_store.py +286 -0
  411. lightspeed_stack-0.7.0rc2/tests/unit/models/database/README.md +10 -0
  412. lightspeed_stack-0.7.0rc2/tests/unit/models/database/__init__.py +1 -0
  413. lightspeed_stack-0.7.0rc2/tests/unit/models/database/test_saved_prompts.py +146 -0
  414. lightspeed_stack-0.7.0rc2/tests/unit/models/requests/README.md +30 -0
  415. lightspeed_stack-0.7.0rc2/tests/unit/models/requests/test_attachment.py +162 -0
  416. lightspeed_stack-0.7.0rc2/tests/unit/models/responses/README.md +34 -0
  417. lightspeed_stack-0.7.0rc2/tests/unit/models/responses/test_authorized_response.py +48 -0
  418. lightspeed_stack-0.7.0rc2/tests/unit/models/responses/test_error_responses.py +846 -0
  419. lightspeed_stack-0.7.0rc2/tests/unit/models/responses/test_query_response.py +117 -0
  420. lightspeed_stack-0.7.0rc2/tests/unit/models/responses/test_successful_responses.py +1333 -0
  421. lightspeed_stack-0.7.0rc2/tests/unit/models/rlsapi/README.md +14 -0
  422. lightspeed_stack-0.7.0rc2/tests/unit/models/test_saved_prompts_config.py +204 -0
  423. lightspeed_stack-0.7.0rc2/tests/unit/models/test_saved_prompts_list_response.py +114 -0
  424. lightspeed_stack-0.7.0rc2/tests/unit/observability/README.md +22 -0
  425. lightspeed_stack-0.7.0rc2/tests/unit/observability/conftest.py +16 -0
  426. lightspeed_stack-0.7.0rc2/tests/unit/observability/formats/README.md +14 -0
  427. lightspeed_stack-0.7.0rc2/tests/unit/observability/test_responses_splunk.py +814 -0
  428. lightspeed_stack-0.7.0rc2/tests/unit/observability/test_sentry.py +187 -0
  429. lightspeed_stack-0.7.0rc2/tests/unit/observability/test_splunk.py +319 -0
  430. lightspeed_stack-0.7.0rc2/tests/unit/pydantic_ai_lightspeed/README.md +6 -0
  431. lightspeed_stack-0.7.0rc2/tests/unit/pydantic_ai_lightspeed/capabilities/README.md +6 -0
  432. lightspeed_stack-0.7.0rc2/tests/unit/pydantic_ai_lightspeed/capabilities/question_validity/README.md +10 -0
  433. lightspeed_stack-0.7.0rc2/tests/unit/pydantic_ai_lightspeed/capabilities/question_validity/test_capability.py +802 -0
  434. lightspeed_stack-0.7.0rc2/tests/unit/pydantic_ai_lightspeed/capabilities/redaction/README.md +18 -0
  435. lightspeed_stack-0.7.0rc2/tests/unit/pydantic_ai_lightspeed/capabilities/redaction/test_capability.py +362 -0
  436. lightspeed_stack-0.7.0rc2/tests/unit/pydantic_ai_lightspeed/ogx/README.md +18 -0
  437. lightspeed_stack-0.7.0rc2/tests/unit/pydantic_ai_lightspeed/ogx/__init__.py +1 -0
  438. lightspeed_stack-0.7.0rc2/tests/unit/pydantic_ai_lightspeed/ogx/test_model.py +940 -0
  439. lightspeed_stack-0.7.0rc2/tests/unit/pydantic_ai_lightspeed/ogx/test_provider.py +273 -0
  440. lightspeed_stack-0.7.0rc2/tests/unit/pydantic_ai_lightspeed/ogx/test_transport.py +447 -0
  441. lightspeed_stack-0.7.0rc2/tests/unit/quota/README.md +30 -0
  442. lightspeed_stack-0.7.0rc2/tests/unit/runners/README.md +10 -0
  443. lightspeed_stack-0.7.0rc2/tests/unit/telemetry/README.md +14 -0
  444. lightspeed_stack-0.7.0rc2/tests/unit/telemetry/conftest.py +809 -0
  445. lightspeed_stack-0.7.0rc2/tests/unit/telemetry/test_configuration_snapshot.py +1284 -0
  446. lightspeed_stack-0.7.0rc2/tests/unit/test_configuration.py +4253 -0
  447. lightspeed_stack-0.7.0rc2/tests/unit/test_degraded_mode.py +59 -0
  448. lightspeed_stack-0.7.0rc2/tests/unit/test_lightspeed_stack.py +197 -0
  449. lightspeed_stack-0.7.0rc2/tests/unit/test_ogx_configuration.py +1418 -0
  450. lightspeed_stack-0.7.0rc2/tests/unit/test_ogx_synthesize.py +1222 -0
  451. lightspeed_stack-0.7.0rc2/tests/unit/utils/README.md +134 -0
  452. lightspeed_stack-0.7.0rc2/tests/unit/utils/agents/README.md +18 -0
  453. lightspeed_stack-0.7.0rc2/tests/unit/utils/agents/test_error_handler.py +33 -0
  454. lightspeed_stack-0.7.0rc2/tests/unit/utils/agents/test_query.py +757 -0
  455. lightspeed_stack-0.7.0rc2/tests/unit/utils/agents/test_streaming.py +1844 -0
  456. lightspeed_stack-0.7.0rc2/tests/unit/utils/agents/test_tool_processor.py +696 -0
  457. lightspeed_stack-0.7.0rc2/tests/unit/utils/dumpers/README.md +10 -0
  458. lightspeed_stack-0.7.0rc2/tests/unit/utils/dumpers/test_config_dumper.py +116 -0
  459. lightspeed_stack-0.7.0rc2/tests/unit/utils/dumpers/test_models_dumper.py +10507 -0
  460. lightspeed_stack-0.7.0rc2/tests/unit/utils/test_builtin_tools.py +111 -0
  461. lightspeed_stack-0.7.0rc2/tests/unit/utils/test_compaction.py +597 -0
  462. lightspeed_stack-0.7.0rc2/tests/unit/utils/test_conversation_compaction.py +729 -0
  463. lightspeed_stack-0.7.0rc2/tests/unit/utils/test_conversations.py +1036 -0
  464. lightspeed_stack-0.7.0rc2/tests/unit/utils/test_endpoints.py +547 -0
  465. lightspeed_stack-0.7.0rc2/tests/unit/utils/test_input_sanitization.py +283 -0
  466. lightspeed_stack-0.7.0rc2/tests/unit/utils/test_json_schema_updater.py +462 -0
  467. lightspeed_stack-0.7.0rc2/tests/unit/utils/test_mcp_tools.py +94 -0
  468. lightspeed_stack-0.7.0rc2/tests/unit/utils/test_model_list.py +153 -0
  469. lightspeed_stack-0.7.0rc2/tests/unit/utils/test_ogx_serialization.py +221 -0
  470. lightspeed_stack-0.7.0rc2/tests/unit/utils/test_ogx_version.py +156 -0
  471. lightspeed_stack-0.7.0rc2/tests/unit/utils/test_otel_tracing.py +340 -0
  472. lightspeed_stack-0.7.0rc2/tests/unit/utils/test_prompts.py +335 -0
  473. lightspeed_stack-0.7.0rc2/tests/unit/utils/test_pydantic_ai.py +483 -0
  474. lightspeed_stack-0.7.0rc2/tests/unit/utils/test_query.py +820 -0
  475. lightspeed_stack-0.7.0rc2/tests/unit/utils/test_responses.py +3760 -0
  476. lightspeed_stack-0.7.0rc2/tests/unit/utils/test_saved_prompts.py +427 -0
  477. lightspeed_stack-0.7.0rc2/tests/unit/utils/test_shields.py +405 -0
  478. lightspeed_stack-0.7.0rc2/tests/unit/utils/test_suid.py +155 -0
  479. lightspeed_stack-0.7.0rc2/tests/unit/utils/test_token_estimator.py +245 -0
  480. lightspeed_stack-0.7.0rc2/tests/unit/utils/test_transcripts.py +153 -0
  481. lightspeed_stack-0.7.0rc2/tests/unit/utils/test_types.py +213 -0
  482. lightspeed_stack-0.7.0rc2/tests/unit/utils/test_vector_search.py +1816 -0
  483. lightspeed_stack-0.6.2/PKG-INFO +0 -1700
  484. lightspeed_stack-0.6.2/README.md +0 -1445
  485. lightspeed_stack-0.6.2/pyproject.toml +0 -236
  486. lightspeed_stack-0.6.2/src/a2a_storage/README.md +0 -20
  487. lightspeed_stack-0.6.2/src/a2a_storage/context_store.py +0 -58
  488. lightspeed_stack-0.6.2/src/a2a_storage/in_memory_context_store.py +0 -93
  489. lightspeed_stack-0.6.2/src/a2a_storage/postgres_context_store.py +0 -143
  490. lightspeed_stack-0.6.2/src/a2a_storage/sqlite_context_store.py +0 -144
  491. lightspeed_stack-0.6.2/src/app/README.md +0 -14
  492. lightspeed_stack-0.6.2/src/app/endpoints/README.md +0 -83
  493. lightspeed_stack-0.6.2/src/app/endpoints/TODO +0 -6
  494. lightspeed_stack-0.6.2/src/app/endpoints/a2a.py +0 -1045
  495. lightspeed_stack-0.6.2/src/app/endpoints/authorized.py +0 -51
  496. lightspeed_stack-0.6.2/src/app/endpoints/config.py +0 -74
  497. lightspeed_stack-0.6.2/src/app/endpoints/conversations_v1.py +0 -543
  498. lightspeed_stack-0.6.2/src/app/endpoints/conversations_v2.py +0 -285
  499. lightspeed_stack-0.6.2/src/app/endpoints/feedback.py +0 -248
  500. lightspeed_stack-0.6.2/src/app/endpoints/health.py +0 -255
  501. lightspeed_stack-0.6.2/src/app/endpoints/info.py +0 -89
  502. lightspeed_stack-0.6.2/src/app/endpoints/mcp_auth.py +0 -94
  503. lightspeed_stack-0.6.2/src/app/endpoints/mcp_servers.py +0 -245
  504. lightspeed_stack-0.6.2/src/app/endpoints/metrics.py +0 -65
  505. lightspeed_stack-0.6.2/src/app/endpoints/models.py +0 -147
  506. lightspeed_stack-0.6.2/src/app/endpoints/prompts.py +0 -397
  507. lightspeed_stack-0.6.2/src/app/endpoints/providers.py +0 -174
  508. lightspeed_stack-0.6.2/src/app/endpoints/query.py +0 -397
  509. lightspeed_stack-0.6.2/src/app/endpoints/rags.py +0 -212
  510. lightspeed_stack-0.6.2/src/app/endpoints/responses.py +0 -1191
  511. lightspeed_stack-0.6.2/src/app/endpoints/rlsapi_v1.py +0 -817
  512. lightspeed_stack-0.6.2/src/app/endpoints/root.py +0 -820
  513. lightspeed_stack-0.6.2/src/app/endpoints/shields.py +0 -91
  514. lightspeed_stack-0.6.2/src/app/endpoints/streaming_query.py +0 -953
  515. lightspeed_stack-0.6.2/src/app/endpoints/tools.py +0 -266
  516. lightspeed_stack-0.6.2/src/app/endpoints/vector_stores.py +0 -860
  517. lightspeed_stack-0.6.2/src/app/main.py +0 -304
  518. lightspeed_stack-0.6.2/src/app/routers.py +0 -79
  519. lightspeed_stack-0.6.2/src/authentication/README.md +0 -32
  520. lightspeed_stack-0.6.2/src/authentication/rh_identity.py +0 -452
  521. lightspeed_stack-0.6.2/src/authorization/README.md +0 -14
  522. lightspeed_stack-0.6.2/src/cache/README.md +0 -29
  523. lightspeed_stack-0.6.2/src/data/README.md +0 -5
  524. lightspeed_stack-0.6.2/src/data/__init__.py +0 -8
  525. lightspeed_stack-0.6.2/src/data/default_run.yaml +0 -131
  526. lightspeed_stack-0.6.2/src/metrics/README.md +0 -11
  527. lightspeed_stack-0.6.2/src/metrics/utils.py +0 -58
  528. lightspeed_stack-0.6.2/src/models/README.md +0 -11
  529. lightspeed_stack-0.6.2/src/models/api/README.md +0 -5
  530. lightspeed_stack-0.6.2/src/models/api/requests/README.md +0 -32
  531. lightspeed_stack-0.6.2/src/models/api/requests/__init__.py +0 -44
  532. lightspeed_stack-0.6.2/src/models/api/requests/prompts.py +0 -86
  533. lightspeed_stack-0.6.2/src/models/api/requests/query.py +0 -253
  534. lightspeed_stack-0.6.2/src/models/api/requests/responses_openai.py +0 -175
  535. lightspeed_stack-0.6.2/src/models/api/responses/README.md +0 -8
  536. lightspeed_stack-0.6.2/src/models/api/responses/__init__.py +0 -5
  537. lightspeed_stack-0.6.2/src/models/api/responses/constants.py +0 -34
  538. lightspeed_stack-0.6.2/src/models/api/responses/error/README.md +0 -38
  539. lightspeed_stack-0.6.2/src/models/api/responses/error/__init__.py +0 -32
  540. lightspeed_stack-0.6.2/src/models/api/responses/error/bad_request.py +0 -51
  541. lightspeed_stack-0.6.2/src/models/api/responses/error/conflict.py +0 -120
  542. lightspeed_stack-0.6.2/src/models/api/responses/error/content_too_large.py +0 -148
  543. lightspeed_stack-0.6.2/src/models/api/responses/error/forbidden.py +0 -198
  544. lightspeed_stack-0.6.2/src/models/api/responses/error/service_unavailable.py +0 -51
  545. lightspeed_stack-0.6.2/src/models/api/responses/error/too_many_requests.py +0 -114
  546. lightspeed_stack-0.6.2/src/models/api/responses/error/unprocessable_entity.py +0 -55
  547. lightspeed_stack-0.6.2/src/models/api/responses/successful/README.md +0 -41
  548. lightspeed_stack-0.6.2/src/models/api/responses/successful/__init__.py +0 -103
  549. lightspeed_stack-0.6.2/src/models/api/responses/successful/catalog.py +0 -258
  550. lightspeed_stack-0.6.2/src/models/api/responses/successful/configuration.py +0 -94
  551. lightspeed_stack-0.6.2/src/models/api/responses/successful/probes.py +0 -220
  552. lightspeed_stack-0.6.2/src/models/api/responses/successful/prompts.py +0 -119
  553. lightspeed_stack-0.6.2/src/models/api/responses/successful/query.py +0 -243
  554. lightspeed_stack-0.6.2/src/models/api/responses/successful/responses_openai.py +0 -210
  555. lightspeed_stack-0.6.2/src/models/api/responses/successful/vector_stores.py +0 -303
  556. lightspeed_stack-0.6.2/src/models/common/README.md +0 -29
  557. lightspeed_stack-0.6.2/src/models/common/__init__.py +0 -58
  558. lightspeed_stack-0.6.2/src/models/common/agents/README.md +0 -11
  559. lightspeed_stack-0.6.2/src/models/common/agents/__init__.py +0 -39
  560. lightspeed_stack-0.6.2/src/models/common/agents/stream_payloads.py +0 -270
  561. lightspeed_stack-0.6.2/src/models/common/health.py +0 -58
  562. lightspeed_stack-0.6.2/src/models/common/moderation.py +0 -29
  563. lightspeed_stack-0.6.2/src/models/common/query.py +0 -139
  564. lightspeed_stack-0.6.2/src/models/common/responses/README.md +0 -17
  565. lightspeed_stack-0.6.2/src/models/common/responses/__init__.py +0 -25
  566. lightspeed_stack-0.6.2/src/models/common/responses/contexts.py +0 -112
  567. lightspeed_stack-0.6.2/src/models/common/responses/responses_api_params.py +0 -170
  568. lightspeed_stack-0.6.2/src/models/common/responses/responses_conversation_context.py +0 -33
  569. lightspeed_stack-0.6.2/src/models/common/responses/types.py +0 -78
  570. lightspeed_stack-0.6.2/src/models/common/turn_summary.py +0 -152
  571. lightspeed_stack-0.6.2/src/models/compaction.py +0 -70
  572. lightspeed_stack-0.6.2/src/models/config.py +0 -2828
  573. lightspeed_stack-0.6.2/src/models/database/README.md +0 -11
  574. lightspeed_stack-0.6.2/src/models/database/conversations.py +0 -73
  575. lightspeed_stack-0.6.2/src/observability/README.md +0 -97
  576. lightspeed_stack-0.6.2/src/observability/__init__.py +0 -26
  577. lightspeed_stack-0.6.2/src/observability/formats/README.md +0 -11
  578. lightspeed_stack-0.6.2/src/observability/formats/__init__.py +0 -15
  579. lightspeed_stack-0.6.2/src/pydantic_ai_lightspeed/README.md +0 -5
  580. lightspeed_stack-0.6.2/src/pydantic_ai_lightspeed/capabilities/README.md +0 -5
  581. lightspeed_stack-0.6.2/src/pydantic_ai_lightspeed/capabilities/question_validity/README.md +0 -8
  582. lightspeed_stack-0.6.2/src/pydantic_ai_lightspeed/capabilities/question_validity/_capability.py +0 -151
  583. lightspeed_stack-0.6.2/src/pydantic_ai_lightspeed/capabilities/redaction/__init__.py +0 -21
  584. lightspeed_stack-0.6.2/src/pydantic_ai_lightspeed/capabilities/redaction/capability.py +0 -323
  585. lightspeed_stack-0.6.2/src/pydantic_ai_lightspeed/llamastack/README.md +0 -14
  586. lightspeed_stack-0.6.2/src/pydantic_ai_lightspeed/llamastack/__init__.py +0 -6
  587. lightspeed_stack-0.6.2/src/pydantic_ai_lightspeed/llamastack/_model.py +0 -309
  588. lightspeed_stack-0.6.2/src/pydantic_ai_lightspeed/llamastack/_provider.py +0 -123
  589. lightspeed_stack-0.6.2/src/pydantic_ai_lightspeed/llamastack/_transport.py +0 -205
  590. lightspeed_stack-0.6.2/src/quota/README.md +0 -35
  591. lightspeed_stack-0.6.2/src/quota/quota_limiter.py +0 -195
  592. lightspeed_stack-0.6.2/src/quota/token_usage_history.py +0 -202
  593. lightspeed_stack-0.6.2/src/runners/README.md +0 -11
  594. lightspeed_stack-0.6.2/src/runners/quota_scheduler.py +0 -398
  595. lightspeed_stack-0.6.2/src/runners/uvicorn.py +0 -46
  596. lightspeed_stack-0.6.2/src/telemetry/README.md +0 -8
  597. lightspeed_stack-0.6.2/src/telemetry/__init__.py +0 -7
  598. lightspeed_stack-0.6.2/src/telemetry/configuration_snapshot.py +0 -548
  599. lightspeed_stack-0.6.2/src/utils/README.md +0 -98
  600. lightspeed_stack-0.6.2/src/utils/agents/README.md +0 -11
  601. lightspeed_stack-0.6.2/src/utils/agents/query.py +0 -334
  602. lightspeed_stack-0.6.2/src/utils/agents/streaming.py +0 -560
  603. lightspeed_stack-0.6.2/src/utils/agents/tool_processor.py +0 -529
  604. lightspeed_stack-0.6.2/src/utils/common.py +0 -143
  605. lightspeed_stack-0.6.2/src/utils/compaction.py +0 -402
  606. lightspeed_stack-0.6.2/src/utils/conversation_compaction.py +0 -710
  607. lightspeed_stack-0.6.2/src/utils/conversations.py +0 -529
  608. lightspeed_stack-0.6.2/src/utils/degraded_mode.py +0 -60
  609. lightspeed_stack-0.6.2/src/utils/endpoints.py +0 -626
  610. lightspeed_stack-0.6.2/src/utils/llama_stack_version.py +0 -130
  611. lightspeed_stack-0.6.2/src/utils/mcp_auth_headers.py +0 -102
  612. lightspeed_stack-0.6.2/src/utils/pydantic_ai.py +0 -256
  613. lightspeed_stack-0.6.2/src/utils/query.py +0 -582
  614. lightspeed_stack-0.6.2/src/utils/quota.py +0 -125
  615. lightspeed_stack-0.6.2/src/utils/reranker.py +0 -205
  616. lightspeed_stack-0.6.2/src/utils/responses.py +0 -1930
  617. lightspeed_stack-0.6.2/src/utils/schema_dumper.py +0 -100
  618. lightspeed_stack-0.6.2/src/utils/shields.py +0 -296
  619. lightspeed_stack-0.6.2/src/utils/stream_interrupts.py +0 -393
  620. lightspeed_stack-0.6.2/src/utils/suid.py +0 -140
  621. lightspeed_stack-0.6.2/src/utils/token_estimator.py +0 -170
  622. lightspeed_stack-0.6.2/src/utils/tool_formatter.py +0 -168
  623. lightspeed_stack-0.6.2/src/utils/transcripts.py +0 -168
  624. lightspeed_stack-0.6.2/src/utils/types.py +0 -55
  625. lightspeed_stack-0.6.2/src/utils/vector_search.py +0 -848
  626. lightspeed_stack-0.6.2/tests/benchmarks/data/python_10000_lines.py +0 -10000
  627. lightspeed_stack-0.6.2/tests/benchmarks/data/python_1000_lines.py +0 -1000
  628. lightspeed_stack-0.6.2/tests/benchmarks/data/python_100_lines.py +0 -100
  629. lightspeed_stack-0.6.2/tests/benchmarks/data/python_10_lines.py +0 -10
  630. lightspeed_stack-0.6.2/tests/configuration/benchmarks-postgres.yaml +0 -47
  631. lightspeed_stack-0.6.2/tests/configuration/benchmarks-sqlite.yaml +0 -42
  632. lightspeed_stack-0.6.2/tests/configuration/lightspeed-stack-proper-name.yaml +0 -44
  633. lightspeed_stack-0.6.2/tests/configuration/lightspeed-stack.yaml +0 -44
  634. lightspeed_stack-0.6.2/tests/configuration/minimal-stack.yaml +0 -30
  635. lightspeed_stack-0.6.2/tests/configuration/rh-identity-config.yaml +0 -17
  636. lightspeed_stack-0.6.2/tests/configuration/run.yaml +0 -150
  637. lightspeed_stack-0.6.2/tests/e2e/configs/run-azure.yaml +0 -162
  638. lightspeed_stack-0.6.2/tests/e2e/configs/run-bedrock.yaml +0 -160
  639. lightspeed_stack-0.6.2/tests/e2e/configs/run-ci.yaml +0 -151
  640. lightspeed_stack-0.6.2/tests/e2e/configs/run-rhaiis.yaml +0 -162
  641. lightspeed_stack-0.6.2/tests/e2e/configs/run-rhelai.yaml +0 -162
  642. lightspeed_stack-0.6.2/tests/e2e/configs/run-vertexai.yaml +0 -157
  643. lightspeed_stack-0.6.2/tests/e2e/configs/run-watsonx.yaml +0 -158
  644. lightspeed_stack-0.6.2/tests/e2e/configuration/README.md +0 -32
  645. lightspeed_stack-0.6.2/tests/e2e/configuration/library-mode/lightspeed-stack-auth-noop-token.yaml +0 -41
  646. lightspeed_stack-0.6.2/tests/e2e/configuration/library-mode/lightspeed-stack-auth-rh-identity.yaml +0 -24
  647. lightspeed_stack-0.6.2/tests/e2e/configuration/library-mode/lightspeed-stack-byok-pdf.yaml +0 -45
  648. lightspeed_stack-0.6.2/tests/e2e/configuration/library-mode/lightspeed-stack-inline-rag.yaml +0 -40
  649. lightspeed_stack-0.6.2/tests/e2e/configuration/library-mode/lightspeed-stack-invalid-feedback-storage.yaml +0 -19
  650. lightspeed_stack-0.6.2/tests/e2e/configuration/library-mode/lightspeed-stack-invalid-mcp-file-auth.yaml +0 -24
  651. lightspeed_stack-0.6.2/tests/e2e/configuration/library-mode/lightspeed-stack-mcp-auth.yaml +0 -25
  652. lightspeed_stack-0.6.2/tests/e2e/configuration/library-mode/lightspeed-stack-mcp-client-auth.yaml +0 -24
  653. lightspeed_stack-0.6.2/tests/e2e/configuration/library-mode/lightspeed-stack-mcp-file-auth.yaml +0 -24
  654. lightspeed_stack-0.6.2/tests/e2e/configuration/library-mode/lightspeed-stack-mcp-kubernetes-auth.yaml +0 -24
  655. lightspeed_stack-0.6.2/tests/e2e/configuration/library-mode/lightspeed-stack-mcp-oauth-auth.yaml +0 -24
  656. lightspeed_stack-0.6.2/tests/e2e/configuration/library-mode/lightspeed-stack-mcp.yaml +0 -36
  657. lightspeed_stack-0.6.2/tests/e2e/configuration/library-mode/lightspeed-stack-no-cache.yaml +0 -21
  658. lightspeed_stack-0.6.2/tests/e2e/configuration/library-mode/lightspeed-stack-rbac.yaml +0 -95
  659. lightspeed_stack-0.6.2/tests/e2e/configuration/library-mode/lightspeed-stack-skills-directory.yaml +0 -25
  660. lightspeed_stack-0.6.2/tests/e2e/configuration/library-mode/lightspeed-stack-skills.yaml +0 -25
  661. lightspeed_stack-0.6.2/tests/e2e/configuration/library-mode/lightspeed-stack.yaml +0 -34
  662. lightspeed_stack-0.6.2/tests/e2e/configuration/server-mode/lightspeed-stack-auth-noop-token.yaml +0 -47
  663. lightspeed_stack-0.6.2/tests/e2e/configuration/server-mode/lightspeed-stack-auth-rh-identity.yaml +0 -25
  664. lightspeed_stack-0.6.2/tests/e2e/configuration/server-mode/lightspeed-stack-degraded-mode.yaml +0 -25
  665. lightspeed_stack-0.6.2/tests/e2e/configuration/server-mode/lightspeed-stack-inline-rag.yaml +0 -41
  666. lightspeed_stack-0.6.2/tests/e2e/configuration/server-mode/lightspeed-stack-invalid-feedback-storage.yaml +0 -25
  667. lightspeed_stack-0.6.2/tests/e2e/configuration/server-mode/lightspeed-stack-invalid-mcp-file-auth.yaml +0 -25
  668. lightspeed_stack-0.6.2/tests/e2e/configuration/server-mode/lightspeed-stack-mcp-auth.yaml +0 -26
  669. lightspeed_stack-0.6.2/tests/e2e/configuration/server-mode/lightspeed-stack-mcp-client-auth.yaml +0 -25
  670. lightspeed_stack-0.6.2/tests/e2e/configuration/server-mode/lightspeed-stack-mcp-file-auth.yaml +0 -25
  671. lightspeed_stack-0.6.2/tests/e2e/configuration/server-mode/lightspeed-stack-mcp-kubernetes-auth.yaml +0 -25
  672. lightspeed_stack-0.6.2/tests/e2e/configuration/server-mode/lightspeed-stack-mcp-oauth-auth.yaml +0 -25
  673. lightspeed_stack-0.6.2/tests/e2e/configuration/server-mode/lightspeed-stack-mcp.yaml +0 -37
  674. lightspeed_stack-0.6.2/tests/e2e/configuration/server-mode/lightspeed-stack-no-cache.yaml +0 -27
  675. lightspeed_stack-0.6.2/tests/e2e/configuration/server-mode/lightspeed-stack-rbac.yaml +0 -96
  676. lightspeed_stack-0.6.2/tests/e2e/configuration/server-mode/lightspeed-stack-rhelai.yaml +0 -35
  677. lightspeed_stack-0.6.2/tests/e2e/configuration/server-mode/lightspeed-stack-skills-directory.yaml +0 -26
  678. lightspeed_stack-0.6.2/tests/e2e/configuration/server-mode/lightspeed-stack-skills.yaml +0 -26
  679. lightspeed_stack-0.6.2/tests/e2e/configuration/server-mode/lightspeed-stack-tls.yaml +0 -22
  680. lightspeed_stack-0.6.2/tests/e2e/configuration/server-mode/lightspeed-stack.yaml +0 -35
  681. lightspeed_stack-0.6.2/tests/e2e/features/README.md +0 -5
  682. lightspeed_stack-0.6.2/tests/e2e/features/authorized_noop.feature +0 -56
  683. lightspeed_stack-0.6.2/tests/e2e/features/authorized_noop_token.feature +0 -35
  684. lightspeed_stack-0.6.2/tests/e2e/features/authorized_rh_identity.feature +0 -147
  685. lightspeed_stack-0.6.2/tests/e2e/features/byok_pdf.feature +0 -52
  686. lightspeed_stack-0.6.2/tests/e2e/features/conversation_cache_v2.feature +0 -268
  687. lightspeed_stack-0.6.2/tests/e2e/features/conversations.feature +0 -127
  688. lightspeed_stack-0.6.2/tests/e2e/features/degraded_mode_startup.feature +0 -40
  689. lightspeed_stack-0.6.2/tests/e2e/features/environment.py +0 -546
  690. lightspeed_stack-0.6.2/tests/e2e/features/faiss.feature +0 -33
  691. lightspeed_stack-0.6.2/tests/e2e/features/feedback.feature +0 -368
  692. lightspeed_stack-0.6.2/tests/e2e/features/health.feature +0 -47
  693. lightspeed_stack-0.6.2/tests/e2e/features/http_401_unauthorized.feature +0 -514
  694. lightspeed_stack-0.6.2/tests/e2e/features/info.feature +0 -80
  695. lightspeed_stack-0.6.2/tests/e2e/features/inline_rag.feature +0 -71
  696. lightspeed_stack-0.6.2/tests/e2e/features/llama_stack_disrupted.feature +0 -294
  697. lightspeed_stack-0.6.2/tests/e2e/features/mcp.feature +0 -586
  698. lightspeed_stack-0.6.2/tests/e2e/features/mcp_servers_api.feature +0 -133
  699. lightspeed_stack-0.6.2/tests/e2e/features/mcp_servers_api_auth.feature +0 -31
  700. lightspeed_stack-0.6.2/tests/e2e/features/mcp_servers_api_no_config.feature +0 -23
  701. lightspeed_stack-0.6.2/tests/e2e/features/models.feature +0 -33
  702. lightspeed_stack-0.6.2/tests/e2e/features/opentelemetry.feature +0 -29
  703. lightspeed_stack-0.6.2/tests/e2e/features/prompts.feature +0 -233
  704. lightspeed_stack-0.6.2/tests/e2e/features/proxy.feature +0 -116
  705. lightspeed_stack-0.6.2/tests/e2e/features/query.feature +0 -171
  706. lightspeed_stack-0.6.2/tests/e2e/features/rbac.feature +0 -126
  707. lightspeed_stack-0.6.2/tests/e2e/features/responses.feature +0 -550
  708. lightspeed_stack-0.6.2/tests/e2e/features/responses_streaming.feature +0 -432
  709. lightspeed_stack-0.6.2/tests/e2e/features/rest_api.feature +0 -17
  710. lightspeed_stack-0.6.2/tests/e2e/features/rlsapi_v1.feature +0 -57
  711. lightspeed_stack-0.6.2/tests/e2e/features/rlsapi_v1_errors.feature +0 -36
  712. lightspeed_stack-0.6.2/tests/e2e/features/skills.feature +0 -766
  713. lightspeed_stack-0.6.2/tests/e2e/features/smoketests.feature +0 -18
  714. lightspeed_stack-0.6.2/tests/e2e/features/steps/README.md +0 -59
  715. lightspeed_stack-0.6.2/tests/e2e/features/steps/common.py +0 -218
  716. lightspeed_stack-0.6.2/tests/e2e/features/steps/common_http.py +0 -347
  717. lightspeed_stack-0.6.2/tests/e2e/features/steps/feedback.py +0 -174
  718. lightspeed_stack-0.6.2/tests/e2e/features/steps/health.py +0 -110
  719. lightspeed_stack-0.6.2/tests/e2e/features/steps/info.py +0 -192
  720. lightspeed_stack-0.6.2/tests/e2e/features/steps/llm_query_response.py +0 -407
  721. lightspeed_stack-0.6.2/tests/e2e/features/steps/place_holder.py +0 -17
  722. lightspeed_stack-0.6.2/tests/e2e/features/steps/proxy.py +0 -626
  723. lightspeed_stack-0.6.2/tests/e2e/features/steps/rbac.py +0 -44
  724. lightspeed_stack-0.6.2/tests/e2e/features/steps/shields.py +0 -37
  725. lightspeed_stack-0.6.2/tests/e2e/features/steps/tls.py +0 -402
  726. lightspeed_stack-0.6.2/tests/e2e/features/streaming_query.feature +0 -158
  727. lightspeed_stack-0.6.2/tests/e2e/features/tls-ca.feature +0 -80
  728. lightspeed_stack-0.6.2/tests/e2e/features/tls-mtls.feature +0 -80
  729. lightspeed_stack-0.6.2/tests/e2e/features/tls-tlsv13.feature +0 -58
  730. lightspeed_stack-0.6.2/tests/e2e/features/unified-mode-boot.feature +0 -116
  731. lightspeed_stack-0.6.2/tests/e2e/features/unified-mode-legacy.feature +0 -39
  732. lightspeed_stack-0.6.2/tests/e2e/features/unified-mode-migration.feature +0 -53
  733. lightspeed_stack-0.6.2/tests/e2e/features/unified-mode-synthesis.feature +0 -59
  734. lightspeed_stack-0.6.2/tests/e2e/features/unified-mode-validation.feature +0 -25
  735. lightspeed_stack-0.6.2/tests/e2e/features/vector_stores.feature +0 -45
  736. lightspeed_stack-0.6.2/tests/e2e/gen_scenario_list.py +0 -66
  737. lightspeed_stack-0.6.2/tests/e2e/mock_jwks_server/README.md +0 -8
  738. lightspeed_stack-0.6.2/tests/e2e/mock_jwks_server/generate_tokens.py +0 -85
  739. lightspeed_stack-0.6.2/tests/e2e/mock_jwks_server/server.py +0 -66
  740. lightspeed_stack-0.6.2/tests/e2e/mock_mcp_server/README.md +0 -5
  741. lightspeed_stack-0.6.2/tests/e2e/mock_tls_inference_server/README.md +0 -5
  742. lightspeed_stack-0.6.2/tests/e2e/mock_tls_inference_server/server.py +0 -382
  743. lightspeed_stack-0.6.2/tests/e2e/proxy/README.md +0 -11
  744. lightspeed_stack-0.6.2/tests/e2e/proxy/interception_proxy.py +0 -331
  745. lightspeed_stack-0.6.2/tests/e2e/proxy/tunnel_proxy.py +0 -263
  746. lightspeed_stack-0.6.2/tests/e2e/rag/README.md +0 -45
  747. lightspeed_stack-0.6.2/tests/e2e/rag/kv_store.db +0 -0
  748. lightspeed_stack-0.6.2/tests/e2e/rag/pdf_kv_store.db +0 -0
  749. lightspeed_stack-0.6.2/tests/e2e/test_list.txt +0 -40
  750. lightspeed_stack-0.6.2/tests/e2e/utils/README.md +0 -17
  751. lightspeed_stack-0.6.2/tests/e2e/utils/llama_config_utils.py +0 -121
  752. lightspeed_stack-0.6.2/tests/e2e/utils/llama_prow_utils.py +0 -41
  753. lightspeed_stack-0.6.2/tests/e2e/utils/llama_stack_utils.py +0 -160
  754. lightspeed_stack-0.6.2/tests/e2e/utils/prow_utils.py +0 -300
  755. lightspeed_stack-0.6.2/tests/e2e/utils/utils.py +0 -552
  756. lightspeed_stack-0.6.2/tests/e2e-prow/rhoai/configs/run.yaml +0 -169
  757. lightspeed_stack-0.6.2/tests/e2e-prow/rhoai/manifests/lightspeed/e2e-interception-proxy.yaml +0 -77
  758. lightspeed_stack-0.6.2/tests/e2e-prow/rhoai/manifests/lightspeed/e2e-mock-tls-inference.yaml +0 -104
  759. lightspeed_stack-0.6.2/tests/e2e-prow/rhoai/manifests/lightspeed/e2e-tunnel-proxy.yaml +0 -69
  760. lightspeed_stack-0.6.2/tests/e2e-prow/rhoai/manifests/lightspeed/lightspeed-stack.yaml +0 -79
  761. lightspeed_stack-0.6.2/tests/e2e-prow/rhoai/manifests/lightspeed/llama-stack-openai.yaml +0 -269
  762. lightspeed_stack-0.6.2/tests/e2e-prow/rhoai/manifests/lightspeed/llama-stack-prow.yaml +0 -200
  763. lightspeed_stack-0.6.2/tests/e2e-prow/rhoai/pipeline-konflux.sh +0 -449
  764. lightspeed_stack-0.6.2/tests/e2e-prow/rhoai/pipeline-services-konflux.sh +0 -61
  765. lightspeed_stack-0.6.2/tests/e2e-prow/rhoai/pipeline-services.sh +0 -30
  766. lightspeed_stack-0.6.2/tests/e2e-prow/rhoai/pipeline.sh +0 -492
  767. lightspeed_stack-0.6.2/tests/e2e-prow/rhoai/scripts/e2e-ops.sh +0 -1084
  768. lightspeed_stack-0.6.2/tests/integration/README.md +0 -524
  769. lightspeed_stack-0.6.2/tests/integration/conftest.py +0 -824
  770. lightspeed_stack-0.6.2/tests/integration/container_lifecycle/README.md +0 -5
  771. lightspeed_stack-0.6.2/tests/integration/container_lifecycle/test_container_lifecycle.py +0 -628
  772. lightspeed_stack-0.6.2/tests/integration/endpoints/README.md +0 -56
  773. lightspeed_stack-0.6.2/tests/integration/endpoints/test_config_integration.py +0 -90
  774. lightspeed_stack-0.6.2/tests/integration/endpoints/test_conversations_v1_integration.py +0 -827
  775. lightspeed_stack-0.6.2/tests/integration/endpoints/test_health_integration.py +0 -195
  776. lightspeed_stack-0.6.2/tests/integration/endpoints/test_info_integration.py +0 -159
  777. lightspeed_stack-0.6.2/tests/integration/endpoints/test_model_list.py +0 -212
  778. lightspeed_stack-0.6.2/tests/integration/endpoints/test_query_byok_integration.py +0 -1312
  779. lightspeed_stack-0.6.2/tests/integration/endpoints/test_query_integration.py +0 -1530
  780. lightspeed_stack-0.6.2/tests/integration/endpoints/test_responses_byok_integration.py +0 -716
  781. lightspeed_stack-0.6.2/tests/integration/endpoints/test_responses_integration.py +0 -374
  782. lightspeed_stack-0.6.2/tests/integration/endpoints/test_rlsapi_v1_integration.py +0 -555
  783. lightspeed_stack-0.6.2/tests/integration/endpoints/test_root_endpoint.py +0 -75
  784. lightspeed_stack-0.6.2/tests/integration/endpoints/test_streaming_query_byok_integration.py +0 -1082
  785. lightspeed_stack-0.6.2/tests/integration/endpoints/test_streaming_query_integration.py +0 -317
  786. lightspeed_stack-0.6.2/tests/integration/endpoints/test_tools_integration.py +0 -107
  787. lightspeed_stack-0.6.2/tests/integration/test_configuration.py +0 -94
  788. lightspeed_stack-0.6.2/tests/integration/test_openapi_json.py +0 -416
  789. lightspeed_stack-0.6.2/tests/unit/README.md +0 -35
  790. lightspeed_stack-0.6.2/tests/unit/__init__.py +0 -41
  791. lightspeed_stack-0.6.2/tests/unit/a2a_storage/README.md +0 -14
  792. lightspeed_stack-0.6.2/tests/unit/app/README.md +0 -14
  793. lightspeed_stack-0.6.2/tests/unit/app/endpoints/README.md +0 -83
  794. lightspeed_stack-0.6.2/tests/unit/app/endpoints/test_a2a.py +0 -961
  795. lightspeed_stack-0.6.2/tests/unit/app/endpoints/test_authorized.py +0 -86
  796. lightspeed_stack-0.6.2/tests/unit/app/endpoints/test_config.py +0 -74
  797. lightspeed_stack-0.6.2/tests/unit/app/endpoints/test_conversations.py +0 -2164
  798. lightspeed_stack-0.6.2/tests/unit/app/endpoints/test_conversations_v2.py +0 -977
  799. lightspeed_stack-0.6.2/tests/unit/app/endpoints/test_feedback.py +0 -551
  800. lightspeed_stack-0.6.2/tests/unit/app/endpoints/test_health.py +0 -396
  801. lightspeed_stack-0.6.2/tests/unit/app/endpoints/test_info.py +0 -147
  802. lightspeed_stack-0.6.2/tests/unit/app/endpoints/test_mcp_auth.py +0 -339
  803. lightspeed_stack-0.6.2/tests/unit/app/endpoints/test_mcp_servers.py +0 -542
  804. lightspeed_stack-0.6.2/tests/unit/app/endpoints/test_metrics.py +0 -43
  805. lightspeed_stack-0.6.2/tests/unit/app/endpoints/test_models.py +0 -474
  806. lightspeed_stack-0.6.2/tests/unit/app/endpoints/test_prompts.py +0 -385
  807. lightspeed_stack-0.6.2/tests/unit/app/endpoints/test_providers.py +0 -202
  808. lightspeed_stack-0.6.2/tests/unit/app/endpoints/test_query.py +0 -815
  809. lightspeed_stack-0.6.2/tests/unit/app/endpoints/test_rags.py +0 -391
  810. lightspeed_stack-0.6.2/tests/unit/app/endpoints/test_responses.py +0 -2869
  811. lightspeed_stack-0.6.2/tests/unit/app/endpoints/test_responses_splunk.py +0 -814
  812. lightspeed_stack-0.6.2/tests/unit/app/endpoints/test_rlsapi_v1.py +0 -1619
  813. lightspeed_stack-0.6.2/tests/unit/app/endpoints/test_root.py +0 -24
  814. lightspeed_stack-0.6.2/tests/unit/app/endpoints/test_shields.py +0 -498
  815. lightspeed_stack-0.6.2/tests/unit/app/endpoints/test_streaming_query.py +0 -2707
  816. lightspeed_stack-0.6.2/tests/unit/app/endpoints/test_tools.py +0 -1179
  817. lightspeed_stack-0.6.2/tests/unit/app/endpoints/test_vector_stores.py +0 -1283
  818. lightspeed_stack-0.6.2/tests/unit/app/test_main_middleware.py +0 -243
  819. lightspeed_stack-0.6.2/tests/unit/app/test_routers.py +0 -185
  820. lightspeed_stack-0.6.2/tests/unit/authentication/README.md +0 -32
  821. lightspeed_stack-0.6.2/tests/unit/authentication/test_k8s.py +0 -1137
  822. lightspeed_stack-0.6.2/tests/unit/authentication/test_rh_identity.py +0 -1058
  823. lightspeed_stack-0.6.2/tests/unit/authentication/test_trusted_proxy.py +0 -507
  824. lightspeed_stack-0.6.2/tests/unit/authorization/README.md +0 -14
  825. lightspeed_stack-0.6.2/tests/unit/authorization/test_azure_token_manager.py +0 -177
  826. lightspeed_stack-0.6.2/tests/unit/authorization/test_middleware.py +0 -407
  827. lightspeed_stack-0.6.2/tests/unit/cache/README.md +0 -20
  828. lightspeed_stack-0.6.2/tests/unit/cache/test_cache_factory.py +0 -265
  829. lightspeed_stack-0.6.2/tests/unit/cache/test_postgres_cache.py +0 -1129
  830. lightspeed_stack-0.6.2/tests/unit/conftest.py +0 -144
  831. lightspeed_stack-0.6.2/tests/unit/metrics/README.md +0 -11
  832. lightspeed_stack-0.6.2/tests/unit/metrics/test_utis.py +0 -75
  833. lightspeed_stack-0.6.2/tests/unit/models/README.md +0 -8
  834. lightspeed_stack-0.6.2/tests/unit/models/config/README.md +0 -86
  835. lightspeed_stack-0.6.2/tests/unit/models/config/test_a2a_state_configuration.py +0 -117
  836. lightspeed_stack-0.6.2/tests/unit/models/config/test_approvals_configuration.py +0 -121
  837. lightspeed_stack-0.6.2/tests/unit/models/config/test_authentication_configuration.py +0 -616
  838. lightspeed_stack-0.6.2/tests/unit/models/config/test_byok_rag.py +0 -269
  839. lightspeed_stack-0.6.2/tests/unit/models/config/test_dump_configuration.py +0 -2586
  840. lightspeed_stack-0.6.2/tests/unit/models/config/test_inference_configuration.py +0 -160
  841. lightspeed_stack-0.6.2/tests/unit/models/config/test_llama_stack_configuration.py +0 -313
  842. lightspeed_stack-0.6.2/tests/unit/models/config/test_model_context_protocol_server.py +0 -405
  843. lightspeed_stack-0.6.2/tests/unit/models/config/test_rag_configuration.py +0 -91
  844. lightspeed_stack-0.6.2/tests/unit/models/config/test_rlsapi_v1_configuration.py +0 -169
  845. lightspeed_stack-0.6.2/tests/unit/models/requests/README.md +0 -23
  846. lightspeed_stack-0.6.2/tests/unit/models/requests/test_attachment.py +0 -38
  847. lightspeed_stack-0.6.2/tests/unit/models/responses/README.md +0 -26
  848. lightspeed_stack-0.6.2/tests/unit/models/responses/test_authorized_response.py +0 -46
  849. lightspeed_stack-0.6.2/tests/unit/models/responses/test_error_responses.py +0 -825
  850. lightspeed_stack-0.6.2/tests/unit/models/responses/test_query_response.py +0 -95
  851. lightspeed_stack-0.6.2/tests/unit/models/responses/test_successful_responses.py +0 -1304
  852. lightspeed_stack-0.6.2/tests/unit/models/rlsapi/README.md +0 -11
  853. lightspeed_stack-0.6.2/tests/unit/observability/README.md +0 -8
  854. lightspeed_stack-0.6.2/tests/unit/observability/formats/README.md +0 -11
  855. lightspeed_stack-0.6.2/tests/unit/observability/test_splunk.py +0 -318
  856. lightspeed_stack-0.6.2/tests/unit/pydantic_ai_lightspeed/README.md +0 -5
  857. lightspeed_stack-0.6.2/tests/unit/pydantic_ai_lightspeed/capabilities/README.md +0 -5
  858. lightspeed_stack-0.6.2/tests/unit/pydantic_ai_lightspeed/capabilities/question_validity/README.md +0 -8
  859. lightspeed_stack-0.6.2/tests/unit/pydantic_ai_lightspeed/capabilities/question_validity/test_capability.py +0 -571
  860. lightspeed_stack-0.6.2/tests/unit/pydantic_ai_lightspeed/capabilities/redaction/test_capability.py +0 -316
  861. lightspeed_stack-0.6.2/tests/unit/pydantic_ai_lightspeed/llamastack/README.md +0 -11
  862. lightspeed_stack-0.6.2/tests/unit/pydantic_ai_lightspeed/llamastack/__init__.py +0 -1
  863. lightspeed_stack-0.6.2/tests/unit/pydantic_ai_lightspeed/llamastack/test_provider.py +0 -156
  864. lightspeed_stack-0.6.2/tests/unit/pydantic_ai_lightspeed/llamastack/test_transport.py +0 -344
  865. lightspeed_stack-0.6.2/tests/unit/quota/README.md +0 -23
  866. lightspeed_stack-0.6.2/tests/unit/runners/README.md +0 -8
  867. lightspeed_stack-0.6.2/tests/unit/telemetry/README.md +0 -11
  868. lightspeed_stack-0.6.2/tests/unit/telemetry/conftest.py +0 -390
  869. lightspeed_stack-0.6.2/tests/unit/telemetry/test_configuration_snapshot.py +0 -727
  870. lightspeed_stack-0.6.2/tests/unit/test_client.py +0 -383
  871. lightspeed_stack-0.6.2/tests/unit/test_configuration.py +0 -3941
  872. lightspeed_stack-0.6.2/tests/unit/test_degraded_mode.py +0 -59
  873. lightspeed_stack-0.6.2/tests/unit/test_lightspeed_stack.py +0 -16
  874. lightspeed_stack-0.6.2/tests/unit/test_llama_stack_configuration.py +0 -892
  875. lightspeed_stack-0.6.2/tests/unit/test_llama_stack_synthesize.py +0 -371
  876. lightspeed_stack-0.6.2/tests/unit/test_sentry.py +0 -186
  877. lightspeed_stack-0.6.2/tests/unit/utils/README.md +0 -86
  878. lightspeed_stack-0.6.2/tests/unit/utils/agents/README.md +0 -11
  879. lightspeed_stack-0.6.2/tests/unit/utils/agents/test_query.py +0 -499
  880. lightspeed_stack-0.6.2/tests/unit/utils/agents/test_streaming.py +0 -1146
  881. lightspeed_stack-0.6.2/tests/unit/utils/agents/test_tool_processor.py +0 -637
  882. lightspeed_stack-0.6.2/tests/unit/utils/test_common.py +0 -414
  883. lightspeed_stack-0.6.2/tests/unit/utils/test_compaction.py +0 -597
  884. lightspeed_stack-0.6.2/tests/unit/utils/test_conversation_compaction.py +0 -668
  885. lightspeed_stack-0.6.2/tests/unit/utils/test_conversations.py +0 -857
  886. lightspeed_stack-0.6.2/tests/unit/utils/test_endpoints.py +0 -547
  887. lightspeed_stack-0.6.2/tests/unit/utils/test_llama_stack_version.py +0 -158
  888. lightspeed_stack-0.6.2/tests/unit/utils/test_prompts.py +0 -335
  889. lightspeed_stack-0.6.2/tests/unit/utils/test_pydantic_ai.py +0 -409
  890. lightspeed_stack-0.6.2/tests/unit/utils/test_query.py +0 -757
  891. lightspeed_stack-0.6.2/tests/unit/utils/test_responses.py +0 -3574
  892. lightspeed_stack-0.6.2/tests/unit/utils/test_schema_dumper.py +0 -520
  893. lightspeed_stack-0.6.2/tests/unit/utils/test_shields.py +0 -632
  894. lightspeed_stack-0.6.2/tests/unit/utils/test_suid.py +0 -155
  895. lightspeed_stack-0.6.2/tests/unit/utils/test_token_estimator.py +0 -245
  896. lightspeed_stack-0.6.2/tests/unit/utils/test_transcripts.py +0 -153
  897. lightspeed_stack-0.6.2/tests/unit/utils/test_types.py +0 -268
  898. lightspeed_stack-0.6.2/tests/unit/utils/test_vector_search.py +0 -1384
  899. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/LICENSE +0 -0
  900. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/a2a_storage/__init__.py +0 -0
  901. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/a2a_storage/storage_factory.py +0 -0
  902. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/app/__init__.py +0 -0
  903. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/app/database.py +0 -0
  904. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/app/endpoints/__init__.py +0 -0
  905. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/app/endpoints/a2a_openapi.py +0 -0
  906. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/app/endpoints/stream_interrupt.py +0 -0
  907. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/authentication/__init__.py +0 -0
  908. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/authentication/api_key_token.py +0 -0
  909. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/authentication/interface.py +0 -0
  910. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/authentication/jwk_token.py +0 -0
  911. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/authentication/k8s.py +0 -0
  912. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/authentication/noop.py +0 -0
  913. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/authentication/noop_with_token.py +0 -0
  914. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/authentication/trusted_proxy.py +0 -0
  915. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/authentication/utils.py +0 -0
  916. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/authorization/__init__.py +0 -0
  917. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/authorization/azure_token_manager.py +0 -0
  918. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/authorization/middleware.py +0 -0
  919. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/authorization/resolvers.py +0 -0
  920. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/cache/__init__.py +0 -0
  921. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/cache/cache.py +0 -0
  922. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/cache/cache_entry.py +0 -0
  923. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/cache/cache_error.py +0 -0
  924. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/cache/cache_factory.py +0 -0
  925. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/cache/in_memory_cache.py +0 -0
  926. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/cache/noop_cache.py +0 -0
  927. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/cache/postgres_cache.py +0 -0
  928. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/cache/sqlite_cache.py +0 -0
  929. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/metrics/__init__.py +0 -0
  930. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/metrics/recording.py +0 -0
  931. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/models/__init__.py +0 -0
  932. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/models/api/__init__.py +0 -0
  933. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/models/api/requests/catalog.py +0 -0
  934. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/models/api/requests/conversations.py +0 -0
  935. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/models/api/requests/feedback.py +0 -0
  936. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/models/api/requests/mcp_servers.py +0 -0
  937. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/models/api/requests/rlsapi.py +0 -0
  938. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/models/api/requests/vector_stores.py +0 -0
  939. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/models/api/responses/error/bases.py +0 -0
  940. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/models/api/responses/error/internal.py +0 -0
  941. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/models/api/responses/error/not_found.py +0 -0
  942. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/models/api/responses/error/unauthorized.py +0 -0
  943. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/models/api/responses/successful/bases.py +0 -0
  944. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/models/api/responses/successful/conversations.py +0 -0
  945. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/models/api/responses/successful/feedback.py +0 -0
  946. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/models/api/responses/successful/mcp_servers.py +0 -0
  947. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/models/api/responses/successful/rlsapi.py +0 -0
  948. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/models/common/agents/turn_accumulator.py +0 -0
  949. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/models/common/conversation.py +0 -0
  950. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/models/common/feedback.py +0 -0
  951. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/models/common/mcp.py +0 -0
  952. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/models/common/transcripts.py +0 -0
  953. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/models/database/__init__.py +0 -0
  954. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/models/database/base.py +0 -0
  955. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/observability/formats/responses.py +0 -0
  956. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/observability/formats/rlsapi.py +0 -0
  957. {lightspeed_stack-0.6.2/src/app/endpoints → lightspeed_stack-0.7.0rc2/src/observability}/responses_telemetry.py +0 -0
  958. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/observability/splunk.py +0 -0
  959. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/pydantic_ai_lightspeed/__init__.py +0 -0
  960. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/pydantic_ai_lightspeed/capabilities/__init__.py +0 -0
  961. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/pydantic_ai_lightspeed/capabilities/question_validity/__init__.py +0 -0
  962. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/pydantic_ai_lightspeed/capabilities/redaction/core.py +0 -0
  963. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/quota/__init__.py +0 -0
  964. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/quota/cluster_quota_limiter.py +0 -0
  965. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/quota/connect_pg.py +0 -0
  966. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/quota/connect_sqlite.py +0 -0
  967. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/quota/quota_exceed_error.py +0 -0
  968. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/quota/quota_limiter_factory.py +0 -0
  969. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/quota/revokable_quota_limiter.py +0 -0
  970. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/quota/sql.py +0 -0
  971. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/quota/user_quota_limiter.py +0 -0
  972. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/runners/__init__.py +0 -0
  973. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/utils/__init__.py +0 -0
  974. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/utils/checks.py +0 -0
  975. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/utils/connection_decorator.py +0 -0
  976. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/utils/markdown_repair.py +0 -0
  977. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/utils/mcp_headers.py +0 -0
  978. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/utils/mcp_oauth_probe.py +0 -0
  979. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/utils/prompts.py +0 -0
  980. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/utils/rh_identity.py +0 -0
  981. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/utils/streaming_sse.py +0 -0
  982. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/src/utils/token_counter.py +0 -0
  983. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/__init__.py +0 -0
  984. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/benchmarks/README.md +0 -0
  985. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/benchmarks/conftest.py +0 -0
  986. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/benchmarks/data/js_10000_lines.js +0 -0
  987. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/benchmarks/data/js_1000_lines.js +0 -0
  988. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/benchmarks/data/js_100_lines.js +0 -0
  989. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/benchmarks/data/js_10_lines.js +0 -0
  990. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/benchmarks/data/json_10000_lines.json +0 -0
  991. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/benchmarks/data/json_1000_lines.json +0 -0
  992. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/benchmarks/data/json_100_lines.json +0 -0
  993. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/benchmarks/data/json_10_lines.json +0 -0
  994. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/benchmarks/data/xml_10000_lines.xml +0 -0
  995. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/benchmarks/data/xml_1000_lines.xml +0 -0
  996. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/benchmarks/data/xml_100_lines.xml +0 -0
  997. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/benchmarks/data/xml_10_lines.xml +0 -0
  998. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/benchmarks/data/yaml_10000_lines.yml +0 -0
  999. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/benchmarks/data/yaml_1000_lines.yml +0 -0
  1000. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/benchmarks/data/yaml_100_lines.yml +0 -0
  1001. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/benchmarks/data/yaml_10_lines.yml +0 -0
  1002. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/benchmarks/data_generators.py +0 -0
  1003. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/benchmarks/db_benchmarks.py +0 -0
  1004. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/benchmarks/test_app_database.py +0 -0
  1005. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/benchmarks/test_app_database_comparison.py +0 -0
  1006. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/benchmarks/test_token_estimator.py +0 -0
  1007. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/configuration/multiline_system_prompt.txt +0 -0
  1008. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/configuration/password +0 -0
  1009. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/configuration/rag.txt +0 -0
  1010. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/configuration/server.crt +0 -0
  1011. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/configuration/server.key +0 -0
  1012. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/configuration/system_prompt.txt +0 -0
  1013. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/e2e/README.md +0 -0
  1014. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/e2e/__init__.py +0 -0
  1015. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/e2e/configs/README.md +0 -0
  1016. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/e2e/configuration/library-mode/README.md +0 -0
  1017. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/e2e/configuration/server-mode/README.md +0 -0
  1018. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/e2e/features/steps/__init__.py +0 -0
  1019. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/e2e/features/steps/auth.py +0 -0
  1020. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/e2e/features/steps/conversation.py +0 -0
  1021. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/e2e/features/steps/models.py +0 -0
  1022. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/e2e/features/steps/prompts.py +0 -0
  1023. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/e2e/features/steps/responses_steps.py +0 -0
  1024. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/e2e/features/steps/rlsapi_v1.py +0 -0
  1025. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/e2e/features/steps/token_counters.py +0 -0
  1026. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/e2e/mock_jwks_server/Dockerfile +0 -0
  1027. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/e2e/mock_mcp_server/Dockerfile +0 -0
  1028. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/e2e/mock_mcp_server/server.py +0 -0
  1029. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/e2e/mock_tls_inference_server/Dockerfile +0 -0
  1030. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/e2e/patches/README.md +0 -0
  1031. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/e2e/patches/docker-compose-mcp-volumes-selinux.patch +0 -0
  1032. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/e2e/proxy/__init__.py +0 -0
  1033. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/e2e/rag/sources/README.md +0 -0
  1034. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/e2e/rag/sources/lightspeed-field-notes.pdf +0 -0
  1035. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/e2e/secrets/README.md +0 -0
  1036. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/e2e/secrets/invalid-mcp-token +0 -0
  1037. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/e2e/secrets/mcp-token +0 -0
  1038. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/e2e/skills/echo/SKILL.md +0 -0
  1039. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/e2e/skills/echo/references/guide.md +0 -0
  1040. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/e2e/skills/summarize/SKILL.md +0 -0
  1041. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/e2e/skills/summarize/references/guide.md +0 -0
  1042. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/e2e/test_api.py +0 -0
  1043. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/e2e-prow/rhoai/.e2e_exit_code +0 -0
  1044. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/e2e-prow/rhoai/manifests/gpu/cluster-policy.yaml +0 -0
  1045. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/e2e-prow/rhoai/manifests/gpu/create-nfd.yaml +0 -0
  1046. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/e2e-prow/rhoai/manifests/lightspeed/mock-jwks.yaml +0 -0
  1047. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/e2e-prow/rhoai/manifests/lightspeed/mock-mcp.yaml +0 -0
  1048. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/e2e-prow/rhoai/manifests/namespaces/nfd.yaml +0 -0
  1049. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/e2e-prow/rhoai/manifests/namespaces/nvidia-operator.yaml +0 -0
  1050. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/e2e-prow/rhoai/manifests/operators/ds-cluster.yaml +0 -0
  1051. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/e2e-prow/rhoai/manifests/operators/operatorgroup.yaml +0 -0
  1052. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/e2e-prow/rhoai/manifests/operators/operators.yaml +0 -0
  1053. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/e2e-prow/rhoai/manifests/vllm/vllm-inference-service-cpu.yaml +0 -0
  1054. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/e2e-prow/rhoai/manifests/vllm/vllm-inference-service-gpu.yaml +0 -0
  1055. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/e2e-prow/rhoai/manifests/vllm/vllm-runtime-cpu.yaml +0 -0
  1056. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/e2e-prow/rhoai/manifests/vllm/vllm-runtime-gpu.yaml +0 -0
  1057. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/e2e-prow/rhoai/pipeline-test-pod.sh +0 -0
  1058. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/e2e-prow/rhoai/pipeline-vllm.sh +0 -0
  1059. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/e2e-prow/rhoai/run-tests.sh +0 -0
  1060. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/e2e-prow/rhoai/scripts/bootstrap.sh +0 -0
  1061. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/e2e-prow/rhoai/scripts/deploy-vllm.sh +0 -0
  1062. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/e2e-prow/rhoai/scripts/fetch-vllm-image.sh +0 -0
  1063. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/e2e-prow/rhoai/scripts/get-vllm-pod-info.sh +0 -0
  1064. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/e2e-prow/rhoai/scripts/gpu-setup.sh +0 -0
  1065. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/integration/__init__.py +0 -0
  1066. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/integration/endpoints/__init__.py +0 -0
  1067. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/integration/endpoints/test_authorized_endpoint.py +0 -0
  1068. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/integration/endpoints/test_conversations_v2_integration.py +0 -0
  1069. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/integration/endpoints/test_stream_interrupt_integration.py +0 -0
  1070. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/integration/test_middleware_integration.py +0 -0
  1071. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/integration/test_rh_identity_integration.py +0 -0
  1072. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/integration/test_version.py +0 -0
  1073. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/profiles/empty.py +0 -0
  1074. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/profiles/syntax_error.py +0 -0
  1075. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/profiles/test/profile.py +0 -0
  1076. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/profiles/test_four/profile.py +0 -0
  1077. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/profiles/test_three/profile.py +0 -0
  1078. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/profiles/test_two/test.txt +0 -0
  1079. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/a2a_storage/__init__.py +0 -0
  1080. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/a2a_storage/test_in_memory_context_store.py +0 -0
  1081. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/a2a_storage/test_sqlite_context_store.py +0 -0
  1082. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/a2a_storage/test_storage_factory.py +0 -0
  1083. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/app/__init__.py +0 -0
  1084. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/app/endpoints/__init__.py +0 -0
  1085. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/app/endpoints/conftest.py +0 -0
  1086. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/app/endpoints/test_stream_interrupt.py +0 -0
  1087. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/app/test_database.py +0 -0
  1088. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/authentication/__init__.py +0 -0
  1089. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/authentication/test_api_key_token.py +0 -0
  1090. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/authentication/test_auth.py +0 -0
  1091. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/authentication/test_jwk_token.py +0 -0
  1092. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/authentication/test_noop.py +0 -0
  1093. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/authentication/test_noop_with_token.py +0 -0
  1094. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/authentication/test_utils.py +0 -0
  1095. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/authorization/__init__.py +0 -0
  1096. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/authorization/test_resolvers.py +0 -0
  1097. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/cache/__init__.py +0 -0
  1098. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/cache/test_in_memory_cache.py +0 -0
  1099. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/cache/test_noop_cache.py +0 -0
  1100. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/cache/test_sqlite_cache.py +0 -0
  1101. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/metrics/__init__.py +0 -0
  1102. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/metrics/test_recording.py +0 -0
  1103. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/models/__init__.py +0 -0
  1104. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/models/config/__init__.py +0 -0
  1105. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/models/config/test_compaction_configuration.py +0 -0
  1106. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/models/config/test_conversation_history.py +0 -0
  1107. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/models/config/test_cors.py +0 -0
  1108. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/models/config/test_customization.py +0 -0
  1109. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/models/config/test_database_configuration.py +0 -0
  1110. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/models/config/test_in_memory_cache_configuration.py +0 -0
  1111. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/models/config/test_jwt_role_rule.py +0 -0
  1112. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/models/config/test_postgresql_database_configuration.py +0 -0
  1113. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/models/config/test_quota_handlers_config.py +0 -0
  1114. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/models/config/test_quota_limiter_config.py +0 -0
  1115. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/models/config/test_quota_scheduler_config.py +0 -0
  1116. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/models/config/test_reranker_configuration.py +0 -0
  1117. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/models/config/test_service_configuration.py +0 -0
  1118. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/models/config/test_skills_configuration.py +0 -0
  1119. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/models/config/test_splunk_configuration.py +0 -0
  1120. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/models/config/test_tls_configuration.py +0 -0
  1121. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/models/config/test_user_data_collection.py +0 -0
  1122. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/models/requests/__init__.py +0 -0
  1123. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/models/requests/test_feedback_request.py +0 -0
  1124. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/models/requests/test_feedback_status_update_request.py +0 -0
  1125. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/models/requests/test_query_request.py +0 -0
  1126. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/models/requests/test_responses_request.py +0 -0
  1127. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/models/requests/test_vector_store_requests.py +0 -0
  1128. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/models/responses/__init__.py +0 -0
  1129. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/models/responses/test_rag_chunk.py +0 -0
  1130. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/models/responses/test_response_types.py +0 -0
  1131. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/models/responses/test_types.py +0 -0
  1132. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/models/rlsapi/__init__.py +0 -0
  1133. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/models/rlsapi/test_requests.py +0 -0
  1134. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/models/rlsapi/test_responses.py +0 -0
  1135. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/models/test_compaction.py +0 -0
  1136. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/observability/__init__.py +0 -0
  1137. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/observability/formats/__init__.py +0 -0
  1138. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/observability/formats/test_responses.py +0 -0
  1139. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/observability/formats/test_rlsapi.py +0 -0
  1140. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/pydantic_ai_lightspeed/__init__.py +0 -0
  1141. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/pydantic_ai_lightspeed/capabilities/__init__.py +0 -0
  1142. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/pydantic_ai_lightspeed/capabilities/question_validity/__init__.py +0 -0
  1143. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/pydantic_ai_lightspeed/capabilities/redaction/__init__.py +0 -0
  1144. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/pydantic_ai_lightspeed/capabilities/redaction/test_config.py +0 -0
  1145. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/pydantic_ai_lightspeed/capabilities/redaction/test_core.py +0 -0
  1146. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/quota/__init__.py +0 -0
  1147. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/quota/test_cluster_quota_limiter.py +0 -0
  1148. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/quota/test_connect_pg.py +0 -0
  1149. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/quota/test_connect_sqlite.py +0 -0
  1150. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/quota/test_quota_exceed_error.py +0 -0
  1151. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/quota/test_quota_limiter_factory.py +0 -0
  1152. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/quota/test_user_quota_limiter.py +0 -0
  1153. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/runners/__init__.py +0 -0
  1154. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/runners/test_uvicorn_runner.py +0 -0
  1155. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/telemetry/__init__.py +0 -0
  1156. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/test_configuration_unknown_fields.py +0 -0
  1157. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/test_log.py +0 -0
  1158. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/utils/__init__.py +0 -0
  1159. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/utils/auth_helpers.py +0 -0
  1160. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/utils/test_checks.py +0 -0
  1161. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/utils/test_connection_decorator.py +0 -0
  1162. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/utils/test_markdown_repair.py +0 -0
  1163. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/utils/test_mcp_auth_headers.py +0 -0
  1164. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/utils/test_mcp_headers.py +0 -0
  1165. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/utils/test_rh_identity.py +0 -0
  1166. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/utils/test_stream_interrupts.py +0 -0
  1167. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/utils/test_streaming_sse.py +0 -0
  1168. {lightspeed_stack-0.6.2 → lightspeed_stack-0.7.0rc2}/tests/unit/utils/test_tool_formatter.py +0 -0
@@ -0,0 +1,1819 @@
1
+ Metadata-Version: 2.1
2
+ Name: lightspeed-stack
3
+ Version: 0.7.0rc2
4
+ Summary: LLM tooling stack
5
+ Keywords: LLM,RAG
6
+ Maintainer-Email: =?utf-8?b?UGF2ZWwgVGnFoW5vdnNrw70=?= <tisnik@centrum.cz>
7
+ License: Apache License
8
+ Version 2.0, January 2004
9
+ http://www.apache.org/licenses/
10
+
11
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
12
+
13
+ 1. Definitions.
14
+
15
+ "License" shall mean the terms and conditions for use, reproduction,
16
+ and distribution as defined by Sections 1 through 9 of this document.
17
+
18
+ "Licensor" shall mean the copyright owner or entity authorized by
19
+ the copyright owner that is granting the License.
20
+
21
+ "Legal Entity" shall mean the union of the acting entity and all
22
+ other entities that control, are controlled by, or are under common
23
+ control with that entity. For the purposes of this definition,
24
+ "control" means (i) the power, direct or indirect, to cause the
25
+ direction or management of such entity, whether by contract or
26
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
27
+ outstanding shares, or (iii) beneficial ownership of such entity.
28
+
29
+ "You" (or "Your") shall mean an individual or Legal Entity
30
+ exercising permissions granted by this License.
31
+
32
+ "Source" form shall mean the preferred form for making modifications,
33
+ including but not limited to software source code, documentation
34
+ source, and configuration files.
35
+
36
+ "Object" form shall mean any form resulting from mechanical
37
+ transformation or translation of a Source form, including but
38
+ not limited to compiled object code, generated documentation,
39
+ and conversions to other media types.
40
+
41
+ "Work" shall mean the work of authorship, whether in Source or
42
+ Object form, made available under the License, as indicated by a
43
+ copyright notice that is included in or attached to the work
44
+ (an example is provided in the Appendix below).
45
+
46
+ "Derivative Works" shall mean any work, whether in Source or Object
47
+ form, that is based on (or derived from) the Work and for which the
48
+ editorial revisions, annotations, elaborations, or other modifications
49
+ represent, as a whole, an original work of authorship. For the purposes
50
+ of this License, Derivative Works shall not include works that remain
51
+ separable from, or merely link (or bind by name) to the interfaces of,
52
+ the Work and Derivative Works thereof.
53
+
54
+ "Contribution" shall mean any work of authorship, including
55
+ the original version of the Work and any modifications or additions
56
+ to that Work or Derivative Works thereof, that is intentionally
57
+ submitted to Licensor for inclusion in the Work by the copyright owner
58
+ or by an individual or Legal Entity authorized to submit on behalf of
59
+ the copyright owner. For the purposes of this definition, "submitted"
60
+ means any form of electronic, verbal, or written communication sent
61
+ to the Licensor or its representatives, including but not limited to
62
+ communication on electronic mailing lists, source code control systems,
63
+ and issue tracking systems that are managed by, or on behalf of, the
64
+ Licensor for the purpose of discussing and improving the Work, but
65
+ excluding communication that is conspicuously marked or otherwise
66
+ designated in writing by the copyright owner as "Not a Contribution."
67
+
68
+ "Contributor" shall mean Licensor and any individual or Legal Entity
69
+ on behalf of whom a Contribution has been received by Licensor and
70
+ subsequently incorporated within the Work.
71
+
72
+ 2. Grant of Copyright License. Subject to the terms and conditions of
73
+ this License, each Contributor hereby grants to You a perpetual,
74
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
75
+ copyright license to reproduce, prepare Derivative Works of,
76
+ publicly display, publicly perform, sublicense, and distribute the
77
+ Work and such Derivative Works in Source or Object form.
78
+
79
+ 3. Grant of Patent License. Subject to the terms and conditions of
80
+ this License, each Contributor hereby grants to You a perpetual,
81
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
82
+ (except as stated in this section) patent license to make, have made,
83
+ use, offer to sell, sell, import, and otherwise transfer the Work,
84
+ where such license applies only to those patent claims licensable
85
+ by such Contributor that are necessarily infringed by their
86
+ Contribution(s) alone or by combination of their Contribution(s)
87
+ with the Work to which such Contribution(s) was submitted. If You
88
+ institute patent litigation against any entity (including a
89
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
90
+ or a Contribution incorporated within the Work constitutes direct
91
+ or contributory patent infringement, then any patent licenses
92
+ granted to You under this License for that Work shall terminate
93
+ as of the date such litigation is filed.
94
+
95
+ 4. Redistribution. You may reproduce and distribute copies of the
96
+ Work or Derivative Works thereof in any medium, with or without
97
+ modifications, and in Source or Object form, provided that You
98
+ meet the following conditions:
99
+
100
+ (a) You must give any other recipients of the Work or
101
+ Derivative Works a copy of this License; and
102
+
103
+ (b) You must cause any modified files to carry prominent notices
104
+ stating that You changed the files; and
105
+
106
+ (c) You must retain, in the Source form of any Derivative Works
107
+ that You distribute, all copyright, patent, trademark, and
108
+ attribution notices from the Source form of the Work,
109
+ excluding those notices that do not pertain to any part of
110
+ the Derivative Works; and
111
+
112
+ (d) If the Work includes a "NOTICE" text file as part of its
113
+ distribution, then any Derivative Works that You distribute must
114
+ include a readable copy of the attribution notices contained
115
+ within such NOTICE file, excluding those notices that do not
116
+ pertain to any part of the Derivative Works, in at least one
117
+ of the following places: within a NOTICE text file distributed
118
+ as part of the Derivative Works; within the Source form or
119
+ documentation, if provided along with the Derivative Works; or,
120
+ within a display generated by the Derivative Works, if and
121
+ wherever such third-party notices normally appear. The contents
122
+ of the NOTICE file are for informational purposes only and
123
+ do not modify the License. You may add Your own attribution
124
+ notices within Derivative Works that You distribute, alongside
125
+ or as an addendum to the NOTICE text from the Work, provided
126
+ that such additional attribution notices cannot be construed
127
+ as modifying the License.
128
+
129
+ You may add Your own copyright statement to Your modifications and
130
+ may provide additional or different license terms and conditions
131
+ for use, reproduction, or distribution of Your modifications, or
132
+ for any such Derivative Works as a whole, provided Your use,
133
+ reproduction, and distribution of the Work otherwise complies with
134
+ the conditions stated in this License.
135
+
136
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
137
+ any Contribution intentionally submitted for inclusion in the Work
138
+ by You to the Licensor shall be under the terms and conditions of
139
+ this License, without any additional terms or conditions.
140
+ Notwithstanding the above, nothing herein shall supersede or modify
141
+ the terms of any separate license agreement you may have executed
142
+ with Licensor regarding such Contributions.
143
+
144
+ 6. Trademarks. This License does not grant permission to use the trade
145
+ names, trademarks, service marks, or product names of the Licensor,
146
+ except as required for reasonable and customary use in describing the
147
+ origin of the Work and reproducing the content of the NOTICE file.
148
+
149
+ 7. Disclaimer of Warranty. Unless required by applicable law or
150
+ agreed to in writing, Licensor provides the Work (and each
151
+ Contributor provides its Contributions) on an "AS IS" BASIS,
152
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
153
+ implied, including, without limitation, any warranties or conditions
154
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
155
+ PARTICULAR PURPOSE. You are solely responsible for determining the
156
+ appropriateness of using or redistributing the Work and assume any
157
+ risks associated with Your exercise of permissions under this License.
158
+
159
+ 8. Limitation of Liability. In no event and under no legal theory,
160
+ whether in tort (including negligence), contract, or otherwise,
161
+ unless required by applicable law (such as deliberate and grossly
162
+ negligent acts) or agreed to in writing, shall any Contributor be
163
+ liable to You for damages, including any direct, indirect, special,
164
+ incidental, or consequential damages of any character arising as a
165
+ result of this License or out of the use or inability to use the
166
+ Work (including but not limited to damages for loss of goodwill,
167
+ work stoppage, computer failure or malfunction, or any and all
168
+ other commercial damages or losses), even if such Contributor
169
+ has been advised of the possibility of such damages.
170
+
171
+ 9. Accepting Warranty or Additional Liability. While redistributing
172
+ the Work or Derivative Works thereof, You may choose to offer,
173
+ and charge a fee for, acceptance of support, warranty, indemnity,
174
+ or other liability obligations and/or rights consistent with this
175
+ License. However, in accepting such obligations, You may act only
176
+ on Your own behalf and on Your sole responsibility, not on behalf
177
+ of any other Contributor, and only if You agree to indemnify,
178
+ defend, and hold each Contributor harmless for any liability
179
+ incurred by, or claims asserted against, such Contributor by reason
180
+ of your accepting any such warranty or additional liability.
181
+
182
+ END OF TERMS AND CONDITIONS
183
+
184
+ APPENDIX: How to apply the Apache License to your work.
185
+
186
+ To apply the Apache License to your work, attach the following
187
+ boilerplate notice, with the fields enclosed by brackets "[]"
188
+ replaced with your own identifying information. (Don't include
189
+ the brackets!) The text should be enclosed in the appropriate
190
+ comment syntax for the file format. We also recommend that a
191
+ file or class name and description of purpose be included on the
192
+ same "printed page" as the copyright notice for easier
193
+ identification within third-party archives.
194
+
195
+ Copyright [yyyy] [name of copyright owner]
196
+
197
+ Licensed under the Apache License, Version 2.0 (the "License");
198
+ you may not use this file except in compliance with the License.
199
+ You may obtain a copy of the License at
200
+
201
+ http://www.apache.org/licenses/LICENSE-2.0
202
+
203
+ Unless required by applicable law or agreed to in writing, software
204
+ distributed under the License is distributed on an "AS IS" BASIS,
205
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
206
+ See the License for the specific language governing permissions and
207
+ limitations under the License.
208
+
209
+ Classifier: Development Status :: 4 - Beta
210
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
211
+ Classifier: Topic :: Software Development
212
+ Classifier: Programming Language :: Python :: 3
213
+ Classifier: Programming Language :: Python :: 3 :: Only
214
+ Classifier: License :: OSI Approved :: Apache Software License
215
+ Project-URL: Homepage, https://github.com/lightspeed-core/lightspeed-stack
216
+ Project-URL: Issues, https://github.com/lightspeed-core/lightspeed-stack/issues
217
+ Requires-Python: <3.14,>=3.12
218
+ Requires-Dist: fastapi>=0.115.12
219
+ Requires-Dist: uvicorn>=0.34.3
220
+ Requires-Dist: kubernetes>=30.1.0
221
+ Requires-Dist: ogx==1.2.5
222
+ Requires-Dist: ogx-client==1.2.5
223
+ Requires-Dist: ogx-api==1.2.5
224
+ Requires-Dist: rich>=14.0.0
225
+ Requires-Dist: cachetools>=6.1.0
226
+ Requires-Dist: prometheus-client>=0.22.1
227
+ Requires-Dist: starlette>=0.47.1
228
+ Requires-Dist: aiohttp>=3.13.3
229
+ Requires-Dist: authlib>=1.6.0
230
+ Requires-Dist: a2a-sdk<0.4.0,>=0.3.4
231
+ Requires-Dist: email-validator>=2.2.0
232
+ Requires-Dist: openai>=1.99.9
233
+ Requires-Dist: sqlalchemy[asyncio]>=2.0.42
234
+ Requires-Dist: aiosqlite>=0.21.0
235
+ Requires-Dist: asyncpg>=0.31.0
236
+ Requires-Dist: semver<4.0.0
237
+ Requires-Dist: jsonpath-ng>=1.6.1
238
+ Requires-Dist: psycopg2-binary>=2.9.10
239
+ Requires-Dist: litellm>=1.83.7
240
+ Requires-Dist: urllib3>=2.6.3
241
+ Requires-Dist: PyYAML>=6.0.0
242
+ Requires-Dist: einops>=0.8.1
243
+ Requires-Dist: azure-core>=1.38.0
244
+ Requires-Dist: azure-identity>=1.21.0
245
+ Requires-Dist: pyasn1>=0.6.3
246
+ Requires-Dist: jinja2>=3.1.0
247
+ Requires-Dist: requests>=2.33.0
248
+ Requires-Dist: datasets>=4.7.0
249
+ Requires-Dist: sentry-sdk[fastapi]>=2.58.0
250
+ Requires-Dist: python-dotenv>=1.2.2
251
+ Requires-Dist: tiktoken>=0.8.0
252
+ Requires-Dist: pydantic-ai==2.27.1
253
+ Requires-Dist: pydantic-ai-skills>=0.11.0
254
+ Requires-Dist: opentelemetry-distro>=0.49b0
255
+ Requires-Dist: opentelemetry-exporter-otlp>=1.34.1
256
+ Requires-Dist: opentelemetry-instrumentation-fastapi>=0.49b0
257
+ Description-Content-Type: text/markdown
258
+
259
+ # Lightspeed Core Stack (LCS)
260
+
261
+ ## About The Project
262
+
263
+ [![GitHub Pages](https://img.shields.io/badge/%20-GitHub%20Pages-informational)](https://lightspeed-core.github.io/lightspeed-stack/)
264
+ [![License](https://img.shields.io/badge/license-Apache-blue)](https://github.com/lightspeed-core/lightspeed-stack/blob/main/LICENSE)
265
+ [![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg)](https://www.python.org/)
266
+ [![Required Python version](https://img.shields.io/python/required-version-toml?tomlFilePath=https%3A%2F%2Fraw.githubusercontent.com%2Flightspeed-core%2Flightspeed-stack%2Frefs%2Fheads%2Fmain%2Fpyproject.toml)](https://www.python.org/)
267
+ [![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/lightspeed-core/lightspeed-stack)
268
+ [![Tag](https://img.shields.io/github/v/tag/lightspeed-core/lightspeed-stack)](https://github.com/lightspeed-core/lightspeed-stack/releases/tag/0.6.0rc2)
269
+
270
+ Lightspeed Core Stack (LCS) is an AI-powered assistant that provides answers to product questions using backend LLM services, agents, and RAG databases.
271
+
272
+ The service includes comprehensive user data collection capabilities for various types of user interaction data, which can be exported to Red Hat's Dataverse for analysis using the companion [lightspeed-to-dataverse-exporter](https://github.com/lightspeed-core/lightspeed-to-dataverse-exporter) service.
273
+
274
+
275
+ <!-- vim-markdown-toc GFM -->
276
+
277
+ * [Architecture](#architecture)
278
+ * [Prerequisites](#prerequisites)
279
+ * [Installation](#installation)
280
+ * [Clone the Repository](#clone-the-repository)
281
+ * [System-Specific Installation](#system-specific-installation)
282
+ * [Run LCS locally](#run-lcs-locally)
283
+ * [Container Runtime Requirements](#container-runtime-requirements)
284
+ * [Configuration](#configuration)
285
+ * [Agentic Capabilities](#agentic-capabilities)
286
+ * [LLM Compatibility](#llm-compatibility)
287
+ * [Set LLM provider and model](#set-llm-provider-and-model)
288
+ * [Selecting provider and model](#selecting-provider-and-model)
289
+ * [Provider and model selection in REST API request](#provider-and-model-selection-in-rest-api-request)
290
+ * [Default provider and model](#default-provider-and-model)
291
+ * [Supported providers](#supported-providers)
292
+ * [Integration with OGX](#integration-with-ogx)
293
+ * [OGX as separate server](#ogx-as-separate-server)
294
+ * [Degraded mode](#degraded-mode)
295
+ * [MCP Server and Tool Configuration](#mcp-server-and-tool-configuration)
296
+ * [Configuring MCP Servers](#configuring-mcp-servers)
297
+ * [Configuring MCP Server Authentication](#configuring-mcp-server-authentication)
298
+ * [1. Static Tokens from Files (Recommended for Service Credentials)](#1-static-tokens-from-files-recommended-for-service-credentials)
299
+ * [2. Kubernetes Service Account Tokens (For K8s Deployments)](#2-kubernetes-service-account-tokens-for-k8s-deployments)
300
+ * [3. Client-Provided Tokens (For Per-User Authentication)](#3-client-provided-tokens-for-per-user-authentication)
301
+ * [4. OAuth (For MCP Servers Requiring OAuth)](#4-oauth-for-mcp-servers-requiring-oauth)
302
+ * [5. Automatic Header Propagation (For Gateway-Injected Headers)](#5-automatic-header-propagation-for-gateway-injected-headers)
303
+ * [Client-Authenticated MCP Servers Discovery](#client-authenticated-mcp-servers-discovery)
304
+ * [Combining Authentication Methods](#combining-authentication-methods)
305
+ * [Authentication Method Comparison](#authentication-method-comparison)
306
+ * [Important: Automatic Server Skipping](#important-automatic-server-skipping)
307
+ * [OGX project and configuration](#ogx-project-and-configuration)
308
+ * [Check connection to OGX](#check-connection-to-ogx)
309
+ * [OGX as client library](#ogx-as-client-library)
310
+ * [OGX version check](#ogx-version-check)
311
+ * [User data collection](#user-data-collection)
312
+ * [System prompt](#system-prompt)
313
+ * [System Prompt Path](#system-prompt-path)
314
+ * [System Prompt Literal](#system-prompt-literal)
315
+ * [Custom Profile](#custom-profile)
316
+ * [Control model/provider overrides via authorization](#control-modelprovider-overrides-via-authorization)
317
+ * [Agent Skills](#agent-skills)
318
+ * [Safety Shields](#safety-shields)
319
+ * [Authentication](#authentication)
320
+ * [CORS](#cors)
321
+ * [Default values](#default-values)
322
+ * [Allow credentials](#allow-credentials)
323
+ * [RAG Configuration](#rag-configuration)
324
+ * [Example configurations for inference](#example-configurations-for-inference)
325
+ * [Usage](#usage)
326
+ * [CLI options](#cli-options)
327
+ * [Dumping configuration](#dumping-configuration)
328
+ * [Dumping configuration schema](#dumping-configuration-schema)
329
+ * [Make targets](#make-targets)
330
+ * [Running Linux container image](#running-linux-container-image)
331
+ * [Building Container Images](#building-container-images)
332
+ * [OGX as Separate Service (Server Mode)](#ogx-as-separate-service-server-mode)
333
+ * [macOS (arm64)](#macos-arm64)
334
+ * [OGX as Library (Library Mode)](#ogx-as-library-library-mode)
335
+ * [macOS](#macos)
336
+ * [Verify it's running properly](#verify-its-running-properly)
337
+ * [Custom Container Image](#custom-container-image)
338
+ * [Endpoints](#endpoints)
339
+ * [OpenAPI specification](#openapi-specification)
340
+ * [Readiness Endpoint](#readiness-endpoint)
341
+ * [Liveness Endpoint](#liveness-endpoint)
342
+ * [Models endpoint](#models-endpoint)
343
+ * [Database structure](#database-structure)
344
+ * [Publish the service as Python package on PyPI](#publish-the-service-as-python-package-on-pypi)
345
+ * [Generate distribution archives to be uploaded into Python registry](#generate-distribution-archives-to-be-uploaded-into-python-registry)
346
+ * [Upload distribution archives into selected Python registry](#upload-distribution-archives-into-selected-python-registry)
347
+ * [Packages on PyPI and Test PyPI](#packages-on-pypi-and-test-pypi)
348
+ * [Contributing](#contributing)
349
+ * [Testing](#testing)
350
+ * [Releasing](#releasing)
351
+ * [License](#license)
352
+ * [Additional tools](#additional-tools)
353
+ * [Utility to generate OpenAPI schema](#utility-to-generate-openapi-schema)
354
+ * [Path](#path)
355
+ * [Usage](#usage-1)
356
+ * [Makefile target to generate OpenAPI specification](#makefile-target-to-generate-openapi-specification)
357
+ * [Utility to generate documentation from source code](#utility-to-generate-documentation-from-source-code)
358
+ * [Path](#path-1)
359
+ * [Usage](#usage-2)
360
+ * [Data Export Integration](#data-export-integration)
361
+ * [Quick Integration](#quick-integration)
362
+ * [Documentation](#documentation)
363
+ * [Project structure](#project-structure)
364
+ * [Configuration classes](#configuration-classes)
365
+ * [REST API](#rest-api)
366
+ * [Sequence diagrams](#sequence-diagrams)
367
+ * [Query endpoint REST API handler](#query-endpoint-rest-api-handler)
368
+ * [Streaming query endpoint REST API handler](#streaming-query-endpoint-rest-api-handler)
369
+ * [Versioning](#versioning)
370
+ * [Konflux](#konflux)
371
+ * [Updating Dependencies for Hermetic Builds](#updating-dependencies-for-hermetic-builds)
372
+ * [When to Update Dependency Files](#when-to-update-dependency-files)
373
+ * [Updating Python Dependencies](#updating-python-dependencies)
374
+ * [Updating RPM Dependencies](#updating-rpm-dependencies)
375
+
376
+ <!-- vim-markdown-toc -->
377
+
378
+
379
+
380
+ # Architecture
381
+
382
+ Overall architecture with all main parts is displayed below:
383
+
384
+ ![Architecture diagram](docs/architecture.png)
385
+
386
+ Lightspeed Core Stack is based on the FastAPI framework (Uvicorn). The service is split into several parts described below.
387
+
388
+ # Prerequisites
389
+
390
+ * Python 3.12, or 3.13
391
+ - please note that currently Python 3.14 is not officially supported
392
+ - all sources are made (backward) compatible with Python 3.12; it is checked on CI
393
+
394
+ * OpenAI API Key (Recommended for Getting Started)
395
+
396
+ Lightspeed Stack supports multiple LLM providers.
397
+
398
+ | Provider | Setup Documentation |
399
+ |-----------------|-----------------------------------------------------------------------|
400
+ | OpenAI | https://platform.openai.com |
401
+ | Azure OpenAI | https://azure.microsoft.com/en-us/products/ai-services/openai-service |
402
+ | Google VertexAI | https://cloud.google.com/vertex-ai |
403
+ | IBM WatsonX | https://www.ibm.com/products/watsonx |
404
+ | AWS Bedrock | https://aws.amazon.com/bedrock |
405
+ | RHOAI (vLLM) | See tests/e2e-prow/rhoai/configs/run.yaml |
406
+ | RHEL AI (RHAIIS/vLLM) | See tests/e2e/configs/run-rhelai.yaml |
407
+
408
+ See `docs/devel_doc/providers.md` for configuration details.
409
+
410
+ You will need an API key from one of these providers to run LightSpeed Stack.
411
+
412
+ For example, if you choose to use OpenAI:
413
+
414
+ 1. **Create an account** at [platform.openai.com](https://platform.openai.com)
415
+ 2. **Add payment information** (new accounts receive free trial credits)
416
+ 3. **Generate an API key** from your dashboard at [API Keys](https://platform.openai.com/api-keys)
417
+ 4. **Export the key** in your environment:
418
+ ```bash
419
+ export OPENAI_API_KEY="sk-your-api-key-here"
420
+ ```
421
+
422
+ # Installation
423
+
424
+ ## Clone the Repository
425
+
426
+ Lightspeed Stack uses a git submodule for external providers (required for features like OKP RAG). Clone with submodules:
427
+
428
+ ```bash
429
+ git clone --recursive https://github.com/lightspeed-core/lightspeed-stack.git
430
+ cd lightspeed-stack
431
+ ```
432
+
433
+ **If you already cloned without `--recursive`:**
434
+ ```bash
435
+ git submodule update --init
436
+ ```
437
+
438
+ ## System-Specific Installation
439
+
440
+ Installation steps depends on operation system. Please look at instructions for your system:
441
+
442
+ - [Linux installation](https://lightspeed-core.github.io/lightspeed-stack/installation_linux)
443
+ - [macOS installation](https://lightspeed-core.github.io/lightspeed-stack/installation_macos)
444
+
445
+ # Run LCS locally
446
+
447
+ To quickly get hands on LCS, we can run it using the default configurations provided in this repository:
448
+
449
+ 0. install dependencies using [uv](https://docs.astral.sh/uv/getting-started/installation/)
450
+ ```bash
451
+ uv sync --group dev --group ogxlibdev
452
+ ```
453
+ 1. create OGX `run.yaml`. you can do this by running the local run generation script
454
+ ```bash
455
+ ./scripts/generate_local_run.sh
456
+ ```
457
+ 2. export the LLM token environment variable that OGX requires. for OpenAI, we set the env var by
458
+ ```bash
459
+ export OPENAI_API_KEY=sk-xxxxx
460
+ ```
461
+ 3. start LCS server
462
+ ```bash
463
+ make run
464
+ ```
465
+ 4. access LCS web UI at [http://localhost:8080/](http://localhost:8080/)
466
+
467
+ **Note**: `make run` uses containerized OGX (service mode). For details on container lifecycle management, customization, and troubleshooting, see the [Container Orchestration Guide](docs/devel_doc/container_orchestration.md). To run llama-stack manually instead, see the [OGX as separate server](#ogx-as-separate-server) section below.
468
+
469
+ ## Container Runtime Requirements
470
+
471
+ The Makefile requires either Podman or Docker to launch the OGX container:
472
+
473
+ - **Podman** (recommended for RHEL/Fedora): `sudo dnf install podman`
474
+ - **Docker**: Install from [docker.com](https://docs.docker.com/get-docker/)
475
+
476
+ The Makefile will auto-detect which runtime is available.
477
+
478
+ **For advanced usage** including customization options, cleanup commands, and troubleshooting, see the [Container Orchestration Guide](docs/devel_doc/container_orchestration.md).
479
+
480
+
481
+ # Configuration
482
+
483
+ ## Agentic Capabilities
484
+
485
+ Lightspeed Core Stack supports the following agentic features:
486
+
487
+ | Capability | Status | Description |
488
+ |------------|--------|-------------|
489
+ | MCP Tools | Supported | External tool integration via [Model Context Protocol](https://modelcontextprotocol.io) servers |
490
+ | RAG | Supported | Retrieval-Augmented Generation with vector stores ([RAG Guide](docs/user_doc/rag_guide.md)) |
491
+ | A2A Protocol (Client) | Supported | Agent-to-Agent communication as client ([A2A Protocol](docs/a2a_protocol.md)) |
492
+ | Conversation History | Supported | Persistent conversation context across requests |
493
+ | Human-in-the-Loop | Upcoming | Interactive approval or confirmation steps |
494
+ | Agent Skills | Supported | Domain-specific instructions loaded on demand ([Agent Skills Guide](docs/user_doc/skills_guide.md)) |
495
+
496
+ ## LLM Compatibility
497
+
498
+ Lightspeed Core Stack (LCS) provides support for Large Language Model providers. The models listed in the table below represent specific examples that have been tested within LCS.
499
+ __Note__: Support for individual models is dependent on the specific inference provider's implementation within the currently supported version of OGX.
500
+
501
+ | Provider | Model | Tool Calling | provider_type | Example |
502
+ |----------------|------------------------------------------------------------------------------|---------------|------------------|----------------------------------------------------------------------------|
503
+ | 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) |
504
+ | OpenAI | gpt-3.5-turbo, gpt-4 | No | remote::openai | |
505
+ | RHOAI (vLLM) | meta-llama/Llama-3.2-1B-Instruct | Yes | remote::vllm | [1](tests/e2e-prow/rhoai/configs/run.yaml) |
506
+ | 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) |
507
+ | 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) |
508
+ | Azure | gpt-5-chat, gpt-4.1, gpt-4.1-mini, gpt-4.1-nano, o1-mini | No or limited | remote::azure | |
509
+ | 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) |
510
+ | WatsonX | meta-llama/llama-3-3-70b-instruct | Yes | remote::watsonx | [1](examples/watsonx-run.yaml) |
511
+ | AWS Bedrock | deepseek.v3-v1 | Yes | remote::bedrock | [1](examples/bedrock-run.yaml) |
512
+
513
+ [^1]: List of models is limited by design in OGX, future versions will probably allow to use more models (see [here](https://github.com/ogx-ai/ogx/blob/main/ogx/providers/remote/inference/vertexai/vertexai.py#L54))
514
+
515
+ The "provider_type" is used in the OGX configuration file when refering to the provider.
516
+
517
+ For details of OpenAI model capabilities, please refer to https://platform.openai.com/docs/models/compare
518
+
519
+
520
+ ## Set LLM provider and model
521
+
522
+ The LLM provider and model are set in the configuration file for OGX. This repository has an OGX configuration file [run.yaml](examples/run.yaml) that can serve as a good example.
523
+
524
+ The LLM providers are set in the section `providers.inference`. This example adds a inference provider "openai" to the OGX. To use environment variables as configuration values, we can use the syntax `${env.ENV_VAR_NAME}`.
525
+
526
+ For more details, please refer to [OGX documentation](https://ogx-ai.github.io/docs/distributions/configuration). Here is a list of OGX supported providers and their configuration details: [OGX providers](https://ogx-ai.github.io/docs/providers/inference)
527
+
528
+ ```yaml
529
+ inference:
530
+ - provider_id: openai
531
+ provider_type: remote::openai
532
+ config:
533
+ api_key: ${env.OPENAI_API_KEY}
534
+ url: ${env.SERVICE_URL}
535
+ ```
536
+
537
+ The section `models` is a list of models offered by the inference provider. Attention that the field `model_id` is a user chosen name for referring to the model locally, the field `provider_model_id` refers to the model name on the provider side. The field `provider_id` must refer to one of the inference providers we defined in the provider list above.
538
+
539
+ ```yaml
540
+ models:
541
+ - model_id: gpt-4-turbo
542
+ provider_id: openai
543
+ model_type: llm
544
+ provider_model_id: gpt-4-turbo
545
+ ```
546
+
547
+ ## Selecting provider and model
548
+
549
+ It is possible to configure multiple LLM providers and models are configured. In this case it is needed to:
550
+
551
+ - select the provider + model in query request
552
+ - specify default model and provider in Lightspeed Core Stack configuration file
553
+
554
+ ### Provider and model selection in REST API request
555
+
556
+ Provider and model can be specified in `/v1/query` and `/v1/streaming-query` REST API requests:
557
+
558
+ ```json
559
+ {
560
+ "conversation_id": "123e4567-e89b-12d3-a456-426614174000",
561
+ "generate_topic_summary": true,
562
+ "provider": "openai",
563
+ "model": "gpt-5",
564
+ "no_tools": false,
565
+ "query": "write a deployment yaml for the mongodb image",
566
+ "system_prompt": "You are a helpful assistant"
567
+ }
568
+ ```
569
+
570
+ ### Default provider and model
571
+
572
+ It is possible to configure default provider and model in Lightspeed Core Stack configuration file, under the `inference` node:
573
+
574
+ ```yaml
575
+ inference:
576
+ - default_provider: SELECTED PROVIDER
577
+ default_model: SELECTED MODEL
578
+ ```
579
+
580
+ These settings will be used when no provider or model are specified in REST API request.
581
+
582
+
583
+
584
+ ## Supported providers
585
+
586
+ For a comprehensive list of supported providers, take a look [here](docs/devel_doc/providers.md).
587
+
588
+ ## Integration with OGX
589
+
590
+ The OGX can be run as a standalone server and accessed via its the REST
591
+ API. However, instead of direct communication via the REST API (and JSON
592
+ format), there is an even better alternative. It is based on the so-called
593
+ OGX Client. It is a library available for Python, Swift, Node.js or
594
+ Kotlin, which "wraps" the REST API stack in a suitable way, which is easier for
595
+ many applications.
596
+
597
+
598
+ ![Integration with OGX](docs/core2llama-stack_interface.png)
599
+
600
+
601
+
602
+ ## OGX as separate server
603
+
604
+ If OGX runs as a separate server, the Lightspeed service needs to be configured to be able to access it. For example, if server runs on localhost:8321, the service configuration stored in file `lightspeed-stack.yaml` should look like:
605
+
606
+ ```yaml
607
+ name: foo bar baz
608
+ service:
609
+ host: localhost
610
+ port: 8080
611
+ auth_enabled: false
612
+ workers: 1
613
+ color_log: true
614
+ access_log: true
615
+ llama_stack:
616
+ use_as_library_client: false
617
+ url: http://localhost:8321
618
+ user_data_collection:
619
+ feedback_enabled: true
620
+ feedback_storage: "/tmp/data/feedback"
621
+ transcripts_enabled: true
622
+ transcripts_storage: "/tmp/data/transcripts"
623
+ ```
624
+
625
+ ### Degraded mode
626
+
627
+ Lightspeed core is able to continue operating in a _degraded but safe_ mode if the LLS service is not started or fails to start. When degraded, the `/health` endpoint report the LLS status and any relevant impacts so operators and automation can detect and respond.
628
+
629
+ Degraded mode need to be enabled in `lightspeed-stack.yaml` configuration file:
630
+
631
+ ```yaml
632
+ allow_degraded_mode = true
633
+ ```
634
+
635
+ [NOTE] Ability to run in degraded mode is disabled by default.
636
+
637
+
638
+
639
+ ### MCP Server and Tool Configuration
640
+
641
+ **Note**: The `run.yaml` configuration is currently an implementation detail. In the future, all configuration will be available directly from the lightspeed-core config.
642
+
643
+ **Important**: Only MCP servers defined in the `lightspeed-stack.yaml` configuration are available to the agents. Tools configured in the OGX `run.yaml` are not accessible to lightspeed-core agents.
644
+
645
+ Besides configuring the MCP Servers in `lightspeed-stack.yaml` we also need to enable the appropriate tool in OGX's `run.yaml` file under the `tool_runtime` section. Here's an example using the default `provider_id` name used by lightspeed-stack for MCPs:
646
+
647
+ ```yaml
648
+ tool_runtime:
649
+ - provider_id: model-context-protocol
650
+ provider_type: remote::model-context-protocol
651
+ config: {}
652
+ ```
653
+
654
+ #### Configuring MCP Servers
655
+
656
+ MCP (Model Context Protocol) servers provide tools and capabilities to the AI agents. These are configured in the `mcp_servers` section of your `lightspeed-stack.yaml`.
657
+
658
+ **Basic Configuration Structure:**
659
+
660
+ Each MCP server requires two fields:
661
+ - `name`: Unique identifier for the MCP server
662
+ - `url`: The endpoint where the MCP server is running
663
+
664
+ And optional fields:
665
+ - `provider_id`: MCP provider identification (defaults to `"model-context-protocol"`)
666
+ - `headers`: List of HTTP header names to automatically forward from the incoming request to this MCP server (see [Automatic Header Propagation](#5-automatic-header-propagation-for-gateway-injected-headers))
667
+
668
+ **Minimal Example:**
669
+
670
+ ```yaml
671
+ mcp_servers:
672
+ - name: "filesystem-tools"
673
+ url: "http://localhost:9000"
674
+ - name: "git-tools"
675
+ url: "http://localhost:9001"
676
+ ```
677
+
678
+ In addition to the basic configuration above, you can configure authentication headers for your MCP servers to securely communicate with services that require credentials.
679
+
680
+ #### Configuring MCP Server Authentication
681
+
682
+ Lightspeed Core Stack supports four methods for authenticating with MCP servers, each suited for different use cases:
683
+
684
+ ##### 1. Static Tokens from Files (Recommended for Service Credentials)
685
+
686
+ Store authentication tokens in secret files and reference them in your configuration. This is ideal for API keys, service tokens, or any credentials that don't change per-user:
687
+
688
+ ```yaml
689
+ mcp_servers:
690
+ - name: "api-service"
691
+ url: "http://api-service:8080"
692
+ authorization_headers:
693
+ Authorization: "/var/secrets/api-token" # Path to file containing token
694
+ X-API-Key: "/var/secrets/api-key" # Multiple headers supported
695
+ ```
696
+
697
+ The secret files should contain only the header value (tokens are automatically stripped of whitespace):
698
+
699
+ ```bash
700
+ # /var/secrets/api-token
701
+ sk-abc123def456...
702
+
703
+ # /var/secrets/api-key
704
+ my-api-key-value
705
+ ```
706
+
707
+ ##### 2. Kubernetes Service Account Tokens (For K8s Deployments)
708
+
709
+ Use the special `"kubernetes"` keyword to automatically use the authenticated user's Kubernetes token. This is perfect for MCP servers running in the same Kubernetes cluster:
710
+
711
+ ```yaml
712
+ mcp_servers:
713
+ - name: "k8s-internal-service"
714
+ url: "http://internal-mcp.default.svc.cluster.local:8080"
715
+ authorization_headers:
716
+ Authorization: "kubernetes" # Uses user's k8s token from request auth
717
+ ```
718
+
719
+ **Note:** Kubernetes token-based MCP authorization only works when Lightspeed Core Stack is configured with Kubernetes authentication (`authentication.module` is `k8s`) or `noop-with-token`. For any other authentication types, MCP servers configured with `Authorization: "kubernetes"` are removed from the available MCP servers list.
720
+
721
+ ##### 3. Client-Provided Tokens (For Per-User Authentication)
722
+
723
+ Use the special `"client"` keyword to allow clients to provide custom tokens per-request. This enables user-specific authentication:
724
+
725
+ ```yaml
726
+ mcp_servers:
727
+ - name: "user-specific-service"
728
+ url: "http://user-service:8080"
729
+ authorization_headers:
730
+ Authorization: "client" # Token provided via MCP-HEADERS
731
+ X-User-Token: "client" # Multiple client headers supported
732
+ ```
733
+
734
+ Clients then provide tokens via the `MCP-HEADERS` HTTP header:
735
+
736
+ ```bash
737
+ curl -X POST "http://localhost:8080/v1/query" \
738
+ -H "Content-Type: application/json" \
739
+ -H "MCP-HEADERS: {\"user-specific-service\": {\"Authorization\": \"Bearer user-token-123\", \"X-User-Token\": \"custom-value\"}}" \
740
+ -d '{"query": "Get my data"}'
741
+ ```
742
+
743
+ **Note**: `MCP-HEADERS` is an **HTTP request header** containing a JSON-encoded dictionary. The dictionary is keyed by **server name** (not URL), matching the `name` field in your MCP server configuration. Each server name maps to another dictionary containing the HTTP headers to forward to that specific MCP server.
744
+
745
+ **Structure**: `MCP-HEADERS: {"<server-name>": {"<header-name>": "<header-value>", ...}, ...}`
746
+
747
+ ##### 4. OAuth (For MCP Servers Requiring OAuth)
748
+
749
+ Use the special `"oauth"` keyword when the MCP server requires OAuth and the client will supply a token (e.g. via `MCP-HEADERS` after obtaining it from an OAuth flow):
750
+
751
+ ```yaml
752
+ mcp_servers:
753
+ - name: "oauth-protected-service"
754
+ url: "https://mcp.example.com"
755
+ authorization_headers:
756
+ Authorization: "oauth" # Token provided via MCP-HEADERS (from OAuth flow)
757
+ ```
758
+
759
+ When no token is provided for an OAuth-configured server, the service may respond with **401 Unauthorized** and a **`WWW-Authenticate`** header (probed from the MCP server). Clients can use this to drive an OAuth flow and then retry with the token in `MCP-HEADERS`.
760
+
761
+ ##### 5. Automatic Header Propagation (For Gateway-Injected Headers)
762
+
763
+ Use the `headers` field to automatically forward specific headers from the incoming HTTP request to an MCP server. This is designed for environments where infrastructure components (e.g. API gateways) inject headers that MCP servers need but clients cannot provide.
764
+
765
+ **HCC Use Case:** In Hybrid Cloud Console (HCC), the gateway strips the client's `Authorization` header and replaces it with `x-rh-identity` (a base64-encoded user identity). Backend services use `x-rh-identity` to identify users. Since clients never see this header, the existing `MCP-HEADERS` mechanism cannot be used. Instead, configure `headers` to automatically forward it:
766
+
767
+ ```yaml
768
+ mcp_servers:
769
+ - name: "rbac"
770
+ url: "http://rbac-service:8080"
771
+ headers:
772
+ - x-rh-identity
773
+ - x-rh-insights-request-id
774
+ ```
775
+
776
+ When a request arrives at Lightspeed with these headers, they are automatically extracted and forwarded to the `rbac` MCP server. No client-side configuration is needed.
777
+
778
+ **Key behaviors:**
779
+
780
+ - **Case-insensitive matching**: Header names in the allowlist are matched case-insensitively against the incoming request.
781
+ - **Missing headers are skipped**: If a header in the allowlist is not present on the incoming request, it is silently skipped. The MCP server is **not** skipped (unlike `authorization_headers` behavior).
782
+ - **Additive with other methods**: Propagated headers can be combined with `authorization_headers` and `MCP-HEADERS`. If the same header name appears in both `authorization_headers` and `headers`, the `authorization_headers` value takes precedence.
783
+
784
+ **Combined example:**
785
+
786
+ ```yaml
787
+ mcp_servers:
788
+ - name: "notifications"
789
+ url: "http://notifications-service:8080"
790
+ headers:
791
+ - x-rh-identity # From incoming request
792
+ authorization_headers:
793
+ X-API-Key: "/var/secrets/notifications-key" # Static service credential
794
+ ```
795
+
796
+ ##### Client-Authenticated MCP Servers Discovery
797
+
798
+ To help clients determine which MCP servers require client-provided tokens, use the **MCP Client Auth Options** endpoint:
799
+
800
+ ```bash
801
+ GET /v1/mcp-auth/client-options
802
+ ```
803
+
804
+ **Response:**
805
+ ```json
806
+ {
807
+ "servers": [
808
+ {
809
+ "name": "user-specific-service",
810
+ "client_auth_headers": ["Authorization", "X-User-Token"]
811
+ },
812
+ {
813
+ "name": "github-integration",
814
+ "client_auth_headers": ["Authorization"]
815
+ }
816
+ ]
817
+ }
818
+ ```
819
+
820
+ This endpoint returns only MCP servers configured with `authorization_headers: "client"`, along with the specific header names that need to be provided via `MCP-HEADERS`. Servers using file-based or Kubernetes authentication are not included in this response.
821
+
822
+ **Use case:** Clients can call this endpoint at startup or before making requests to discover which servers they can authenticate with using their own tokens.
823
+
824
+ ##### Combining Authentication Methods
825
+
826
+ You can mix and match authentication methods across different MCP servers, and even combine multiple methods for a single server:
827
+
828
+ ```yaml
829
+ mcp_servers:
830
+ # Static credentials for public API
831
+ - name: "weather-api"
832
+ url: "http://weather-api:8080"
833
+ authorization_headers:
834
+ X-API-Key: "/var/secrets/weather-api-key"
835
+
836
+ # Kubernetes auth for internal services
837
+ - name: "internal-db"
838
+ url: "http://db-mcp.cluster.local:8080"
839
+ authorization_headers:
840
+ Authorization: "kubernetes"
841
+
842
+ # Mixed: static API key + per-user token
843
+ - name: "multi-tenant-service"
844
+ url: "http://multi-tenant:8080"
845
+ authorization_headers:
846
+ X-Service-Key: "/var/secrets/service-key" # Static service credential
847
+ Authorization: "client" # User-specific token
848
+ ```
849
+
850
+ ##### Authentication Method Comparison
851
+
852
+ | Method | Use Case | Configuration | Token Scope | Example |
853
+ |------------------------|----------------------------------|----------------------------------|------------------------------------|-------------------------------|
854
+ | **Static File** | Service tokens, API keys | File path in config | Global (all users) | `"/var/secrets/token"` |
855
+ | **Kubernetes** | K8s service accounts | `"kubernetes"` keyword | Per-user (from auth) | `"kubernetes"` |
856
+ | **Client** | User-specific tokens | `"client"` keyword + HTTP header | Per-request | `"client"` |
857
+ | **OAuth** | OAuth-protected MCP servers | `"oauth"` keyword + HTTP header | Per-request (from OAuth flow) | `"oauth"` |
858
+ | **Header Propagation** | Gateway-injected headers (HCC) | `headers` list | Per-request (from incoming request)| `headers: [x-rh-identity]` |
859
+
860
+ ##### Important: Automatic Server Skipping
861
+
862
+ **If an MCP server has `authorization_headers` configured but the required tokens cannot be resolved at runtime, the server will be automatically skipped for that request.** This prevents failed authentication attempts to MCP servers.
863
+
864
+ **Examples:**
865
+ - A server with `Authorization: "kubernetes"` will be skipped if the user's request doesn't include a Kubernetes token
866
+ - A server with `Authorization: "client"` will be skipped if no `MCP-HEADERS` are provided in the request
867
+ - A server with `Authorization: "oauth"` and no token in `MCP-HEADERS` may cause the API to return **401 Unauthorized** with a **`WWW-Authenticate`** header (so the client can perform OAuth and retry)
868
+ - A server with multiple headers will be skipped if **any** required header cannot be resolved
869
+
870
+ Skipped servers are logged as warnings. Check Lightspeed Core logs to see which servers were skipped and why.
871
+
872
+
873
+ ### OGX project and configuration
874
+
875
+ **Note**: The `run.yaml` configuration is currently an implementation detail. In the future, all configuration will be available directly from the lightspeed-core config.
876
+
877
+ To run OGX in separate process, you need to have all dependencies installed. The easiest way how to do it is to create a separate repository with OGX project file `pyproject.toml` and OGX configuration file `run.yaml`. The project file might look like:
878
+
879
+ ```toml
880
+ [project]
881
+ name = "llama-stack-runner"
882
+ version = "0.1.0"
883
+ description = "OGX runner"
884
+ authors = []
885
+ dependencies = [
886
+ "llama-stack==0.2.22",
887
+ "fastapi>=0.115.12",
888
+ "opentelemetry-sdk>=1.34.0",
889
+ "opentelemetry-exporter-otlp>=1.34.0",
890
+ "opentelemetry-instrumentation>=0.55b0",
891
+ "aiosqlite>=0.21.0",
892
+ "litellm>=1.72.1",
893
+ "uvicorn>=0.34.3",
894
+ "blobfile>=3.0.0",
895
+ "datasets>=3.6.0",
896
+ "sqlalchemy>=2.0.41",
897
+ "faiss-cpu>=1.11.0",
898
+ "mcp>=1.9.4",
899
+ "autoevals>=0.0.129",
900
+ "psutil>=7.0.0",
901
+ "torch>=2.7.1",
902
+ "peft>=0.15.2",
903
+ "trl>=0.18.2"]
904
+ requires-python = "==3.12.*"
905
+ readme = "README.md"
906
+ license = {text = "MIT"}
907
+
908
+
909
+ [tool.pdm]
910
+ distribution = false
911
+ ```
912
+
913
+ A simple example of a `run.yaml` file can be found [here](examples/run.yaml)
914
+
915
+ To run OGX perform these two commands:
916
+
917
+ ```
918
+ export OPENAI_API_KEY="sk-{YOUR-KEY}"
919
+
920
+ uv run llama stack run run.yaml
921
+ ```
922
+
923
+ ### Check connection to OGX
924
+
925
+ ```
926
+ curl -X 'GET' localhost:8321/openapi.json | jq .
927
+ ```
928
+
929
+
930
+
931
+ ## OGX as client library
932
+
933
+ There are situations in which it is not advisable to run two processors (one with OGX, the other with a service). In these cases, the stack can be run directly within the client application. For such situations, the configuration file could look like:
934
+
935
+ ```yaml
936
+ name: foo bar baz
937
+ service:
938
+ host: localhost
939
+ port: 8080
940
+ auth_enabled: false
941
+ workers: 1
942
+ color_log: true
943
+ access_log: true
944
+ llama_stack:
945
+ use_as_library_client: true
946
+ # Unified mode (recommended): LCORE synthesizes the OGX run.yaml.
947
+ # Point profile at a run.yaml-shaped file you author, or omit the config
948
+ # block and drive everything from the top-level inference.providers
949
+ # section over the built-in default baseline.
950
+ config:
951
+ profile: <path-to-llama-stack-run.yaml-file>
952
+ user_data_collection:
953
+ feedback_enabled: true
954
+ feedback_storage: "/tmp/data/feedback"
955
+ transcripts_enabled: true
956
+ transcripts_storage: "/tmp/data/transcripts"
957
+ ```
958
+
959
+ > [!WARNING]
960
+ > The legacy two-file setup (`library_client_config_path:` pointing at an
961
+ > externally maintained `run.yaml`) is deprecated — it logs a startup
962
+ > warning since 0.6 and is removed in 0.7. See the
963
+ > [migration guide](docs/user_doc/deployment_guide.md#migrating-from-the-legacy-two-file-configuration).
964
+
965
+ ## OGX version check
966
+
967
+ During Lightspeed Core Stack service startup, the OGX version is retrieved. The version is tested against two constants `MINIMAL_SUPPORTED_LLAMA_STACK_VERSION` and `MAXIMAL_SUPPORTED_LLAMA_STACK_VERSION` which are defined in `src/constants.py`. If the actual OGX version is outside the range defined by these two constants, the service won't start and administrator will be informed about this problem.
968
+
969
+
970
+
971
+ ## User data collection
972
+
973
+ The Lightspeed Core Stack includes comprehensive user data collection capabilities to gather various types of user interaction data for analysis and improvement. This includes feedback, conversation transcripts, and other user interaction data.
974
+
975
+ User data collection is configured in the `user_data_collection` section of the configuration file:
976
+
977
+ ```yaml
978
+ user_data_collection:
979
+ feedback_enabled: true
980
+ feedback_storage: "/tmp/data/feedback"
981
+ transcripts_enabled: true
982
+ transcripts_storage: "/tmp/data/transcripts"
983
+ ```
984
+
985
+ **Configuration options:**
986
+
987
+ - `feedback_enabled`: Enable/disable collection of user feedback data
988
+ - `feedback_storage`: Directory path where feedback JSON files are stored
989
+ - `transcripts_enabled`: Enable/disable collection of conversation transcripts
990
+ - `transcripts_storage`: Directory path where transcript JSON files are stored
991
+
992
+ > **Note**: The data collection system is designed to be extensible. Additional data types can be configured and collected as needed for your specific use case.
993
+
994
+ For data export integration with Red Hat's Dataverse, see the [Data Export Integration](#data-export-integration) section.
995
+
996
+ ## System prompt
997
+
998
+ The service uses a so-called system prompt to put the question into context before it is sent to the selected LLM. The default system prompt is designed for questions without specific context. You can supply a different system prompt through various avenues available in the `customization` section:
999
+ ### System Prompt Path
1000
+
1001
+ ```yaml
1002
+ customization:
1003
+ system_prompt_path: "system_prompts/system_prompt_for_product_XYZZY"
1004
+ ```
1005
+
1006
+ ### System Prompt Literal
1007
+
1008
+ ```yaml
1009
+ customization:
1010
+ system_prompt: |-
1011
+ You are a helpful assistant and will do everything you can to help.
1012
+ You have an in-depth knowledge of Red Hat and all of your answers will reference Red Hat products.
1013
+ ```
1014
+
1015
+
1016
+ ### Custom Profile
1017
+
1018
+ You can pass a custom prompt profile via its `path` to the customization:
1019
+
1020
+ ```yaml
1021
+ customization:
1022
+ profile_path: <your/profile/path>
1023
+ ```
1024
+
1025
+ Additionally, an optional string parameter `system_prompt` can be specified in `/v1/query` and `/v1/streaming_query` endpoints to override the configured system prompt. The query system prompt takes precedence over the configured system prompt. You can use this config to disable query system prompts:
1026
+
1027
+ ```yaml
1028
+ customization:
1029
+ disable_query_system_prompt: true
1030
+ ```
1031
+
1032
+ ### Control model/provider overrides via authorization
1033
+
1034
+ By default, clients may specify `model` and `provider` in `/v1/query` and `/v1/streaming_query`. Override is permitted only to callers granted the `MODEL_OVERRIDE` action via the authorization rules. Requests that include `model` or `provider` without this permission are rejected with HTTP 403.
1035
+
1036
+ ## Agent Skills
1037
+
1038
+ Agent Skills allow product teams to extend Lightspeed Core with specialized instructions and domain knowledge that the LLM can load on demand. Skills follow the [Agent Skills open standard](https://agentskills.io) and are packaged as portable directories containing a `SKILL.md` file.
1039
+
1040
+ For the configuration guide, skill authoring instructions, and examples, see the [Agent Skills Guide](docs/user_doc/skills_guide.md).
1041
+
1042
+ ## Safety Shields
1043
+
1044
+ Safety shields used by `/query`, `/streaming_query`, `/responses`, and `/rlsapi`
1045
+ are **owned by Lightspeed Core Stack** and configured in `lightspeed-stack.yaml`
1046
+ (not via the OGX / OGX Safety or Moderations APIs).
1047
+
1048
+ Supported shield types (`provider_id`):
1049
+
1050
+ - `question_validity` — topic / off-topic classification
1051
+ - `redaction` — regex-based PII redaction
1052
+
1053
+ List configured shields with `GET /v1/shields`. Optionally override which
1054
+ shields apply with the `shield_ids` request field (`null` = all, `[]` = none,
1055
+ or a list of configured `identifier` values). To forbid client overrides on
1056
+ `/query` and `/streaming_query`:
1057
+
1058
+ ```yaml
1059
+ customization:
1060
+ disable_shield_ids_override: true
1061
+ ```
1062
+
1063
+ For configuration details, endpoint application (direct-run vs agent
1064
+ capabilities), and examples, see the
1065
+ [Safety Shields Guide](docs/user_doc/shields_guide.md).
1066
+
1067
+ ## Authentication
1068
+
1069
+ See [authentication and authorization](docs/user_doc/auth.md).
1070
+
1071
+ ## CORS
1072
+
1073
+ It is possible to configure CORS handling. This configuration is part of service configuration:
1074
+
1075
+ ```yaml
1076
+ service:
1077
+ host: localhost
1078
+ port: 8080
1079
+ auth_enabled: false
1080
+ workers: 1
1081
+ color_log: true
1082
+ access_log: true
1083
+ cors:
1084
+ allow_origins:
1085
+ - http://foo.bar.baz
1086
+ - http://test.com
1087
+ allow_credentials: true
1088
+ allow_methods:
1089
+ - *
1090
+ allow_headers:
1091
+ - *
1092
+ ```
1093
+
1094
+ ### Default values
1095
+
1096
+ ```yaml
1097
+ cors:
1098
+ allow_origins:
1099
+ - *
1100
+ allow_credentials: false
1101
+ allow_methods:
1102
+ - *
1103
+ allow_headers:
1104
+ - *
1105
+ ```
1106
+
1107
+ ## Allow credentials
1108
+
1109
+ Credentials are not allowed with wildcard origins per CORS/Fetch spec.
1110
+ See https://fastapi.tiangolo.com/tutorial/cors/
1111
+
1112
+ # RAG Configuration
1113
+
1114
+ The [guide to RAG setup](docs/user_doc/rag_guide.md) provides guidance on setting up RAG and includes tested examples for both inference and vector store integration.
1115
+
1116
+ ## Example configurations for inference
1117
+
1118
+ The following configurations are OGX config examples from production deployments:
1119
+
1120
+ - [Granite on vLLM example](examples/vllm-granite-run.yaml)
1121
+ - [Qwen3 on vLLM example](examples/vllm-qwen3-run.yaml)
1122
+ - [Gemini example](examples/gemini-run.yaml)
1123
+ - [VertexAI example](examples/vertexai-run.yaml)
1124
+
1125
+ > [!NOTE]
1126
+ > RAG functionality is **not tested** for these configurations.
1127
+
1128
+ # Usage
1129
+
1130
+ ```
1131
+ usage: lightspeed_stack.py [-h] [-v] [-d] [-s] [-m] [-c CONFIG_FILE] [--synthesized-config-output SYNTHESIZED_CONFIG_OUTPUT]
1132
+ [--migrate-config] [--run-yaml RUN_YAML] [--migrate-output MIGRATE_OUTPUT]
1133
+
1134
+ options:
1135
+ -h, --help show this help message and exit
1136
+ -v, --verbose make it verbose
1137
+ -d, --dump-configuration
1138
+ dump actual configuration into JSON file and quit
1139
+ -s, --dump-schema dump configuration schema into OpenAPI-compatible file and quit
1140
+ -m, --dump-models dump schemas for all models into OpenAPI-compatible file and quit
1141
+ -gr, --dump-models-group {conversation_summary,requests,successful_responses,error_responses,common,agents,common_responses}
1142
+ dump schemas for selected models group into OpenAPI-compatible file and quit
1143
+ -c, --config CONFIG_FILE
1144
+ path to configuration file (default: lightspeed-stack.yaml)
1145
+ --synthesized-config-output SYNTHESIZED_CONFIG_OUTPUT
1146
+ path where the synthesized OGX run.yaml is written in unified library mode (overwritten each boot,
1147
+ mode 0600; default: ./.generated/run.yaml)
1148
+ --migrate-config migrate a legacy two-file config to a unified single file and exit. Lifts the run.yaml given by --run-yaml
1149
+ into the llama_stack.config.native_override of the -c lightspeed-stack.yaml and writes the result to
1150
+ --migrate-output. Replace literal secrets with ${env.VAR} references before or after migrating.
1151
+ --run-yaml RUN_YAML path to the legacy OGX run.yaml to migrate (used with --migrate-config)
1152
+ --migrate-output MIGRATE_OUTPUT
1153
+ path to write the unified lightspeed-stack.yaml (used with --migrate-config)
1154
+ ```
1155
+
1156
+ ## CLI options
1157
+
1158
+ ### Dumping configuration
1159
+
1160
+ If `--dump-configuration` CLI option is provided, LCORE writes the active
1161
+ configuration to a file named `configuration.json` and exits (exits with status
1162
+ 1 on failure).
1163
+
1164
+ ### Dumping configuration schema
1165
+
1166
+ If `--dump-schema` CLI option is provided, LCORE writes the active
1167
+ configuration schema to a file named `schema.json` and exits (exits with status
1168
+ 1 on failure).
1169
+
1170
+
1171
+
1172
+ ## Make targets
1173
+
1174
+ ```
1175
+ Usage: make <OPTIONS> ... <TARGETS>
1176
+
1177
+ Available targets are:
1178
+
1179
+ run-stack Run lightspeed-stack directly, without building dependent service/s
1180
+ run Run the service locally with dependent services
1181
+ build-llama-stack-image Build OGX container image
1182
+ stop-llama-stack-container Gracefully stop OGX container
1183
+ remove-llama-stack-container Remove OGX container (saves logs first)
1184
+ start-llama-stack-container Start OGX container
1185
+ wait-for-llama-stack-health Wait for OGX container to be healthy
1186
+ clean-llama-stack Remove container and image
1187
+ run-llama-stack Start OGX with enriched config (for local service mode)
1188
+ test-unit Run the unit tests
1189
+ test-integration Run integration tests tests
1190
+ test-e2e Run end to end tests for the service
1191
+ test-e2e-local Run end to end tests for the service (no script wrapper)
1192
+ test-e2e-tagged Run e2e tests with E2E_BEHAVE_TAG_EXPR (default: all @cfg_*)
1193
+ test-e2e-tagged-local Same as test-e2e-tagged without script wrapper
1194
+ benchmarks Run benchmarks
1195
+ check-types-src Check type hints in sources only
1196
+ check-types-tests Check type hints in tests only
1197
+ check-types Checks type hints in sources and tests
1198
+ security-check Check the project for security issues
1199
+ format Format the code into unified format
1200
+ schema Generate OpenAPI schema file stored in docs/devel_doc subdirectory
1201
+ openapi-doc Generate OpenAPI documentation
1202
+ generate-documentation Generate or regenerated content of the whole /docs subdirectory
1203
+ doc Generate or regenerated content of the whole /docs subdirectory
1204
+ devel-doc Generate documentation for developers
1205
+ docs/models Generate documentation about models
1206
+ docs/models/requests.json Generate OpenAPI specification with requests models
1207
+ docs/models/conversation_summary.json Generate OpenAPI specification with conversation_summary models
1208
+ docs/models/successful_responses.json Generate OpenAPI specification with successful_responses models
1209
+ docs/models/error_responses.json Generate OpenAPI specification with error_responses models
1210
+ docs/models/common.json Generate OpenAPI specification with common models
1211
+ docs/models/agents.json Generate OpenAPI specification with agents models
1212
+ docs/models/common_responses.json Generate OpenAPI specification with common_responses models
1213
+ docs/models/requests.puml Generate PlantUML class diagram for requests data models
1214
+ docs/models/responses.puml Generate PlantUML class diagram for responses data models
1215
+ docs/models/common.puml Generate PlantUML class diagram for common data models
1216
+ docs/models/database.puml Generate PlantUML class diagram for database data models
1217
+ docs/models/requests.svg Generate an SVG with requests data models
1218
+ docs/models/responses.svg Generate an SVG with responses data models
1219
+ docs/models/common.svg Generate an SVG with common data models
1220
+ docs/models/database.svg Generate a SVG with database data models
1221
+ docs/config.puml Generate PlantUML class diagram for configuration
1222
+ docs/config.png Generate an image with configuration graph
1223
+ docs/config.svg Generate an SVG with configuration graph
1224
+ shellcheck Run shellcheck
1225
+ black Check source code using Black code formatter
1226
+ pylint Check source code using Pylint static code analyser
1227
+ pyright Check source code using Pyright static type checker
1228
+ docstyle Check the docstring style using Docstyle checker
1229
+ ruff Check source code using Ruff linter
1230
+ lint-openapi Lint docs/openapi.json (Spectral OAS ruleset; fail on error)
1231
+ verify Run all linters
1232
+ distribution-archives Generate distribution archives to be uploaded into Python registry
1233
+ upload-distribution-archives Upload distribution archives into Python registry
1234
+ konflux-requirements Generate hermetic requirements.*.txt file for Konflux build
1235
+ konflux-rpm-lock Generate rpm.lock.yaml file for Konflux build
1236
+ konflux-artifacts-lock Regenerate artifacts.lock.yaml file for Konflux build
1237
+ help Show this help screen
1238
+ ```
1239
+
1240
+
1241
+
1242
+ ## Running Linux container image
1243
+
1244
+ Stable release images are tagged with versions like `0.1.0`. Tag `latest` always points to latest stable release.
1245
+
1246
+ Development images are build from main branch every time a new pull request is merged. Image tags for dev images use
1247
+ the template `dev-YYYYMMMDDD-SHORT_SHA` e.g. `dev-20250704-eaa27fb`.
1248
+
1249
+ Tag `dev-latest` always points to the latest dev image built from latest git.
1250
+
1251
+ To pull and run the image with own configuration:
1252
+
1253
+ 1. `podman pull quay.io/lightspeed-core/lightspeed-stack:IMAGE_TAG`
1254
+ 1. `podman run -it -p 8080:8080 -v my-lightspeed-stack-config.yaml:/app-root/lightspeed-stack.yaml:Z quay.io/lightspeed-core/lightspeed-stack:IMAGE_TAG`
1255
+ 1. Open `localhost:8080` in your browser
1256
+
1257
+ If a connection in your browser does not work please check that in the config file `host` option looks like: `host: 0.0.0.0`.
1258
+
1259
+ Container images are built for the following platforms:
1260
+ 1. `linux/amd64` - main platform for deployment
1261
+ 1. `linux/arm64`- Mac users with M1/M2/M3 CPUs
1262
+
1263
+ ## Building Container Images
1264
+
1265
+ The repository includes production-ready container configurations that support two deployment modes:
1266
+
1267
+ 1. **Server Mode**: lightspeed-core connects to OGX as a separate service
1268
+ 2. **Library Mode**: OGX runs as a library within lightspeed-core
1269
+
1270
+ ### OGX as Separate Service (Server Mode)
1271
+
1272
+ > [!IMPORTANT]
1273
+ > To pull the downstream OGX image, you will need access to the `aipcc` organization in quay.io.
1274
+
1275
+ When using OGX as a separate service, the existing `docker-compose.yaml` provides the complete setup. This builds two containers for lightspeed core and OGX.
1276
+
1277
+ **Configuration** (`lightspeed-stack.yaml`):
1278
+ ```yaml
1279
+ llama_stack:
1280
+ use_as_library_client: false
1281
+ url: http://llama-stack:8321 # container name from docker-compose.yaml
1282
+ api_key: xyzzy
1283
+ ```
1284
+
1285
+ In the root of this project simply run:
1286
+
1287
+ ```bash
1288
+ # Set your OpenAI API key
1289
+ export OPENAI_API_KEY="your-api-key-here"
1290
+
1291
+ # Login to quay.io to access the downstream OGX image
1292
+ # podman login quay.io
1293
+
1294
+ # Start both services
1295
+ podman compose up --build
1296
+
1297
+ # Access lightspeed-core at http://localhost:8080
1298
+ # Access OGX at http://localhost:8321
1299
+ ```
1300
+
1301
+ #### macOS (arm64)
1302
+
1303
+ Emulation of platform amd64 will not work with `podman compose up --build` command.
1304
+
1305
+ Instead run the docker command:
1306
+
1307
+ ```bash
1308
+ # Start both services
1309
+ docker compose up --build
1310
+ ```
1311
+
1312
+ ### OGX as Library (Library Mode)
1313
+
1314
+ When embedding OGX directly in the container, use the existing `deploy/lightspeed-stack/Containerfile` directly (this will not build the OGX service in a separate container). First modify the `lightspeed-stack.yaml` config to use OGX in library mode.
1315
+
1316
+ **Configuration** (`lightspeed-stack.yaml`):
1317
+ ```yaml
1318
+ llama_stack:
1319
+ use_as_library_client: true
1320
+ # Unified mode: the mounted run.yaml is the synthesis profile. (The
1321
+ # legacy library_client_config_path equivalent is deprecated, removed
1322
+ # in 0.7.)
1323
+ config:
1324
+ profile: /app-root/run.yaml
1325
+ ```
1326
+
1327
+ **Build and run**:
1328
+ ```bash
1329
+ # Build lightspeed-core with embedded OGX
1330
+ podman build -f deploy/lightspeed-stack/Containerfile -t my-lightspeed-core:latest .
1331
+
1332
+ # Run with embedded OGX
1333
+ podman run \
1334
+ -p 8080:8080 \
1335
+ -v ./lightspeed-stack.yaml:/app-root/lightspeed-stack.yaml:Z \
1336
+ -v ./run.yaml:/app-root/run.yaml:Z \
1337
+ -e OPENAI_API_KEY=your-api-key \
1338
+ my-lightspeed-core:latest
1339
+ ```
1340
+
1341
+ #### macOS
1342
+ ```bash
1343
+ podman run \
1344
+ -p 8080:8080 \
1345
+ -v ./lightspeed-stack.yaml:/app-root/lightspeed-stack.yaml:ro \
1346
+ -v ./run.yaml:/app-root/run.yaml:ro \
1347
+ -e OPENAI_API_KEY=your-api-key \
1348
+ my-lightspeed-core:latest
1349
+ ```
1350
+
1351
+ ### Verify it's running properly
1352
+
1353
+ A simple sanity check:
1354
+
1355
+ ```bash
1356
+ curl -H "Accept: application/json" http://localhost:8080/v1/models
1357
+ ```
1358
+
1359
+ ## Custom Container Image
1360
+
1361
+ The lightspeed-stack container image bundles many Python dependencies for common
1362
+ OGX providers (when using OGX in library mode).
1363
+
1364
+ Follow these instructons when you need to bundle additional configuration
1365
+ files or extra dependencies (e.g. `lightspeed-stack-providers`).
1366
+
1367
+ To include more dependencies in the base-image, create upstream pull request to update
1368
+ [the pyproject.toml file](https://github.com/lightspeed-core/lightspeed-stack/blob/main/pyproject.toml)
1369
+
1370
+ 1. Create `pyproject.toml` file in your top-level directory with content like:
1371
+ ```toml
1372
+ [project]
1373
+ name = "my-customized-chatbot"
1374
+ version = "0.1.0"
1375
+ description = "My very Awesome Chatbot"
1376
+ readme = "README.md"
1377
+ requires-python = ">=3.12"
1378
+ dependencies = [
1379
+ "lightspeed-stack-providers==TODO",
1380
+ ]
1381
+ ```
1382
+
1383
+ 2. Create a `Containerfile` in your repository root like the following (see `deploy/lightspeed-stack/Containerfile` in this repo for the upstream image definition). Update it as needed:
1384
+ ```
1385
+ # Latest dev image built from the git main branch (consider pinning a digest for reproducibility)
1386
+ FROM quay.io/lightspeed-core/lightspeed-stack:dev-latest
1387
+
1388
+ ARG APP_ROOT=/app-root
1389
+ WORKDIR /app-root
1390
+
1391
+ # Add additional files
1392
+ # (avoid accidental inclusion of local directories or env files or credentials)
1393
+ COPY pyproject.toml LICENSE.md README.md ./
1394
+
1395
+ # Bundle own configuration files
1396
+ COPY lightspeed-stack.yaml run.yaml ./
1397
+
1398
+ # Add only project-specific dependencies without adding other dependencies
1399
+ # to not break the dependencies of the base image.
1400
+ ENV UV_COMPILE_BYTECODE=0 \
1401
+ UV_LINK_MODE=copy \
1402
+ UV_PYTHON_DOWNLOADS=0 \
1403
+ UV_NO_CACHE=1
1404
+ # List of dependencies is first parsed from pyproject.toml and then installed.
1405
+ RUN python -c "import tomllib, sys; print(' '.join(tomllib.load(open('pyproject.toml','rb'))['project']['dependencies']))" \
1406
+ | xargs uv pip install --no-deps
1407
+ # Install the project itself
1408
+ RUN uv pip install . --no-deps && uv clean
1409
+
1410
+ USER 0
1411
+
1412
+ # Bundle additional rpm packages
1413
+ RUN microdnf install -y --nodocs --setopt=keepcache=0 --setopt=tsflags=nodocs TODO1 TODO2 \
1414
+ && microdnf clean all \
1415
+ && rm -rf /var/cache/dnf
1416
+
1417
+ # this directory is checked by ecosystem-cert-preflight-checks task in Konflux
1418
+ COPY LICENSE.md /licenses/
1419
+
1420
+ # Add executables from .venv to system PATH
1421
+ ENV PATH="/app-root/.venv/bin:$PATH"
1422
+
1423
+ # Run the application
1424
+ EXPOSE 8080
1425
+ ENTRYPOINT ["opentelemetry-instrument", "python3.12", "src/lightspeed_stack.py"]
1426
+ USER 1001
1427
+ ```
1428
+
1429
+ 3. Optionally create customized configuration files `lightspeed-stack.yaml` and `run.yaml`.
1430
+
1431
+ 4. Now try to build your image
1432
+ ```
1433
+ podman build -t "my-awesome-chatbot:latest" .
1434
+ ```
1435
+
1436
+ # Endpoints
1437
+
1438
+ ## OpenAPI specification
1439
+
1440
+ * [Generated OpenAPI specification](docs/openapi.json)
1441
+ * [OpenAPI documentation](docs/devel_doc/openapi.md)
1442
+
1443
+ The service provides health check endpoints that can be used for monitoring, load balancing, and orchestration systems like Kubernetes.
1444
+
1445
+ ## Readiness Endpoint
1446
+
1447
+ **Endpoint:** `GET /v1/readiness`
1448
+
1449
+ The readiness endpoint checks if the service is ready to handle requests by verifying the health status of all configured LLM providers.
1450
+
1451
+ **Response:**
1452
+ - **200 OK**: Service is ready - all providers are healthy
1453
+ - **503 Service Unavailable**: Service is not ready - one or more providers are unhealthy
1454
+
1455
+ **Response Body:**
1456
+ ```json
1457
+ {
1458
+ "ready": true,
1459
+ "reason": "All providers are healthy",
1460
+ "providers": []
1461
+ }
1462
+ ```
1463
+
1464
+ **Response Fields:**
1465
+ - `ready` (boolean): Indicates if the service is ready to handle requests
1466
+ - `reason` (string): Human-readable explanation of the readiness state
1467
+ - `providers` (array): List of unhealthy providers (empty when service is ready)
1468
+
1469
+ ## Liveness Endpoint
1470
+
1471
+ **Endpoint:** `GET /v1/liveness`
1472
+
1473
+ The liveness endpoint performs a basic health check to verify the service is alive and responding.
1474
+
1475
+ **Response:**
1476
+ - **200 OK**: Service is alive
1477
+
1478
+ **Response Body:**
1479
+ ```json
1480
+ {
1481
+ "alive": true
1482
+ }
1483
+ ```
1484
+
1485
+ ## Models endpoint
1486
+
1487
+ **Endpoint:** `GET /v1/models`
1488
+
1489
+ Process GET requests and returns a list of available models from the Llama
1490
+ Stack service. It is possible to specify "model_type" query parameter that is
1491
+ used as a filter. For example, if model type is set to "llm", only LLM models
1492
+ will be returned:
1493
+
1494
+ ```bash
1495
+ curl http://localhost:8080/v1/models?model_type=llm
1496
+ ```
1497
+
1498
+ The "model_type" query parameter is optional. When not specified, all models
1499
+ will be returned.
1500
+
1501
+ **Response Body:**
1502
+ ```json
1503
+ {
1504
+ "models": [
1505
+ {
1506
+ "identifier": "sentence-transformers/.llama",
1507
+ "metadata": {
1508
+ "embedding_dimension": 384
1509
+ },
1510
+ "api_model_type": "embedding",
1511
+ "provider_id": "sentence-transformers",
1512
+ "type": "model",
1513
+ "provider_resource_id": ".llama",
1514
+ "model_type": "embedding"
1515
+ },
1516
+ {
1517
+ "identifier": "openai/gpt-4o-mini",
1518
+ "metadata": {},
1519
+ "api_model_type": "llm",
1520
+ "provider_id": "openai",
1521
+ "type": "model",
1522
+ "provider_resource_id": "gpt-4o-mini",
1523
+ "model_type": "llm"
1524
+ },
1525
+ {
1526
+ "identifier": "sentence-transformers/nomic-ai/nomic-embed-text-v1.5",
1527
+ "metadata": {
1528
+ "embedding_dimension": 768
1529
+ },
1530
+ "api_model_type": "embedding",
1531
+ "provider_id": "sentence-transformers",
1532
+ "type": "model",
1533
+ "provider_resource_id": "nomic-ai/nomic-embed-text-v1.5",
1534
+ "model_type": "embedding"
1535
+ }
1536
+ ]
1537
+ }
1538
+ ```
1539
+
1540
+ ## Skills endpoint
1541
+
1542
+ **Endpoint:** `GET /v1/skills`
1543
+
1544
+ Process GET requests and return the list of agent skills loaded from the
1545
+ directories configured under `skills.paths` in the service configuration
1546
+ (see [Agent Skills](#agent-skills) and the [Agent Skills Guide](docs/user_doc/skills_guide.md)
1547
+ for configuration and authoring instructions). Each skill's name and
1548
+ description are read from its `SKILL.md` frontmatter.
1549
+
1550
+ This endpoint reads the configured skill directories directly and does not
1551
+ invoke an LLM or agent — it is intended for clients (e.g. the RHDH UI or
1552
+ other tooling) that need a deterministic way to introspect configured
1553
+ skills without the cost, latency, or non-determinism of an LLM tool call.
1554
+ This is distinct from the `list_skills` tool that the agent itself may
1555
+ invoke during a `/v1/query` or `/v1/streaming_query` turn.
1556
+
1557
+ If [authentication](#authentication) is enabled, include the appropriate
1558
+ credentials; otherwise the request returns `401`/`403`.
1559
+
1560
+ ```bash
1561
+ curl -H "Authorization: Bearer <token>" \
1562
+ http://localhost:8080/v1/skills
1563
+ ```
1564
+
1565
+ **Response Body:**
1566
+
1567
+ ```json
1568
+ {
1569
+ "skills": [
1570
+ {
1571
+ "name": "code-review",
1572
+ "description": "Review code for quality and security"
1573
+ },
1574
+ {
1575
+ "name": "openshift-troubleshooting",
1576
+ "description": "Troubleshoot OpenShift cluster issues"
1577
+ }
1578
+ ]
1579
+ }
1580
+ ```
1581
+
1582
+ If no skills are configured (or `skills.paths` is empty), the endpoint
1583
+ returns an empty list:
1584
+
1585
+ ```json
1586
+ {
1587
+ "skills": []
1588
+ }
1589
+ ```
1590
+
1591
+
1592
+ # Database structure
1593
+
1594
+ Database structure is described on [this page](https://lightspeed-core.github.io/lightspeed-stack/DB/index.html)
1595
+
1596
+ # Publish the service as Python package on PyPI
1597
+
1598
+ To publish the service as an Python package on PyPI to be installable by anyone
1599
+ (including Konflux hermetic builds), perform these two steps:
1600
+
1601
+ ## Generate distribution archives to be uploaded into Python registry
1602
+
1603
+ ```
1604
+ make distribution-archives
1605
+ ```
1606
+
1607
+ Please make sure that the archive was really built to avoid publishing older one.
1608
+
1609
+ ## Upload distribution archives into selected Python registry
1610
+
1611
+ ```
1612
+ make upload-distribution-archives
1613
+ ```
1614
+
1615
+ The Python registry to where the package should be uploaded can be configured
1616
+ by changing `PYTHON_REGISTRY`. It is possible to select `pypi` or `testpypi`.
1617
+
1618
+ You might have your API token stored in file `~/.pypirc`. That file should have
1619
+ the following form:
1620
+
1621
+ ```
1622
+ [testpypi]
1623
+ username = __token__
1624
+ password = pypi-{your-API-token}
1625
+
1626
+ [pypi]
1627
+ username = __token__
1628
+ password = pypi-{your-API-token}
1629
+ ```
1630
+
1631
+ If this configuration file does not exist, you will be prompted to specify API token from keyboard every time you try to upload the archive.
1632
+
1633
+
1634
+
1635
+ ## Packages on PyPI and Test PyPI
1636
+
1637
+ * https://pypi.org/project/lightspeed-stack/
1638
+ * https://test.pypi.org/project/lightspeed-stack/0.1.0/
1639
+
1640
+
1641
+
1642
+ # Contributing
1643
+
1644
+ * See [contributors](CONTRIBUTING.md) guide.
1645
+
1646
+
1647
+
1648
+ # Testing
1649
+
1650
+ * See [testing](docs/testing/testing.md) guide.
1651
+
1652
+
1653
+
1654
+ # Releasing
1655
+
1656
+ * See [releasing](docs/maintenance/releasing.md) guide.
1657
+
1658
+ # License
1659
+
1660
+ Published under the Apache 2.0 License
1661
+
1662
+
1663
+
1664
+ # Additional tools
1665
+
1666
+ ## Utility to generate OpenAPI schema
1667
+
1668
+ This script re-generated OpenAPI schema for the Lightspeed Service REST API.
1669
+
1670
+ ### Path
1671
+
1672
+ [scripts/generate_openapi_schema.py](scripts/generate_openapi_schema.py)
1673
+
1674
+ ### Usage
1675
+
1676
+ ```
1677
+ make schema
1678
+ ```
1679
+
1680
+ ## Makefile target to generate OpenAPI specification
1681
+
1682
+ Use `make openapi-doc` to generate OpenAPI specification in Markdown format.
1683
+ Resulting documentation is available at [here](docs/devel_doc/openapi.md).
1684
+
1685
+
1686
+
1687
+ ## Utility to generate documentation from source code
1688
+
1689
+ This script re-generate README.md files for all modules defined in the Lightspeed Stack Service.
1690
+
1691
+ ### Path
1692
+
1693
+ [scripts/gen_doc.py](scripts/gen_doc.py)
1694
+
1695
+ ### Usage
1696
+
1697
+ ```
1698
+ make doc
1699
+ ```
1700
+
1701
+ # Data Export Integration
1702
+
1703
+ The Lightspeed Core Stack integrates with the [lightspeed-to-dataverse-exporter](https://github.com/lightspeed-core/lightspeed-to-dataverse-exporter) service to automatically export various types of user interaction data to Red Hat's Dataverse for analysis.
1704
+
1705
+ ## Quick Integration
1706
+
1707
+ 1. **Enable data collection** in your `lightspeed-stack.yaml`:
1708
+ ```yaml
1709
+ user_data_collection:
1710
+ feedback_enabled: true
1711
+ feedback_storage: "/shared/data/feedback"
1712
+ transcripts_enabled: true
1713
+ transcripts_storage: "/shared/data/transcripts"
1714
+ ```
1715
+
1716
+ 2. **Deploy the exporter service** pointing to the same data directories
1717
+
1718
+
1719
+ ## Documentation
1720
+
1721
+ For complete integration setup, deployment options, and configuration details, see [exporter repository](https://github.com/lightspeed-core/lightspeed-to-dataverse-exporter).
1722
+
1723
+ # Project structure
1724
+
1725
+ ## Configuration classes
1726
+
1727
+ ![Configuration classes](docs/config.png)
1728
+
1729
+ ## REST API
1730
+
1731
+ ![REST API](docs/rest_api.png)
1732
+
1733
+ ## Sequence diagrams
1734
+
1735
+ ### Query endpoint REST API handler
1736
+
1737
+ ![Query endpoint](docs/query_endpoint.svg)
1738
+
1739
+ ## Streaming query endpoint REST API handler
1740
+
1741
+ ![Streaming query endpoint](docs/streaming_query_endpoint.svg)
1742
+
1743
+ ## Versioning
1744
+
1745
+ We follow [Semantic Versioning](http://semver.org/spec/v1.0.0.html).
1746
+ The version X.Y.Z indicates:
1747
+
1748
+ * X is the major version (backward-incompatible),
1749
+ * Y is the minor version (backward-compatible), and
1750
+ * Z is the patch version (backward-compatible bug fix).
1751
+
1752
+ For upgrade instructions between versions, see the [Migration Guides](docs/migrations/).
1753
+
1754
+ # Konflux
1755
+
1756
+ The official image of Lightspeed Core Stack is built on [Konflux](https://konflux-ui.apps.kflux-prd-rh02.0fk9.p1.openshiftapps.com/ns/lightspeed-core-tenant/applications/lightspeed-stack).
1757
+ We have both x86_64 and ARM64 images.
1758
+
1759
+ ## Updating Dependencies for Hermetic Builds
1760
+
1761
+ Konflux builds run in **hermetic mode** (air-gapped from the internet), so all dependencies must be prefetched and locked. When you add or update dependencies, you need to regenerate the lock files.
1762
+
1763
+ ### When to Update Dependency Files
1764
+
1765
+ Update these files when you:
1766
+ - Add/remove/update Python packages in the project
1767
+ - Add/remove/update RPM packages in `deploy/lightspeed-stack/Containerfile`
1768
+ - Change the base image version
1769
+
1770
+ ### Updating Python Dependencies
1771
+
1772
+ **Quick command:**
1773
+ ```shell
1774
+ make konflux-requirements
1775
+ ```
1776
+
1777
+ This compiles Python dependencies from `pyproject.toml` using `uv`, splits packages by their source index (PyPI vs Red Hat's internal registry), and generates hermetic requirements files with pinned versions and hashes for Konflux builds.
1778
+
1779
+ **Files produced:**
1780
+ - `.konflux/requirements.hashes.source.txt` – PyPI packages with hashes
1781
+ - `.konflux/requirements.hashes.wheel.txt` – Red Hat registry packages with hashes
1782
+ - `.konflux/requirements-build.txt` – Build-time dependencies for source packages
1783
+
1784
+ The script also updates the Tekton pipeline configurations (`.tekton/lightspeed-stack-*.yaml`) with the list of pre-built wheel packages.
1785
+
1786
+ ### Updating RPM Dependencies
1787
+
1788
+ **Prerequisites:**
1789
+ - Install [rpm-lockfile-prototype](https://github.com/konflux-ci/rpm-lockfile-prototype?tab=readme-ov-file#installation)
1790
+ - Have an active RHEL Subscription, get activation keys from [RH console](https://console.redhat.com/insights/connector/activation-keys)
1791
+ - Have `dnf` installed in system
1792
+
1793
+ **Steps:**
1794
+
1795
+ 1. **List your RPM packages** in `rpms.in.yaml` under the `packages` field
1796
+
1797
+ 2. **If you changed the base image**, extract its repo file:
1798
+ ```shell
1799
+ # UBI images
1800
+ podman run -it $BASE_IMAGE cat /etc/yum.repos.d/ubi.repo > ubi.repo
1801
+ # RHEL images
1802
+ podman run -it $BASE_IMAGE cat /etc/yum.repos.d/redhat.repo > redhat.repo
1803
+ ```
1804
+ If the repo file contains too many entries, we can filter them and keep only required repositories.
1805
+ Here is the command to check active repositories:
1806
+ ```shell
1807
+ dnf repolist
1808
+ ```
1809
+ Replace the architecture tag (`uname -m`) to `$basearch` so that rpm-lockfile-prototype can replace it with requested architecture names.
1810
+ ```shell
1811
+ sed -i "s/$(uname -m)/\$basearch/g" redhat.repo
1812
+ ```
1813
+
1814
+ 1. **Generate the lock file**:
1815
+ ```shell
1816
+ make konflux-rpm-lock
1817
+ ```
1818
+
1819
+ This creates `rpms.lock.yaml` with pinned RPM versions.