lightspeed-stack 0.6.0rc1__tar.gz → 0.6.0rc2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/PKG-INFO +65 -19
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/README.md +64 -18
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/pyproject.toml +2 -2
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/app/endpoints/conversations_v2.py +1 -1
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/app/endpoints/query.py +1 -2
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/app/endpoints/responses.py +3 -9
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/app/endpoints/responses_telemetry.py +1 -1
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/app/endpoints/rlsapi_v1.py +16 -2
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/app/endpoints/streaming_query.py +2 -3
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/app/main.py +20 -13
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/authentication/api_key_token.py +19 -1
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/authentication/jwk_token.py +20 -2
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/authentication/k8s.py +2 -2
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/authorization/azure_token_manager.py +26 -5
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/cache/README.md +3 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/cache/cache.py +71 -1
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/cache/in_memory_cache.py +70 -1
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/cache/noop_cache.py +64 -1
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/cache/postgres_cache.py +184 -1
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/cache/sqlite_cache.py +178 -3
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/README.md +0 -9
- lightspeed_stack-0.6.0rc2/src/models/__init__.py +11 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/api/README.md +3 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/api/requests/__init__.py +14 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/api/requests/responses_openai.py +1 -4
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/api/responses/successful/README.md +3 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/api/responses/successful/__init__.py +6 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/common/query.py +32 -2
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/common/responses/README.md +2 -2
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/common/responses/__init__.py +5 -1
- lightspeed_stack-0.6.0rc1/src/models/common/responses/responses_context.py → lightspeed_stack-0.6.0rc2/src/models/common/responses/contexts.py +49 -1
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/common/responses/responses_api_params.py +6 -21
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/common/responses/types.py +24 -1
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/common/turn_summary.py +6 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/config.py +202 -3
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/observability/README.md +1 -1
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/utils/llama_stack_version.py +10 -12
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/utils/query.py +1 -54
- lightspeed_stack-0.6.0rc2/src/utils/reranker.py +205 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/utils/responses.py +29 -8
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/utils/vector_search.py +182 -45
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/configs/run-azure.yaml +1 -1
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/features/environment.py +2 -2
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/features/info.feature +1 -1
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/features/proxy.feature +9 -7
- lightspeed_stack-0.6.0rc2/tests/e2e/features/skills.feature +631 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/features/steps/common_http.py +17 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/features/steps/proxy.py +219 -56
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/features/steps/tls.py +7 -8
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/proxy/interception_proxy.py +99 -7
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/proxy/tunnel_proxy.py +90 -1
- lightspeed_stack-0.6.0rc2/tests/e2e/utils/llama_config_utils.py +103 -0
- lightspeed_stack-0.6.0rc2/tests/e2e/utils/llama_prow_utils.py +41 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/utils/prow_utils.py +52 -22
- lightspeed_stack-0.6.0rc2/tests/e2e-prow/rhoai/.e2e_exit_code +1 -0
- lightspeed_stack-0.6.0rc2/tests/e2e-prow/rhoai/manifests/lightspeed/e2e-interception-proxy.yaml +77 -0
- lightspeed_stack-0.6.0rc2/tests/e2e-prow/rhoai/manifests/lightspeed/e2e-tunnel-proxy.yaml +69 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e-prow/rhoai/manifests/lightspeed/llama-stack-openai.yaml +11 -7
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e-prow/rhoai/manifests/lightspeed/llama-stack-prow.yaml +2 -7
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e-prow/rhoai/pipeline-konflux.sh +9 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e-prow/rhoai/pipeline.sh +2 -2
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e-prow/rhoai/scripts/e2e-ops.sh +187 -8
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/integration/endpoints/test_conversations_v2_integration.py +1 -1
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/integration/endpoints/test_query_byok_integration.py +4 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/integration/endpoints/test_query_integration.py +1 -1
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/integration/endpoints/test_rlsapi_v1_integration.py +4 -4
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/test_results/.coverage.unit +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/test_results/coverage_unit.json +1 -1
- lightspeed_stack-0.6.0rc2/tests/test_results/junit_unit.xml +225 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/app/endpoints/conftest.py +1 -1
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/app/endpoints/test_authorized.py +4 -4
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/app/endpoints/test_config.py +2 -2
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/app/endpoints/test_conversations.py +62 -35
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/app/endpoints/test_conversations_v2.py +12 -7
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/app/endpoints/test_query.py +7 -16
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/app/endpoints/test_responses.py +29 -14
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/app/endpoints/test_rlsapi_v1.py +4 -4
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/app/endpoints/test_streaming_query.py +6 -8
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/authorization/test_azure_token_manager.py +22 -7
- lightspeed_stack-0.6.0rc2/tests/unit/cache/test_in_memory_cache.py +70 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/cache/test_noop_cache.py +41 -1
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/cache/test_postgres_cache.py +232 -4
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/cache/test_sqlite_cache.py +215 -4
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/models/config/README.md +3 -0
- lightspeed_stack-0.6.0rc2/tests/unit/models/config/test_approvals_configuration.py +121 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/models/config/test_dump_configuration.py +799 -12
- lightspeed_stack-0.6.0rc2/tests/unit/models/config/test_in_memory_cache_configuration.py +31 -0
- lightspeed_stack-0.6.0rc2/tests/unit/models/config/test_llama_stack_configuration.py +194 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/models/config/test_model_context_protocol_server.py +39 -0
- lightspeed_stack-0.6.0rc2/tests/unit/models/config/test_postgresql_database_configuration.py +311 -0
- lightspeed_stack-0.6.0rc2/tests/unit/models/config/test_reranker_configuration.py +53 -0
- lightspeed_stack-0.6.0rc2/tests/unit/models/config/test_skills_configuration.py +49 -0
- lightspeed_stack-0.6.0rc2/tests/unit/models/config/test_tls_configuration.py +229 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/models/config/test_user_data_collection.py +15 -14
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/models/requests/test_vector_store_requests.py +8 -4
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/models/responses/test_successful_responses.py +5 -1
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/models/rlsapi/test_requests.py +1 -1
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/models/rlsapi/test_responses.py +1 -1
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/observability/formats/test_rlsapi.py +2 -2
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/quota/test_quota_limiter_factory.py +5 -3
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/test_client.py +61 -27
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/test_configuration.py +1341 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/test_llama_stack_configuration.py +81 -3
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/utils/test_query.py +1 -99
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/utils/test_responses.py +139 -10
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/utils/test_shields.py +7 -7
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/utils/test_types.py +8 -14
- lightspeed_stack-0.6.0rc2/tests/unit/utils/test_vector_search.py +1384 -0
- lightspeed_stack-0.6.0rc1/src/models/__init__.py +0 -1
- lightspeed_stack-0.6.0rc1/src/models/context.py +0 -55
- lightspeed_stack-0.6.0rc1/src/models/rlsapi/README.md +0 -11
- lightspeed_stack-0.6.0rc1/src/models/rlsapi/__init__.py +0 -1
- lightspeed_stack-0.6.0rc1/tests/test_results/junit_unit.xml +0 -1
- lightspeed_stack-0.6.0rc1/tests/unit/models/config/test_llama_stack_configuration.py +0 -134
- lightspeed_stack-0.6.0rc1/tests/unit/models/config/test_postgresql_database_configuration.py +0 -123
- lightspeed_stack-0.6.0rc1/tests/unit/models/config/test_tls_configuration.py +0 -120
- lightspeed_stack-0.6.0rc1/tests/unit/utils/test_vector_search.py +0 -721
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/LICENSE +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/a2a_storage/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/a2a_storage/__init__.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/a2a_storage/context_store.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/a2a_storage/in_memory_context_store.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/a2a_storage/postgres_context_store.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/a2a_storage/sqlite_context_store.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/a2a_storage/storage_factory.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/app/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/app/__init__.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/app/database.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/app/endpoints/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/app/endpoints/TODO +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/app/endpoints/__init__.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/app/endpoints/a2a.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/app/endpoints/a2a_openapi.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/app/endpoints/authorized.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/app/endpoints/config.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/app/endpoints/conversations_v1.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/app/endpoints/feedback.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/app/endpoints/health.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/app/endpoints/info.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/app/endpoints/mcp_auth.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/app/endpoints/mcp_servers.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/app/endpoints/metrics.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/app/endpoints/models.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/app/endpoints/prompts.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/app/endpoints/providers.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/app/endpoints/rags.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/app/endpoints/root.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/app/endpoints/shields.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/app/endpoints/stream_interrupt.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/app/endpoints/tools.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/app/endpoints/vector_stores.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/app/routers.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/authentication/.ruff_cache/.gitignore +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/authentication/.ruff_cache/0.9.1/13770435568462002823 +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/authentication/.ruff_cache/0.9.1/2640992821107041526 +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/authentication/.ruff_cache/0.9.1/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/authentication/.ruff_cache/CACHEDIR.TAG +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/authentication/.ruff_cache/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/authentication/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/authentication/__init__.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/authentication/interface.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/authentication/noop.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/authentication/noop_with_token.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/authentication/rh_identity.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/authentication/utils.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/authorization/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/authorization/__init__.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/authorization/middleware.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/authorization/resolvers.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/cache/__init__.py +0 -0
- {lightspeed_stack-0.6.0rc1/src/models → lightspeed_stack-0.6.0rc2/src/cache}/cache_entry.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/cache/cache_error.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/cache/cache_factory.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/metrics/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/metrics/__init__.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/metrics/recording.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/metrics/utils.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/.ruff_cache/.gitignore +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/.ruff_cache/0.9.1/2435063725374233068 +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/.ruff_cache/0.9.1/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/.ruff_cache/CACHEDIR.TAG +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/.ruff_cache/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/api/__init__.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/api/requests/catalog.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/api/requests/conversations.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/api/requests/feedback.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/api/requests/mcp_servers.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/api/requests/prompts.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/api/requests/query.py +0 -0
- /lightspeed_stack-0.6.0rc1/src/models/rlsapi/requests.py → /lightspeed_stack-0.6.0rc2/src/models/api/requests/rlsapi.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/api/requests/vector_stores.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/api/responses/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/api/responses/__init__.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/api/responses/constants.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/api/responses/error/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/api/responses/error/__init__.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/api/responses/error/bad_request.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/api/responses/error/bases.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/api/responses/error/conflict.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/api/responses/error/content_too_large.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/api/responses/error/forbidden.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/api/responses/error/internal.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/api/responses/error/not_found.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/api/responses/error/service_unavailable.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/api/responses/error/too_many_requests.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/api/responses/error/unauthorized.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/api/responses/error/unprocessable_entity.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/api/responses/successful/bases.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/api/responses/successful/catalog.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/api/responses/successful/configuration.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/api/responses/successful/conversations.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/api/responses/successful/feedback.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/api/responses/successful/mcp_servers.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/api/responses/successful/probes.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/api/responses/successful/prompts.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/api/responses/successful/query.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/api/responses/successful/responses_openai.py +0 -0
- /lightspeed_stack-0.6.0rc1/src/models/rlsapi/responses.py → /lightspeed_stack-0.6.0rc2/src/models/api/responses/successful/rlsapi.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/api/responses/successful/vector_stores.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/common/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/common/__init__.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/common/conversation.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/common/feedback.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/common/health.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/common/mcp.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/common/moderation.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/common/responses/responses_conversation_context.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/common/transcripts.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/compaction.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/database/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/database/__init__.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/database/base.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/models/database/conversations.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/observability/__init__.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/observability/formats/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/observability/formats/__init__.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/observability/formats/responses.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/observability/formats/rlsapi.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/observability/splunk.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/quota/.ruff_cache/.gitignore +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/quota/.ruff_cache/0.14.1/13216894937928385266 +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/quota/.ruff_cache/0.14.1/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/quota/.ruff_cache/0.9.1/11326792315657745171 +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/quota/.ruff_cache/0.9.1/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/quota/.ruff_cache/CACHEDIR.TAG +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/quota/.ruff_cache/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/quota/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/quota/__init__.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/quota/cluster_quota_limiter.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/quota/connect_pg.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/quota/connect_sqlite.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/quota/quota_exceed_error.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/quota/quota_limiter.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/quota/quota_limiter_factory.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/quota/revokable_quota_limiter.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/quota/sql.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/quota/token_usage_history.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/quota/user_quota_limiter.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/runners/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/runners/__init__.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/runners/quota_scheduler.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/runners/uvicorn.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/telemetry/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/telemetry/__init__.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/telemetry/configuration_snapshot.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/utils/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/utils/__init__.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/utils/checks.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/utils/common.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/utils/compaction.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/utils/connection_decorator.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/utils/conversations.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/utils/endpoints.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/utils/mcp_auth_headers.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/utils/mcp_headers.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/utils/mcp_oauth_probe.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/utils/prompts.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/utils/quota.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/utils/rh_identity.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/utils/schema_dumper.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/utils/shields.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/utils/stream_interrupts.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/utils/suid.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/utils/token_counter.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/utils/token_estimator.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/utils/tool_formatter.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/utils/transcripts.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/utils/types.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/__init__.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/benchmarks/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/benchmarks/conftest.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/benchmarks/data_generators.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/benchmarks/db_benchmarks.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/benchmarks/test_app_database.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/benchmarks/test_app_database_comparison.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/configuration/benchmarks-postgres.yaml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/configuration/benchmarks-sqlite.yaml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/configuration/lightspeed-stack-proper-name.yaml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/configuration/lightspeed-stack.yaml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/configuration/minimal-stack.yaml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/configuration/multiline_system_prompt.txt +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/configuration/password +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/configuration/rag.txt +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/configuration/rh-identity-config.yaml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/configuration/run.yaml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/configuration/server.crt +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/configuration/server.key +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/configuration/system_prompt.txt +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/.pdm-python +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/__init__.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/configs/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/configs/run-bedrock.yaml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/configs/run-ci.yaml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/configs/run-rhaiis.yaml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/configs/run-rhelai.yaml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/configs/run-vertexai.yaml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/configs/run-watsonx.yaml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/configuration/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/configuration/library-mode/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/configuration/library-mode/lightspeed-stack-auth-noop-token.yaml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/configuration/library-mode/lightspeed-stack-auth-rh-identity.yaml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/configuration/library-mode/lightspeed-stack-inline-rag.yaml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/configuration/library-mode/lightspeed-stack-invalid-feedback-storage.yaml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/configuration/library-mode/lightspeed-stack-invalid-mcp-file-auth.yaml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/configuration/library-mode/lightspeed-stack-mcp-auth.yaml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/configuration/library-mode/lightspeed-stack-mcp-client-auth.yaml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/configuration/library-mode/lightspeed-stack-mcp-file-auth.yaml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/configuration/library-mode/lightspeed-stack-mcp-kubernetes-auth.yaml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/configuration/library-mode/lightspeed-stack-mcp-oauth-auth.yaml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/configuration/library-mode/lightspeed-stack-mcp.yaml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/configuration/library-mode/lightspeed-stack-no-cache.yaml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/configuration/library-mode/lightspeed-stack-rbac.yaml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/configuration/library-mode/lightspeed-stack.yaml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/configuration/server-mode/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/configuration/server-mode/lightspeed-stack-auth-noop-token.yaml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/configuration/server-mode/lightspeed-stack-auth-rh-identity.yaml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/configuration/server-mode/lightspeed-stack-inline-rag.yaml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/configuration/server-mode/lightspeed-stack-invalid-feedback-storage.yaml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/configuration/server-mode/lightspeed-stack-invalid-mcp-file-auth.yaml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/configuration/server-mode/lightspeed-stack-mcp-auth.yaml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/configuration/server-mode/lightspeed-stack-mcp-client-auth.yaml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/configuration/server-mode/lightspeed-stack-mcp-file-auth.yaml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/configuration/server-mode/lightspeed-stack-mcp-kubernetes-auth.yaml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/configuration/server-mode/lightspeed-stack-mcp-oauth-auth.yaml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/configuration/server-mode/lightspeed-stack-mcp.yaml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/configuration/server-mode/lightspeed-stack-no-cache.yaml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/configuration/server-mode/lightspeed-stack-rbac.yaml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/configuration/server-mode/lightspeed-stack-tls.yaml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/configuration/server-mode/lightspeed-stack.yaml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/features/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/features/authorized_noop.feature +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/features/authorized_noop_token.feature +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/features/authorized_rh_identity.feature +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/features/conversation_cache_v2.feature +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/features/conversations.feature +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/features/faiss.feature +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/features/feedback.feature +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/features/health.feature +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/features/http_401_unauthorized.feature +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/features/inline_rag.feature +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/features/llama_stack_disrupted.feature +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/features/mcp.feature +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/features/mcp_servers_api.feature +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/features/mcp_servers_api_auth.feature +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/features/mcp_servers_api_no_config.feature +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/features/models.feature +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/features/opentelemetry.feature +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/features/query.feature +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/features/rbac.feature +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/features/responses.feature +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/features/responses_streaming.feature +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/features/rest_api.feature +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/features/rlsapi_v1.feature +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/features/rlsapi_v1_errors.feature +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/features/smoketests.feature +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/features/steps/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/features/steps/__init__.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/features/steps/auth.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/features/steps/common.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/features/steps/conversation.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/features/steps/feedback.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/features/steps/health.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/features/steps/info.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/features/steps/llm_query_response.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/features/steps/models.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/features/steps/place_holder.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/features/steps/rbac.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/features/steps/responses_steps.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/features/steps/rlsapi_v1.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/features/steps/shields.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/features/steps/token_counters.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/features/streaming_query.feature +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/features/tls.feature +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/gen_scenario_list.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/mock_jwks_server/Dockerfile +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/mock_jwks_server/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/mock_jwks_server/generate_tokens.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/mock_jwks_server/server.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/mock_mcp_server/Dockerfile +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/mock_mcp_server/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/mock_mcp_server/server.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/mock_tls_inference_server/Dockerfile +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/mock_tls_inference_server/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/mock_tls_inference_server/server.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/patches/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/patches/docker-compose-mcp-volumes-selinux.patch +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/proxy/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/proxy/__init__.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/rag/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/rag/kv_store.db +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/secrets/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/secrets/invalid-mcp-token +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/secrets/mcp-token +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/test_api.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/test_list.txt +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/utils/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/utils/llama_stack_utils.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e/utils/utils.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e-prow/rhoai/configs/run.yaml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e-prow/rhoai/manifests/gpu/cluster-policy.yaml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e-prow/rhoai/manifests/gpu/create-nfd.yaml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e-prow/rhoai/manifests/lightspeed/lightspeed-stack.yaml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e-prow/rhoai/manifests/lightspeed/mock-jwks.yaml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e-prow/rhoai/manifests/lightspeed/mock-mcp.yaml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e-prow/rhoai/manifests/namespaces/nfd.yaml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e-prow/rhoai/manifests/namespaces/nvidia-operator.yaml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e-prow/rhoai/manifests/operators/ds-cluster.yaml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e-prow/rhoai/manifests/operators/operatorgroup.yaml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e-prow/rhoai/manifests/operators/operators.yaml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e-prow/rhoai/manifests/vllm/vllm-inference-service-cpu.yaml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e-prow/rhoai/manifests/vllm/vllm-inference-service-gpu.yaml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e-prow/rhoai/manifests/vllm/vllm-runtime-cpu.yaml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e-prow/rhoai/manifests/vllm/vllm-runtime-gpu.yaml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e-prow/rhoai/pipeline-services-konflux.sh +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e-prow/rhoai/pipeline-services.sh +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e-prow/rhoai/pipeline-test-pod.sh +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e-prow/rhoai/pipeline-vllm.sh +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e-prow/rhoai/run-tests.sh +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e-prow/rhoai/scripts/bootstrap.sh +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e-prow/rhoai/scripts/deploy-vllm.sh +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e-prow/rhoai/scripts/fetch-vllm-image.sh +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e-prow/rhoai/scripts/get-vllm-pod-info.sh +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/e2e-prow/rhoai/scripts/gpu-setup.sh +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/integration/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/integration/__init__.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/integration/conftest.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/integration/endpoints/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/integration/endpoints/__init__.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/integration/endpoints/test_authorized_endpoint.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/integration/endpoints/test_config_integration.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/integration/endpoints/test_conversations_v1_integration.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/integration/endpoints/test_health_integration.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/integration/endpoints/test_info_integration.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/integration/endpoints/test_model_list.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/integration/endpoints/test_root_endpoint.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/integration/endpoints/test_stream_interrupt_integration.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/integration/endpoints/test_streaming_query_byok_integration.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/integration/endpoints/test_streaming_query_integration.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/integration/endpoints/test_tools_integration.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/integration/test_configuration.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/integration/test_middleware_integration.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/integration/test_openapi_json.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/integration/test_rh_identity_integration.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/integration/test_version.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/profiles/empty.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/profiles/syntax_error.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/profiles/test/profile.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/profiles/test_four/profile.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/profiles/test_three/profile.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/profiles/test_two/test.txt +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/test_results/.coverage.integration +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/test_results/coverage_integration.json +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/test_results/junit_integration.xml +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/__init__.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/a2a_storage/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/a2a_storage/__init__.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/a2a_storage/test_in_memory_context_store.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/a2a_storage/test_sqlite_context_store.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/a2a_storage/test_storage_factory.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/app/.ruff_cache/.gitignore +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/app/.ruff_cache/0.9.1/10631576872848856737 +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/app/.ruff_cache/0.9.1/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/app/.ruff_cache/CACHEDIR.TAG +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/app/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/app/__init__.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/app/endpoints/.ruff_cache/.gitignore +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/app/endpoints/.ruff_cache/0.9.1/15310180828563549007 +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/app/endpoints/.ruff_cache/0.9.1/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/app/endpoints/.ruff_cache/CACHEDIR.TAG +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/app/endpoints/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/app/endpoints/__init__.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/app/endpoints/test_a2a.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/app/endpoints/test_feedback.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/app/endpoints/test_health.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/app/endpoints/test_info.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/app/endpoints/test_mcp_auth.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/app/endpoints/test_mcp_servers.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/app/endpoints/test_metrics.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/app/endpoints/test_models.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/app/endpoints/test_prompts.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/app/endpoints/test_providers.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/app/endpoints/test_rags.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/app/endpoints/test_responses_splunk.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/app/endpoints/test_root.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/app/endpoints/test_shields.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/app/endpoints/test_stream_interrupt.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/app/endpoints/test_tools.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/app/endpoints/test_vector_stores.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/app/test_database.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/app/test_main_middleware.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/app/test_routers.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/authentication/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/authentication/__init__.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/authentication/test_api_key_token.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/authentication/test_auth.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/authentication/test_jwk_token.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/authentication/test_k8s.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/authentication/test_noop.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/authentication/test_noop_with_token.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/authentication/test_rh_identity.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/authentication/test_utils.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/authorization/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/authorization/__init__.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/authorization/test_middleware.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/authorization/test_resolvers.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/cache/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/cache/__init__.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/cache/test_cache_factory.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/conftest.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/metrics/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/metrics/__init__.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/metrics/test_recording.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/metrics/test_utis.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/models/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/models/__init__.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/models/config/__init__.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/models/config/test_a2a_state_configuration.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/models/config/test_authentication_configuration.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/models/config/test_byok_rag.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/models/config/test_compaction_configuration.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/models/config/test_conversation_history.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/models/config/test_cors.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/models/config/test_customization.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/models/config/test_database_configuration.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/models/config/test_inference_configuration.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/models/config/test_jwt_role_rule.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/models/config/test_quota_handlers_config.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/models/config/test_quota_limiter_config.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/models/config/test_quota_scheduler_config.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/models/config/test_rag_configuration.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/models/config/test_rlsapi_v1_configuration.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/models/config/test_service_configuration.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/models/config/test_splunk_configuration.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/models/requests/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/models/requests/__init__.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/models/requests/test_attachment.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/models/requests/test_feedback_request.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/models/requests/test_feedback_status_update_request.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/models/requests/test_query_request.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/models/requests/test_responses_request.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/models/responses/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/models/responses/__init__.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/models/responses/test_authorized_response.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/models/responses/test_error_responses.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/models/responses/test_query_response.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/models/responses/test_rag_chunk.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/models/responses/test_response_types.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/models/responses/test_types.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/models/rlsapi/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/models/rlsapi/__init__.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/models/test_compaction.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/observability/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/observability/__init__.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/observability/formats/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/observability/formats/__init__.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/observability/formats/test_responses.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/observability/test_splunk.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/quota/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/quota/__init__.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/quota/test_cluster_quota_limiter.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/quota/test_connect_pg.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/quota/test_connect_sqlite.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/quota/test_quota_exceed_error.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/quota/test_user_quota_limiter.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/runners/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/runners/__init__.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/runners/test_uvicorn_runner.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/telemetry/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/telemetry/__init__.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/telemetry/conftest.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/telemetry/test_configuration_snapshot.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/test_configuration_unknown_fields.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/test_lightspeed_stack.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/test_log.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/test_sentry.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/utils/README.md +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/utils/__init__.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/utils/auth_helpers.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/utils/test_checks.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/utils/test_common.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/utils/test_compaction.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/utils/test_connection_decorator.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/utils/test_conversations.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/utils/test_endpoints.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/utils/test_llama_stack_version.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/utils/test_mcp_auth_headers.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/utils/test_mcp_headers.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/utils/test_prompts.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/utils/test_rh_identity.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/utils/test_suid.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/utils/test_token_estimator.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/utils/test_tool_formatter.py +0 -0
- {lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/tests/unit/utils/test_transcripts.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: lightspeed-stack
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.0rc2
|
|
4
4
|
Summary: LLM tooling stack
|
|
5
5
|
Keywords: LLM,RAG
|
|
6
6
|
Maintainer-Email: =?utf-8?b?UGF2ZWwgVGnFoW5vdnNrw70=?= <tisnik@centrum.cz>
|
|
@@ -259,7 +259,7 @@ Description-Content-Type: text/markdown
|
|
|
259
259
|
[](https://github.com/lightspeed-core/lightspeed-stack/blob/main/LICENSE)
|
|
260
260
|
[](https://www.python.org/)
|
|
261
261
|
[](https://www.python.org/)
|
|
262
|
-
[](https://github.com/lightspeed-core/lightspeed-stack/releases/tag/0.
|
|
262
|
+
[](https://github.com/lightspeed-core/lightspeed-stack/releases/tag/0.6.0rc2)
|
|
263
263
|
|
|
264
264
|
Lightspeed Core Stack (LCS) is an AI-powered assistant that provides answers to product questions using backend LLM services, agents, and RAG databases.
|
|
265
265
|
|
|
@@ -272,7 +272,9 @@ The service includes comprehensive user data collection capabilities for various
|
|
|
272
272
|
* [Prerequisites](#prerequisites)
|
|
273
273
|
* [Installation](#installation)
|
|
274
274
|
* [Run LCS locally](#run-lcs-locally)
|
|
275
|
+
* [Container Runtime Requirements](#container-runtime-requirements)
|
|
275
276
|
* [Configuration](#configuration)
|
|
277
|
+
* [Agentic Capabilities](#agentic-capabilities)
|
|
276
278
|
* [LLM Compatibility](#llm-compatibility)
|
|
277
279
|
* [Set LLM provider and model](#set-llm-provider-and-model)
|
|
278
280
|
* [Selecting provider and model](#selecting-provider-and-model)
|
|
@@ -281,6 +283,7 @@ The service includes comprehensive user data collection capabilities for various
|
|
|
281
283
|
* [Supported providers](#supported-providers)
|
|
282
284
|
* [Integration with Llama Stack](#integration-with-llama-stack)
|
|
283
285
|
* [Llama Stack as separate server](#llama-stack-as-separate-server)
|
|
286
|
+
* [Degraded mode](#degraded-mode)
|
|
284
287
|
* [MCP Server and Tool Configuration](#mcp-server-and-tool-configuration)
|
|
285
288
|
* [Configuring MCP Servers](#configuring-mcp-servers)
|
|
286
289
|
* [Configuring MCP Server Authentication](#configuring-mcp-server-authentication)
|
|
@@ -303,6 +306,7 @@ The service includes comprehensive user data collection capabilities for various
|
|
|
303
306
|
* [System Prompt Literal](#system-prompt-literal)
|
|
304
307
|
* [Custom Profile](#custom-profile)
|
|
305
308
|
* [Control model/provider overrides via authorization](#control-modelprovider-overrides-via-authorization)
|
|
309
|
+
* [Agent Skills (Upcoming)](#agent-skills-upcoming)
|
|
306
310
|
* [Safety Shields](#safety-shields)
|
|
307
311
|
* [Authentication](#authentication)
|
|
308
312
|
* [CORS](#cors)
|
|
@@ -335,6 +339,7 @@ The service includes comprehensive user data collection capabilities for various
|
|
|
335
339
|
* [Packages on PyPI and Test PyPI](#packages-on-pypi-and-test-pypi)
|
|
336
340
|
* [Contributing](#contributing)
|
|
337
341
|
* [Testing](#testing)
|
|
342
|
+
* [Releasing](#releasing)
|
|
338
343
|
* [License](#license)
|
|
339
344
|
* [Additional tools](#additional-tools)
|
|
340
345
|
* [Utility to generate OpenAPI schema](#utility-to-generate-openapi-schema)
|
|
@@ -430,24 +435,39 @@ To quickly get hands on LCS, we can run it using the default configurations prov
|
|
|
430
435
|
```bash
|
|
431
436
|
export OPENAI_API_KEY=sk-xxxxx
|
|
432
437
|
```
|
|
433
|
-
3. start
|
|
438
|
+
3. start LCS server
|
|
434
439
|
```bash
|
|
435
|
-
uv run llama stack run local-run.yaml
|
|
436
|
-
```
|
|
437
|
-
4. [Optional] If you're new to Llama stack, run through a quick tutorial to learn the basics of what the server is used for, by running the interactive tutorial script
|
|
438
|
-
```bash
|
|
439
|
-
./scripts/llama_stack_tutorial.sh
|
|
440
|
-
```
|
|
441
|
-
5. check the LCS settings in [lightspeed-stack.yaml](lightspeed-stack.yaml). `llama_stack.url` should be `url: http://localhost:8321`
|
|
442
|
-
6. start LCS server
|
|
443
|
-
```
|
|
444
440
|
make run
|
|
445
|
-
|
|
446
|
-
|
|
441
|
+
```
|
|
442
|
+
4. access LCS web UI at [http://localhost:8080/](http://localhost:8080/)
|
|
443
|
+
|
|
444
|
+
**Note**: `make run` uses containerized llama-stack (service mode). To run llama-stack manually instead, see the [Llama Stack as separate server](#llama-stack-as-separate-server) section below.
|
|
445
|
+
|
|
446
|
+
## Container Runtime Requirements
|
|
447
|
+
|
|
448
|
+
The Makefile requires either Podman or Docker to launch the Llama Stack container:
|
|
449
|
+
|
|
450
|
+
- **Podman** (recommended for RHEL/Fedora): `sudo dnf install podman`
|
|
451
|
+
- **Docker**: Install from [docker.com](https://docs.docker.com/get-docker/)
|
|
452
|
+
|
|
453
|
+
The Makefile will auto-detect which runtime is available.
|
|
447
454
|
|
|
448
455
|
|
|
449
456
|
# Configuration
|
|
450
457
|
|
|
458
|
+
## Agentic Capabilities
|
|
459
|
+
|
|
460
|
+
Lightspeed Core Stack supports the following agentic features:
|
|
461
|
+
|
|
462
|
+
| Capability | Status | Description |
|
|
463
|
+
|------------|--------|-------------|
|
|
464
|
+
| MCP Tools | Supported | External tool integration via [Model Context Protocol](https://modelcontextprotocol.io) servers |
|
|
465
|
+
| RAG | Supported | Retrieval-Augmented Generation with vector stores ([RAG Guide](docs/rag_guide.md)) |
|
|
466
|
+
| A2A Protocol (Client) | Supported | Agent-to-Agent communication as client ([A2A Protocol](docs/a2a_protocol.md)) |
|
|
467
|
+
| Conversation History | Supported | Persistent conversation context across requests |
|
|
468
|
+
| Human-in-the-Loop | Upcoming | Interactive approval or confirmation steps |
|
|
469
|
+
| Agent Skills | Upcoming (Q2) | Domain-specific instructions loaded on demand ([Agent Skills Guide](docs/skills_guide.md)) |
|
|
470
|
+
|
|
451
471
|
## LLM Compatibility
|
|
452
472
|
|
|
453
473
|
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.
|
|
@@ -578,6 +598,20 @@ user_data_collection:
|
|
|
578
598
|
transcripts_storage: "/tmp/data/transcripts"
|
|
579
599
|
```
|
|
580
600
|
|
|
601
|
+
### Degraded mode
|
|
602
|
+
|
|
603
|
+
Lightspeed core is able to continue operating in a _degraded but safe_ mode if the LLS service is not started or fails to start. When degraded, the `/health` endpoint report the LLS status and any relevant impacts so operators and automation can detect and respond.
|
|
604
|
+
|
|
605
|
+
Degraded mode need to be enabled in `lightspeed-stack.yaml` configuration file:
|
|
606
|
+
|
|
607
|
+
```yaml
|
|
608
|
+
allow_degraded_mode = true
|
|
609
|
+
```
|
|
610
|
+
|
|
611
|
+
[NOTE] Ability to run in degraded mode is disabled by default.
|
|
612
|
+
|
|
613
|
+
|
|
614
|
+
|
|
581
615
|
### MCP Server and Tool Configuration
|
|
582
616
|
|
|
583
617
|
**Note**: The `run.yaml` configuration is currently an implementation detail. In the future, all configuration will be available directly from the lightspeed-core config.
|
|
@@ -964,6 +998,15 @@ customization:
|
|
|
964
998
|
|
|
965
999
|
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.
|
|
966
1000
|
|
|
1001
|
+
## Agent Skills (Upcoming)
|
|
1002
|
+
|
|
1003
|
+
> [!NOTE]
|
|
1004
|
+
> Agent Skills is an upcoming feature. The documentation below describes the planned design.
|
|
1005
|
+
|
|
1006
|
+
Agent Skills will 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.
|
|
1007
|
+
|
|
1008
|
+
For the planned configuration guide, skill authoring instructions, and examples, see the [Agent Skills Guide](docs/skills_guide.md).
|
|
1009
|
+
|
|
967
1010
|
## Safety Shields
|
|
968
1011
|
|
|
969
1012
|
A single Llama Stack configuration file can include multiple safety shields, which are utilized in agent
|
|
@@ -1083,7 +1126,6 @@ Usage: make <OPTIONS> ... <TARGETS>
|
|
|
1083
1126
|
Available targets are:
|
|
1084
1127
|
|
|
1085
1128
|
run Run the service locally
|
|
1086
|
-
run-llama-stack Start Llama Stack with enriched config (for local service mode)
|
|
1087
1129
|
test-unit Run the unit tests
|
|
1088
1130
|
test-integration Run integration tests tests
|
|
1089
1131
|
test-e2e Run end to end tests for the service
|
|
@@ -1189,7 +1231,7 @@ docker compose up --build
|
|
|
1189
1231
|
|
|
1190
1232
|
### Llama-Stack as Library (Library Mode)
|
|
1191
1233
|
|
|
1192
|
-
When embedding llama-stack directly in the container, use the existing `Containerfile` directly (this will not build the llama stack service in a separate container). First modify the `lightspeed-stack.yaml` config to use llama stack in library mode.
|
|
1234
|
+
When embedding llama-stack directly in the container, use the existing `deploy/lightspeed-stack/Containerfile` directly (this will not build the llama stack service in a separate container). First modify the `lightspeed-stack.yaml` config to use llama stack in library mode.
|
|
1193
1235
|
|
|
1194
1236
|
**Configuration** (`lightspeed-stack.yaml`):
|
|
1195
1237
|
```yaml
|
|
@@ -1201,7 +1243,7 @@ llama_stack:
|
|
|
1201
1243
|
**Build and run**:
|
|
1202
1244
|
```bash
|
|
1203
1245
|
# Build lightspeed-core with embedded llama-stack
|
|
1204
|
-
podman build -f Containerfile -t my-lightspeed-core:latest .
|
|
1246
|
+
podman build -f deploy/lightspeed-stack/Containerfile -t my-lightspeed-core:latest .
|
|
1205
1247
|
|
|
1206
1248
|
# Run with embedded llama-stack
|
|
1207
1249
|
podman run \
|
|
@@ -1254,7 +1296,7 @@ dependencies = [
|
|
|
1254
1296
|
]
|
|
1255
1297
|
```
|
|
1256
1298
|
|
|
1257
|
-
2. Create `Containerfile` in
|
|
1299
|
+
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:
|
|
1258
1300
|
```
|
|
1259
1301
|
# Latest dev image built from the git main branch (consider pinning a digest for reproducibility)
|
|
1260
1302
|
FROM quay.io/lightspeed-core/lightspeed-stack:dev-latest
|
|
@@ -1474,6 +1516,10 @@ If this configuration file does not exist, you will be prompted to specify API t
|
|
|
1474
1516
|
|
|
1475
1517
|
|
|
1476
1518
|
|
|
1519
|
+
# Releasing
|
|
1520
|
+
|
|
1521
|
+
* See [releasing](docs/releasing.md) guide.
|
|
1522
|
+
|
|
1477
1523
|
# License
|
|
1478
1524
|
|
|
1479
1525
|
Published under the Apache 2.0 License
|
|
@@ -1581,7 +1627,7 @@ Konflux builds run in **hermetic mode** (air-gapped from the internet), so all d
|
|
|
1581
1627
|
|
|
1582
1628
|
Update these files when you:
|
|
1583
1629
|
- Add/remove/update Python packages in the project
|
|
1584
|
-
- Add/remove/update RPM packages in
|
|
1630
|
+
- Add/remove/update RPM packages in `deploy/lightspeed-stack/Containerfile`
|
|
1585
1631
|
- Change the base image version
|
|
1586
1632
|
|
|
1587
1633
|
### Updating Python Dependencies
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
[](https://github.com/lightspeed-core/lightspeed-stack/blob/main/LICENSE)
|
|
7
7
|
[](https://www.python.org/)
|
|
8
8
|
[](https://www.python.org/)
|
|
9
|
-
[](https://github.com/lightspeed-core/lightspeed-stack/releases/tag/0.
|
|
9
|
+
[](https://github.com/lightspeed-core/lightspeed-stack/releases/tag/0.6.0rc2)
|
|
10
10
|
|
|
11
11
|
Lightspeed Core Stack (LCS) is an AI-powered assistant that provides answers to product questions using backend LLM services, agents, and RAG databases.
|
|
12
12
|
|
|
@@ -19,7 +19,9 @@ The service includes comprehensive user data collection capabilities for various
|
|
|
19
19
|
* [Prerequisites](#prerequisites)
|
|
20
20
|
* [Installation](#installation)
|
|
21
21
|
* [Run LCS locally](#run-lcs-locally)
|
|
22
|
+
* [Container Runtime Requirements](#container-runtime-requirements)
|
|
22
23
|
* [Configuration](#configuration)
|
|
24
|
+
* [Agentic Capabilities](#agentic-capabilities)
|
|
23
25
|
* [LLM Compatibility](#llm-compatibility)
|
|
24
26
|
* [Set LLM provider and model](#set-llm-provider-and-model)
|
|
25
27
|
* [Selecting provider and model](#selecting-provider-and-model)
|
|
@@ -28,6 +30,7 @@ The service includes comprehensive user data collection capabilities for various
|
|
|
28
30
|
* [Supported providers](#supported-providers)
|
|
29
31
|
* [Integration with Llama Stack](#integration-with-llama-stack)
|
|
30
32
|
* [Llama Stack as separate server](#llama-stack-as-separate-server)
|
|
33
|
+
* [Degraded mode](#degraded-mode)
|
|
31
34
|
* [MCP Server and Tool Configuration](#mcp-server-and-tool-configuration)
|
|
32
35
|
* [Configuring MCP Servers](#configuring-mcp-servers)
|
|
33
36
|
* [Configuring MCP Server Authentication](#configuring-mcp-server-authentication)
|
|
@@ -50,6 +53,7 @@ The service includes comprehensive user data collection capabilities for various
|
|
|
50
53
|
* [System Prompt Literal](#system-prompt-literal)
|
|
51
54
|
* [Custom Profile](#custom-profile)
|
|
52
55
|
* [Control model/provider overrides via authorization](#control-modelprovider-overrides-via-authorization)
|
|
56
|
+
* [Agent Skills (Upcoming)](#agent-skills-upcoming)
|
|
53
57
|
* [Safety Shields](#safety-shields)
|
|
54
58
|
* [Authentication](#authentication)
|
|
55
59
|
* [CORS](#cors)
|
|
@@ -82,6 +86,7 @@ The service includes comprehensive user data collection capabilities for various
|
|
|
82
86
|
* [Packages on PyPI and Test PyPI](#packages-on-pypi-and-test-pypi)
|
|
83
87
|
* [Contributing](#contributing)
|
|
84
88
|
* [Testing](#testing)
|
|
89
|
+
* [Releasing](#releasing)
|
|
85
90
|
* [License](#license)
|
|
86
91
|
* [Additional tools](#additional-tools)
|
|
87
92
|
* [Utility to generate OpenAPI schema](#utility-to-generate-openapi-schema)
|
|
@@ -177,24 +182,39 @@ To quickly get hands on LCS, we can run it using the default configurations prov
|
|
|
177
182
|
```bash
|
|
178
183
|
export OPENAI_API_KEY=sk-xxxxx
|
|
179
184
|
```
|
|
180
|
-
3. start
|
|
185
|
+
3. start LCS server
|
|
181
186
|
```bash
|
|
182
|
-
uv run llama stack run local-run.yaml
|
|
183
|
-
```
|
|
184
|
-
4. [Optional] If you're new to Llama stack, run through a quick tutorial to learn the basics of what the server is used for, by running the interactive tutorial script
|
|
185
|
-
```bash
|
|
186
|
-
./scripts/llama_stack_tutorial.sh
|
|
187
|
-
```
|
|
188
|
-
5. check the LCS settings in [lightspeed-stack.yaml](lightspeed-stack.yaml). `llama_stack.url` should be `url: http://localhost:8321`
|
|
189
|
-
6. start LCS server
|
|
190
|
-
```
|
|
191
187
|
make run
|
|
192
|
-
|
|
193
|
-
|
|
188
|
+
```
|
|
189
|
+
4. access LCS web UI at [http://localhost:8080/](http://localhost:8080/)
|
|
190
|
+
|
|
191
|
+
**Note**: `make run` uses containerized llama-stack (service mode). To run llama-stack manually instead, see the [Llama Stack as separate server](#llama-stack-as-separate-server) section below.
|
|
192
|
+
|
|
193
|
+
## Container Runtime Requirements
|
|
194
|
+
|
|
195
|
+
The Makefile requires either Podman or Docker to launch the Llama Stack container:
|
|
196
|
+
|
|
197
|
+
- **Podman** (recommended for RHEL/Fedora): `sudo dnf install podman`
|
|
198
|
+
- **Docker**: Install from [docker.com](https://docs.docker.com/get-docker/)
|
|
199
|
+
|
|
200
|
+
The Makefile will auto-detect which runtime is available.
|
|
194
201
|
|
|
195
202
|
|
|
196
203
|
# Configuration
|
|
197
204
|
|
|
205
|
+
## Agentic Capabilities
|
|
206
|
+
|
|
207
|
+
Lightspeed Core Stack supports the following agentic features:
|
|
208
|
+
|
|
209
|
+
| Capability | Status | Description |
|
|
210
|
+
|------------|--------|-------------|
|
|
211
|
+
| MCP Tools | Supported | External tool integration via [Model Context Protocol](https://modelcontextprotocol.io) servers |
|
|
212
|
+
| RAG | Supported | Retrieval-Augmented Generation with vector stores ([RAG Guide](docs/rag_guide.md)) |
|
|
213
|
+
| A2A Protocol (Client) | Supported | Agent-to-Agent communication as client ([A2A Protocol](docs/a2a_protocol.md)) |
|
|
214
|
+
| Conversation History | Supported | Persistent conversation context across requests |
|
|
215
|
+
| Human-in-the-Loop | Upcoming | Interactive approval or confirmation steps |
|
|
216
|
+
| Agent Skills | Upcoming (Q2) | Domain-specific instructions loaded on demand ([Agent Skills Guide](docs/skills_guide.md)) |
|
|
217
|
+
|
|
198
218
|
## LLM Compatibility
|
|
199
219
|
|
|
200
220
|
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.
|
|
@@ -325,6 +345,20 @@ user_data_collection:
|
|
|
325
345
|
transcripts_storage: "/tmp/data/transcripts"
|
|
326
346
|
```
|
|
327
347
|
|
|
348
|
+
### Degraded mode
|
|
349
|
+
|
|
350
|
+
Lightspeed core is able to continue operating in a _degraded but safe_ mode if the LLS service is not started or fails to start. When degraded, the `/health` endpoint report the LLS status and any relevant impacts so operators and automation can detect and respond.
|
|
351
|
+
|
|
352
|
+
Degraded mode need to be enabled in `lightspeed-stack.yaml` configuration file:
|
|
353
|
+
|
|
354
|
+
```yaml
|
|
355
|
+
allow_degraded_mode = true
|
|
356
|
+
```
|
|
357
|
+
|
|
358
|
+
[NOTE] Ability to run in degraded mode is disabled by default.
|
|
359
|
+
|
|
360
|
+
|
|
361
|
+
|
|
328
362
|
### MCP Server and Tool Configuration
|
|
329
363
|
|
|
330
364
|
**Note**: The `run.yaml` configuration is currently an implementation detail. In the future, all configuration will be available directly from the lightspeed-core config.
|
|
@@ -711,6 +745,15 @@ customization:
|
|
|
711
745
|
|
|
712
746
|
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.
|
|
713
747
|
|
|
748
|
+
## Agent Skills (Upcoming)
|
|
749
|
+
|
|
750
|
+
> [!NOTE]
|
|
751
|
+
> Agent Skills is an upcoming feature. The documentation below describes the planned design.
|
|
752
|
+
|
|
753
|
+
Agent Skills will 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.
|
|
754
|
+
|
|
755
|
+
For the planned configuration guide, skill authoring instructions, and examples, see the [Agent Skills Guide](docs/skills_guide.md).
|
|
756
|
+
|
|
714
757
|
## Safety Shields
|
|
715
758
|
|
|
716
759
|
A single Llama Stack configuration file can include multiple safety shields, which are utilized in agent
|
|
@@ -830,7 +873,6 @@ Usage: make <OPTIONS> ... <TARGETS>
|
|
|
830
873
|
Available targets are:
|
|
831
874
|
|
|
832
875
|
run Run the service locally
|
|
833
|
-
run-llama-stack Start Llama Stack with enriched config (for local service mode)
|
|
834
876
|
test-unit Run the unit tests
|
|
835
877
|
test-integration Run integration tests tests
|
|
836
878
|
test-e2e Run end to end tests for the service
|
|
@@ -936,7 +978,7 @@ docker compose up --build
|
|
|
936
978
|
|
|
937
979
|
### Llama-Stack as Library (Library Mode)
|
|
938
980
|
|
|
939
|
-
When embedding llama-stack directly in the container, use the existing `Containerfile` directly (this will not build the llama stack service in a separate container). First modify the `lightspeed-stack.yaml` config to use llama stack in library mode.
|
|
981
|
+
When embedding llama-stack directly in the container, use the existing `deploy/lightspeed-stack/Containerfile` directly (this will not build the llama stack service in a separate container). First modify the `lightspeed-stack.yaml` config to use llama stack in library mode.
|
|
940
982
|
|
|
941
983
|
**Configuration** (`lightspeed-stack.yaml`):
|
|
942
984
|
```yaml
|
|
@@ -948,7 +990,7 @@ llama_stack:
|
|
|
948
990
|
**Build and run**:
|
|
949
991
|
```bash
|
|
950
992
|
# Build lightspeed-core with embedded llama-stack
|
|
951
|
-
podman build -f Containerfile -t my-lightspeed-core:latest .
|
|
993
|
+
podman build -f deploy/lightspeed-stack/Containerfile -t my-lightspeed-core:latest .
|
|
952
994
|
|
|
953
995
|
# Run with embedded llama-stack
|
|
954
996
|
podman run \
|
|
@@ -1001,7 +1043,7 @@ dependencies = [
|
|
|
1001
1043
|
]
|
|
1002
1044
|
```
|
|
1003
1045
|
|
|
1004
|
-
2. Create `Containerfile` in
|
|
1046
|
+
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:
|
|
1005
1047
|
```
|
|
1006
1048
|
# Latest dev image built from the git main branch (consider pinning a digest for reproducibility)
|
|
1007
1049
|
FROM quay.io/lightspeed-core/lightspeed-stack:dev-latest
|
|
@@ -1221,6 +1263,10 @@ If this configuration file does not exist, you will be prompted to specify API t
|
|
|
1221
1263
|
|
|
1222
1264
|
|
|
1223
1265
|
|
|
1266
|
+
# Releasing
|
|
1267
|
+
|
|
1268
|
+
* See [releasing](docs/releasing.md) guide.
|
|
1269
|
+
|
|
1224
1270
|
# License
|
|
1225
1271
|
|
|
1226
1272
|
Published under the Apache 2.0 License
|
|
@@ -1328,7 +1374,7 @@ Konflux builds run in **hermetic mode** (air-gapped from the internet), so all d
|
|
|
1328
1374
|
|
|
1329
1375
|
Update these files when you:
|
|
1330
1376
|
- Add/remove/update Python packages in the project
|
|
1331
|
-
- Add/remove/update RPM packages in
|
|
1377
|
+
- Add/remove/update RPM packages in `deploy/lightspeed-stack/Containerfile`
|
|
1332
1378
|
- Change the base image version
|
|
1333
1379
|
|
|
1334
1380
|
### Updating Python Dependencies
|
|
@@ -56,7 +56,7 @@ dependencies = [
|
|
|
56
56
|
"python-dotenv>=1.2.2",
|
|
57
57
|
"tiktoken>=0.8.0",
|
|
58
58
|
]
|
|
59
|
-
version = "0.6.
|
|
59
|
+
version = "0.6.0rc2"
|
|
60
60
|
|
|
61
61
|
[project.license]
|
|
62
62
|
file = "LICENSE"
|
|
@@ -174,7 +174,7 @@ dev = [
|
|
|
174
174
|
"pytest-subtests>=0.14.2",
|
|
175
175
|
"bandit>=1.8.6",
|
|
176
176
|
"pybuild-deps>=0.5.0",
|
|
177
|
-
"pip==
|
|
177
|
+
"pip==26.1",
|
|
178
178
|
"pytest-benchmark>=5.2.3",
|
|
179
179
|
]
|
|
180
180
|
llslibdev = [
|
{lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/app/endpoints/conversations_v2.py
RENAMED
|
@@ -6,6 +6,7 @@ from fastapi import APIRouter, Depends, HTTPException, Request
|
|
|
6
6
|
|
|
7
7
|
from authentication import get_auth_dependency
|
|
8
8
|
from authorization.middleware import authorize
|
|
9
|
+
from cache.cache_entry import CacheEntry
|
|
9
10
|
from configuration import configuration
|
|
10
11
|
from log import get_logger
|
|
11
12
|
from models.api.requests import ConversationUpdateRequest
|
|
@@ -24,7 +25,6 @@ from models.api.responses.successful import (
|
|
|
24
25
|
ConversationsListResponseV2,
|
|
25
26
|
ConversationUpdateResponse,
|
|
26
27
|
)
|
|
27
|
-
from models.cache_entry import CacheEntry
|
|
28
28
|
from models.common import (
|
|
29
29
|
ConversationTurn,
|
|
30
30
|
Message,
|
|
@@ -54,7 +54,6 @@ from utils.query import (
|
|
|
54
54
|
is_context_length_error,
|
|
55
55
|
prepare_input,
|
|
56
56
|
store_query_results,
|
|
57
|
-
update_azure_token,
|
|
58
57
|
validate_attachments_metadata,
|
|
59
58
|
validate_model_provider_override,
|
|
60
59
|
)
|
|
@@ -204,7 +203,7 @@ async def query_endpoint_handler(
|
|
|
204
203
|
and AzureEntraIDManager().is_token_expired
|
|
205
204
|
and AzureEntraIDManager().refresh_token()
|
|
206
205
|
):
|
|
207
|
-
client = await update_azure_token(
|
|
206
|
+
client = await AsyncLlamaStackClientHolder().update_azure_token()
|
|
208
207
|
|
|
209
208
|
# Retrieve response using Responses API
|
|
210
209
|
turn_summary = await retrieve_response(
|
|
@@ -60,8 +60,8 @@ from models.api.responses.error import (
|
|
|
60
60
|
)
|
|
61
61
|
from models.api.responses.successful import ResponsesResponse
|
|
62
62
|
from models.common.moderation import ShieldModerationBlocked
|
|
63
|
+
from models.common.responses.contexts import ResponsesContext
|
|
63
64
|
from models.common.responses.responses_api_params import ResponsesApiParams
|
|
64
|
-
from models.common.responses.responses_context import ResponsesContext
|
|
65
65
|
from models.common.turn_summary import TurnSummary
|
|
66
66
|
from models.config import Action
|
|
67
67
|
from utils.conversations import append_turn_items_to_conversation
|
|
@@ -78,7 +78,6 @@ from utils.query import (
|
|
|
78
78
|
handle_known_apistatus_errors,
|
|
79
79
|
is_context_length_error,
|
|
80
80
|
store_query_results,
|
|
81
|
-
update_azure_token,
|
|
82
81
|
validate_model_provider_override,
|
|
83
82
|
)
|
|
84
83
|
from utils.quota import check_tokens_available, get_available_quotas
|
|
@@ -405,7 +404,7 @@ async def responses_endpoint_handler(
|
|
|
405
404
|
and AzureEntraIDManager().is_token_expired
|
|
406
405
|
and AzureEntraIDManager().refresh_token()
|
|
407
406
|
):
|
|
408
|
-
client = await update_azure_token(
|
|
407
|
+
client = await AsyncLlamaStackClientHolder().update_azure_token()
|
|
409
408
|
|
|
410
409
|
input_text = (
|
|
411
410
|
original_request.input
|
|
@@ -455,12 +454,7 @@ async def responses_endpoint_handler(
|
|
|
455
454
|
original_request.input, inline_rag_context.context_text
|
|
456
455
|
)
|
|
457
456
|
|
|
458
|
-
api_params = ResponsesApiParams.model_validate(
|
|
459
|
-
{
|
|
460
|
-
**updated_request.model_dump(exclude={"tools"}),
|
|
461
|
-
"tools": updated_request.tools,
|
|
462
|
-
}
|
|
463
|
-
)
|
|
457
|
+
api_params = ResponsesApiParams.model_validate(updated_request.model_dump())
|
|
464
458
|
context = ResponsesContext(
|
|
465
459
|
client=client,
|
|
466
460
|
auth=auth,
|
{lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/app/endpoints/responses_telemetry.py
RENAMED
|
@@ -10,8 +10,8 @@ from typing import Optional
|
|
|
10
10
|
from fastapi import BackgroundTasks
|
|
11
11
|
|
|
12
12
|
from log import get_logger
|
|
13
|
+
from models.common.responses.contexts import ResponsesContext
|
|
13
14
|
from models.common.responses.responses_api_params import ResponsesApiParams
|
|
14
|
-
from models.common.responses.responses_context import ResponsesContext
|
|
15
15
|
from models.common.turn_summary import TurnSummary
|
|
16
16
|
from observability import ResponsesEventData, build_responses_event
|
|
17
17
|
from observability.splunk import dispatch_splunk_event
|
|
@@ -20,12 +20,14 @@ from openai._exceptions import APIStatusError as OpenAIAPIStatusError
|
|
|
20
20
|
import constants
|
|
21
21
|
from authentication import get_auth_dependency
|
|
22
22
|
from authentication.interface import AuthTuple
|
|
23
|
+
from authorization.azure_token_manager import AzureEntraIDManager
|
|
23
24
|
from authorization.middleware import authorize
|
|
24
25
|
from client import AsyncLlamaStackClientHolder
|
|
25
26
|
from configuration import configuration
|
|
26
27
|
from constants import ENDPOINT_PATH_INFER
|
|
27
28
|
from log import get_logger
|
|
28
29
|
from metrics import recording
|
|
30
|
+
from models.api.requests.rlsapi import RlsapiV1InferRequest, RlsapiV1SystemInfo
|
|
29
31
|
from models.api.responses.constants import UNAUTHORIZED_OPENAPI_EXAMPLES
|
|
30
32
|
from models.api.responses.error import (
|
|
31
33
|
ForbiddenResponse,
|
|
@@ -37,9 +39,11 @@ from models.api.responses.error import (
|
|
|
37
39
|
UnauthorizedResponse,
|
|
38
40
|
UnprocessableEntityResponse,
|
|
39
41
|
)
|
|
42
|
+
from models.api.responses.successful.rlsapi import (
|
|
43
|
+
RlsapiV1InferData,
|
|
44
|
+
RlsapiV1InferResponse,
|
|
45
|
+
)
|
|
40
46
|
from models.config import Action
|
|
41
|
-
from models.rlsapi.requests import RlsapiV1InferRequest, RlsapiV1SystemInfo
|
|
42
|
-
from models.rlsapi.responses import RlsapiV1InferData, RlsapiV1InferResponse
|
|
43
47
|
from observability import InferenceEventData, build_inference_event, send_splunk_event
|
|
44
48
|
from utils.endpoints import check_configuration_loaded
|
|
45
49
|
from utils.query import (
|
|
@@ -327,6 +331,16 @@ async def _call_llm(
|
|
|
327
331
|
"""
|
|
328
332
|
client = AsyncLlamaStackClientHolder().get_client()
|
|
329
333
|
resolved_model_id = model_id or await _get_default_model_id()
|
|
334
|
+
|
|
335
|
+
# Handle Azure token refresh if needed
|
|
336
|
+
if (
|
|
337
|
+
resolved_model_id.startswith("azure")
|
|
338
|
+
and AzureEntraIDManager().is_entra_id_configured
|
|
339
|
+
and AzureEntraIDManager().is_token_expired
|
|
340
|
+
and AzureEntraIDManager().refresh_token()
|
|
341
|
+
):
|
|
342
|
+
client = await AsyncLlamaStackClientHolder().update_azure_token()
|
|
343
|
+
|
|
330
344
|
logger.debug("Using model %s for rlsapi v1 inference", resolved_model_id)
|
|
331
345
|
|
|
332
346
|
response = await client.responses.create(
|
{lightspeed_stack-0.6.0rc1 → lightspeed_stack-0.6.0rc2}/src/app/endpoints/streaming_query.py
RENAMED
|
@@ -74,10 +74,10 @@ from models.api.responses.error import (
|
|
|
74
74
|
UnprocessableEntityResponse,
|
|
75
75
|
)
|
|
76
76
|
from models.api.responses.successful import StreamingQueryResponse
|
|
77
|
+
from models.common.responses.contexts import ResponseGeneratorContext
|
|
77
78
|
from models.common.responses.responses_api_params import ResponsesApiParams
|
|
78
79
|
from models.common.turn_summary import ReferencedDocument, TurnSummary
|
|
79
80
|
from models.config import Action
|
|
80
|
-
from models.context import ResponseGeneratorContext
|
|
81
81
|
from utils.conversations import append_turn_items_to_conversation
|
|
82
82
|
from utils.endpoints import (
|
|
83
83
|
check_configuration_loaded,
|
|
@@ -92,7 +92,6 @@ from utils.query import (
|
|
|
92
92
|
is_context_length_error,
|
|
93
93
|
prepare_input,
|
|
94
94
|
store_query_results,
|
|
95
|
-
update_azure_token,
|
|
96
95
|
update_conversation_topic_summary,
|
|
97
96
|
validate_attachments_metadata,
|
|
98
97
|
validate_model_provider_override,
|
|
@@ -262,7 +261,7 @@ async def streaming_query_endpoint_handler( # pylint: disable=too-many-locals
|
|
|
262
261
|
and AzureEntraIDManager().is_token_expired
|
|
263
262
|
and AzureEntraIDManager().refresh_token()
|
|
264
263
|
):
|
|
265
|
-
client = await update_azure_token(
|
|
264
|
+
client = await AsyncLlamaStackClientHolder().update_azure_token()
|
|
266
265
|
|
|
267
266
|
request_id = get_suid()
|
|
268
267
|
|
|
@@ -9,7 +9,7 @@ import sentry_sdk # pyright: ignore[reportMissingImports]
|
|
|
9
9
|
from fastapi import FastAPI, HTTPException
|
|
10
10
|
from fastapi.middleware.cors import CORSMiddleware
|
|
11
11
|
from fastapi.responses import JSONResponse
|
|
12
|
-
from llama_stack_client import APIConnectionError
|
|
12
|
+
from llama_stack_client import APIConnectionError, AsyncLlamaStackClient
|
|
13
13
|
from starlette.routing import Mount, Route, WebSocketRoute
|
|
14
14
|
from starlette.types import ASGIApp, Message, Receive, Scope, Send
|
|
15
15
|
|
|
@@ -77,22 +77,21 @@ async def lifespan(_app: FastAPI) -> AsyncIterator[None]:
|
|
|
77
77
|
|
|
78
78
|
initialize_sentry()
|
|
79
79
|
|
|
80
|
-
azure_config = configuration.configuration.azure_entra_id
|
|
81
|
-
if azure_config is not None:
|
|
82
|
-
AzureEntraIDManager().set_config(azure_config)
|
|
83
|
-
if not AzureEntraIDManager().refresh_token():
|
|
84
|
-
logger.warning(
|
|
85
|
-
"Failed to refresh Azure token at startup. "
|
|
86
|
-
"Token refresh will be retried on next Azure request."
|
|
87
|
-
)
|
|
88
|
-
|
|
89
80
|
llama_stack_config = configuration.configuration.llama_stack
|
|
90
81
|
await AsyncLlamaStackClientHolder().load(llama_stack_config)
|
|
91
|
-
client = AsyncLlamaStackClientHolder().get_client()
|
|
82
|
+
client: AsyncLlamaStackClient = AsyncLlamaStackClientHolder().get_client()
|
|
83
|
+
logger.debug("Llama Stack client initialized, trying to connect to Llama Stack")
|
|
92
84
|
# check if the Llama Stack version is supported by the service
|
|
93
85
|
try:
|
|
94
|
-
await check_llama_stack_version(
|
|
86
|
+
llama_stack_version = await check_llama_stack_version(
|
|
87
|
+
client, llama_stack_config.max_retries, llama_stack_config.retry_delay
|
|
88
|
+
)
|
|
89
|
+
if llama_stack_version is None:
|
|
90
|
+
logger.error("Cannot retrieve Llama Stack version, check connection")
|
|
91
|
+
else:
|
|
92
|
+
logger.debug("Llama Stack version: %s", llama_stack_version)
|
|
95
93
|
except APIConnectionError as e:
|
|
94
|
+
# if degraded mode is allowed, simply ignore the exception
|
|
96
95
|
llama_stack_url = llama_stack_config.url
|
|
97
96
|
logger.error(
|
|
98
97
|
"Failed to connect to Llama Stack at '%s'. "
|
|
@@ -102,8 +101,16 @@ async def lifespan(_app: FastAPI) -> AsyncIterator[None]:
|
|
|
102
101
|
llama_stack_url,
|
|
103
102
|
e,
|
|
104
103
|
)
|
|
105
|
-
|
|
104
|
+
if llama_stack_config.allow_degraded_mode:
|
|
105
|
+
logger.info("Entering degraded mode: LCORE running w/o Llama Stack")
|
|
106
|
+
else:
|
|
107
|
+
raise
|
|
106
108
|
|
|
109
|
+
azure_entra_id_config = configuration.configuration.azure_entra_id
|
|
110
|
+
if azure_entra_id_config is not None:
|
|
111
|
+
AzureEntraIDManager().set_config(azure_entra_id_config)
|
|
112
|
+
azure_base_url = await AsyncLlamaStackClientHolder().get_azure_base_url()
|
|
113
|
+
AzureEntraIDManager().set_base_url(azure_base_url)
|
|
107
114
|
logger.info("Registering MCP servers")
|
|
108
115
|
await register_mcp_servers_async(logger, configuration.configuration)
|
|
109
116
|
logger.info("App startup complete")
|
|
@@ -10,8 +10,9 @@ import secrets
|
|
|
10
10
|
|
|
11
11
|
from fastapi import HTTPException, Request, status
|
|
12
12
|
|
|
13
|
-
from authentication.interface import AuthInterface, AuthTuple
|
|
13
|
+
from authentication.interface import NO_AUTH_TUPLE, AuthInterface, AuthTuple
|
|
14
14
|
from authentication.utils import extract_user_token
|
|
15
|
+
from configuration import configuration
|
|
15
16
|
from constants import (
|
|
16
17
|
DEFAULT_USER_NAME,
|
|
17
18
|
DEFAULT_USER_UID,
|
|
@@ -23,6 +24,19 @@ from models.config import APIKeyTokenConfiguration
|
|
|
23
24
|
logger = get_logger(__name__)
|
|
24
25
|
|
|
25
26
|
|
|
27
|
+
def _should_skip_auth(request: Request) -> bool:
|
|
28
|
+
"""Check if auth should be skipped for health probe or metrics endpoints."""
|
|
29
|
+
auth_config = configuration.authentication_configuration
|
|
30
|
+
if auth_config.skip_for_health_probes and request.url.path in (
|
|
31
|
+
"/readiness",
|
|
32
|
+
"/liveness",
|
|
33
|
+
):
|
|
34
|
+
return True
|
|
35
|
+
if auth_config.skip_for_metrics and request.url.path in ("/metrics",):
|
|
36
|
+
return True
|
|
37
|
+
return False
|
|
38
|
+
|
|
39
|
+
|
|
26
40
|
class APIKeyTokenAuthDependency(
|
|
27
41
|
AuthInterface
|
|
28
42
|
): # pylint: disable=too-few-public-methods
|
|
@@ -59,6 +73,10 @@ class APIKeyTokenAuthDependency(
|
|
|
59
73
|
HTTPException: If the bearer token is missing or
|
|
60
74
|
doesn't match the configured API key (HTTP 401).
|
|
61
75
|
"""
|
|
76
|
+
if not request.headers.get("Authorization"):
|
|
77
|
+
if _should_skip_auth(request):
|
|
78
|
+
return NO_AUTH_TUPLE
|
|
79
|
+
|
|
62
80
|
# try to extract user token from request
|
|
63
81
|
user_token = extract_user_token(request.headers)
|
|
64
82
|
|