solace-agent-mesh 1.4.12__py3-none-any.whl → 1.5.1__py3-none-any.whl
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.
Potentially problematic release.
This version of solace-agent-mesh might be problematic. Click here for more details.
- solace_agent_mesh/agent/adk/adk_llm.txt +3 -4
- solace_agent_mesh/agent/adk/adk_llm_detail.txt +566 -0
- solace_agent_mesh/agent/adk/artifacts/artifacts_llm.txt +1 -1
- solace_agent_mesh/agent/adk/callbacks.py +56 -5
- solace_agent_mesh/agent/adk/embed_resolving_mcp_toolset.py +3 -1
- solace_agent_mesh/agent/adk/intelligent_mcp_callbacks.py +2 -1
- solace_agent_mesh/agent/adk/mcp_content_processor.py +2 -1
- solace_agent_mesh/agent/adk/models/lite_llm.py +1 -0
- solace_agent_mesh/agent/adk/models/models_llm.txt +1 -2
- solace_agent_mesh/agent/adk/runner.py +3 -1
- solace_agent_mesh/agent/adk/services.py +4 -1
- solace_agent_mesh/agent/adk/setup.py +3 -1
- solace_agent_mesh/agent/adk/tool_wrapper.py +2 -2
- solace_agent_mesh/agent/agent_llm.txt +1 -1
- solace_agent_mesh/agent/agent_llm_detail.txt +1702 -0
- solace_agent_mesh/agent/protocol/event_handlers.py +4 -14
- solace_agent_mesh/agent/protocol/protocol_llm.txt +15 -2
- solace_agent_mesh/agent/protocol/protocol_llm_detail.txt +92 -0
- solace_agent_mesh/agent/sac/app.py +3 -1
- solace_agent_mesh/agent/sac/component.py +55 -22
- solace_agent_mesh/agent/sac/sac_llm.txt +15 -1
- solace_agent_mesh/agent/sac/sac_llm_detail.txt +200 -0
- solace_agent_mesh/agent/sac/task_execution_context.py +73 -0
- solace_agent_mesh/agent/testing/testing_llm_detail.txt +68 -0
- solace_agent_mesh/agent/tools/audio_tools.py +2 -1
- solace_agent_mesh/agent/tools/builtin_artifact_tools.py +3 -1
- solace_agent_mesh/agent/tools/builtin_data_analysis_tools.py +3 -1
- solace_agent_mesh/agent/tools/dynamic_tool.py +2 -1
- solace_agent_mesh/agent/tools/general_agent_tools.py +2 -1
- solace_agent_mesh/agent/tools/image_tools.py +2 -1
- solace_agent_mesh/agent/tools/peer_agent_tool.py +2 -1
- solace_agent_mesh/agent/tools/registry.py +3 -1
- solace_agent_mesh/agent/tools/test_tools.py +2 -1
- solace_agent_mesh/agent/tools/tools_llm.txt +148 -154
- solace_agent_mesh/agent/tools/tools_llm_detail.txt +274 -0
- solace_agent_mesh/agent/tools/web_tools.py +2 -1
- solace_agent_mesh/agent/utils/artifact_helpers.py +3 -1
- solace_agent_mesh/agent/utils/config_parser.py +3 -1
- solace_agent_mesh/agent/utils/utils_llm.txt +1 -1
- solace_agent_mesh/agent/utils/utils_llm_detail.txt +149 -0
- solace_agent_mesh/assets/docs/404.html +3 -3
- solace_agent_mesh/assets/docs/assets/js/{b7006a3a.73a79653.js → 032c2d61.f3d37824.js} +1 -1
- solace_agent_mesh/assets/docs/assets/js/0bcf40b7.c019ad46.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/15ba94aa.932dd2db.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/2131ec11.5c7a1f6e.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/{2334.622a6395.js → 2334.1cf50a20.js} +1 -1
- solace_agent_mesh/assets/docs/assets/js/240a0364.7eac6021.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/2e32b5e0.33f5d75b.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/341393d4.0fac2613.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/{3624.b524e433.js → 3624.0eaa1fd0.js} +1 -1
- solace_agent_mesh/assets/docs/assets/js/3a6c6137.f5940cfa.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/3ac1795d.76654dd9.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/3ff0015d.2be20244.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/509e993c.4c7a1a6d.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/547e15cc.2cbb060a.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/55b7b518.f2b1d1ba.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/5c2bd65f.e49689dd.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6063ff4c.ef84f702.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/631738c7.a8b1ef8b.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6a520c9d.ba015d81.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6ad8f0bd.39d5851d.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6d84eae0.4a5fbf39.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6fdfefc7.99de744e.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/71da7b71.804d6567.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/722f809d.965da774.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/742f027b.46c07808.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/77cf947d.64c9bd6c.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/8024126c.56e59919.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/81a99df0.07034dd9.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/82fbfb93.139a1a1f.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/{8591.d7c16be6.js → 8591.5d015485.js} +2 -2
- solace_agent_mesh/assets/docs/assets/js/{8731.49e930c2.js → 8731.6c1dbf0c.js} +1 -1
- solace_agent_mesh/assets/docs/assets/js/945fb41e.6f4cdffd.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/94e8668d.b5ddb7a1.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/9bb13469.dd1c9b54.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/9e9d0a82.dd810042.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/ab9708a8.3e6dd091.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/ad71b5ed.60668e9e.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/c198a0dc.8f31f867.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/c93cbaa0.eaff365e.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/da0b5bad.9d369087.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/db924877.cbc66f02.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/dd817ffc.0aa9630a.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/dd81e2b8.d590bc9e.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/de5f4c65.e8241890.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/de915948.139b4b9c.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/e3d9abda.2b916f9e.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/e6f9706b.582a78ca.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/e92d0134.cf6d6522.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/f284c35a.5766a13d.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/ff4d71f2.9c0297a6.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/main.bd3c34f3.js +2 -0
- solace_agent_mesh/assets/docs/assets/js/runtime~main.18dc45dd.js +1 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/agents/index.html +143 -0
- solace_agent_mesh/assets/docs/docs/documentation/{user-guide → components}/builtin-tools/artifact-management/index.html +7 -7
- solace_agent_mesh/assets/docs/docs/documentation/{user-guide → components}/builtin-tools/audio-tools/index.html +7 -7
- solace_agent_mesh/assets/docs/docs/documentation/{user-guide → components}/builtin-tools/data-analysis-tools/index.html +8 -8
- solace_agent_mesh/assets/docs/docs/documentation/{user-guide → components}/builtin-tools/embeds/index.html +6 -6
- solace_agent_mesh/assets/docs/docs/documentation/{user-guide → components}/builtin-tools/index.html +11 -11
- solace_agent_mesh/assets/docs/docs/documentation/{concepts → components}/cli/index.html +25 -25
- solace_agent_mesh/assets/docs/docs/documentation/components/gateways/index.html +91 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/index.html +29 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/orchestrator/index.html +55 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/plugins/index.html +110 -0
- solace_agent_mesh/assets/docs/docs/documentation/deploying/debugging/index.html +104 -0
- solace_agent_mesh/assets/docs/docs/documentation/deploying/deployment-options/index.html +57 -0
- solace_agent_mesh/assets/docs/docs/documentation/deploying/index.html +25 -0
- solace_agent_mesh/assets/docs/docs/documentation/deploying/observability/index.html +59 -0
- solace_agent_mesh/assets/docs/docs/documentation/{user-guide → developing}/create-agents/index.html +113 -152
- solace_agent_mesh/assets/docs/docs/documentation/{user-guide → developing}/create-gateways/index.html +9 -9
- solace_agent_mesh/assets/docs/docs/documentation/{user-guide → developing}/creating-python-tools/index.html +12 -12
- solace_agent_mesh/assets/docs/docs/documentation/developing/creating-service-providers/index.html +54 -0
- solace_agent_mesh/assets/docs/docs/documentation/developing/index.html +32 -0
- solace_agent_mesh/assets/docs/docs/documentation/developing/structure/index.html +55 -0
- solace_agent_mesh/assets/docs/docs/documentation/{tutorials → developing/tutorials}/bedrock-agents/index.html +25 -25
- solace_agent_mesh/assets/docs/docs/documentation/{tutorials → developing/tutorials}/custom-agent/index.html +13 -13
- solace_agent_mesh/assets/docs/docs/documentation/{tutorials → developing/tutorials}/event-mesh-gateway/index.html +11 -11
- solace_agent_mesh/assets/docs/docs/documentation/{tutorials → developing/tutorials}/mcp-integration/index.html +10 -10
- solace_agent_mesh/assets/docs/docs/documentation/{tutorials → developing/tutorials}/mongodb-integration/index.html +13 -13
- solace_agent_mesh/assets/docs/docs/documentation/{tutorials → developing/tutorials}/rag-integration/index.html +13 -13
- solace_agent_mesh/assets/docs/docs/documentation/{tutorials → developing/tutorials}/rest-gateway/index.html +10 -10
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/slack-integration/index.html +72 -0
- solace_agent_mesh/assets/docs/docs/documentation/{tutorials → developing/tutorials}/sql-database/index.html +14 -14
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/index.html +33 -0
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/installation/index.html +83 -0
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/rbac-setup-guide/index.html +222 -0
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/single-sign-on/index.html +161 -0
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/architecture/index.html +75 -0
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/index.html +53 -0
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/introduction/index.html +35 -100
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/try-agent-mesh/index.html +41 -0
- solace_agent_mesh/assets/docs/docs/documentation/{getting-started → installing-and-configuring}/configurations/index.html +56 -50
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/index.html +25 -0
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/installation/index.html +76 -0
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/large_language_models/index.html +63 -0
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/run-project/index.html +142 -0
- solace_agent_mesh/assets/docs/docs/documentation/migrations/a2a-upgrade/a2a-gateway-upgrade-to-0.3.0/index.html +100 -0
- solace_agent_mesh/assets/docs/docs/documentation/{Migrations/A2A Upgrade To 0.3.0/a2a-technical-migration-map/index.html → migrations/a2a-upgrade/a2a-technical-migration-map/index.html} +10 -11
- solace_agent_mesh/assets/docs/img/solace-logo.png +0 -0
- solace_agent_mesh/assets/docs/lunr-index-1760121512891.json +1 -0
- solace_agent_mesh/assets/docs/lunr-index.json +1 -1
- solace_agent_mesh/assets/docs/search-doc-1760121512891.json +1 -0
- solace_agent_mesh/assets/docs/search-doc.json +1 -1
- solace_agent_mesh/assets/docs/sitemap.xml +1 -1
- solace_agent_mesh/cli/__init__.py +1 -1
- solace_agent_mesh/client/webui/frontend/static/assets/{authCallback-j1LW-wlq.js → authCallback-DwrxZE0E.js} +1 -1
- solace_agent_mesh/client/webui/frontend/static/assets/{client-B9p_nFNA.js → client-DarGQzyw.js} +1 -1
- solace_agent_mesh/client/webui/frontend/static/assets/main-2nd1gbaH.js +339 -0
- solace_agent_mesh/client/webui/frontend/static/assets/main-DoKXctCM.css +1 -0
- solace_agent_mesh/client/webui/frontend/static/assets/{vendor-CS5YMf8a.js → vendor-BKIeiHj_.js} +80 -70
- solace_agent_mesh/client/webui/frontend/static/auth-callback.html +3 -3
- solace_agent_mesh/client/webui/frontend/static/index.html +4 -4
- solace_agent_mesh/common/a2a/a2a_llm.txt +1 -1
- solace_agent_mesh/common/a2a/a2a_llm_detail.txt +193 -0
- solace_agent_mesh/common/a2a/artifact.py +2 -1
- solace_agent_mesh/common/a2a/protocol.py +3 -2
- solace_agent_mesh/common/a2a/translation.py +3 -1
- solace_agent_mesh/common/a2a_spec/a2a_spec_llm.txt +1 -1
- solace_agent_mesh/common/a2a_spec/a2a_spec_llm_detail.txt +736 -0
- solace_agent_mesh/common/a2a_spec/schemas/llm_invocation.json +23 -0
- solace_agent_mesh/common/a2a_spec/schemas/schemas_llm.txt +93 -15
- solace_agent_mesh/common/a2a_spec/schemas/tool_result.json +23 -0
- solace_agent_mesh/common/common_llm.txt +24 -39
- solace_agent_mesh/common/common_llm_detail.txt +2562 -0
- solace_agent_mesh/common/data_parts.py +9 -1
- solace_agent_mesh/common/middleware/config_resolver.py +3 -1
- solace_agent_mesh/common/middleware/middleware_llm_detail.txt +185 -0
- solace_agent_mesh/common/middleware/registry.py +3 -1
- solace_agent_mesh/common/sac/sac_llm.txt +1 -1
- solace_agent_mesh/common/sac/sac_llm_detail.txt +82 -0
- solace_agent_mesh/common/sac/sam_component_base.py +2 -1
- solace_agent_mesh/common/sam_events/event_service.py +3 -2
- solace_agent_mesh/common/sam_events/sam_events_llm.txt +104 -0
- solace_agent_mesh/common/sam_events/sam_events_llm_detail.txt +115 -0
- solace_agent_mesh/common/services/employee_service.py +3 -1
- solace_agent_mesh/common/services/identity_service.py +2 -1
- solace_agent_mesh/common/services/providers/local_file_identity_service.py +2 -1
- solace_agent_mesh/common/services/services_llm.txt +57 -6
- solace_agent_mesh/common/services/services_llm_detail.txt +459 -0
- solace_agent_mesh/common/utils/artifact_utils.py +3 -1
- solace_agent_mesh/common/utils/asyncio_macos_fix.py +3 -1
- solace_agent_mesh/common/utils/embeds/converter.py +3 -1
- solace_agent_mesh/common/utils/embeds/embeds_llm.txt +1 -1
- solace_agent_mesh/common/utils/embeds/evaluators.py +2 -1
- solace_agent_mesh/common/utils/embeds/modifiers.py +3 -2
- solace_agent_mesh/common/utils/embeds/resolver.py +2 -1
- solace_agent_mesh/common/utils/initializer.py +3 -1
- solace_agent_mesh/common/utils/message_utils.py +2 -1
- solace_agent_mesh/common/utils/push_notification_auth.py +3 -2
- solace_agent_mesh/common/utils/utils_llm.txt +75 -87
- solace_agent_mesh/common/utils/utils_llm_detail.txt +572 -0
- solace_agent_mesh/core_a2a/core_a2a_llm_detail.txt +101 -0
- solace_agent_mesh/core_a2a/service.py +2 -2
- solace_agent_mesh/gateway/base/app.py +3 -2
- solace_agent_mesh/gateway/base/base_llm.txt +1 -1
- solace_agent_mesh/gateway/base/base_llm_detail.txt +235 -0
- solace_agent_mesh/gateway/base/component.py +3 -1
- solace_agent_mesh/gateway/base/task_context.py +2 -1
- solace_agent_mesh/gateway/gateway_llm.txt +242 -235
- solace_agent_mesh/gateway/gateway_llm_detail.txt +3885 -0
- solace_agent_mesh/gateway/http_sse/alembic/alembic_llm.txt +295 -0
- solace_agent_mesh/gateway/http_sse/alembic/env.py +10 -1
- solace_agent_mesh/gateway/http_sse/alembic/versions/20251006_98882922fa59_add_tasks_events_feedback_chat_tasks.py +190 -0
- solace_agent_mesh/gateway/http_sse/alembic/versions/versions_llm.txt +155 -0
- solace_agent_mesh/gateway/http_sse/alembic.ini +1 -1
- solace_agent_mesh/gateway/http_sse/app.py +150 -3
- solace_agent_mesh/gateway/http_sse/component.py +372 -61
- solace_agent_mesh/gateway/http_sse/components/components_llm.txt +46 -6
- solace_agent_mesh/gateway/http_sse/components/task_logger_forwarder.py +109 -0
- solace_agent_mesh/gateway/http_sse/components/visualization_forwarder_component.py +4 -2
- solace_agent_mesh/gateway/http_sse/dependencies.py +119 -27
- solace_agent_mesh/gateway/http_sse/http_sse_llm.txt +172 -172
- solace_agent_mesh/gateway/http_sse/http_sse_llm_detail.txt +3278 -0
- solace_agent_mesh/gateway/http_sse/main.py +149 -42
- solace_agent_mesh/gateway/http_sse/repository/__init__.py +3 -12
- solace_agent_mesh/gateway/http_sse/repository/chat_task_repository.py +103 -0
- solace_agent_mesh/gateway/http_sse/repository/entities/__init__.py +5 -3
- solace_agent_mesh/gateway/http_sse/repository/entities/chat_task.py +75 -0
- solace_agent_mesh/gateway/http_sse/repository/entities/entities_llm.txt +263 -0
- solace_agent_mesh/gateway/http_sse/repository/entities/feedback.py +20 -0
- solace_agent_mesh/gateway/http_sse/repository/entities/session_history.py +0 -16
- solace_agent_mesh/gateway/http_sse/repository/entities/task.py +25 -0
- solace_agent_mesh/gateway/http_sse/repository/entities/task_event.py +21 -0
- solace_agent_mesh/gateway/http_sse/repository/feedback_repository.py +81 -0
- solace_agent_mesh/gateway/http_sse/repository/interfaces.py +73 -18
- solace_agent_mesh/gateway/http_sse/repository/models/__init__.py +9 -5
- solace_agent_mesh/gateway/http_sse/repository/models/chat_task_model.py +31 -0
- solace_agent_mesh/gateway/http_sse/repository/models/feedback_model.py +21 -0
- solace_agent_mesh/gateway/http_sse/repository/models/models_llm.txt +266 -0
- solace_agent_mesh/gateway/http_sse/repository/models/session_model.py +3 -3
- solace_agent_mesh/gateway/http_sse/repository/models/task_event_model.py +25 -0
- solace_agent_mesh/gateway/http_sse/repository/models/task_model.py +32 -0
- solace_agent_mesh/gateway/http_sse/repository/repository_llm.txt +340 -0
- solace_agent_mesh/gateway/http_sse/repository/session_repository.py +4 -53
- solace_agent_mesh/gateway/http_sse/repository/task_repository.py +173 -0
- solace_agent_mesh/gateway/http_sse/routers/agent_cards.py +3 -2
- solace_agent_mesh/gateway/http_sse/routers/artifacts.py +3 -3
- solace_agent_mesh/gateway/http_sse/routers/auth.py +3 -1
- solace_agent_mesh/gateway/http_sse/routers/config.py +29 -6
- solace_agent_mesh/gateway/http_sse/routers/dto/dto_llm.txt +346 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/requests/__init__.py +3 -3
- solace_agent_mesh/gateway/http_sse/routers/dto/requests/requests_llm.txt +83 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/requests/session_requests.py +2 -10
- solace_agent_mesh/gateway/http_sse/routers/dto/requests/task_requests.py +58 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/responses/__init__.py +5 -3
- solace_agent_mesh/gateway/http_sse/routers/dto/responses/responses_llm.txt +107 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/responses/session_responses.py +1 -15
- solace_agent_mesh/gateway/http_sse/routers/dto/responses/task_responses.py +30 -0
- solace_agent_mesh/gateway/http_sse/routers/feedback.py +37 -0
- solace_agent_mesh/gateway/http_sse/routers/people.py +3 -1
- solace_agent_mesh/gateway/http_sse/routers/routers_llm.txt +255 -204
- solace_agent_mesh/gateway/http_sse/routers/sessions.py +223 -41
- solace_agent_mesh/gateway/http_sse/routers/sse.py +3 -2
- solace_agent_mesh/gateway/http_sse/routers/tasks.py +170 -43
- solace_agent_mesh/gateway/http_sse/routers/users.py +3 -1
- solace_agent_mesh/gateway/http_sse/routers/visualization.py +2 -1
- solace_agent_mesh/gateway/http_sse/services/agent_card_service.py +3 -1
- solace_agent_mesh/gateway/http_sse/services/data_retention_service.py +273 -0
- solace_agent_mesh/gateway/http_sse/services/feedback_service.py +242 -0
- solace_agent_mesh/gateway/http_sse/services/people_service.py +2 -82
- solace_agent_mesh/gateway/http_sse/services/services_llm.txt +177 -13
- solace_agent_mesh/gateway/http_sse/services/session_service.py +154 -85
- solace_agent_mesh/gateway/http_sse/services/task_logger_service.py +318 -0
- solace_agent_mesh/gateway/http_sse/services/task_service.py +3 -2
- solace_agent_mesh/gateway/http_sse/session_manager.py +2 -1
- solace_agent_mesh/gateway/http_sse/shared/exception_handlers.py +25 -14
- solace_agent_mesh/gateway/http_sse/shared/shared_llm.txt +285 -0
- solace_agent_mesh/gateway/http_sse/shared/types.py +7 -0
- solace_agent_mesh/gateway/http_sse/sse_event_buffer.py +2 -1
- solace_agent_mesh/gateway/http_sse/sse_manager.py +2 -2
- solace_agent_mesh/gateway/http_sse/utils/__init__.py +1 -0
- solace_agent_mesh/gateway/http_sse/utils/stim_utils.py +32 -0
- solace_agent_mesh/gateway/http_sse/utils/utils_llm.txt +47 -0
- solace_agent_mesh/solace_agent_mesh_llm.txt +1 -1
- solace_agent_mesh/solace_agent_mesh_llm_detail.txt +8599 -0
- solace_agent_mesh/templates/gateway_app_template.py +4 -2
- solace_agent_mesh/templates/gateway_component_template.py +3 -1
- solace_agent_mesh/templates/logging_config_template.ini +22 -45
- solace_agent_mesh/templates/plugin_tools_template.py +2 -2
- {solace_agent_mesh-1.4.12.dist-info → solace_agent_mesh-1.5.1.dist-info}/METADATA +2 -2
- solace_agent_mesh-1.5.1.dist-info/RECORD +504 -0
- solace_agent_mesh/agent/adk/invocation_monitor.py +0 -295
- solace_agent_mesh/assets/docs/assets/images/sac-flows-80d5b603c6aafd33e87945680ce0abf3.png +0 -0
- solace_agent_mesh/assets/docs/assets/images/sac_parts_of_a_component-cb3d0424b1d0c17734c5435cca6b4082.png +0 -0
- solace_agent_mesh/assets/docs/assets/js/04989206.a248f00c.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/0e682baa.d54b8668.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/1023fc19.8a8a9309.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/1523c6b4.2645ef68.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/166ab619.e27886d9.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/1c6e87d2.e056b7e0.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/21ceee5f.3bf39250.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/2a9cab12.2afaee76.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/332e10b5.f7629851.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/3d406171.5560fdf9.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/42b3f8d8.508ae8db.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/442a8107.b5c2532a.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/453a82a6.3c6bb61d.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/483cef9a.4736f2d8.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/4c2787c2.c1290a40.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/55f47984.bcd00a86.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/5b4258a4.fdfd2325.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/664b740a.ba305a89.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/75384d09.c19e8b51.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/768e31b0.9abcdc48.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/85387663.be2bc838.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/945fb41e.16e00776.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/9a09e75d.92de8cf5.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/9eff14a2.d62aad71.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/a12a4955.25fbed32.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/a3a92b25.af35e313.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/aba87c2f.4ddf32f2.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/ae0e903d.5fe5203f.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/ae4415af.16cc58d3.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/bac0be12.17de4316.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/c2c06897.87cb1f47.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/c835a94d.ce21f0bf.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/cc969b05.feef7dcc.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/cd3d4052.a19e7d78.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/ced92a13.fb92e7ca.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/cee5d587.47904f5e.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/d6a81ee7.829198f1.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/f284c35a.ed8dd236.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/f897a61a.126663fe.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/fbfa3e75.e144b16c.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/main.f67fc9f4.js +0 -2
- solace_agent_mesh/assets/docs/assets/js/runtime~main.40527046.js +0 -1
- solace_agent_mesh/assets/docs/docs/documentation/Enterprise/installation/index.html +0 -46
- solace_agent_mesh/assets/docs/docs/documentation/Enterprise/rbac-setup-guilde/index.html +0 -201
- solace_agent_mesh/assets/docs/docs/documentation/Enterprise/single-sign-on/index.html +0 -25
- solace_agent_mesh/assets/docs/docs/documentation/Migrations/A2A Upgrade To 0.3.0/a2a-gateway-upgrade-to-0.3.0/index.html +0 -105
- solace_agent_mesh/assets/docs/docs/documentation/concepts/agents/index.html +0 -144
- solace_agent_mesh/assets/docs/docs/documentation/concepts/architecture/index.html +0 -91
- solace_agent_mesh/assets/docs/docs/documentation/concepts/gateways/index.html +0 -91
- solace_agent_mesh/assets/docs/docs/documentation/concepts/orchestrator/index.html +0 -55
- solace_agent_mesh/assets/docs/docs/documentation/concepts/plugins/index.html +0 -111
- solace_agent_mesh/assets/docs/docs/documentation/deployment/debugging/index.html +0 -77
- solace_agent_mesh/assets/docs/docs/documentation/deployment/deploy/index.html +0 -48
- solace_agent_mesh/assets/docs/docs/documentation/deployment/observability/index.html +0 -54
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/component-overview/index.html +0 -45
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/configurations/litellm_models/index.html +0 -49
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/installation/index.html +0 -76
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/quick-start/index.html +0 -73
- solace_agent_mesh/assets/docs/docs/documentation/tutorials/slack-integration/index.html +0 -72
- solace_agent_mesh/assets/docs/docs/documentation/user-guide/creating-service-providers/index.html +0 -54
- solace_agent_mesh/assets/docs/docs/documentation/user-guide/solace-ai-connector/index.html +0 -69
- solace_agent_mesh/assets/docs/docs/documentation/user-guide/structure/index.html +0 -59
- solace_agent_mesh/assets/docs/lunr-index-1759936913198.json +0 -1
- solace_agent_mesh/assets/docs/search-doc-1759936913198.json +0 -1
- solace_agent_mesh/client/webui/frontend/static/assets/main-ChRwcV89.css +0 -1
- solace_agent_mesh/client/webui/frontend/static/assets/main-DnnE01OM.js +0 -339
- solace_agent_mesh/gateway/http_sse/repository/entities/message.py +0 -41
- solace_agent_mesh/gateway/http_sse/repository/message_repository.py +0 -84
- solace_agent_mesh/gateway/http_sse/repository/models/message_model.py +0 -45
- solace_agent_mesh-1.4.12.dist-info/RECORD +0 -448
- /solace_agent_mesh/assets/docs/assets/js/{8591.d7c16be6.js.LICENSE.txt → 8591.5d015485.js.LICENSE.txt} +0 -0
- /solace_agent_mesh/assets/docs/assets/js/{main.f67fc9f4.js.LICENSE.txt → main.bd3c34f3.js.LICENSE.txt} +0 -0
- {solace_agent_mesh-1.4.12.dist-info → solace_agent_mesh-1.5.1.dist-info}/WHEEL +0 -0
- {solace_agent_mesh-1.4.12.dist-info → solace_agent_mesh-1.5.1.dist-info}/entry_points.txt +0 -0
- {solace_agent_mesh-1.4.12.dist-info → solace_agent_mesh-1.5.1.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"""
|
|
2
|
+
SAC Component to forward messages from an internal BrokerInput
|
|
3
|
+
to the WebUIBackendComponent's internal queue for task logging.
|
|
4
|
+
"""
|
|
5
|
+
import logging
|
|
6
|
+
import queue
|
|
7
|
+
from typing import Any, Dict
|
|
8
|
+
|
|
9
|
+
from solace_ai_connector.components.component_base import ComponentBase
|
|
10
|
+
from solace_ai_connector.common.message import Message as SolaceMessage
|
|
11
|
+
|
|
12
|
+
log = logging.getLogger(__name__)
|
|
13
|
+
|
|
14
|
+
info = {
|
|
15
|
+
"class_name": "TaskLoggerForwarderComponent",
|
|
16
|
+
"description": (
|
|
17
|
+
"Forwards A2A messages from an internal BrokerInput to the main "
|
|
18
|
+
"WebUIBackendComponent's internal queue for task logging."
|
|
19
|
+
),
|
|
20
|
+
"config_parameters": [
|
|
21
|
+
{
|
|
22
|
+
"name": "target_queue_ref",
|
|
23
|
+
"required": True,
|
|
24
|
+
"type": "queue.Queue",
|
|
25
|
+
"description": "A direct reference to the target queue.Queue instance in WebUIBackendComponent.",
|
|
26
|
+
}
|
|
27
|
+
],
|
|
28
|
+
"input_schema": {
|
|
29
|
+
"type": "object",
|
|
30
|
+
"description": "Output from a BrokerInput component.",
|
|
31
|
+
"properties": {
|
|
32
|
+
"payload": {"type": "any", "description": "The message payload."},
|
|
33
|
+
"topic": {"type": "string", "description": "The message topic."},
|
|
34
|
+
"user_properties": {
|
|
35
|
+
"type": "object",
|
|
36
|
+
"description": "User properties of the message.",
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
"required": ["payload", "topic"],
|
|
40
|
+
},
|
|
41
|
+
"output_schema": None,
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
class TaskLoggerForwarderComponent(ComponentBase):
|
|
46
|
+
"""
|
|
47
|
+
A simple SAC component that takes messages from its input (typically
|
|
48
|
+
from a BrokerInput) and puts them onto a target Python queue.Queue
|
|
49
|
+
instance provided in its configuration.
|
|
50
|
+
"""
|
|
51
|
+
|
|
52
|
+
def __init__(self, **kwargs: Any):
|
|
53
|
+
super().__init__(info, **kwargs)
|
|
54
|
+
self.target_queue: queue.Queue = self.get_config("target_queue_ref")
|
|
55
|
+
if not isinstance(self.target_queue, queue.Queue):
|
|
56
|
+
log.error(
|
|
57
|
+
"%s Configuration 'target_queue_ref' is not a valid queue.Queue instance. Type: %s",
|
|
58
|
+
self.log_identifier,
|
|
59
|
+
type(self.target_queue),
|
|
60
|
+
)
|
|
61
|
+
raise ValueError(
|
|
62
|
+
f"{self.log_identifier} 'target_queue_ref' must be a queue.Queue instance."
|
|
63
|
+
)
|
|
64
|
+
log.info("%s TaskLoggerForwarderComponent initialized.", self.log_identifier)
|
|
65
|
+
|
|
66
|
+
def invoke(self, message: SolaceMessage, data: Dict[str, Any]) -> None:
|
|
67
|
+
"""
|
|
68
|
+
Processes the incoming message and forwards it.
|
|
69
|
+
|
|
70
|
+
Args:
|
|
71
|
+
message: The SolaceMessage object from BrokerInput (this is the original message).
|
|
72
|
+
data: The data extracted by BrokerInput's output_schema (payload, topic, user_properties).
|
|
73
|
+
"""
|
|
74
|
+
log_id_prefix = f"{self.log_identifier}[Invoke]"
|
|
75
|
+
try:
|
|
76
|
+
|
|
77
|
+
forward_data = {
|
|
78
|
+
"topic": data.get("topic"),
|
|
79
|
+
"payload": data.get("payload"),
|
|
80
|
+
"user_properties": data.get("user_properties") or {},
|
|
81
|
+
"_original_broker_message": message,
|
|
82
|
+
}
|
|
83
|
+
log.debug(
|
|
84
|
+
"%s Forwarding message for topic: %s",
|
|
85
|
+
log_id_prefix,
|
|
86
|
+
forward_data["topic"],
|
|
87
|
+
)
|
|
88
|
+
try:
|
|
89
|
+
self.target_queue.put_nowait(forward_data)
|
|
90
|
+
except queue.Full:
|
|
91
|
+
log.warning(
|
|
92
|
+
"%s Task logging queue is full. Message dropped. Current size: %d",
|
|
93
|
+
log_id_prefix,
|
|
94
|
+
self.target_queue.qsize(),
|
|
95
|
+
)
|
|
96
|
+
|
|
97
|
+
message.call_acknowledgements()
|
|
98
|
+
log.debug("%s Message acknowledged to BrokerInput.", log_id_prefix)
|
|
99
|
+
|
|
100
|
+
except Exception as e:
|
|
101
|
+
log.exception(
|
|
102
|
+
"%s Error in TaskLoggerForwarderComponent invoke: %s",
|
|
103
|
+
log_id_prefix,
|
|
104
|
+
e,
|
|
105
|
+
)
|
|
106
|
+
if message:
|
|
107
|
+
message.call_negative_acknowledgements()
|
|
108
|
+
raise
|
|
109
|
+
return None
|
|
@@ -3,12 +3,14 @@ SAC Component to forward messages from an internal BrokerInput
|
|
|
3
3
|
to the WebUIBackendComponent's internal queue for visualization.
|
|
4
4
|
"""
|
|
5
5
|
|
|
6
|
+
import logging
|
|
6
7
|
import queue
|
|
7
8
|
from typing import Any, Dict
|
|
8
9
|
|
|
9
10
|
from solace_ai_connector.components.component_base import ComponentBase
|
|
10
11
|
from solace_ai_connector.common.message import Message as SolaceMessage
|
|
11
|
-
|
|
12
|
+
|
|
13
|
+
log = logging.getLogger(__name__)
|
|
12
14
|
|
|
13
15
|
info = {
|
|
14
16
|
"class_name": "VisualizationForwarderComponent",
|
|
@@ -76,7 +78,7 @@ class VisualizationForwarderComponent(ComponentBase):
|
|
|
76
78
|
forward_data = {
|
|
77
79
|
"topic": data.get("topic"),
|
|
78
80
|
"payload": data.get("payload"),
|
|
79
|
-
"user_properties": data.get("user_properties"),
|
|
81
|
+
"user_properties": data.get("user_properties") or {},
|
|
80
82
|
"_original_broker_message": message,
|
|
81
83
|
}
|
|
82
84
|
log.debug(
|
|
@@ -3,12 +3,12 @@ Defines FastAPI dependency injectors to access shared resources
|
|
|
3
3
|
managed by the WebUIBackendComponent.
|
|
4
4
|
"""
|
|
5
5
|
|
|
6
|
+
import logging
|
|
6
7
|
from collections.abc import Callable, Generator
|
|
7
8
|
from contextlib import contextmanager
|
|
8
9
|
from typing import TYPE_CHECKING, Any
|
|
9
10
|
|
|
10
11
|
from fastapi import Depends, HTTPException, Request, status
|
|
11
|
-
from solace_ai_connector.common.log import log
|
|
12
12
|
from sqlalchemy import create_engine
|
|
13
13
|
from sqlalchemy.orm import Session, sessionmaker
|
|
14
14
|
|
|
@@ -20,11 +20,18 @@ from ...gateway.base.task_context import TaskContextManager
|
|
|
20
20
|
from ...gateway.http_sse.services.agent_card_service import AgentCardService
|
|
21
21
|
from ...gateway.http_sse.services.people_service import PeopleService
|
|
22
22
|
from ...gateway.http_sse.services.task_service import TaskService
|
|
23
|
+
from ...gateway.http_sse.services.feedback_service import FeedbackService
|
|
24
|
+
from ...gateway.http_sse.services.task_logger_service import TaskLoggerService
|
|
25
|
+
from ...gateway.http_sse.services.data_retention_service import DataRetentionService
|
|
23
26
|
from ...gateway.http_sse.session_manager import SessionManager
|
|
24
27
|
from ...gateway.http_sse.sse_manager import SSEManager
|
|
25
|
-
from .repository import
|
|
28
|
+
from .repository import SessionRepository
|
|
29
|
+
from .repository.interfaces import ITaskRepository
|
|
30
|
+
from .repository.task_repository import TaskRepository
|
|
26
31
|
from .services.session_service import SessionService
|
|
27
32
|
|
|
33
|
+
log = logging.getLogger(__name__)
|
|
34
|
+
|
|
28
35
|
try:
|
|
29
36
|
from google.adk.artifacts import BaseArtifactService
|
|
30
37
|
except ImportError:
|
|
@@ -57,8 +64,20 @@ def init_database(database_url: str):
|
|
|
57
64
|
global SessionLocal
|
|
58
65
|
if SessionLocal is None:
|
|
59
66
|
engine = create_engine(database_url)
|
|
67
|
+
|
|
68
|
+
# Enable foreign keys for SQLite only (database-agnostic)
|
|
69
|
+
from sqlalchemy import event
|
|
70
|
+
|
|
71
|
+
@event.listens_for(engine, "connect")
|
|
72
|
+
def set_sqlite_pragma(dbapi_conn, connection_record):
|
|
73
|
+
# Only apply to SQLite connections
|
|
74
|
+
if database_url.startswith("sqlite"):
|
|
75
|
+
cursor = dbapi_conn.cursor()
|
|
76
|
+
cursor.execute("PRAGMA foreign_keys=ON")
|
|
77
|
+
cursor.close()
|
|
78
|
+
|
|
60
79
|
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
|
|
61
|
-
log.info("[Dependencies] Database initialized.")
|
|
80
|
+
log.info("[Dependencies] Database initialized with foreign key support.")
|
|
62
81
|
else:
|
|
63
82
|
log.warning("[Dependencies] Database already initialized.")
|
|
64
83
|
|
|
@@ -199,6 +218,23 @@ def get_identity_service(
|
|
|
199
218
|
return component.identity_service
|
|
200
219
|
|
|
201
220
|
|
|
221
|
+
def get_db() -> Generator[Session, None, None]:
|
|
222
|
+
if SessionLocal is None:
|
|
223
|
+
raise HTTPException(
|
|
224
|
+
status_code=status.HTTP_501_NOT_IMPLEMENTED,
|
|
225
|
+
detail="Session management requires database configuration.",
|
|
226
|
+
)
|
|
227
|
+
db = SessionLocal()
|
|
228
|
+
try:
|
|
229
|
+
yield db
|
|
230
|
+
db.commit()
|
|
231
|
+
except Exception:
|
|
232
|
+
db.rollback()
|
|
233
|
+
raise
|
|
234
|
+
finally:
|
|
235
|
+
db.close()
|
|
236
|
+
|
|
237
|
+
|
|
202
238
|
def get_people_service(
|
|
203
239
|
identity_service: BaseIdentityService | None = Depends(get_identity_service),
|
|
204
240
|
) -> PeopleService:
|
|
@@ -207,6 +243,73 @@ def get_people_service(
|
|
|
207
243
|
return PeopleService(identity_service=identity_service)
|
|
208
244
|
|
|
209
245
|
|
|
246
|
+
def get_task_repository(db: Session = Depends(get_db)) -> ITaskRepository:
|
|
247
|
+
"""FastAPI dependency to get an instance of TaskRepository."""
|
|
248
|
+
log.debug("[Dependencies] get_task_repository called")
|
|
249
|
+
return TaskRepository(db)
|
|
250
|
+
|
|
251
|
+
|
|
252
|
+
def get_feedback_service(
|
|
253
|
+
component: "WebUIBackendComponent" = Depends(get_sac_component),
|
|
254
|
+
task_repo: ITaskRepository = Depends(get_task_repository),
|
|
255
|
+
) -> FeedbackService:
|
|
256
|
+
"""FastAPI dependency to get an instance of FeedbackService."""
|
|
257
|
+
log.debug("[Dependencies] get_feedback_service called")
|
|
258
|
+
# The session factory is needed for the existing DB save logic.
|
|
259
|
+
session_factory = SessionLocal if component.database_url else None
|
|
260
|
+
return FeedbackService(
|
|
261
|
+
session_factory=session_factory, component=component, task_repo=task_repo
|
|
262
|
+
)
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
def get_data_retention_service(
|
|
266
|
+
component: "WebUIBackendComponent" = Depends(get_sac_component),
|
|
267
|
+
) -> "DataRetentionService | None":
|
|
268
|
+
"""
|
|
269
|
+
FastAPI dependency to get the DataRetentionService instance.
|
|
270
|
+
|
|
271
|
+
Returns:
|
|
272
|
+
DataRetentionService instance if database is configured and service is initialized,
|
|
273
|
+
None otherwise.
|
|
274
|
+
|
|
275
|
+
Note:
|
|
276
|
+
This dependency is primarily for future API endpoints that might expose
|
|
277
|
+
data retention statistics or manual cleanup triggers. The service itself
|
|
278
|
+
runs automatically via timer in the component.
|
|
279
|
+
"""
|
|
280
|
+
log.debug("[Dependencies] get_data_retention_service called")
|
|
281
|
+
|
|
282
|
+
if not component.database_url:
|
|
283
|
+
log.debug(
|
|
284
|
+
"[Dependencies] Database not configured, returning None for data retention service"
|
|
285
|
+
)
|
|
286
|
+
return None
|
|
287
|
+
|
|
288
|
+
if (
|
|
289
|
+
not hasattr(component, "data_retention_service")
|
|
290
|
+
or component.data_retention_service is None
|
|
291
|
+
):
|
|
292
|
+
log.warning("[Dependencies] DataRetentionService not initialized on component")
|
|
293
|
+
return None
|
|
294
|
+
|
|
295
|
+
return component.data_retention_service
|
|
296
|
+
|
|
297
|
+
|
|
298
|
+
def get_task_logger_service(
|
|
299
|
+
component: "WebUIBackendComponent" = Depends(get_sac_component),
|
|
300
|
+
) -> TaskLoggerService:
|
|
301
|
+
"""FastAPI dependency to get an instance of TaskLoggerService."""
|
|
302
|
+
log.debug("[Dependencies] get_task_logger_service called")
|
|
303
|
+
task_logger_service = component.get_task_logger_service()
|
|
304
|
+
if task_logger_service is None:
|
|
305
|
+
log.error("[Dependencies] TaskLoggerService is not available.")
|
|
306
|
+
raise HTTPException(
|
|
307
|
+
status_code=status.HTTP_503_SERVICE_UNAVAILABLE,
|
|
308
|
+
detail="Task logging service is not configured or available.",
|
|
309
|
+
)
|
|
310
|
+
return task_logger_service
|
|
311
|
+
|
|
312
|
+
|
|
210
313
|
PublishFunc = Callable[[str, dict, dict | None], None]
|
|
211
314
|
|
|
212
315
|
|
|
@@ -304,18 +407,22 @@ class ValidatedUserConfig:
|
|
|
304
407
|
) -> dict[str, Any]:
|
|
305
408
|
user_id = user_config.get("user_profile", {}).get("id")
|
|
306
409
|
|
|
307
|
-
log.debug(
|
|
410
|
+
log.debug(
|
|
411
|
+
f"[Dependencies] ValidatedUserConfig called for user_id: {user_id} with required scopes: {self.required_scopes}"
|
|
412
|
+
)
|
|
308
413
|
|
|
309
414
|
# Validate scopes
|
|
310
415
|
if not config_resolver.is_feature_enabled(
|
|
311
|
-
|
|
416
|
+
user_config,
|
|
417
|
+
{"tool_metadata": {"required_scopes": self.required_scopes}},
|
|
418
|
+
{},
|
|
312
419
|
):
|
|
313
420
|
log.warning(
|
|
314
421
|
f"[Dependencies] Authorization denied for user '{user_id}'. Required scopes: {self.required_scopes}"
|
|
315
422
|
)
|
|
316
423
|
raise HTTPException(
|
|
317
424
|
status_code=status.HTTP_403_FORBIDDEN,
|
|
318
|
-
detail=f"Not authorized. Required scopes: {self.required_scopes}"
|
|
425
|
+
detail=f"Not authorized. Required scopes: {self.required_scopes}",
|
|
319
426
|
)
|
|
320
427
|
|
|
321
428
|
return user_config
|
|
@@ -396,23 +503,6 @@ def get_task_service(
|
|
|
396
503
|
)
|
|
397
504
|
|
|
398
505
|
|
|
399
|
-
def get_db() -> Generator[Session, None, None]:
|
|
400
|
-
if SessionLocal is None:
|
|
401
|
-
raise HTTPException(
|
|
402
|
-
status_code=status.HTTP_501_NOT_IMPLEMENTED,
|
|
403
|
-
detail="Session management requires database configuration.",
|
|
404
|
-
)
|
|
405
|
-
db = SessionLocal()
|
|
406
|
-
try:
|
|
407
|
-
yield db
|
|
408
|
-
db.commit()
|
|
409
|
-
except Exception:
|
|
410
|
-
db.rollback()
|
|
411
|
-
raise
|
|
412
|
-
finally:
|
|
413
|
-
db.close()
|
|
414
|
-
|
|
415
|
-
|
|
416
506
|
def get_session_business_service(
|
|
417
507
|
component: "WebUIBackendComponent" = Depends(get_sac_component),
|
|
418
508
|
) -> SessionService:
|
|
@@ -423,8 +513,6 @@ def get_session_business_service(
|
|
|
423
513
|
return SessionService(component=component)
|
|
424
514
|
|
|
425
515
|
|
|
426
|
-
|
|
427
|
-
|
|
428
516
|
def get_session_validator(
|
|
429
517
|
component: "WebUIBackendComponent" = Depends(get_sac_component),
|
|
430
518
|
) -> Callable[[str, str], bool]:
|
|
@@ -438,7 +526,9 @@ def get_session_validator(
|
|
|
438
526
|
db = SessionLocal()
|
|
439
527
|
try:
|
|
440
528
|
session_repository = SessionRepository(db)
|
|
441
|
-
session_domain = session_repository.find_user_session(
|
|
529
|
+
session_domain = session_repository.find_user_session(
|
|
530
|
+
session_id, user_id
|
|
531
|
+
)
|
|
442
532
|
return session_domain is not None
|
|
443
533
|
finally:
|
|
444
534
|
db.close()
|
|
@@ -479,6 +569,8 @@ def get_session_business_service_optional(
|
|
|
479
569
|
) -> SessionService | None:
|
|
480
570
|
"""Optional session service dependency that returns None if database is not configured."""
|
|
481
571
|
if SessionLocal is None:
|
|
482
|
-
log.debug(
|
|
572
|
+
log.debug(
|
|
573
|
+
"[Dependencies] Database not configured, returning None for session service"
|
|
574
|
+
)
|
|
483
575
|
return None
|
|
484
576
|
return SessionService(component=component)
|