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
|
@@ -5,11 +5,11 @@ Session repository implementation using SQLAlchemy.
|
|
|
5
5
|
from sqlalchemy.orm import Session as DBSession
|
|
6
6
|
|
|
7
7
|
from ..shared.base_repository import PaginatedRepository
|
|
8
|
+
from ..shared.pagination import PaginationParams
|
|
8
9
|
from ..shared.types import PaginationInfo, SessionId, UserId
|
|
9
|
-
from .entities import
|
|
10
|
+
from .entities import Session
|
|
10
11
|
from .interfaces import ISessionRepository
|
|
11
12
|
from .models import (
|
|
12
|
-
MessageModel,
|
|
13
13
|
SessionModel,
|
|
14
14
|
CreateSessionModel,
|
|
15
15
|
UpdateSessionModel,
|
|
@@ -29,14 +29,14 @@ class SessionRepository(PaginatedRepository[SessionModel, Session], ISessionRepo
|
|
|
29
29
|
return "session"
|
|
30
30
|
|
|
31
31
|
def find_by_user(
|
|
32
|
-
self, user_id: UserId, pagination:
|
|
32
|
+
self, user_id: UserId, pagination: PaginationParams | None = None
|
|
33
33
|
) -> list[Session]:
|
|
34
34
|
"""Find all sessions for a specific user."""
|
|
35
35
|
query = self.db.query(SessionModel).filter(SessionModel.user_id == user_id)
|
|
36
36
|
query = query.order_by(SessionModel.updated_time.desc())
|
|
37
37
|
|
|
38
38
|
if pagination:
|
|
39
|
-
offset = (pagination.
|
|
39
|
+
offset = (pagination.page_number - 1) * pagination.page_size
|
|
40
40
|
query = query.offset(offset).limit(pagination.page_size)
|
|
41
41
|
|
|
42
42
|
models = query.all()
|
|
@@ -96,52 +96,3 @@ class SessionRepository(PaginatedRepository[SessionModel, Session], ISessionRepo
|
|
|
96
96
|
# Use BaseRepository delete method
|
|
97
97
|
super().delete(self.db, session_id)
|
|
98
98
|
return True
|
|
99
|
-
|
|
100
|
-
def find_user_session_with_messages(
|
|
101
|
-
self,
|
|
102
|
-
session_id: SessionId,
|
|
103
|
-
user_id: UserId,
|
|
104
|
-
pagination: PaginationInfo | None = None,
|
|
105
|
-
) -> tuple[Session, list[Message]] | None:
|
|
106
|
-
"""Find a session with its messages."""
|
|
107
|
-
session_model = (
|
|
108
|
-
self.db.query(SessionModel)
|
|
109
|
-
.filter(
|
|
110
|
-
SessionModel.id == session_id,
|
|
111
|
-
SessionModel.user_id == user_id,
|
|
112
|
-
)
|
|
113
|
-
.first()
|
|
114
|
-
)
|
|
115
|
-
|
|
116
|
-
if not session_model:
|
|
117
|
-
return None
|
|
118
|
-
|
|
119
|
-
message_query = self.db.query(MessageModel).filter(
|
|
120
|
-
MessageModel.session_id == session_id
|
|
121
|
-
)
|
|
122
|
-
|
|
123
|
-
if pagination:
|
|
124
|
-
offset = (pagination.page - 1) * pagination.page_size
|
|
125
|
-
message_query = message_query.offset(offset).limit(pagination.page_size)
|
|
126
|
-
|
|
127
|
-
message_models = message_query.order_by(MessageModel.created_time.asc()).all()
|
|
128
|
-
|
|
129
|
-
session = Session.model_validate(session_model)
|
|
130
|
-
messages = [self._message_model_to_entity(model) for model in message_models]
|
|
131
|
-
|
|
132
|
-
return session, messages
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
def _message_model_to_entity(self, model: MessageModel) -> Message:
|
|
136
|
-
"""Convert SQLAlchemy message model to domain entity."""
|
|
137
|
-
from ..shared.enums import MessageType, SenderType
|
|
138
|
-
|
|
139
|
-
return Message(
|
|
140
|
-
id=model.id,
|
|
141
|
-
session_id=model.session_id,
|
|
142
|
-
message=model.message,
|
|
143
|
-
sender_type=SenderType(model.sender_type),
|
|
144
|
-
sender_name=model.sender_name,
|
|
145
|
-
message_type=MessageType.TEXT, # Default for now
|
|
146
|
-
created_time=model.created_time,
|
|
147
|
-
)
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Task repository implementation using SQLAlchemy.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from sqlalchemy.orm import Session as DBSession
|
|
6
|
+
|
|
7
|
+
from ..shared.types import PaginationInfo, PaginationParams, UserId
|
|
8
|
+
from .entities import Task, TaskEvent
|
|
9
|
+
from .interfaces import ITaskRepository
|
|
10
|
+
from .models import TaskEventModel, TaskModel
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class TaskRepository(ITaskRepository):
|
|
14
|
+
"""SQLAlchemy implementation of task repository."""
|
|
15
|
+
|
|
16
|
+
def __init__(self, db: DBSession):
|
|
17
|
+
self.db = db
|
|
18
|
+
|
|
19
|
+
def save_task(self, task: Task) -> Task:
|
|
20
|
+
"""Create or update a task."""
|
|
21
|
+
model = self.db.query(TaskModel).filter(TaskModel.id == task.id).first()
|
|
22
|
+
|
|
23
|
+
if model:
|
|
24
|
+
# Update existing
|
|
25
|
+
model.end_time = task.end_time
|
|
26
|
+
model.status = task.status
|
|
27
|
+
model.total_input_tokens = task.total_input_tokens
|
|
28
|
+
model.total_output_tokens = task.total_output_tokens
|
|
29
|
+
model.total_cached_input_tokens = task.total_cached_input_tokens
|
|
30
|
+
model.token_usage_details = task.token_usage_details
|
|
31
|
+
else:
|
|
32
|
+
# Create new
|
|
33
|
+
model = TaskModel(
|
|
34
|
+
id=task.id,
|
|
35
|
+
user_id=task.user_id,
|
|
36
|
+
start_time=task.start_time,
|
|
37
|
+
end_time=task.end_time,
|
|
38
|
+
status=task.status,
|
|
39
|
+
initial_request_text=task.initial_request_text,
|
|
40
|
+
total_input_tokens=task.total_input_tokens,
|
|
41
|
+
total_output_tokens=task.total_output_tokens,
|
|
42
|
+
total_cached_input_tokens=task.total_cached_input_tokens,
|
|
43
|
+
token_usage_details=task.token_usage_details,
|
|
44
|
+
)
|
|
45
|
+
self.db.add(model)
|
|
46
|
+
|
|
47
|
+
self.db.commit()
|
|
48
|
+
self.db.refresh(model)
|
|
49
|
+
return self._task_model_to_entity(model)
|
|
50
|
+
|
|
51
|
+
def save_event(self, event: TaskEvent) -> TaskEvent:
|
|
52
|
+
"""Save a task event."""
|
|
53
|
+
model = TaskEventModel(
|
|
54
|
+
id=event.id,
|
|
55
|
+
task_id=event.task_id,
|
|
56
|
+
user_id=event.user_id,
|
|
57
|
+
created_time=event.created_time,
|
|
58
|
+
topic=event.topic,
|
|
59
|
+
direction=event.direction,
|
|
60
|
+
payload=event.payload,
|
|
61
|
+
)
|
|
62
|
+
self.db.add(model)
|
|
63
|
+
self.db.commit()
|
|
64
|
+
self.db.refresh(model)
|
|
65
|
+
return self._event_model_to_entity(model)
|
|
66
|
+
|
|
67
|
+
def find_by_id(self, task_id: str) -> Task | None:
|
|
68
|
+
"""Find a task by its ID."""
|
|
69
|
+
model = self.db.query(TaskModel).filter(TaskModel.id == task_id).first()
|
|
70
|
+
return self._task_model_to_entity(model) if model else None
|
|
71
|
+
|
|
72
|
+
def find_by_id_with_events(
|
|
73
|
+
self, task_id: str
|
|
74
|
+
) -> tuple[Task, list[TaskEvent]] | None:
|
|
75
|
+
"""Find a task with all its events."""
|
|
76
|
+
task_model = self.db.query(TaskModel).filter(TaskModel.id == task_id).first()
|
|
77
|
+
if not task_model:
|
|
78
|
+
return None
|
|
79
|
+
|
|
80
|
+
event_models = (
|
|
81
|
+
self.db.query(TaskEventModel)
|
|
82
|
+
.filter(TaskEventModel.task_id == task_id)
|
|
83
|
+
.order_by(TaskEventModel.created_time.asc())
|
|
84
|
+
.all()
|
|
85
|
+
)
|
|
86
|
+
|
|
87
|
+
task = self._task_model_to_entity(task_model)
|
|
88
|
+
events = [self._event_model_to_entity(model) for model in event_models]
|
|
89
|
+
return task, events
|
|
90
|
+
|
|
91
|
+
def search(
|
|
92
|
+
self,
|
|
93
|
+
user_id: UserId,
|
|
94
|
+
start_date: int | None = None,
|
|
95
|
+
end_date: int | None = None,
|
|
96
|
+
search_query: str | None = None,
|
|
97
|
+
pagination: PaginationParams | None = None,
|
|
98
|
+
) -> list[Task]:
|
|
99
|
+
"""Search for tasks with filters."""
|
|
100
|
+
query = self.db.query(TaskModel)
|
|
101
|
+
if user_id != "*": # Allow wildcard for admin/system searches
|
|
102
|
+
query = query.filter(TaskModel.user_id == user_id)
|
|
103
|
+
|
|
104
|
+
if start_date:
|
|
105
|
+
query = query.filter(TaskModel.start_time >= start_date)
|
|
106
|
+
if end_date:
|
|
107
|
+
query = query.filter(TaskModel.start_time <= end_date)
|
|
108
|
+
if search_query:
|
|
109
|
+
query = query.filter(
|
|
110
|
+
TaskModel.initial_request_text.ilike(f"%{search_query}%")
|
|
111
|
+
)
|
|
112
|
+
|
|
113
|
+
query = query.order_by(TaskModel.start_time.desc())
|
|
114
|
+
|
|
115
|
+
if pagination:
|
|
116
|
+
offset = (pagination.page - 1) * pagination.page_size
|
|
117
|
+
query = query.offset(offset).limit(pagination.page_size)
|
|
118
|
+
|
|
119
|
+
models = query.all()
|
|
120
|
+
return [self._task_model_to_entity(model) for model in models]
|
|
121
|
+
|
|
122
|
+
def delete_tasks_older_than(self, cutoff_time_ms: int, batch_size: int) -> int:
|
|
123
|
+
"""
|
|
124
|
+
Delete tasks (and their events via cascade) older than the cutoff time.
|
|
125
|
+
Uses batch deletion to avoid long-running transactions.
|
|
126
|
+
|
|
127
|
+
Args:
|
|
128
|
+
cutoff_time_ms: Epoch milliseconds - tasks with start_time before this will be deleted
|
|
129
|
+
batch_size: Number of tasks to delete per batch
|
|
130
|
+
|
|
131
|
+
Returns:
|
|
132
|
+
Total number of tasks deleted
|
|
133
|
+
"""
|
|
134
|
+
total_deleted = 0
|
|
135
|
+
|
|
136
|
+
while True:
|
|
137
|
+
# Find a batch of task IDs to delete
|
|
138
|
+
task_ids_to_delete = (
|
|
139
|
+
self.db.query(TaskModel.id)
|
|
140
|
+
.filter(TaskModel.start_time < cutoff_time_ms)
|
|
141
|
+
.limit(batch_size)
|
|
142
|
+
.all()
|
|
143
|
+
)
|
|
144
|
+
|
|
145
|
+
if not task_ids_to_delete:
|
|
146
|
+
break
|
|
147
|
+
|
|
148
|
+
# Extract IDs from the result tuples
|
|
149
|
+
ids = [task_id[0] for task_id in task_ids_to_delete]
|
|
150
|
+
|
|
151
|
+
# Delete this batch
|
|
152
|
+
deleted_count = (
|
|
153
|
+
self.db.query(TaskModel)
|
|
154
|
+
.filter(TaskModel.id.in_(ids))
|
|
155
|
+
.delete(synchronize_session=False)
|
|
156
|
+
)
|
|
157
|
+
|
|
158
|
+
self.db.commit()
|
|
159
|
+
total_deleted += deleted_count
|
|
160
|
+
|
|
161
|
+
# If we deleted fewer than batch_size, we're done
|
|
162
|
+
if deleted_count < batch_size:
|
|
163
|
+
break
|
|
164
|
+
|
|
165
|
+
return total_deleted
|
|
166
|
+
|
|
167
|
+
def _task_model_to_entity(self, model: TaskModel) -> Task:
|
|
168
|
+
"""Convert SQLAlchemy task model to domain entity."""
|
|
169
|
+
return Task.model_validate(model)
|
|
170
|
+
|
|
171
|
+
def _event_model_to_entity(self, model: TaskEventModel) -> TaskEvent:
|
|
172
|
+
"""Convert SQLAlchemy event model to domain entity."""
|
|
173
|
+
return TaskEvent.model_validate(model)
|
|
@@ -2,15 +2,16 @@
|
|
|
2
2
|
API Router for agent discovery.
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
|
+
import logging
|
|
5
6
|
from fastapi import APIRouter, Depends, HTTPException, status
|
|
6
7
|
from typing import List
|
|
7
8
|
|
|
8
|
-
from solace_ai_connector.common.log import log
|
|
9
|
-
|
|
10
9
|
from ....common.agent_registry import AgentRegistry
|
|
11
10
|
from a2a.types import AgentCard
|
|
12
11
|
from ..dependencies import get_agent_registry
|
|
13
12
|
|
|
13
|
+
log = logging.getLogger(__name__)
|
|
14
|
+
|
|
14
15
|
router = APIRouter()
|
|
15
16
|
|
|
16
17
|
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
FastAPI router for managing session-specific artifacts via REST endpoints.
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
|
+
import logging
|
|
5
6
|
from collections.abc import Callable
|
|
6
7
|
from typing import TYPE_CHECKING, Any
|
|
7
8
|
|
|
@@ -32,8 +33,6 @@ import json
|
|
|
32
33
|
from datetime import datetime, timezone
|
|
33
34
|
from urllib.parse import parse_qs, quote, urlparse
|
|
34
35
|
|
|
35
|
-
from solace_ai_connector.common.log import log
|
|
36
|
-
|
|
37
36
|
from ....common.a2a.types import ArtifactInfo
|
|
38
37
|
from ....common.utils.embeds import (
|
|
39
38
|
LATE_EMBED_TYPES,
|
|
@@ -68,6 +67,7 @@ from ....agent.utils.artifact_helpers import (
|
|
|
68
67
|
save_artifact_with_metadata,
|
|
69
68
|
)
|
|
70
69
|
|
|
70
|
+
log = logging.getLogger(__name__)
|
|
71
71
|
|
|
72
72
|
class ArtifactUploadResponse(BaseModel):
|
|
73
73
|
"""Response model for artifact upload with camelCase fields."""
|
|
@@ -860,7 +860,7 @@ async def upload_artifact(
|
|
|
860
860
|
f"[ArtifactRouter:Post:{filename}] User={user_id}, Session={session_id} -"
|
|
861
861
|
)
|
|
862
862
|
log.info(
|
|
863
|
-
"%s Request received. Upload filename: '%s', content type: %s
|
|
863
|
+
"%s Request received. Upload filename: '%s', content type: %s",
|
|
864
864
|
log_prefix,
|
|
865
865
|
upload_file.filename,
|
|
866
866
|
upload_file.content_type,
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Router for handling authentication-related endpoints.
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
|
+
import logging
|
|
5
6
|
from fastapi import (
|
|
6
7
|
APIRouter,
|
|
7
8
|
Request as FastAPIRequest,
|
|
@@ -15,7 +16,8 @@ import secrets
|
|
|
15
16
|
from urllib.parse import urlencode
|
|
16
17
|
|
|
17
18
|
from ...http_sse.dependencies import get_sac_component, get_api_config
|
|
18
|
-
|
|
19
|
+
|
|
20
|
+
log = logging.getLogger(__name__)
|
|
19
21
|
|
|
20
22
|
router = APIRouter()
|
|
21
23
|
|
|
@@ -2,17 +2,18 @@
|
|
|
2
2
|
API Router for providing frontend configuration.
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
|
+
import logging
|
|
5
6
|
from fastapi import APIRouter, Depends, HTTPException, status
|
|
6
7
|
from typing import Dict, Any
|
|
7
8
|
|
|
8
|
-
from solace_ai_connector.common.log import log
|
|
9
|
-
|
|
10
9
|
from ....gateway.http_sse.dependencies import get_sac_component, get_api_config
|
|
11
10
|
from typing import TYPE_CHECKING
|
|
12
11
|
|
|
13
12
|
if TYPE_CHECKING:
|
|
14
13
|
from gateway.http_sse.component import WebUIBackendComponent
|
|
15
14
|
|
|
15
|
+
log = logging.getLogger(__name__)
|
|
16
|
+
|
|
16
17
|
router = APIRouter()
|
|
17
18
|
|
|
18
19
|
|
|
@@ -27,6 +28,30 @@ async def get_app_config(
|
|
|
27
28
|
log_prefix = "[GET /api/v1/config] "
|
|
28
29
|
log.info("%sRequest received.", log_prefix)
|
|
29
30
|
try:
|
|
31
|
+
# Start with explicitly defined feature flags
|
|
32
|
+
feature_enablement = component.get_config("frontend_feature_enablement", {})
|
|
33
|
+
|
|
34
|
+
# Manually check for the task_logging feature and add it
|
|
35
|
+
task_logging_config = component.get_config("task_logging", {})
|
|
36
|
+
if task_logging_config and task_logging_config.get("enabled", False):
|
|
37
|
+
feature_enablement["taskLogging"] = True
|
|
38
|
+
log.debug("%s taskLogging feature flag is enabled.", log_prefix)
|
|
39
|
+
|
|
40
|
+
# Determine if feedback should be enabled
|
|
41
|
+
# Feedback requires SQL session storage for persistence
|
|
42
|
+
feedback_enabled = component.get_config("frontend_collect_feedback", False)
|
|
43
|
+
if feedback_enabled:
|
|
44
|
+
session_config = component.get_config("session_service", {})
|
|
45
|
+
session_type = session_config.get("type", "memory")
|
|
46
|
+
if session_type != "sql":
|
|
47
|
+
log.warning(
|
|
48
|
+
"%s Feedback is configured but session_service type is '%s' (not 'sql'). "
|
|
49
|
+
"Disabling feedback for frontend.",
|
|
50
|
+
log_prefix,
|
|
51
|
+
session_type
|
|
52
|
+
)
|
|
53
|
+
feedback_enabled = False
|
|
54
|
+
|
|
30
55
|
config_data = {
|
|
31
56
|
"frontend_server_url": "",
|
|
32
57
|
"frontend_auth_login_url": component.get_config(
|
|
@@ -39,11 +64,9 @@ async def get_app_config(
|
|
|
39
64
|
"frontend_welcome_message", ""
|
|
40
65
|
),
|
|
41
66
|
"frontend_redirect_url": component.get_config("frontend_redirect_url", ""),
|
|
42
|
-
"frontend_collect_feedback":
|
|
43
|
-
"frontend_collect_feedback", False
|
|
44
|
-
),
|
|
67
|
+
"frontend_collect_feedback": feedback_enabled,
|
|
45
68
|
"frontend_bot_name": component.get_config("frontend_bot_name", "A2A Agent"),
|
|
46
|
-
"frontend_feature_enablement":
|
|
69
|
+
"frontend_feature_enablement": feature_enablement,
|
|
47
70
|
"persistence_enabled": api_config.get("persistence_enabled", False),
|
|
48
71
|
}
|
|
49
72
|
log.info("%sReturning frontend configuration.", log_prefix)
|