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