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
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import logging
|
|
1
2
|
from fastapi import APIRouter, Body, Depends, HTTPException, Query, status
|
|
2
|
-
from solace_ai_connector.common.log import log
|
|
3
3
|
from sqlalchemy.orm import Session
|
|
4
4
|
|
|
5
5
|
from ..dependencies import get_session_business_service, get_db
|
|
@@ -8,14 +8,18 @@ from ..shared.auth_utils import get_current_user
|
|
|
8
8
|
from ..shared.pagination import DataResponse, PaginatedResponse, PaginationParams
|
|
9
9
|
from ..shared.response_utils import create_data_response
|
|
10
10
|
from .dto.requests.session_requests import (
|
|
11
|
-
GetSessionHistoryRequest,
|
|
12
11
|
GetSessionRequest,
|
|
13
12
|
UpdateSessionRequest,
|
|
14
13
|
)
|
|
15
|
-
from .dto.
|
|
14
|
+
from .dto.requests.task_requests import SaveTaskRequest
|
|
15
|
+
from .dto.responses.session_responses import SessionResponse
|
|
16
|
+
from .dto.responses.task_responses import TaskResponse, TaskListResponse
|
|
17
|
+
|
|
18
|
+
log = logging.getLogger(__name__)
|
|
16
19
|
|
|
17
20
|
router = APIRouter()
|
|
18
21
|
|
|
22
|
+
SESSION_NOT_FOUND_MSG = "Session not found."
|
|
19
23
|
|
|
20
24
|
|
|
21
25
|
@router.get("/sessions", response_model=PaginatedResponse[SessionResponse])
|
|
@@ -27,7 +31,6 @@ async def get_all_sessions(
|
|
|
27
31
|
session_service: SessionService = Depends(get_session_business_service),
|
|
28
32
|
):
|
|
29
33
|
user_id = user.get("id")
|
|
30
|
-
log.info(f"User '{user_id}' is listing sessions with pagination (page={page_number}, size={page_size})")
|
|
31
34
|
|
|
32
35
|
try:
|
|
33
36
|
pagination = PaginationParams(page_number=page_number, page_size=page_size)
|
|
@@ -52,7 +55,7 @@ async def get_all_sessions(
|
|
|
52
55
|
raise HTTPException(
|
|
53
56
|
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
|
54
57
|
detail="Failed to retrieve sessions",
|
|
55
|
-
)
|
|
58
|
+
) from e
|
|
56
59
|
|
|
57
60
|
|
|
58
61
|
@router.get("/sessions/{session_id}", response_model=DataResponse[SessionResponse])
|
|
@@ -63,7 +66,6 @@ async def get_session(
|
|
|
63
66
|
session_service: SessionService = Depends(get_session_business_service),
|
|
64
67
|
):
|
|
65
68
|
user_id = user.get("id")
|
|
66
|
-
log.info("User %s attempting to fetch session_id: %s", user_id, session_id)
|
|
67
69
|
|
|
68
70
|
try:
|
|
69
71
|
if (
|
|
@@ -72,7 +74,7 @@ async def get_session(
|
|
|
72
74
|
or session_id in ["null", "undefined"]
|
|
73
75
|
):
|
|
74
76
|
raise HTTPException(
|
|
75
|
-
status_code=status.HTTP_404_NOT_FOUND, detail=
|
|
77
|
+
status_code=status.HTTP_404_NOT_FOUND, detail=SESSION_NOT_FOUND_MSG
|
|
76
78
|
)
|
|
77
79
|
|
|
78
80
|
request_dto = GetSessionRequest(session_id=session_id, user_id=user_id)
|
|
@@ -83,7 +85,7 @@ async def get_session(
|
|
|
83
85
|
|
|
84
86
|
if not session_domain:
|
|
85
87
|
raise HTTPException(
|
|
86
|
-
status_code=status.HTTP_404_NOT_FOUND, detail=
|
|
88
|
+
status_code=status.HTTP_404_NOT_FOUND, detail=SESSION_NOT_FOUND_MSG
|
|
87
89
|
)
|
|
88
90
|
|
|
89
91
|
log.info("User %s authorized. Fetching session_id: %s", user_id, session_id)
|
|
@@ -111,19 +113,27 @@ async def get_session(
|
|
|
111
113
|
raise HTTPException(
|
|
112
114
|
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
|
113
115
|
detail="Failed to retrieve session",
|
|
114
|
-
)
|
|
116
|
+
) from e
|
|
115
117
|
|
|
116
118
|
|
|
117
|
-
@router.
|
|
118
|
-
async def
|
|
119
|
+
@router.post("/sessions/{session_id}/chat-tasks", response_model=TaskResponse)
|
|
120
|
+
async def save_task(
|
|
119
121
|
session_id: str,
|
|
122
|
+
request: SaveTaskRequest,
|
|
120
123
|
db: Session = Depends(get_db),
|
|
121
124
|
user: dict = Depends(get_current_user),
|
|
122
125
|
session_service: SessionService = Depends(get_session_business_service),
|
|
123
126
|
):
|
|
127
|
+
"""
|
|
128
|
+
Save a complete task interaction (upsert).
|
|
129
|
+
Creates a new task or updates an existing one.
|
|
130
|
+
"""
|
|
124
131
|
user_id = user.get("id")
|
|
125
132
|
log.info(
|
|
126
|
-
"User %s attempting to
|
|
133
|
+
"User %s attempting to save task %s for session %s",
|
|
134
|
+
user_id,
|
|
135
|
+
request.task_id,
|
|
136
|
+
session_id,
|
|
127
137
|
)
|
|
128
138
|
|
|
129
139
|
try:
|
|
@@ -133,44 +143,203 @@ async def get_session_history(
|
|
|
133
143
|
or session_id in ["null", "undefined"]
|
|
134
144
|
):
|
|
135
145
|
raise HTTPException(
|
|
136
|
-
status_code=status.HTTP_404_NOT_FOUND, detail=
|
|
146
|
+
status_code=status.HTTP_404_NOT_FOUND, detail=SESSION_NOT_FOUND_MSG
|
|
137
147
|
)
|
|
138
148
|
|
|
139
|
-
|
|
149
|
+
# Check if task already exists to determine status code
|
|
150
|
+
from ..repository.chat_task_repository import ChatTaskRepository
|
|
151
|
+
|
|
152
|
+
task_repo = ChatTaskRepository(db)
|
|
153
|
+
existing_task = task_repo.find_by_id(request.task_id, user_id)
|
|
154
|
+
is_update = existing_task is not None
|
|
140
155
|
|
|
141
|
-
|
|
156
|
+
# Save the task - pass strings directly
|
|
157
|
+
saved_task = session_service.save_task(
|
|
142
158
|
db=db,
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
159
|
+
task_id=request.task_id,
|
|
160
|
+
session_id=session_id,
|
|
161
|
+
user_id=user_id,
|
|
162
|
+
user_message=request.user_message,
|
|
163
|
+
message_bubbles=request.message_bubbles, # Already a string
|
|
164
|
+
task_metadata=request.task_metadata, # Already a string
|
|
165
|
+
)
|
|
166
|
+
|
|
167
|
+
log.info(
|
|
168
|
+
"Task %s %s successfully for session %s",
|
|
169
|
+
request.task_id,
|
|
170
|
+
"updated" if is_update else "created",
|
|
171
|
+
session_id,
|
|
172
|
+
)
|
|
173
|
+
|
|
174
|
+
# Convert to response DTO
|
|
175
|
+
response = TaskResponse(
|
|
176
|
+
task_id=saved_task.id,
|
|
177
|
+
session_id=saved_task.session_id,
|
|
178
|
+
user_message=saved_task.user_message,
|
|
179
|
+
message_bubbles=saved_task.message_bubbles,
|
|
180
|
+
task_metadata=saved_task.task_metadata,
|
|
181
|
+
created_time=saved_task.created_time,
|
|
182
|
+
updated_time=saved_task.updated_time,
|
|
183
|
+
)
|
|
184
|
+
|
|
185
|
+
return response
|
|
186
|
+
|
|
187
|
+
except ValueError as e:
|
|
188
|
+
log.warning("Validation error saving task %s: %s", request.task_id, e)
|
|
189
|
+
raise HTTPException(
|
|
190
|
+
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, detail=str(e)
|
|
191
|
+
) from e
|
|
192
|
+
except HTTPException:
|
|
193
|
+
raise
|
|
194
|
+
except Exception as e:
|
|
195
|
+
log.error(
|
|
196
|
+
"Error saving task %s for session %s for user %s: %s",
|
|
197
|
+
request.task_id,
|
|
198
|
+
session_id,
|
|
199
|
+
user_id,
|
|
200
|
+
e,
|
|
146
201
|
)
|
|
202
|
+
raise HTTPException(
|
|
203
|
+
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
|
204
|
+
detail="Failed to save task",
|
|
205
|
+
) from e
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
@router.get("/sessions/{session_id}/chat-tasks", response_model=TaskListResponse)
|
|
209
|
+
async def get_session_tasks(
|
|
210
|
+
session_id: str,
|
|
211
|
+
db: Session = Depends(get_db),
|
|
212
|
+
user: dict = Depends(get_current_user),
|
|
213
|
+
session_service: SessionService = Depends(get_session_business_service),
|
|
214
|
+
):
|
|
215
|
+
"""
|
|
216
|
+
Get all tasks for a session.
|
|
217
|
+
Returns tasks in chronological order.
|
|
218
|
+
"""
|
|
219
|
+
user_id = user.get("id")
|
|
220
|
+
log.info(
|
|
221
|
+
"User %s attempting to fetch tasks for session_id: %s", user_id, session_id
|
|
222
|
+
)
|
|
147
223
|
|
|
148
|
-
|
|
224
|
+
try:
|
|
225
|
+
if (
|
|
226
|
+
not session_id
|
|
227
|
+
or session_id.strip() == ""
|
|
228
|
+
or session_id in ["null", "undefined"]
|
|
229
|
+
):
|
|
149
230
|
raise HTTPException(
|
|
150
|
-
status_code=status.HTTP_404_NOT_FOUND, detail=
|
|
231
|
+
status_code=status.HTTP_404_NOT_FOUND, detail=SESSION_NOT_FOUND_MSG
|
|
151
232
|
)
|
|
152
233
|
|
|
234
|
+
# Get tasks from service
|
|
235
|
+
tasks = session_service.get_session_tasks(
|
|
236
|
+
db=db, session_id=session_id, user_id=user_id
|
|
237
|
+
)
|
|
238
|
+
|
|
153
239
|
log.info(
|
|
154
|
-
"User %s authorized.
|
|
240
|
+
"User %s authorized. Fetched %d tasks for session_id: %s",
|
|
155
241
|
user_id,
|
|
242
|
+
len(tasks),
|
|
156
243
|
session_id,
|
|
157
244
|
)
|
|
158
245
|
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
created_time=
|
|
246
|
+
# Convert to response DTOs
|
|
247
|
+
task_responses = []
|
|
248
|
+
for task in tasks:
|
|
249
|
+
task_response = TaskResponse(
|
|
250
|
+
task_id=task.id,
|
|
251
|
+
session_id=task.session_id,
|
|
252
|
+
user_message=task.user_message,
|
|
253
|
+
message_bubbles=task.message_bubbles,
|
|
254
|
+
task_metadata=task.task_metadata,
|
|
255
|
+
created_time=task.created_time,
|
|
256
|
+
updated_time=task.updated_time,
|
|
169
257
|
)
|
|
170
|
-
|
|
258
|
+
task_responses.append(task_response)
|
|
171
259
|
|
|
172
|
-
return
|
|
260
|
+
return TaskListResponse(tasks=task_responses)
|
|
173
261
|
|
|
262
|
+
except ValueError as e:
|
|
263
|
+
log.warning("Validation error fetching tasks for session %s: %s", session_id, e)
|
|
264
|
+
raise HTTPException(
|
|
265
|
+
status_code=status.HTTP_404_NOT_FOUND, detail=SESSION_NOT_FOUND_MSG
|
|
266
|
+
) from e
|
|
267
|
+
except HTTPException:
|
|
268
|
+
raise
|
|
269
|
+
except Exception as e:
|
|
270
|
+
log.error(
|
|
271
|
+
"Error fetching tasks for session %s for user %s: %s",
|
|
272
|
+
session_id,
|
|
273
|
+
user_id,
|
|
274
|
+
e,
|
|
275
|
+
)
|
|
276
|
+
raise HTTPException(
|
|
277
|
+
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
|
278
|
+
detail="Failed to retrieve session tasks",
|
|
279
|
+
) from e
|
|
280
|
+
|
|
281
|
+
|
|
282
|
+
@router.get("/sessions/{session_id}/messages")
|
|
283
|
+
async def get_session_history(
|
|
284
|
+
session_id: str,
|
|
285
|
+
db: Session = Depends(get_db),
|
|
286
|
+
user: dict = Depends(get_current_user),
|
|
287
|
+
session_service: SessionService = Depends(get_session_business_service),
|
|
288
|
+
):
|
|
289
|
+
"""
|
|
290
|
+
Get session message history.
|
|
291
|
+
Loads from chat_tasks and flattens message_bubbles for backward compatibility.
|
|
292
|
+
"""
|
|
293
|
+
user_id = user.get("id")
|
|
294
|
+
log.info(
|
|
295
|
+
"User %s attempting to fetch history for session_id: %s", user_id, session_id
|
|
296
|
+
)
|
|
297
|
+
|
|
298
|
+
try:
|
|
299
|
+
if (
|
|
300
|
+
not session_id
|
|
301
|
+
or session_id.strip() == ""
|
|
302
|
+
or session_id in ["null", "undefined"]
|
|
303
|
+
):
|
|
304
|
+
raise HTTPException(
|
|
305
|
+
status_code=status.HTTP_404_NOT_FOUND, detail=SESSION_NOT_FOUND_MSG
|
|
306
|
+
)
|
|
307
|
+
|
|
308
|
+
# Use task-based message retrieval (returns list of dicts)
|
|
309
|
+
messages = session_service.get_session_messages_from_tasks(
|
|
310
|
+
db=db, session_id=session_id, user_id=user_id
|
|
311
|
+
)
|
|
312
|
+
|
|
313
|
+
log.info(
|
|
314
|
+
"User %s authorized. Fetched %d messages for session_id: %s",
|
|
315
|
+
user_id,
|
|
316
|
+
len(messages),
|
|
317
|
+
session_id,
|
|
318
|
+
)
|
|
319
|
+
|
|
320
|
+
# Convert snake_case to camelCase for backwards compatibility
|
|
321
|
+
camel_case_messages = []
|
|
322
|
+
for msg in messages:
|
|
323
|
+
camel_msg = {
|
|
324
|
+
"id": msg["id"],
|
|
325
|
+
"sessionId": msg["session_id"],
|
|
326
|
+
"message": msg["message"],
|
|
327
|
+
"senderType": msg["sender_type"],
|
|
328
|
+
"senderName": msg["sender_name"],
|
|
329
|
+
"messageType": msg["message_type"],
|
|
330
|
+
"createdTime": msg["created_time"],
|
|
331
|
+
}
|
|
332
|
+
camel_case_messages.append(camel_msg)
|
|
333
|
+
|
|
334
|
+
return camel_case_messages
|
|
335
|
+
|
|
336
|
+
except ValueError as e:
|
|
337
|
+
log.warning(
|
|
338
|
+
"Validation error fetching history for session %s: %s", session_id, e
|
|
339
|
+
)
|
|
340
|
+
raise HTTPException(
|
|
341
|
+
status_code=status.HTTP_404_NOT_FOUND, detail=SESSION_NOT_FOUND_MSG
|
|
342
|
+
) from e
|
|
174
343
|
except HTTPException:
|
|
175
344
|
raise
|
|
176
345
|
except Exception as e:
|
|
@@ -183,7 +352,7 @@ async def get_session_history(
|
|
|
183
352
|
raise HTTPException(
|
|
184
353
|
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
|
185
354
|
detail="Failed to retrieve session history",
|
|
186
|
-
)
|
|
355
|
+
) from e
|
|
187
356
|
|
|
188
357
|
|
|
189
358
|
@router.patch("/sessions/{session_id}", response_model=SessionResponse)
|
|
@@ -204,7 +373,7 @@ async def update_session_name(
|
|
|
204
373
|
or session_id in ["null", "undefined"]
|
|
205
374
|
):
|
|
206
375
|
raise HTTPException(
|
|
207
|
-
status_code=status.HTTP_404_NOT_FOUND, detail=
|
|
376
|
+
status_code=status.HTTP_404_NOT_FOUND, detail=SESSION_NOT_FOUND_MSG
|
|
208
377
|
)
|
|
209
378
|
|
|
210
379
|
request_dto = UpdateSessionRequest(
|
|
@@ -220,7 +389,7 @@ async def update_session_name(
|
|
|
220
389
|
|
|
221
390
|
if not updated_domain:
|
|
222
391
|
raise HTTPException(
|
|
223
|
-
status_code=status.HTTP_404_NOT_FOUND, detail=
|
|
392
|
+
status_code=status.HTTP_404_NOT_FOUND, detail=SESSION_NOT_FOUND_MSG
|
|
224
393
|
)
|
|
225
394
|
|
|
226
395
|
log.info("Session %s updated successfully", session_id)
|
|
@@ -240,7 +409,7 @@ async def update_session_name(
|
|
|
240
409
|
log.warning("Validation error updating session %s: %s", session_id, e)
|
|
241
410
|
raise HTTPException(
|
|
242
411
|
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, detail=str(e)
|
|
243
|
-
)
|
|
412
|
+
) from e
|
|
244
413
|
except Exception as e:
|
|
245
414
|
log.error(
|
|
246
415
|
"Error updating session %s for user %s: %s",
|
|
@@ -251,7 +420,7 @@ async def update_session_name(
|
|
|
251
420
|
raise HTTPException(
|
|
252
421
|
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
|
253
422
|
detail="Failed to update session",
|
|
254
|
-
)
|
|
423
|
+
) from e
|
|
255
424
|
|
|
256
425
|
|
|
257
426
|
@router.delete("/sessions/{session_id}", status_code=status.HTTP_204_NO_CONTENT)
|
|
@@ -265,20 +434,33 @@ async def delete_session(
|
|
|
265
434
|
log.info("User %s attempting to delete session %s", user_id, session_id)
|
|
266
435
|
|
|
267
436
|
try:
|
|
437
|
+
if (
|
|
438
|
+
not session_id
|
|
439
|
+
or session_id.strip() == ""
|
|
440
|
+
or session_id in ["null", "undefined"]
|
|
441
|
+
):
|
|
442
|
+
raise HTTPException(
|
|
443
|
+
status_code=status.HTTP_404_NOT_FOUND, detail=SESSION_NOT_FOUND_MSG
|
|
444
|
+
)
|
|
445
|
+
|
|
268
446
|
deleted = session_service.delete_session_with_notifications(
|
|
269
447
|
db=db, session_id=session_id, user_id=user_id
|
|
270
448
|
)
|
|
271
449
|
|
|
272
450
|
if not deleted:
|
|
273
451
|
raise HTTPException(
|
|
274
|
-
status_code=status.HTTP_404_NOT_FOUND, detail=
|
|
452
|
+
status_code=status.HTTP_404_NOT_FOUND, detail=SESSION_NOT_FOUND_MSG
|
|
275
453
|
)
|
|
276
454
|
|
|
277
455
|
log.info("Session %s deleted successfully", session_id)
|
|
278
456
|
|
|
457
|
+
except HTTPException:
|
|
458
|
+
raise
|
|
279
459
|
except ValueError as e:
|
|
280
460
|
log.warning("Validation error deleting session %s: %s", session_id, e)
|
|
281
|
-
raise HTTPException(
|
|
461
|
+
raise HTTPException(
|
|
462
|
+
status_code=status.HTTP_400_BAD_REQUEST, detail=str(e)
|
|
463
|
+
) from e
|
|
282
464
|
except Exception as e:
|
|
283
465
|
log.error(
|
|
284
466
|
"Error deleting session %s for user %s: %s",
|
|
@@ -289,4 +471,4 @@ async def delete_session(
|
|
|
289
471
|
raise HTTPException(
|
|
290
472
|
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
|
291
473
|
detail="Failed to delete session",
|
|
292
|
-
)
|
|
474
|
+
) from e
|
|
@@ -2,17 +2,18 @@
|
|
|
2
2
|
API Router for Server-Sent Events (SSE) subscriptions.
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
|
+
import logging
|
|
5
6
|
import asyncio
|
|
6
7
|
import json
|
|
7
8
|
from fastapi import APIRouter, Depends, Request as FastAPIRequest, HTTPException, status
|
|
8
9
|
|
|
9
|
-
from solace_ai_connector.common.log import log
|
|
10
|
-
|
|
11
10
|
from sse_starlette.sse import EventSourceResponse
|
|
12
11
|
|
|
13
12
|
from ....gateway.http_sse.sse_manager import SSEManager
|
|
14
13
|
from ....gateway.http_sse.dependencies import get_sse_manager
|
|
15
14
|
|
|
15
|
+
log = logging.getLogger(__name__)
|
|
16
|
+
|
|
16
17
|
router = APIRouter()
|
|
17
18
|
|
|
18
19
|
|