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