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
@@ -40,15 +40,13 @@ def create_error_response(
40
40
  async def validation_error_handler(
41
41
  request: Request, exc: ValidationError
42
42
  ) -> JSONResponse:
43
- """Handle domain validation errors - 400 Bad Request."""
43
+ """Handle domain validation errors - 422 Unprocessable Entity."""
44
44
  if exc.validation_details:
45
- # Validation errors with field details
46
45
  error_dto = EventErrorDTO.validation_error(exc.message, exc.validation_details)
47
46
  else:
48
- # General bad request
49
47
  error_dto = EventErrorDTO.create("bad request" if not exc.message else exc.message)
50
48
 
51
- return JSONResponse(status_code=status.HTTP_400_BAD_REQUEST, content=error_dto.model_dump())
49
+ return JSONResponse(status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, content=error_dto.model_dump())
52
50
 
53
51
 
54
52
  async def entity_not_found_handler(
@@ -72,9 +70,9 @@ async def entity_already_exists_handler(
72
70
  async def business_rule_violation_handler(
73
71
  request: Request, exc: BusinessRuleViolationError
74
72
  ) -> JSONResponse:
75
- """Handle business rule violations - 400 Bad Request."""
73
+ """Handle business rule violations - 422 Unprocessable Entity."""
76
74
  error_dto = EventErrorDTO.create(exc.message)
77
- return JSONResponse(status_code=status.HTTP_400_BAD_REQUEST, content=error_dto.model_dump())
75
+ return JSONResponse(status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, content=error_dto.model_dump())
78
76
 
79
77
 
80
78
  async def configuration_error_handler(
@@ -88,11 +86,11 @@ async def configuration_error_handler(
88
86
  async def data_integrity_error_handler(
89
87
  request: Request, exc: DataIntegrityError
90
88
  ) -> JSONResponse:
91
- """Handle data integrity errors - 400 Bad Request."""
89
+ """Handle data integrity errors - 422 Unprocessable Entity."""
92
90
  # Format: "An entity of type applicationDomain was passed in an invalid format"
93
91
  message = f"An entity of type {exc.entity_type} was passed in an invalid format" if hasattr(exc, 'entity_type') else "bad request"
94
92
  error_dto = EventErrorDTO.create(message)
95
- return JSONResponse(status_code=status.HTTP_400_BAD_REQUEST, content=error_dto.model_dump())
93
+ return JSONResponse(status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, content=error_dto.model_dump())
96
94
 
97
95
 
98
96
  async def external_service_error_handler(
@@ -137,8 +135,7 @@ async def http_exception_handler(
137
135
  async def request_validation_exception_handler(
138
136
  request: Request, exc: RequestValidationError
139
137
  ) -> JSONResponse:
140
- """Handle FastAPI request validation errors - 400 Bad Request."""
141
- # Convert Pydantic validation errors to our format
138
+ """Handle FastAPI request validation errors - 422 Unprocessable Entity."""
142
139
  validation_details = {}
143
140
  for error in exc.errors():
144
141
  field_path = ".".join(str(x) for x in error["loc"] if x != "body")
@@ -147,14 +144,27 @@ async def request_validation_exception_handler(
147
144
  validation_details[field_path].append(error["msg"])
148
145
 
149
146
  if validation_details:
150
- # Field-specific validation errors
151
147
  message = "body must not be empty" if not validation_details else "Validation error"
152
148
  error_dto = EventErrorDTO.validation_error(message, validation_details)
153
149
  else:
154
- # General bad request
155
150
  error_dto = EventErrorDTO.create("bad request")
156
151
 
157
- return JSONResponse(status_code=status.HTTP_400_BAD_REQUEST, content=error_dto.model_dump())
152
+ return JSONResponse(status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, content=error_dto.model_dump())
153
+
154
+
155
+ async def pydantic_validation_exception_handler(
156
+ request: Request, exc: PydanticValidationError
157
+ ) -> JSONResponse:
158
+ """Handle Pydantic validation errors raised in service layer - 422 Unprocessable Entity."""
159
+ validation_details = {}
160
+ for error in exc.errors():
161
+ field_path = ".".join(str(loc) for loc in error["loc"])
162
+ if field_path not in validation_details:
163
+ validation_details[field_path] = []
164
+ validation_details[field_path].append(error["msg"])
165
+
166
+ error_dto = EventErrorDTO.validation_error("Validation failed", validation_details)
167
+ return JSONResponse(status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, content=error_dto.model_dump())
158
168
 
159
169
 
160
170
  def register_exception_handlers(app):
@@ -189,4 +199,5 @@ def register_exception_handlers(app):
189
199
  # FastAPI built-in exception handlers
190
200
  app.add_exception_handler(HTTPException, http_exception_handler)
191
201
  app.add_exception_handler(StarletteHTTPException, http_exception_handler)
192
- app.add_exception_handler(RequestValidationError, request_validation_exception_handler)
202
+ app.add_exception_handler(RequestValidationError, request_validation_exception_handler)
203
+ app.add_exception_handler(PydanticValidationError, pydantic_validation_exception_handler)
@@ -0,0 +1,285 @@
1
+ # DEVELOPER GUIDE: shared
2
+
3
+ ## Quick Summary
4
+ The `shared` directory contains common utilities, constants, enums, types, and exception handling used across all layers of the HTTP SSE gateway. It provides authentication helpers, timestamp utilities, standardized exception handling, database utilities, pagination support, and response formatting for consistent API behavior.
5
+
6
+ ## Files Overview
7
+ - `__init__.py` - Central exports for all shared utilities and components
8
+ - `auth_utils.py` - Authentication utilities for FastAPI applications
9
+ - `timestamp_utils.py` - Epoch timestamp utilities matching Java backend patterns
10
+ - `exceptions.py` - Generic web exceptions for HTTP/REST APIs
11
+ - `error_dto.py` - Standardized error response DTOs
12
+ - `exception_handlers.py` - FastAPI exception handlers for consistent HTTP error responses
13
+ - `base_repository.py` - Base repository classes with proper transaction management
14
+ - `pagination.py` - Pagination utilities for API responses
15
+ - `database_exceptions.py` - Database exception handling and conversion
16
+ - `database_helpers.py` - Database utility functions and custom types
17
+ - `response_utils.py` - Standardized response formatting utilities
18
+ - `enums.py` - Enumerations for message types, task status, and validation errors
19
+ - `types.py` - Custom types and type aliases for better type safety
20
+ - `utils.py` - Generic utility functions
21
+
22
+ ## Developer API Reference
23
+
24
+ ### auth_utils.py
25
+ **Purpose:** Provides authentication utilities for FastAPI controllers
26
+ **Import:** `from solace_agent_mesh.gateway.http_sse.shared import get_current_user`
27
+
28
+ **Functions:**
29
+ - `get_current_user(request: FastAPIRequest) -> dict` - Extracts authenticated user from request state, returns user info or anonymous default
30
+
31
+ **Usage Examples:**
32
+ ```python
33
+ from fastapi import Depends
34
+ from solace_agent_mesh.gateway.http_sse.shared import get_current_user
35
+
36
+ @app.get("/protected")
37
+ async def protected_endpoint(user: dict = Depends(get_current_user)):
38
+ return {"user_id": user["id"], "name": user["name"]}
39
+ ```
40
+
41
+ ### timestamp_utils.py
42
+ **Purpose:** Provides epoch timestamp utilities for database portability and timezone handling
43
+ **Import:** `from solace_agent_mesh.gateway.http_sse.shared import now_epoch_ms, epoch_ms_to_iso8601, iso8601_to_epoch_ms`
44
+
45
+ **Functions:**
46
+ - `now_epoch_ms() -> int` - Get current time as milliseconds since epoch
47
+ - `epoch_ms_to_iso8601(epoch_ms: int) -> str` - Convert epoch milliseconds to ISO 8601 string
48
+ - `iso8601_to_epoch_ms(iso8601_string: str) -> int` - Convert ISO 8601 string to epoch milliseconds
49
+ - `datetime_to_epoch_ms(dt: datetime) -> int` - Convert datetime object to epoch milliseconds
50
+ - `epoch_ms_to_datetime(epoch_ms: int) -> datetime` - Convert epoch milliseconds to datetime object
51
+ - `validate_epoch_ms(epoch_ms: int | None) -> bool` - Validate that an epoch milliseconds value is reasonable
52
+
53
+ **Usage Examples:**
54
+ ```python
55
+ from solace_agent_mesh.gateway.http_sse.shared import (
56
+ now_epoch_ms, epoch_ms_to_iso8601, iso8601_to_epoch_ms
57
+ )
58
+
59
+ # Get current timestamp for database storage
60
+ created_time = now_epoch_ms()
61
+
62
+ # Convert for API response
63
+ iso_string = epoch_ms_to_iso8601(created_time)
64
+
65
+ # Parse from API request
66
+ timestamp = iso8601_to_epoch_ms("2024-01-01T00:00:00Z")
67
+ ```
68
+
69
+ ### exceptions.py
70
+ **Purpose:** Generic web exceptions for HTTP/REST APIs
71
+ **Import:** `from solace_agent_mesh.gateway.http_sse.shared import ValidationError, EntityNotFoundError, EntityAlreadyExistsError`
72
+
73
+ **Classes:**
74
+ - `WebUIBackendException(message: str, details: Optional[Dict[str, Any]] = None)` - Base exception for all web UI backend errors
75
+ - `ValidationError(message: str, validation_details: Optional[Dict[str, List[str]]] = None, entity_type: Optional[str] = None, entity_identifier: Optional[str] = None)` - Exception for validation errors with field-level details
76
+ - `EntityNotFoundError(entity_type: str, entity_id: str)` - Generic exception for when an entity is not found
77
+ - `EntityAlreadyExistsError(entity_type: str, identifier: str, value: Any = None)` - Exception for when an entity already exists
78
+ - `BusinessRuleViolationError(rule: str, message: str)` - Exception for business rule violations
79
+ - `ConfigurationError(component: str, message: str)` - Exception for configuration-related errors
80
+ - `DataIntegrityError(constraint: str, message: str)` - Exception for data integrity violations
81
+ - `ExternalServiceError(service: str, message: str, status_code: Optional[int] = None)` - Exception for external service communication errors
82
+ - `ValidationErrorBuilder()` - Builder for constructing ValidationError instances with fluent API
83
+
84
+ **Usage Examples:**
85
+ ```python
86
+ from solace_agent_mesh.gateway.http_sse.shared import (
87
+ ValidationError, EntityNotFoundError, ValidationErrorBuilder
88
+ )
89
+
90
+ # Simple validation error
91
+ raise ValidationError("Invalid input data")
92
+
93
+ # Entity not found
94
+ raise EntityNotFoundError("User", "123")
95
+
96
+ # Complex validation with builder
97
+ error = ValidationError.builder() \
98
+ .message("Invalid user data") \
99
+ .validation_detail("email", ["Invalid email format"]) \
100
+ .entity_type("User") \
101
+ .build()
102
+ ```
103
+
104
+ ### error_dto.py
105
+ **Purpose:** Standardized error response DTOs for HTTP APIs
106
+ **Import:** `from solace_agent_mesh.gateway.http_sse.shared import EventErrorDTO`
107
+
108
+ **Classes:**
109
+ - `EventErrorDTO(message: str, validationDetails: Optional[Dict[str, List[str]]] = None)` - Simplified and standardized error response format
110
+ - `create(message: str, validation_details: Optional[Dict[str, List[str]]] = None) -> EventErrorDTO` - Create a new EventErrorDTO
111
+ - `not_found(entity_type: str, entity_id: str) -> EventErrorDTO` - Create a 404 Not Found error
112
+ - `validation_error(message: str, validation_details: Dict[str, List[str]]) -> EventErrorDTO` - Create a validation error
113
+
114
+ **Usage Examples:**
115
+ ```python
116
+ from solace_agent_mesh.gateway.http_sse.shared import EventErrorDTO
117
+
118
+ # Simple error
119
+ error = EventErrorDTO.create("Something went wrong")
120
+
121
+ # Not found error
122
+ error = EventErrorDTO.not_found("User", "123")
123
+
124
+ # Validation error
125
+ error = EventErrorDTO.validation_error(
126
+ "Invalid data",
127
+ {"email": ["Invalid format"], "age": ["Must be positive"]}
128
+ )
129
+ ```
130
+
131
+ ### exception_handlers.py
132
+ **Purpose:** FastAPI exception handlers for consistent HTTP error responses
133
+ **Import:** `from solace_agent_mesh.gateway.http_sse.shared import register_exception_handlers`
134
+
135
+ **Functions:**
136
+ - `register_exception_handlers(app)` - Register all exception handlers with a FastAPI app
137
+ - `create_error_response(status_code: int, message: str, validation_details: dict = None) -> JSONResponse` - Create standardized error response
138
+
139
+ **Usage Examples:**
140
+ ```python
141
+ from fastapi import FastAPI
142
+ from solace_agent_mesh.gateway.http_sse.shared import register_exception_handlers
143
+
144
+ app = FastAPI()
145
+ register_exception_handlers(app)
146
+ ```
147
+
148
+ ### base_repository.py
149
+ **Purpose:** Base repository classes with proper transaction management
150
+ **Import:** `from solace_agent_mesh.gateway.http_sse.shared import BaseRepository, PaginatedRepository, ValidationMixin`
151
+
152
+ **Classes:**
153
+ - `BaseRepository(model_class: Type[ModelType], entity_class: Type[EntityType])` - Abstract base class for repositories
154
+ - `create(session: Session, create_data: Dict[str, Any]) -> EntityType` - Create a new entity
155
+ - `get_by_id(session: Session, entity_id: Any) -> EntityType` - Get entity by ID
156
+ - `get_all(session: Session, limit: Optional[int] = None, offset: Optional[int] = None) -> List[EntityType]` - Get all entities
157
+ - `update(session: Session, entity_id: Any, update_data: Dict[str, Any]) -> EntityType` - Update an entity
158
+ - `delete(session: Session, entity_id: Any) -> None` - Delete an entity
159
+ - `PaginatedRepository(model_class: Type[ModelType], entity_class: Type[EntityType])` - Base repository with enhanced pagination support
160
+ - `get_paginated(session: Session, page_number: int, page_size: int) -> tuple[List[EntityType], int]` - Get paginated results
161
+ - `ValidationMixin` - Mixin for repositories that need validation logic
162
+
163
+ **Usage Examples:**
164
+ ```python
165
+ from solace_agent_mesh.gateway.http_sse.shared import BaseRepository
166
+ from sqlalchemy.orm import Session
167
+
168
+ class UserRepository(BaseRepository[UserModel, UserEntity]):
169
+ @property
170
+ def entity_name(self) -> str:
171
+ return "User"
172
+
173
+ # Usage
174
+ repo = UserRepository(UserModel, UserEntity)
175
+ user = repo.create(session, {"name": "John", "email": "john@example.com"})
176
+ ```
177
+
178
+ ### pagination.py
179
+ **Purpose:** Pagination utilities for API responses
180
+ **Import:** `from solace_agent_mesh.gateway.http_sse.shared import PaginationParams, PaginatedResponse, DataResponse`
181
+
182
+ **Classes:**
183
+ - `PaginationParams(page_number: int = 1, page_size: int = 20)` - Request parameters for pagination
184
+ - `offset: int` - Calculate the offset for database queries
185
+ - `PaginatedResponse[T](data: list[T], meta: Meta)` - Generic paginated response with data and metadata
186
+ - `create(data: list[T], total_count: int, pagination: PaginationParams) -> PaginatedResponse[T]` - Create paginated response
187
+ - `DataResponse[T](data: T)` - Simple data response wrapper
188
+ - `create(data: T) -> DataResponse[T]` - Create data response
189
+
190
+ **Usage Examples:**
191
+ ```python
192
+ from solace_agent_mesh.gateway.http_sse.shared import PaginationParams, PaginatedResponse
193
+
194
+ # Create pagination params
195
+ pagination = PaginationParams(page_number=1, page_size=20)
196
+
197
+ # Create paginated response
198
+ response = PaginatedResponse.create(users, total_count=100, pagination=pagination)
199
+ ```
200
+
201
+ ### response_utils.py
202
+ **Purpose:** Standardized response formatting utilities
203
+ **Import:** `from solace_agent_mesh.gateway.http_sse.shared import create_data_response, create_paginated_response, StandardResponseMixin`
204
+
205
+ **Functions:**
206
+ - `create_data_response(data: T) -> DataResponse[T]` - Create a standardized data response
207
+ - `create_paginated_response(data: List[T], total_count: int, pagination_params: PaginationParams) -> PaginatedResponse[T]` - Create a standardized paginated response
208
+ - `create_success_response(message: str = "Success") -> DataResponse[Dict[str, str]]` - Create a standardized success response
209
+ - `create_list_response(items: List[T]) -> DataResponse[List[T]]` - Create a standardized list response
210
+
211
+ **Classes:**
212
+ - `StandardResponseMixin` - Mixin class to add standard response methods to services or controllers
213
+
214
+ **Usage Examples:**
215
+ ```python
216
+ from solace_agent_mesh.gateway.http_sse.shared import create_data_response, create_paginated_response
217
+
218
+ # Simple data response
219
+ response = create_data_response({"id": 1, "name": "test"})
220
+
221
+ # Paginated response
222
+ response = create_paginated_response(users, 100, pagination_params)
223
+ ```
224
+
225
+ ### database_exceptions.py
226
+ **Purpose:** Database exception handling and conversion
227
+ **Import:** `from solace_agent_mesh.gateway.http_sse.shared import DatabaseExceptionHandler, handle_database_errors`
228
+
229
+ **Classes:**
230
+ - `DatabaseExceptionHandler` - Centralized handler for converting SQLAlchemy exceptions to domain exceptions
231
+ - `handle_integrity_error(e: IntegrityError, entity_type: str = "Resource") -> ValidationError` - Convert integrity constraint violations
232
+ - `handle_operational_error(e: OperationalError, entity_type: str = "Resource") -> DataIntegrityError` - Handle operational errors
233
+
234
+ **Functions:**
235
+ - `handle_database_errors(entity_type: str = "Resource")` - Convenience decorator for database exception handling
236
+
237
+ **Usage Examples:**
238
+ ```python
239
+ from solace_agent_mesh.gateway.http_sse.shared import handle_database_errors
240
+
241
+ class UserRepository:
242
+ @handle_database_errors("User")
243
+ def create_user(self, session, data):
244
+ # Repository method implementation
245
+ pass
246
+ ```
247
+
248
+ ### database_helpers.py
249
+ **Purpose:** Database utility functions and custom types
250
+ **Import:** `from solace_agent_mesh.gateway.http_sse.shared import SimpleJSON`
251
+
252
+ **Classes:**
253
+ - `SimpleJSON(TypeDecorator)` - Simple JSON type using Text storage for all databases
254
+
255
+ **Usage Examples:**
256
+ ```python
257
+ from sqlalchemy import Column, String
258
+ from solace_agent_mesh.gateway.http_sse.shared import SimpleJSON
259
+
260
+ class MyModel(Base):
261
+ id = Column(String, primary_key=True)
262
+ metadata = Column(SimpleJSON) # Stores JSON as text
263
+ ```
264
+
265
+ ### utils.py
266
+ **Purpose:** Generic utility functions
267
+ **Import:** `from solace_agent_mesh.gateway.http_sse.shared import generate_uuid, to_snake_case, to_pascal_case`
268
+
269
+ **Functions:**
270
+ - `generate_uuid() -> str` - Generate a UUID string for database storage
271
+ - `to_snake_case(name: str) -> str` - Convert a string to snake_case
272
+ - `to_pascal_case(name: str) -> str` - Convert a string to PascalCase
273
+
274
+ **Usage Examples:**
275
+ ```python
276
+ from solace_agent_mesh.gateway.http_sse.shared import generate_uuid, to_snake_case
277
+
278
+ # Generate unique ID
279
+ user_id = generate_uuid()
280
+
281
+ # Convert naming
282
+ snake_name = to_snake_case("User Name") # "user_name"
283
+ ```
284
+
285
+ # content_hash: 0e33735691fb4637243f4fe61acbba78a388e654834903e34be22e3ce6f3c3bc
@@ -35,6 +35,13 @@ class LegacyTimestamp(BaseModel):
35
35
  updated_at: datetime | None = None
36
36
 
37
37
 
38
+ class PaginationParams(BaseModel):
39
+ """Pagination parameters for list requests."""
40
+
41
+ page: int
42
+ page_size: int
43
+
44
+
38
45
  class PaginationInfo(BaseModel):
39
46
  """Pagination information for list responses."""
40
47
 
@@ -2,11 +2,12 @@
2
2
  A thread-safe buffer for holding early SSE events before a client connects.
3
3
  """
4
4
 
5
+ import logging
5
6
  import datetime
6
7
  import threading
7
8
  from typing import Any, Dict, List, Optional, Tuple
8
9
 
9
- from solace_ai_connector.common.log import log
10
+ log = logging.getLogger(__name__)
10
11
 
11
12
 
12
13
  class SSEEventBuffer:
@@ -2,6 +2,7 @@
2
2
  Manages Server-Sent Event (SSE) connections for streaming task updates.
3
3
  """
4
4
 
5
+ import logging
5
6
  import asyncio
6
7
  import threading
7
8
  from typing import Dict, List, Any
@@ -9,10 +10,9 @@ import json
9
10
  import datetime
10
11
  import math
11
12
 
12
- from solace_ai_connector.common.log import log
13
-
14
13
  from .sse_event_buffer import SSEEventBuffer
15
14
 
15
+ log = logging.getLogger(__name__)
16
16
 
17
17
  class SSEManager:
18
18
  """
@@ -0,0 +1 @@
1
+ """Utilities for the HTTP SSE Gateway."""
@@ -0,0 +1,32 @@
1
+ """
2
+ Utility functions for creating .stim file structures.
3
+ """
4
+
5
+ from typing import List
6
+
7
+ from ..repository.entities import Task, TaskEvent
8
+
9
+
10
+ def create_stim_from_task_data(task: Task, events: List[TaskEvent]) -> dict:
11
+ """
12
+ Formats a task and its events into the .stim file structure.
13
+
14
+ Args:
15
+ task: The task entity.
16
+ events: A list of task event entities.
17
+
18
+ Returns:
19
+ A dictionary representing the .stim file content.
20
+ """
21
+ return {
22
+ "invocation_details": {
23
+ "log_file_version": "2.0", # New version for gateway-generated logs
24
+ "task_id": task.id,
25
+ "user_id": task.user_id,
26
+ "start_time": task.start_time,
27
+ "end_time": task.end_time,
28
+ "status": task.status,
29
+ "initial_request_text": task.initial_request_text,
30
+ },
31
+ "invocation_flow": [event.model_dump() for event in events],
32
+ }
@@ -0,0 +1,47 @@
1
+ ## Quick Summary
2
+ The `utils` directory provides utility functions for the HTTP SSE Gateway, specifically for creating .stim file structures from task and event data.
3
+
4
+ ## Files Overview
5
+ - `__init__.py` - Package initialization file for HTTP SSE Gateway utilities
6
+ - `stim_utils.py` - Utility functions for formatting task data into .stim file structures
7
+
8
+ ## Developer API Reference
9
+
10
+ ### __init__.py
11
+ **Purpose:** Package initialization for HTTP SSE Gateway utilities
12
+ **Import:** `from solace_agent_mesh.gateway.http_sse.utils import *`
13
+
14
+ This file serves as the package entry point and contains no public interfaces.
15
+
16
+ ### stim_utils.py
17
+ **Purpose:** Provides utility functions for creating .stim file structures from task and event data
18
+ **Import:** `from solace_agent_mesh.gateway.http_sse.utils.stim_utils import create_stim_from_task_data`
19
+
20
+ **Functions:**
21
+ - `create_stim_from_task_data(task: Task, events: List[TaskEvent]) -> dict` - Formats a task and its events into the .stim file structure with version 2.0 format for gateway-generated logs
22
+
23
+ **Usage Examples:**
24
+ ```python
25
+ from solace_agent_mesh.gateway.http_sse.utils.stim_utils import create_stim_from_task_data
26
+ from solace_agent_mesh.gateway.http_sse.repository.entities import Task, TaskEvent
27
+
28
+ # Create a .stim file structure from task and events
29
+ task = Task(
30
+ id="task_123",
31
+ user_id="user_456",
32
+ start_time="2024-01-01T10:00:00Z",
33
+ end_time="2024-01-01T10:05:00Z",
34
+ status="completed",
35
+ initial_request_text="Process this data"
36
+ )
37
+
38
+ events = [
39
+ TaskEvent(event_type="start", timestamp="2024-01-01T10:00:00Z"),
40
+ TaskEvent(event_type="complete", timestamp="2024-01-01T10:05:00Z")
41
+ ]
42
+
43
+ stim_data = create_stim_from_task_data(task, events)
44
+ # Returns a dictionary with 'invocation_details' and 'invocation_flow' keys
45
+ ```
46
+
47
+ # content_hash: 7fdc4ad8bbcefb07ee40f84c438f988cda4fdfb812dab55c6a064d1b38b0c83f
@@ -359,4 +359,4 @@ async def client_integration_example():
359
359
  if hasattr(response.result, 'text_delta'):
360
360
  print(response.result.text_delta,
361
361
 
362
- # content_hash: 59d897c57c8a54f55bda0548509f1b6bc7af3a1afde93f59a8525c0eb98659e1
362
+ # content_hash: ce6554bc70f746507a86e0faa0836fe1b338161b5f72a7923df30de5f23ac84e