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.

Files changed (359) hide show
  1. solace_agent_mesh/agent/adk/adk_llm.txt +3 -4
  2. solace_agent_mesh/agent/adk/adk_llm_detail.txt +566 -0
  3. solace_agent_mesh/agent/adk/artifacts/artifacts_llm.txt +1 -1
  4. solace_agent_mesh/agent/adk/callbacks.py +56 -5
  5. solace_agent_mesh/agent/adk/embed_resolving_mcp_toolset.py +3 -1
  6. solace_agent_mesh/agent/adk/intelligent_mcp_callbacks.py +2 -1
  7. solace_agent_mesh/agent/adk/mcp_content_processor.py +2 -1
  8. solace_agent_mesh/agent/adk/models/lite_llm.py +1 -0
  9. solace_agent_mesh/agent/adk/models/models_llm.txt +1 -2
  10. solace_agent_mesh/agent/adk/runner.py +3 -1
  11. solace_agent_mesh/agent/adk/services.py +4 -1
  12. solace_agent_mesh/agent/adk/setup.py +3 -1
  13. solace_agent_mesh/agent/adk/tool_wrapper.py +2 -2
  14. solace_agent_mesh/agent/agent_llm.txt +1 -1
  15. solace_agent_mesh/agent/agent_llm_detail.txt +1702 -0
  16. solace_agent_mesh/agent/protocol/event_handlers.py +4 -14
  17. solace_agent_mesh/agent/protocol/protocol_llm.txt +15 -2
  18. solace_agent_mesh/agent/protocol/protocol_llm_detail.txt +92 -0
  19. solace_agent_mesh/agent/sac/app.py +3 -1
  20. solace_agent_mesh/agent/sac/component.py +55 -22
  21. solace_agent_mesh/agent/sac/sac_llm.txt +15 -1
  22. solace_agent_mesh/agent/sac/sac_llm_detail.txt +200 -0
  23. solace_agent_mesh/agent/sac/task_execution_context.py +73 -0
  24. solace_agent_mesh/agent/testing/testing_llm_detail.txt +68 -0
  25. solace_agent_mesh/agent/tools/audio_tools.py +2 -1
  26. solace_agent_mesh/agent/tools/builtin_artifact_tools.py +3 -1
  27. solace_agent_mesh/agent/tools/builtin_data_analysis_tools.py +3 -1
  28. solace_agent_mesh/agent/tools/dynamic_tool.py +2 -1
  29. solace_agent_mesh/agent/tools/general_agent_tools.py +2 -1
  30. solace_agent_mesh/agent/tools/image_tools.py +2 -1
  31. solace_agent_mesh/agent/tools/peer_agent_tool.py +2 -1
  32. solace_agent_mesh/agent/tools/registry.py +3 -1
  33. solace_agent_mesh/agent/tools/test_tools.py +2 -1
  34. solace_agent_mesh/agent/tools/tools_llm.txt +148 -154
  35. solace_agent_mesh/agent/tools/tools_llm_detail.txt +274 -0
  36. solace_agent_mesh/agent/tools/web_tools.py +2 -1
  37. solace_agent_mesh/agent/utils/artifact_helpers.py +3 -1
  38. solace_agent_mesh/agent/utils/config_parser.py +3 -1
  39. solace_agent_mesh/agent/utils/utils_llm.txt +1 -1
  40. solace_agent_mesh/agent/utils/utils_llm_detail.txt +149 -0
  41. solace_agent_mesh/assets/docs/404.html +3 -3
  42. solace_agent_mesh/assets/docs/assets/js/{b7006a3a.73a79653.js → 032c2d61.f3d37824.js} +1 -1
  43. solace_agent_mesh/assets/docs/assets/js/0bcf40b7.c019ad46.js +1 -0
  44. solace_agent_mesh/assets/docs/assets/js/15ba94aa.932dd2db.js +1 -0
  45. solace_agent_mesh/assets/docs/assets/js/2131ec11.5c7a1f6e.js +1 -0
  46. solace_agent_mesh/assets/docs/assets/js/{2334.622a6395.js → 2334.1cf50a20.js} +1 -1
  47. solace_agent_mesh/assets/docs/assets/js/240a0364.7eac6021.js +1 -0
  48. solace_agent_mesh/assets/docs/assets/js/2e32b5e0.33f5d75b.js +1 -0
  49. solace_agent_mesh/assets/docs/assets/js/341393d4.0fac2613.js +1 -0
  50. solace_agent_mesh/assets/docs/assets/js/{3624.b524e433.js → 3624.0eaa1fd0.js} +1 -1
  51. solace_agent_mesh/assets/docs/assets/js/3a6c6137.f5940cfa.js +1 -0
  52. solace_agent_mesh/assets/docs/assets/js/3ac1795d.76654dd9.js +1 -0
  53. solace_agent_mesh/assets/docs/assets/js/3ff0015d.2be20244.js +1 -0
  54. solace_agent_mesh/assets/docs/assets/js/509e993c.4c7a1a6d.js +1 -0
  55. solace_agent_mesh/assets/docs/assets/js/547e15cc.2cbb060a.js +1 -0
  56. solace_agent_mesh/assets/docs/assets/js/55b7b518.f2b1d1ba.js +1 -0
  57. solace_agent_mesh/assets/docs/assets/js/5c2bd65f.e49689dd.js +1 -0
  58. solace_agent_mesh/assets/docs/assets/js/6063ff4c.ef84f702.js +1 -0
  59. solace_agent_mesh/assets/docs/assets/js/631738c7.a8b1ef8b.js +1 -0
  60. solace_agent_mesh/assets/docs/assets/js/6a520c9d.ba015d81.js +1 -0
  61. solace_agent_mesh/assets/docs/assets/js/6ad8f0bd.39d5851d.js +1 -0
  62. solace_agent_mesh/assets/docs/assets/js/6d84eae0.4a5fbf39.js +1 -0
  63. solace_agent_mesh/assets/docs/assets/js/6fdfefc7.99de744e.js +1 -0
  64. solace_agent_mesh/assets/docs/assets/js/71da7b71.804d6567.js +1 -0
  65. solace_agent_mesh/assets/docs/assets/js/722f809d.965da774.js +1 -0
  66. solace_agent_mesh/assets/docs/assets/js/742f027b.46c07808.js +1 -0
  67. solace_agent_mesh/assets/docs/assets/js/77cf947d.64c9bd6c.js +1 -0
  68. solace_agent_mesh/assets/docs/assets/js/8024126c.56e59919.js +1 -0
  69. solace_agent_mesh/assets/docs/assets/js/81a99df0.07034dd9.js +1 -0
  70. solace_agent_mesh/assets/docs/assets/js/82fbfb93.139a1a1f.js +1 -0
  71. solace_agent_mesh/assets/docs/assets/js/{8591.d7c16be6.js → 8591.5d015485.js} +2 -2
  72. solace_agent_mesh/assets/docs/assets/js/{8731.49e930c2.js → 8731.6c1dbf0c.js} +1 -1
  73. solace_agent_mesh/assets/docs/assets/js/945fb41e.6f4cdffd.js +1 -0
  74. solace_agent_mesh/assets/docs/assets/js/94e8668d.b5ddb7a1.js +1 -0
  75. solace_agent_mesh/assets/docs/assets/js/9bb13469.dd1c9b54.js +1 -0
  76. solace_agent_mesh/assets/docs/assets/js/9e9d0a82.dd810042.js +1 -0
  77. solace_agent_mesh/assets/docs/assets/js/ab9708a8.3e6dd091.js +1 -0
  78. solace_agent_mesh/assets/docs/assets/js/ad71b5ed.60668e9e.js +1 -0
  79. solace_agent_mesh/assets/docs/assets/js/c198a0dc.8f31f867.js +1 -0
  80. solace_agent_mesh/assets/docs/assets/js/c93cbaa0.eaff365e.js +1 -0
  81. solace_agent_mesh/assets/docs/assets/js/da0b5bad.9d369087.js +1 -0
  82. solace_agent_mesh/assets/docs/assets/js/db924877.cbc66f02.js +1 -0
  83. solace_agent_mesh/assets/docs/assets/js/dd817ffc.0aa9630a.js +1 -0
  84. solace_agent_mesh/assets/docs/assets/js/dd81e2b8.d590bc9e.js +1 -0
  85. solace_agent_mesh/assets/docs/assets/js/de5f4c65.e8241890.js +1 -0
  86. solace_agent_mesh/assets/docs/assets/js/de915948.139b4b9c.js +1 -0
  87. solace_agent_mesh/assets/docs/assets/js/e3d9abda.2b916f9e.js +1 -0
  88. solace_agent_mesh/assets/docs/assets/js/e6f9706b.582a78ca.js +1 -0
  89. solace_agent_mesh/assets/docs/assets/js/e92d0134.cf6d6522.js +1 -0
  90. solace_agent_mesh/assets/docs/assets/js/f284c35a.5766a13d.js +1 -0
  91. solace_agent_mesh/assets/docs/assets/js/ff4d71f2.9c0297a6.js +1 -0
  92. solace_agent_mesh/assets/docs/assets/js/main.bd3c34f3.js +2 -0
  93. solace_agent_mesh/assets/docs/assets/js/runtime~main.18dc45dd.js +1 -0
  94. solace_agent_mesh/assets/docs/docs/documentation/components/agents/index.html +143 -0
  95. solace_agent_mesh/assets/docs/docs/documentation/{user-guide → components}/builtin-tools/artifact-management/index.html +7 -7
  96. solace_agent_mesh/assets/docs/docs/documentation/{user-guide → components}/builtin-tools/audio-tools/index.html +7 -7
  97. solace_agent_mesh/assets/docs/docs/documentation/{user-guide → components}/builtin-tools/data-analysis-tools/index.html +8 -8
  98. solace_agent_mesh/assets/docs/docs/documentation/{user-guide → components}/builtin-tools/embeds/index.html +6 -6
  99. solace_agent_mesh/assets/docs/docs/documentation/{user-guide → components}/builtin-tools/index.html +11 -11
  100. solace_agent_mesh/assets/docs/docs/documentation/{concepts → components}/cli/index.html +25 -25
  101. solace_agent_mesh/assets/docs/docs/documentation/components/gateways/index.html +91 -0
  102. solace_agent_mesh/assets/docs/docs/documentation/components/index.html +29 -0
  103. solace_agent_mesh/assets/docs/docs/documentation/components/orchestrator/index.html +55 -0
  104. solace_agent_mesh/assets/docs/docs/documentation/components/plugins/index.html +110 -0
  105. solace_agent_mesh/assets/docs/docs/documentation/deploying/debugging/index.html +104 -0
  106. solace_agent_mesh/assets/docs/docs/documentation/deploying/deployment-options/index.html +57 -0
  107. solace_agent_mesh/assets/docs/docs/documentation/deploying/index.html +25 -0
  108. solace_agent_mesh/assets/docs/docs/documentation/deploying/observability/index.html +59 -0
  109. solace_agent_mesh/assets/docs/docs/documentation/{user-guide → developing}/create-agents/index.html +113 -152
  110. solace_agent_mesh/assets/docs/docs/documentation/{user-guide → developing}/create-gateways/index.html +9 -9
  111. solace_agent_mesh/assets/docs/docs/documentation/{user-guide → developing}/creating-python-tools/index.html +12 -12
  112. solace_agent_mesh/assets/docs/docs/documentation/developing/creating-service-providers/index.html +54 -0
  113. solace_agent_mesh/assets/docs/docs/documentation/developing/index.html +32 -0
  114. solace_agent_mesh/assets/docs/docs/documentation/developing/structure/index.html +55 -0
  115. solace_agent_mesh/assets/docs/docs/documentation/{tutorials → developing/tutorials}/bedrock-agents/index.html +25 -25
  116. solace_agent_mesh/assets/docs/docs/documentation/{tutorials → developing/tutorials}/custom-agent/index.html +13 -13
  117. solace_agent_mesh/assets/docs/docs/documentation/{tutorials → developing/tutorials}/event-mesh-gateway/index.html +11 -11
  118. solace_agent_mesh/assets/docs/docs/documentation/{tutorials → developing/tutorials}/mcp-integration/index.html +10 -10
  119. solace_agent_mesh/assets/docs/docs/documentation/{tutorials → developing/tutorials}/mongodb-integration/index.html +13 -13
  120. solace_agent_mesh/assets/docs/docs/documentation/{tutorials → developing/tutorials}/rag-integration/index.html +13 -13
  121. solace_agent_mesh/assets/docs/docs/documentation/{tutorials → developing/tutorials}/rest-gateway/index.html +10 -10
  122. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/slack-integration/index.html +72 -0
  123. solace_agent_mesh/assets/docs/docs/documentation/{tutorials → developing/tutorials}/sql-database/index.html +14 -14
  124. solace_agent_mesh/assets/docs/docs/documentation/enterprise/index.html +33 -0
  125. solace_agent_mesh/assets/docs/docs/documentation/enterprise/installation/index.html +83 -0
  126. solace_agent_mesh/assets/docs/docs/documentation/enterprise/rbac-setup-guide/index.html +222 -0
  127. solace_agent_mesh/assets/docs/docs/documentation/enterprise/single-sign-on/index.html +161 -0
  128. solace_agent_mesh/assets/docs/docs/documentation/getting-started/architecture/index.html +75 -0
  129. solace_agent_mesh/assets/docs/docs/documentation/getting-started/index.html +53 -0
  130. solace_agent_mesh/assets/docs/docs/documentation/getting-started/introduction/index.html +35 -100
  131. solace_agent_mesh/assets/docs/docs/documentation/getting-started/try-agent-mesh/index.html +41 -0
  132. solace_agent_mesh/assets/docs/docs/documentation/{getting-started → installing-and-configuring}/configurations/index.html +56 -50
  133. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/index.html +25 -0
  134. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/installation/index.html +76 -0
  135. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/large_language_models/index.html +63 -0
  136. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/run-project/index.html +142 -0
  137. solace_agent_mesh/assets/docs/docs/documentation/migrations/a2a-upgrade/a2a-gateway-upgrade-to-0.3.0/index.html +100 -0
  138. 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
  139. solace_agent_mesh/assets/docs/img/solace-logo.png +0 -0
  140. solace_agent_mesh/assets/docs/lunr-index-1760121512891.json +1 -0
  141. solace_agent_mesh/assets/docs/lunr-index.json +1 -1
  142. solace_agent_mesh/assets/docs/search-doc-1760121512891.json +1 -0
  143. solace_agent_mesh/assets/docs/search-doc.json +1 -1
  144. solace_agent_mesh/assets/docs/sitemap.xml +1 -1
  145. solace_agent_mesh/cli/__init__.py +1 -1
  146. solace_agent_mesh/client/webui/frontend/static/assets/{authCallback-j1LW-wlq.js → authCallback-DwrxZE0E.js} +1 -1
  147. solace_agent_mesh/client/webui/frontend/static/assets/{client-B9p_nFNA.js → client-DarGQzyw.js} +1 -1
  148. solace_agent_mesh/client/webui/frontend/static/assets/main-2nd1gbaH.js +339 -0
  149. solace_agent_mesh/client/webui/frontend/static/assets/main-DoKXctCM.css +1 -0
  150. solace_agent_mesh/client/webui/frontend/static/assets/{vendor-CS5YMf8a.js → vendor-BKIeiHj_.js} +80 -70
  151. solace_agent_mesh/client/webui/frontend/static/auth-callback.html +3 -3
  152. solace_agent_mesh/client/webui/frontend/static/index.html +4 -4
  153. solace_agent_mesh/common/a2a/a2a_llm.txt +1 -1
  154. solace_agent_mesh/common/a2a/a2a_llm_detail.txt +193 -0
  155. solace_agent_mesh/common/a2a/artifact.py +2 -1
  156. solace_agent_mesh/common/a2a/protocol.py +3 -2
  157. solace_agent_mesh/common/a2a/translation.py +3 -1
  158. solace_agent_mesh/common/a2a_spec/a2a_spec_llm.txt +1 -1
  159. solace_agent_mesh/common/a2a_spec/a2a_spec_llm_detail.txt +736 -0
  160. solace_agent_mesh/common/a2a_spec/schemas/llm_invocation.json +23 -0
  161. solace_agent_mesh/common/a2a_spec/schemas/schemas_llm.txt +93 -15
  162. solace_agent_mesh/common/a2a_spec/schemas/tool_result.json +23 -0
  163. solace_agent_mesh/common/common_llm.txt +24 -39
  164. solace_agent_mesh/common/common_llm_detail.txt +2562 -0
  165. solace_agent_mesh/common/data_parts.py +9 -1
  166. solace_agent_mesh/common/middleware/config_resolver.py +3 -1
  167. solace_agent_mesh/common/middleware/middleware_llm_detail.txt +185 -0
  168. solace_agent_mesh/common/middleware/registry.py +3 -1
  169. solace_agent_mesh/common/sac/sac_llm.txt +1 -1
  170. solace_agent_mesh/common/sac/sac_llm_detail.txt +82 -0
  171. solace_agent_mesh/common/sac/sam_component_base.py +2 -1
  172. solace_agent_mesh/common/sam_events/event_service.py +3 -2
  173. solace_agent_mesh/common/sam_events/sam_events_llm.txt +104 -0
  174. solace_agent_mesh/common/sam_events/sam_events_llm_detail.txt +115 -0
  175. solace_agent_mesh/common/services/employee_service.py +3 -1
  176. solace_agent_mesh/common/services/identity_service.py +2 -1
  177. solace_agent_mesh/common/services/providers/local_file_identity_service.py +2 -1
  178. solace_agent_mesh/common/services/services_llm.txt +57 -6
  179. solace_agent_mesh/common/services/services_llm_detail.txt +459 -0
  180. solace_agent_mesh/common/utils/artifact_utils.py +3 -1
  181. solace_agent_mesh/common/utils/asyncio_macos_fix.py +3 -1
  182. solace_agent_mesh/common/utils/embeds/converter.py +3 -1
  183. solace_agent_mesh/common/utils/embeds/embeds_llm.txt +1 -1
  184. solace_agent_mesh/common/utils/embeds/evaluators.py +2 -1
  185. solace_agent_mesh/common/utils/embeds/modifiers.py +3 -2
  186. solace_agent_mesh/common/utils/embeds/resolver.py +2 -1
  187. solace_agent_mesh/common/utils/initializer.py +3 -1
  188. solace_agent_mesh/common/utils/message_utils.py +2 -1
  189. solace_agent_mesh/common/utils/push_notification_auth.py +3 -2
  190. solace_agent_mesh/common/utils/utils_llm.txt +75 -87
  191. solace_agent_mesh/common/utils/utils_llm_detail.txt +572 -0
  192. solace_agent_mesh/core_a2a/core_a2a_llm_detail.txt +101 -0
  193. solace_agent_mesh/core_a2a/service.py +2 -2
  194. solace_agent_mesh/gateway/base/app.py +3 -2
  195. solace_agent_mesh/gateway/base/base_llm.txt +1 -1
  196. solace_agent_mesh/gateway/base/base_llm_detail.txt +235 -0
  197. solace_agent_mesh/gateway/base/component.py +3 -1
  198. solace_agent_mesh/gateway/base/task_context.py +2 -1
  199. solace_agent_mesh/gateway/gateway_llm.txt +242 -235
  200. solace_agent_mesh/gateway/gateway_llm_detail.txt +3885 -0
  201. solace_agent_mesh/gateway/http_sse/alembic/alembic_llm.txt +295 -0
  202. solace_agent_mesh/gateway/http_sse/alembic/env.py +10 -1
  203. solace_agent_mesh/gateway/http_sse/alembic/versions/20251006_98882922fa59_add_tasks_events_feedback_chat_tasks.py +190 -0
  204. solace_agent_mesh/gateway/http_sse/alembic/versions/versions_llm.txt +155 -0
  205. solace_agent_mesh/gateway/http_sse/alembic.ini +1 -1
  206. solace_agent_mesh/gateway/http_sse/app.py +150 -3
  207. solace_agent_mesh/gateway/http_sse/component.py +372 -61
  208. solace_agent_mesh/gateway/http_sse/components/components_llm.txt +46 -6
  209. solace_agent_mesh/gateway/http_sse/components/task_logger_forwarder.py +109 -0
  210. solace_agent_mesh/gateway/http_sse/components/visualization_forwarder_component.py +4 -2
  211. solace_agent_mesh/gateway/http_sse/dependencies.py +119 -27
  212. solace_agent_mesh/gateway/http_sse/http_sse_llm.txt +172 -172
  213. solace_agent_mesh/gateway/http_sse/http_sse_llm_detail.txt +3278 -0
  214. solace_agent_mesh/gateway/http_sse/main.py +149 -42
  215. solace_agent_mesh/gateway/http_sse/repository/__init__.py +3 -12
  216. solace_agent_mesh/gateway/http_sse/repository/chat_task_repository.py +103 -0
  217. solace_agent_mesh/gateway/http_sse/repository/entities/__init__.py +5 -3
  218. solace_agent_mesh/gateway/http_sse/repository/entities/chat_task.py +75 -0
  219. solace_agent_mesh/gateway/http_sse/repository/entities/entities_llm.txt +263 -0
  220. solace_agent_mesh/gateway/http_sse/repository/entities/feedback.py +20 -0
  221. solace_agent_mesh/gateway/http_sse/repository/entities/session_history.py +0 -16
  222. solace_agent_mesh/gateway/http_sse/repository/entities/task.py +25 -0
  223. solace_agent_mesh/gateway/http_sse/repository/entities/task_event.py +21 -0
  224. solace_agent_mesh/gateway/http_sse/repository/feedback_repository.py +81 -0
  225. solace_agent_mesh/gateway/http_sse/repository/interfaces.py +73 -18
  226. solace_agent_mesh/gateway/http_sse/repository/models/__init__.py +9 -5
  227. solace_agent_mesh/gateway/http_sse/repository/models/chat_task_model.py +31 -0
  228. solace_agent_mesh/gateway/http_sse/repository/models/feedback_model.py +21 -0
  229. solace_agent_mesh/gateway/http_sse/repository/models/models_llm.txt +266 -0
  230. solace_agent_mesh/gateway/http_sse/repository/models/session_model.py +3 -3
  231. solace_agent_mesh/gateway/http_sse/repository/models/task_event_model.py +25 -0
  232. solace_agent_mesh/gateway/http_sse/repository/models/task_model.py +32 -0
  233. solace_agent_mesh/gateway/http_sse/repository/repository_llm.txt +340 -0
  234. solace_agent_mesh/gateway/http_sse/repository/session_repository.py +4 -53
  235. solace_agent_mesh/gateway/http_sse/repository/task_repository.py +173 -0
  236. solace_agent_mesh/gateway/http_sse/routers/agent_cards.py +3 -2
  237. solace_agent_mesh/gateway/http_sse/routers/artifacts.py +3 -3
  238. solace_agent_mesh/gateway/http_sse/routers/auth.py +3 -1
  239. solace_agent_mesh/gateway/http_sse/routers/config.py +29 -6
  240. solace_agent_mesh/gateway/http_sse/routers/dto/dto_llm.txt +346 -0
  241. solace_agent_mesh/gateway/http_sse/routers/dto/requests/__init__.py +3 -3
  242. solace_agent_mesh/gateway/http_sse/routers/dto/requests/requests_llm.txt +83 -0
  243. solace_agent_mesh/gateway/http_sse/routers/dto/requests/session_requests.py +2 -10
  244. solace_agent_mesh/gateway/http_sse/routers/dto/requests/task_requests.py +58 -0
  245. solace_agent_mesh/gateway/http_sse/routers/dto/responses/__init__.py +5 -3
  246. solace_agent_mesh/gateway/http_sse/routers/dto/responses/responses_llm.txt +107 -0
  247. solace_agent_mesh/gateway/http_sse/routers/dto/responses/session_responses.py +1 -15
  248. solace_agent_mesh/gateway/http_sse/routers/dto/responses/task_responses.py +30 -0
  249. solace_agent_mesh/gateway/http_sse/routers/feedback.py +37 -0
  250. solace_agent_mesh/gateway/http_sse/routers/people.py +3 -1
  251. solace_agent_mesh/gateway/http_sse/routers/routers_llm.txt +255 -204
  252. solace_agent_mesh/gateway/http_sse/routers/sessions.py +223 -41
  253. solace_agent_mesh/gateway/http_sse/routers/sse.py +3 -2
  254. solace_agent_mesh/gateway/http_sse/routers/tasks.py +170 -43
  255. solace_agent_mesh/gateway/http_sse/routers/users.py +3 -1
  256. solace_agent_mesh/gateway/http_sse/routers/visualization.py +2 -1
  257. solace_agent_mesh/gateway/http_sse/services/agent_card_service.py +3 -1
  258. solace_agent_mesh/gateway/http_sse/services/data_retention_service.py +273 -0
  259. solace_agent_mesh/gateway/http_sse/services/feedback_service.py +242 -0
  260. solace_agent_mesh/gateway/http_sse/services/people_service.py +2 -82
  261. solace_agent_mesh/gateway/http_sse/services/services_llm.txt +177 -13
  262. solace_agent_mesh/gateway/http_sse/services/session_service.py +154 -85
  263. solace_agent_mesh/gateway/http_sse/services/task_logger_service.py +318 -0
  264. solace_agent_mesh/gateway/http_sse/services/task_service.py +3 -2
  265. solace_agent_mesh/gateway/http_sse/session_manager.py +2 -1
  266. solace_agent_mesh/gateway/http_sse/shared/exception_handlers.py +25 -14
  267. solace_agent_mesh/gateway/http_sse/shared/shared_llm.txt +285 -0
  268. solace_agent_mesh/gateway/http_sse/shared/types.py +7 -0
  269. solace_agent_mesh/gateway/http_sse/sse_event_buffer.py +2 -1
  270. solace_agent_mesh/gateway/http_sse/sse_manager.py +2 -2
  271. solace_agent_mesh/gateway/http_sse/utils/__init__.py +1 -0
  272. solace_agent_mesh/gateway/http_sse/utils/stim_utils.py +32 -0
  273. solace_agent_mesh/gateway/http_sse/utils/utils_llm.txt +47 -0
  274. solace_agent_mesh/solace_agent_mesh_llm.txt +1 -1
  275. solace_agent_mesh/solace_agent_mesh_llm_detail.txt +8599 -0
  276. solace_agent_mesh/templates/gateway_app_template.py +4 -2
  277. solace_agent_mesh/templates/gateway_component_template.py +3 -1
  278. solace_agent_mesh/templates/logging_config_template.ini +22 -45
  279. solace_agent_mesh/templates/plugin_tools_template.py +2 -2
  280. {solace_agent_mesh-1.4.12.dist-info → solace_agent_mesh-1.5.1.dist-info}/METADATA +2 -2
  281. solace_agent_mesh-1.5.1.dist-info/RECORD +504 -0
  282. solace_agent_mesh/agent/adk/invocation_monitor.py +0 -295
  283. solace_agent_mesh/assets/docs/assets/images/sac-flows-80d5b603c6aafd33e87945680ce0abf3.png +0 -0
  284. solace_agent_mesh/assets/docs/assets/images/sac_parts_of_a_component-cb3d0424b1d0c17734c5435cca6b4082.png +0 -0
  285. solace_agent_mesh/assets/docs/assets/js/04989206.a248f00c.js +0 -1
  286. solace_agent_mesh/assets/docs/assets/js/0e682baa.d54b8668.js +0 -1
  287. solace_agent_mesh/assets/docs/assets/js/1023fc19.8a8a9309.js +0 -1
  288. solace_agent_mesh/assets/docs/assets/js/1523c6b4.2645ef68.js +0 -1
  289. solace_agent_mesh/assets/docs/assets/js/166ab619.e27886d9.js +0 -1
  290. solace_agent_mesh/assets/docs/assets/js/1c6e87d2.e056b7e0.js +0 -1
  291. solace_agent_mesh/assets/docs/assets/js/21ceee5f.3bf39250.js +0 -1
  292. solace_agent_mesh/assets/docs/assets/js/2a9cab12.2afaee76.js +0 -1
  293. solace_agent_mesh/assets/docs/assets/js/332e10b5.f7629851.js +0 -1
  294. solace_agent_mesh/assets/docs/assets/js/3d406171.5560fdf9.js +0 -1
  295. solace_agent_mesh/assets/docs/assets/js/42b3f8d8.508ae8db.js +0 -1
  296. solace_agent_mesh/assets/docs/assets/js/442a8107.b5c2532a.js +0 -1
  297. solace_agent_mesh/assets/docs/assets/js/453a82a6.3c6bb61d.js +0 -1
  298. solace_agent_mesh/assets/docs/assets/js/483cef9a.4736f2d8.js +0 -1
  299. solace_agent_mesh/assets/docs/assets/js/4c2787c2.c1290a40.js +0 -1
  300. solace_agent_mesh/assets/docs/assets/js/55f47984.bcd00a86.js +0 -1
  301. solace_agent_mesh/assets/docs/assets/js/5b4258a4.fdfd2325.js +0 -1
  302. solace_agent_mesh/assets/docs/assets/js/664b740a.ba305a89.js +0 -1
  303. solace_agent_mesh/assets/docs/assets/js/75384d09.c19e8b51.js +0 -1
  304. solace_agent_mesh/assets/docs/assets/js/768e31b0.9abcdc48.js +0 -1
  305. solace_agent_mesh/assets/docs/assets/js/85387663.be2bc838.js +0 -1
  306. solace_agent_mesh/assets/docs/assets/js/945fb41e.16e00776.js +0 -1
  307. solace_agent_mesh/assets/docs/assets/js/9a09e75d.92de8cf5.js +0 -1
  308. solace_agent_mesh/assets/docs/assets/js/9eff14a2.d62aad71.js +0 -1
  309. solace_agent_mesh/assets/docs/assets/js/a12a4955.25fbed32.js +0 -1
  310. solace_agent_mesh/assets/docs/assets/js/a3a92b25.af35e313.js +0 -1
  311. solace_agent_mesh/assets/docs/assets/js/aba87c2f.4ddf32f2.js +0 -1
  312. solace_agent_mesh/assets/docs/assets/js/ae0e903d.5fe5203f.js +0 -1
  313. solace_agent_mesh/assets/docs/assets/js/ae4415af.16cc58d3.js +0 -1
  314. solace_agent_mesh/assets/docs/assets/js/bac0be12.17de4316.js +0 -1
  315. solace_agent_mesh/assets/docs/assets/js/c2c06897.87cb1f47.js +0 -1
  316. solace_agent_mesh/assets/docs/assets/js/c835a94d.ce21f0bf.js +0 -1
  317. solace_agent_mesh/assets/docs/assets/js/cc969b05.feef7dcc.js +0 -1
  318. solace_agent_mesh/assets/docs/assets/js/cd3d4052.a19e7d78.js +0 -1
  319. solace_agent_mesh/assets/docs/assets/js/ced92a13.fb92e7ca.js +0 -1
  320. solace_agent_mesh/assets/docs/assets/js/cee5d587.47904f5e.js +0 -1
  321. solace_agent_mesh/assets/docs/assets/js/d6a81ee7.829198f1.js +0 -1
  322. solace_agent_mesh/assets/docs/assets/js/f284c35a.ed8dd236.js +0 -1
  323. solace_agent_mesh/assets/docs/assets/js/f897a61a.126663fe.js +0 -1
  324. solace_agent_mesh/assets/docs/assets/js/fbfa3e75.e144b16c.js +0 -1
  325. solace_agent_mesh/assets/docs/assets/js/main.f67fc9f4.js +0 -2
  326. solace_agent_mesh/assets/docs/assets/js/runtime~main.40527046.js +0 -1
  327. solace_agent_mesh/assets/docs/docs/documentation/Enterprise/installation/index.html +0 -46
  328. solace_agent_mesh/assets/docs/docs/documentation/Enterprise/rbac-setup-guilde/index.html +0 -201
  329. solace_agent_mesh/assets/docs/docs/documentation/Enterprise/single-sign-on/index.html +0 -25
  330. 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
  331. solace_agent_mesh/assets/docs/docs/documentation/concepts/agents/index.html +0 -144
  332. solace_agent_mesh/assets/docs/docs/documentation/concepts/architecture/index.html +0 -91
  333. solace_agent_mesh/assets/docs/docs/documentation/concepts/gateways/index.html +0 -91
  334. solace_agent_mesh/assets/docs/docs/documentation/concepts/orchestrator/index.html +0 -55
  335. solace_agent_mesh/assets/docs/docs/documentation/concepts/plugins/index.html +0 -111
  336. solace_agent_mesh/assets/docs/docs/documentation/deployment/debugging/index.html +0 -77
  337. solace_agent_mesh/assets/docs/docs/documentation/deployment/deploy/index.html +0 -48
  338. solace_agent_mesh/assets/docs/docs/documentation/deployment/observability/index.html +0 -54
  339. solace_agent_mesh/assets/docs/docs/documentation/getting-started/component-overview/index.html +0 -45
  340. solace_agent_mesh/assets/docs/docs/documentation/getting-started/configurations/litellm_models/index.html +0 -49
  341. solace_agent_mesh/assets/docs/docs/documentation/getting-started/installation/index.html +0 -76
  342. solace_agent_mesh/assets/docs/docs/documentation/getting-started/quick-start/index.html +0 -73
  343. solace_agent_mesh/assets/docs/docs/documentation/tutorials/slack-integration/index.html +0 -72
  344. solace_agent_mesh/assets/docs/docs/documentation/user-guide/creating-service-providers/index.html +0 -54
  345. solace_agent_mesh/assets/docs/docs/documentation/user-guide/solace-ai-connector/index.html +0 -69
  346. solace_agent_mesh/assets/docs/docs/documentation/user-guide/structure/index.html +0 -59
  347. solace_agent_mesh/assets/docs/lunr-index-1759936913198.json +0 -1
  348. solace_agent_mesh/assets/docs/search-doc-1759936913198.json +0 -1
  349. solace_agent_mesh/client/webui/frontend/static/assets/main-ChRwcV89.css +0 -1
  350. solace_agent_mesh/client/webui/frontend/static/assets/main-DnnE01OM.js +0 -339
  351. solace_agent_mesh/gateway/http_sse/repository/entities/message.py +0 -41
  352. solace_agent_mesh/gateway/http_sse/repository/message_repository.py +0 -84
  353. solace_agent_mesh/gateway/http_sse/repository/models/message_model.py +0 -45
  354. solace_agent_mesh-1.4.12.dist-info/RECORD +0 -448
  355. /solace_agent_mesh/assets/docs/assets/js/{8591.d7c16be6.js.LICENSE.txt → 8591.5d015485.js.LICENSE.txt} +0 -0
  356. /solace_agent_mesh/assets/docs/assets/js/{main.f67fc9f4.js.LICENSE.txt → main.bd3c34f3.js.LICENSE.txt} +0 -0
  357. {solace_agent_mesh-1.4.12.dist-info → solace_agent_mesh-1.5.1.dist-info}/WHEEL +0 -0
  358. {solace_agent_mesh-1.4.12.dist-info → solace_agent_mesh-1.5.1.dist-info}/entry_points.txt +0 -0
  359. {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.responses.session_responses import MessageResponse, SessionResponse
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="Session not found."
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="Session not found."
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.get("/sessions/{session_id}/messages")
118
- async def get_session_history(
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 fetch history for session_id: %s", user_id, session_id
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="Session not found."
146
+ status_code=status.HTTP_404_NOT_FOUND, detail=SESSION_NOT_FOUND_MSG
137
147
  )
138
148
 
139
- request_dto = GetSessionHistoryRequest(session_id=session_id, user_id=user_id)
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
- history_domain = session_service.get_session_history(
156
+ # Save the task - pass strings directly
157
+ saved_task = session_service.save_task(
142
158
  db=db,
143
- session_id=request_dto.session_id,
144
- user_id=request_dto.user_id,
145
- pagination=request_dto.pagination,
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
- if not history_domain:
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="Session not found."
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. Fetching history for session_id: %s",
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
- message_responses = []
160
- for message_domain in history_domain.messages:
161
- message_response = MessageResponse(
162
- id=message_domain.id,
163
- session_id=message_domain.session_id,
164
- message=message_domain.message,
165
- sender_type=message_domain.sender_type,
166
- sender_name=message_domain.sender_name,
167
- message_type=message_domain.message_type,
168
- created_time=message_domain.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
- message_responses.append(message_response)
258
+ task_responses.append(task_response)
171
259
 
172
- return message_responses
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="Session not found."
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="Session not found."
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="Session not found."
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(status_code=status.HTTP_400_BAD_REQUEST, detail=str(e))
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