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
@@ -0,0 +1,30 @@
1
+ """
2
+ Task-related response DTOs.
3
+ """
4
+
5
+ from typing import List, Optional
6
+ from pydantic import BaseModel, Field
7
+
8
+ from .base_responses import BaseTimestampResponse
9
+
10
+
11
+ class TaskResponse(BaseTimestampResponse):
12
+ """Response DTO for a single task."""
13
+
14
+ task_id: str = Field(..., alias="taskId")
15
+ session_id: str = Field(..., alias="sessionId")
16
+ user_message: Optional[str] = Field(None, alias="userMessage")
17
+ message_bubbles: str = Field(..., alias="messageBubbles") # JSON string (opaque)
18
+ task_metadata: Optional[str] = Field(None, alias="taskMetadata") # JSON string (opaque)
19
+ created_time: int = Field(..., alias="createdTime")
20
+ updated_time: Optional[int] = Field(None, alias="updatedTime")
21
+
22
+ model_config = {"populate_by_name": True}
23
+
24
+
25
+ class TaskListResponse(BaseModel):
26
+ """Response DTO for a list of tasks."""
27
+
28
+ tasks: List[TaskResponse]
29
+
30
+ model_config = {"populate_by_name": True}
@@ -0,0 +1,37 @@
1
+ """
2
+ API Router for receiving and processing user feedback on chat messages.
3
+ """
4
+
5
+ from typing import Literal, Optional
6
+
7
+ from fastapi import APIRouter, Depends
8
+ from fastapi import Request as FastAPIRequest
9
+ from pydantic import BaseModel, Field
10
+
11
+ from ..dependencies import get_feedback_service, get_user_id
12
+ from ..services.feedback_service import FeedbackService
13
+
14
+ router = APIRouter()
15
+
16
+
17
+ class FeedbackPayload(BaseModel):
18
+ """Data model for the feedback submission payload."""
19
+
20
+ task_id: str = Field(..., alias="taskId")
21
+ session_id: str = Field(..., alias="sessionId")
22
+ feedback_type: Literal["up", "down"] = Field(..., alias="feedbackType")
23
+ feedback_text: Optional[str] = Field(None, alias="feedbackText")
24
+
25
+
26
+ @router.post("/feedback", status_code=202, tags=["Feedback"])
27
+ async def submit_feedback(
28
+ payload: FeedbackPayload,
29
+ request: FastAPIRequest,
30
+ user_id: str = Depends(get_user_id),
31
+ feedback_service: FeedbackService = Depends(get_feedback_service),
32
+ ):
33
+ """
34
+ Receives and processes user feedback for a specific task.
35
+ """
36
+ await feedback_service.process_feedback(payload, user_id)
37
+ return {"status": "feedback received"}
@@ -2,16 +2,18 @@
2
2
  API endpoints for people-related features, such as user search for autocomplete.
3
3
  """
4
4
 
5
+ import logging
5
6
  from typing import Any, Dict, List
6
7
 
7
8
  from fastapi import APIRouter, Depends, Query
8
- from solace_ai_connector.common.log import log
9
9
 
10
10
  from ..dependencies import get_people_service
11
11
  from ..services.people_service import PeopleService
12
12
  from ..shared.pagination import DataResponse
13
13
  from ..shared.response_utils import create_data_response
14
14
 
15
+ log = logging.getLogger(__name__)
16
+
15
17
  router = APIRouter()
16
18
 
17
19
 
@@ -1,263 +1,314 @@
1
1
  # DEVELOPER GUIDE for the routers directory
2
2
 
3
3
  ## Quick Summary
4
- The `routers` directory contains FastAPI `APIRouter` modules that define the REST API endpoints for the HTTP SSE Gateway. Each file groups endpoints by a specific domain of functionality, such as agent discovery, artifact management, user authentication, task submission, and real-time event streaming. These routers are the primary interface for frontend applications and other clients to interact with the gateway.
5
-
6
- ## Files Overview
7
- - `__init__.py`: Marks the directory as a Python package.
8
- - `agents.py`: API endpoints for discovering available A2A agents.
9
- - `artifacts.py`: REST endpoints for managing session-specific artifacts (upload, download, list, delete).
10
- - `auth.py`: Endpoints for handling the user authentication flow (login, callback, refresh, CSRF).
11
- - `config.py`: API endpoint for providing configuration settings to the frontend application.
12
- - `people.py`: API endpoints for user search functionality, typically for autocomplete features.
13
- - `sessions.py`: API endpoints for managing user sessions (creating new sessions, getting current session info).
14
- - `sse.py`: The Server-Sent Events (SSE) endpoint for streaming real-time task updates to the client.
15
- - `tasks.py`: API endpoints for submitting tasks to agents and managing their lifecycle (e.g., cancellation).
16
- - `users.py`: API endpoint for retrieving information about the currently authenticated user.
17
- - `visualization.py`: API endpoints for managing A2A message visualization streams for monitoring and debugging.
4
+ The `routers` directory contains FastAPI router modules that define the REST API endpoints for the HTTP SSE Gateway. Each router groups endpoints by functional domain (agent discovery, artifact management, authentication, sessions, etc.) and provides the primary interface for frontend applications and other clients to interact with the gateway. The routers work together to provide a complete web API with real-time capabilities through Server-Sent Events (SSE), along with comprehensive session management, artifact handling, and A2A message visualization.
5
+
6
+ ## Files and Subdirectories Overview
7
+ - **Direct files:**
8
+ - `__init__.py` - Package initialization for router modules
9
+ - `agent_cards.py` - Agent discovery endpoints
10
+ - `artifacts.py` - Artifact management (upload, download, versioning)
11
+ - `auth.py` - Authentication flow endpoints (login, callback, refresh)
12
+ - `config.py` - Frontend configuration endpoint
13
+ - `feedback.py` - User feedback collection endpoints
14
+ - `people.py` - User search for autocomplete features
15
+ - `sessions.py` - Session management (CRUD operations)
16
+ - `sse.py` - Server-Sent Events streaming endpoint
17
+ - `tasks.py` - Task submission and management endpoints
18
+ - `users.py` - Current user information endpoint
19
+ - `visualization.py` - A2A message visualization streaming
20
+ - **Subdirectories:**
21
+ - `dto/` - Data Transfer Objects for request/response validation
18
22
 
19
23
  ## Developer API Reference
20
24
 
21
- ### agents.py
22
- **Purpose:** Provides REST endpoints for agent discovery.
23
- **Import:** `from solace_agent_mesh.gateway.http_sse.routers.agents import router`
25
+ ### Direct Files
24
26
 
25
- **Functions:**
26
- - `get_discovered_agents() -> List[AgentCard]` - Retrieves a list of all currently discovered and available A2A agents.
27
+ #### __init__.py
28
+ **Purpose:** Package initialization for the routers module
29
+ **Import:** `from solace_agent_mesh.gateway.http_sse.routers import *`
27
30
 
28
- **Usage Examples:**
29
- ```python
30
- # To include this router in a FastAPI application
31
- from fastapi import FastAPI
32
- from solace_agent_mesh.gateway.http_sse.routers.agents import router
31
+ #### agent_cards.py
32
+ **Purpose:** Provides REST endpoints for agent discovery
33
+ **Import:** `from solace_agent_mesh.gateway.http_sse.routers.agent_cards import router`
33
34
 
34
- app = FastAPI()
35
- app.include_router(router, prefix="/api/v1")
35
+ **Functions:**
36
+ - `get_discovered_agent_cards() -> List[AgentCard]` - Retrieves all currently discovered A2A agents
36
37
 
37
- # A client would make a GET request to /api/v1/agents
38
- ```
38
+ #### artifacts.py
39
+ **Purpose:** Manages session-specific artifacts via REST endpoints with versioning and metadata support
40
+ **Import:** `from solace_agent_mesh.gateway.http_sse.routers.artifacts import router, ArtifactUploadResponse`
39
41
 
40
- ### artifacts.py
41
- **Purpose:** Manages session-specific artifacts via REST endpoints (upload, download, list, delete).
42
- **Import:** `from solace_agent_mesh.gateway.http_sse.routers.artifacts import router`
42
+ **Classes:**
43
+ - `ArtifactUploadResponse(BaseModel)` - Response model for artifact uploads with camelCase fields
43
44
 
44
45
  **Functions:**
45
- - `list_artifact_versions(filename: str) -> List[int]` - Lists available version numbers for a specific artifact.
46
- - `list_artifacts() -> List[ArtifactInfo]` - Retrieves detailed information for all artifacts in the current session.
47
- - `get_latest_artifact(filename: str) -> StreamingResponse` - Downloads the latest version of an artifact.
48
- - `get_specific_artifact_version(filename: str, version: Union[int, str]) -> StreamingResponse` - Downloads a specific version of an artifact.
49
- - `get_artifact_by_uri(uri: str) -> StreamingResponse` - Downloads an artifact using its formal artifact:// URI.
50
- - `upload_artifact(filename: str, upload_file: UploadFile, metadata_json: Optional[str]) -> Dict[str, Any]` - Uploads a new artifact version with optional metadata.
51
- - `delete_artifact(filename: str) -> Response` - Deletes an artifact and all its versions.
52
-
53
- **Usage Examples:**
54
- ```python
55
- # Include in FastAPI app
56
- from fastapi import FastAPI
57
- from solace_agent_mesh.gateway.http_sse.routers.artifacts import router
58
-
59
- app = FastAPI()
60
- app.include_router(router, prefix="/api/v1/artifacts")
61
-
62
- # Client usage examples:
63
- # GET /api/v1/artifacts/ - List all artifacts
64
- # GET /api/v1/artifacts/myfile.txt - Download latest version
65
- # GET /api/v1/artifacts/myfile.txt/versions/1 - Download specific version
66
- # POST /api/v1/artifacts/myfile.txt - Upload new version
67
- # DELETE /api/v1/artifacts/myfile.txt - Delete artifact
68
- ```
69
-
70
- ### auth.py
71
- **Purpose:** Handles user authentication flow including login, callback, and token refresh.
46
+ - `upload_artifact_with_session(upload_file: UploadFile, sessionId: str, filename: str, metadata_json: str) -> ArtifactUploadResponse` - Uploads artifact with session management
47
+ - `list_artifact_versions(session_id: str, filename: str) -> List[int]` - Lists available versions for an artifact
48
+ - `list_artifacts(session_id: str) -> List[ArtifactInfo]` - Lists all artifacts in a session with metadata
49
+ - `get_latest_artifact(session_id: str, filename: str) -> StreamingResponse` - Downloads latest artifact version with embed resolution
50
+ - `get_specific_artifact_version(session_id: str, filename: str, version: Union[int, str]) -> StreamingResponse` - Downloads specific version
51
+ - `get_artifact_by_uri(uri: str) -> StreamingResponse` - Downloads artifact by formal artifact:// URI
52
+ - `upload_artifact(session_id: str, filename: str, upload_file: UploadFile, metadata_json: Optional[str]) -> Dict[str, Any]` - Uploads new artifact version with metadata
53
+ - `delete_artifact(session_id: str, filename: str) -> Response` - Deletes artifact and all versions
54
+
55
+ #### auth.py
56
+ **Purpose:** Handles OAuth-based user authentication flow with external authorization service
72
57
  **Import:** `from solace_agent_mesh.gateway.http_sse.routers.auth import router`
73
58
 
74
59
  **Functions:**
75
- - `initiate_login(request: FastAPIRequest) -> RedirectResponse` - Initiates the login flow by redirecting to external auth service.
76
- - `get_csrf_token(response: Response) -> Dict[str, str]` - Generates and returns a CSRF token.
77
- - `auth_callback(request: FastAPIRequest) -> RedirectResponse` - Handles the callback from the OIDC provider.
78
- - `refresh_token(request: FastAPIRequest) -> Dict[str, str]` - Refreshes an access token using the external auth service.
60
+ - `initiate_login(request: FastAPIRequest) -> RedirectResponse` - Starts OAuth login flow with external service
61
+ - `get_csrf_token(response: Response) -> Dict[str, str]` - Generates and sets CSRF token
62
+ - `auth_callback(request: FastAPIRequest) -> RedirectResponse` - Handles OAuth callback and token exchange
63
+ - `refresh_token(request: FastAPIRequest) -> Dict[str, str]` - Refreshes access token using refresh token
79
64
 
80
- **Usage Examples:**
81
- ```python
82
- # Include in FastAPI app
83
- from fastapi import FastAPI
84
- from solace_agent_mesh.gateway.http_sse.routers.auth import router
85
-
86
- app = FastAPI()
87
- app.include_router(router, prefix="/api/v1")
88
-
89
- # Client usage:
90
- # GET /api/v1/auth/login - Start login flow
91
- # GET /api/v1/csrf-token - Get CSRF token
92
- # GET /api/v1/auth/callback - OAuth callback endpoint
93
- # POST /api/v1/auth/refresh - Refresh access token
94
- ```
95
-
96
- ### config.py
97
- **Purpose:** Provides configuration settings needed by the frontend application.
65
+ #### config.py
66
+ **Purpose:** Provides frontend configuration settings including feature flags
98
67
  **Import:** `from solace_agent_mesh.gateway.http_sse.routers.config import router`
99
68
 
100
69
  **Functions:**
101
- - `get_app_config() -> Dict[str, Any]` - Returns frontend configuration settings including auth URLs, welcome messages, and feature flags.
70
+ - `get_app_config() -> Dict[str, Any]` - Returns frontend configuration including auth URLs, feature flags, and persistence settings
102
71
 
103
- **Usage Examples:**
104
- ```python
105
- # Include in FastAPI app
106
- from fastapi import FastAPI
107
- from solace_agent_mesh.gateway.http_sse.routers.config import router
72
+ #### feedback.py
73
+ **Purpose:** Receives and processes user feedback on chat messages
74
+ **Import:** `from solace_agent_mesh.gateway.http_sse.routers.feedback import router, FeedbackPayload`
108
75
 
109
- app = FastAPI()
110
- app.include_router(router, prefix="/api/v1")
76
+ **Classes:**
77
+ - `FeedbackPayload(BaseModel)` - Data model for feedback submission
78
+ - `task_id: str` - ID of the task being rated
79
+ - `session_id: str` - Session containing the task
80
+ - `feedback_type: Literal["up", "down"]` - Type of feedback
81
+ - `feedback_text: Optional[str]` - Optional text feedback
111
82
 
112
- # Client usage:
113
- # GET /api/v1/config - Get frontend configuration
114
- ```
83
+ **Functions:**
84
+ - `submit_feedback(payload: FeedbackPayload, user_id: str) -> Dict[str, str]` - Processes user feedback asynchronously
115
85
 
116
- ### people.py
117
- **Purpose:** Provides user search functionality for autocomplete features.
86
+ #### people.py
87
+ **Purpose:** Provides user search functionality for autocomplete features
118
88
  **Import:** `from solace_agent_mesh.gateway.http_sse.routers.people import router`
119
89
 
120
90
  **Functions:**
121
- - `search_people(q: str, limit: int = 10) -> List[Dict[str, Any]]` - Searches for users to populate frontend autocomplete suggestions.
122
-
123
- **Usage Examples:**
124
- ```python
125
- # Include in FastAPI app
126
- from fastapi import FastAPI
127
- from solace_agent_mesh.gateway.http_sse.routers.people import router
128
-
129
- app = FastAPI()
130
- app.include_router(router, prefix="/api/v1")
131
-
132
- # Client usage:
133
- # GET /api/v1/people/search?q=john&limit=5 - Search for users
134
- ```
91
+ - `search_people(q: str, limit: int = 10) -> List[Dict[str, Any]]` - Searches for users for @mention autocomplete
135
92
 
136
- ### sessions.py
137
- **Purpose:** Manages user sessions including creation and retrieval of session information.
93
+ #### sessions.py
94
+ **Purpose:** Manages user sessions including CRUD operations with persistence
138
95
  **Import:** `from solace_agent_mesh.gateway.http_sse.routers.sessions import router`
139
96
 
140
97
  **Functions:**
141
- - `create_new_session(request: FastAPIRequest) -> JSONRPCSuccessResponse` - Forces creation of a new A2A session.
142
- - `get_current_session(request: FastAPIRequest) -> JSONRPCSuccessResponse` - Returns information about the current session.
143
-
144
- **Usage Examples:**
145
- ```python
146
- # Include in FastAPI app
147
- from fastapi import FastAPI
148
- from solace_agent_mesh.gateway.http_sse.routers.sessions import router
149
-
150
- app = FastAPI()
151
- app.include_router(router, prefix="/api/v1/sessions")
152
-
153
- # Client usage:
154
- # POST /api/v1/sessions/new - Create new session
155
- # GET /api/v1/sessions/current - Get current session info
156
- ```
157
-
158
- ### sse.py
159
- **Purpose:** Provides Server-Sent Events (SSE) endpoint for streaming real-time task updates.
98
+ - `get_all_sessions(page_number: int, page_size: int, user: dict) -> PaginatedResponse[SessionResponse]` - Lists user's sessions with pagination
99
+ - `get_session(session_id: str, user: dict) -> DataResponse[SessionResponse]` - Gets session details with authorization
100
+ - `get_session_history(session_id: str, user: dict) -> List[MessageResponse]` - Gets session message history
101
+ - `update_session_name(session_id: str, name: str, user: dict) -> SessionResponse` - Updates session name with validation
102
+ - `delete_session(session_id: str, user: dict) -> None` - Deletes session with cascade notifications
103
+
104
+ #### sse.py
105
+ **Purpose:** Provides Server-Sent Events endpoint for real-time streaming
160
106
  **Import:** `from solace_agent_mesh.gateway.http_sse.routers.sse import router`
161
107
 
162
108
  **Functions:**
163
- - `subscribe_to_task_events(task_id: str, request: FastAPIRequest) -> EventSourceResponse` - Establishes an SSE connection for real-time task updates.
109
+ - `subscribe_to_task_events(task_id: str, request: FastAPIRequest) -> EventSourceResponse` - Establishes SSE connection for task updates with automatic cleanup
164
110
 
165
- **Usage Examples:**
166
- ```python
167
- # Include in FastAPI app
168
- from fastapi import FastAPI
169
- from solace_agent_mesh.gateway.http_sse.routers.sse import router
111
+ #### tasks.py
112
+ **Purpose:** Handles task submission, management, and historical search
113
+ **Import:** `from solace_agent_mesh.gateway.http_sse.routers.tasks import router`
170
114
 
171
- app = FastAPI()
172
- app.include_router(router, prefix="/api/v1/sse")
115
+ **Functions:**
116
+ - `search_tasks(start_date: Optional[str], end_date: Optional[str], search: Optional[str], page: int, page_size: int, query_user_id: Optional[str]) -> List[Task]` - Searches historical tasks with admin capabilities
117
+ - `get_task_as_stim_file(task_id: str) -> Response` - Downloads complete task history as .stim file
118
+ - `send_task_to_agent(request: FastAPIRequest, payload: SendMessageRequest) -> SendMessageSuccessResponse` - Submits non-streaming task
119
+ - `subscribe_task_from_agent(request: FastAPIRequest, payload: SendStreamingMessageRequest) -> SendStreamingMessageSuccessResponse` - Submits streaming task
120
+ - `cancel_agent_task(request: FastAPIRequest, taskId: str, payload: CancelTaskRequest) -> Dict[str, str]` - Cancels active task
121
+
122
+ #### users.py
123
+ **Purpose:** Provides current user information with authentication status
124
+ **Import:** `from solace_agent_mesh.gateway.http_sse.routers.users import router`
173
125
 
174
- # Client usage:
175
- # GET /api/v1/sse/subscribe/{task_id} - Subscribe to task events via SSE
176
- ```
126
+ **Functions:**
127
+ - `get_current_user_endpoint(user: dict) -> Dict[str, Any]` - Returns current user information with auth status
177
128
 
178
- ### tasks.py
179
- **Purpose:** Handles task submission and management including cancellation.
180
- **Import:** `from solace_agent_mesh.gateway.http_sse.routers.tasks import router`
129
+ #### visualization.py
130
+ **Purpose:** Manages A2A message visualization streams for real-time monitoring
131
+ **Import:** `from solace_agent_mesh.gateway.http_sse.routers.visualization import router, SubscriptionTarget, VisualizationSubscribeRequest`
181
132
 
182
- **Functions:**
183
- - `send_task_to_agent(request: FastAPIRequest, payload: SendMessageRequest) -> SendMessageSuccessResponse` - Submits a non-streaming task request.
184
- - `subscribe_task_from_agent(request: FastAPIRequest, payload: SendStreamingMessageRequest) -> SendStreamingMessageSuccessResponse` - Submits a streaming task request.
185
- - `cancel_agent_task(request: FastAPIRequest, taskId: str, payload: CancelTaskRequest) -> Dict[str, str]` - Sends a cancellation request for a specific task.
133
+ **Classes:**
134
+ - `SubscriptionTarget(BaseModel)` - Defines visualization target
135
+ - `type: str` - Target type (e.g., "current_namespace_a2a_messages", "agent_a2a_messages")
136
+ - `identifier: Optional[str]` - Target identifier (namespace or agent name)
137
+ - `VisualizationSubscribeRequest(BaseModel)` - Subscription request
138
+ - `subscription_targets: Optional[List[SubscriptionTarget]]` - Targets to monitor
139
+ - `client_stream_id: Optional[str]` - Client-generated stream ID for idempotency
140
+ - `VisualizationSubscribeResponse(BaseModel)` - Subscription response with SSE URL
141
+ - `VisualizationConfigUpdateRequest(BaseModel)` - Configuration update request
142
+ - `VisualizationConfigUpdateResponse(BaseModel)` - Configuration update response
186
143
 
187
- **Usage Examples:**
188
- ```python
189
- # Include in FastAPI app
190
- from fastapi import FastAPI
191
- from solace_agent_mesh.gateway.http_sse.routers.tasks import router
144
+ **Functions:**
145
+ - `subscribe_to_visualization_stream(request_data: VisualizationSubscribeRequest) -> VisualizationSubscribeResponse` - Starts visualization stream with authorization
146
+ - `get_visualization_stream_events(stream_id: str) -> EventSourceResponse` - SSE endpoint for visualization events
147
+ - `update_visualization_stream_config(stream_id: str, update_request: VisualizationConfigUpdateRequest) -> VisualizationConfigUpdateResponse` - Updates stream configuration
148
+ - `unsubscribe_from_visualization_stream(stream_id: str) -> Response` - Terminates visualization stream
192
149
 
193
- app = FastAPI()
194
- app.include_router(router, prefix="/api/v1/tasks")
150
+ ### Subdirectory APIs
195
151
 
196
- # Client usage:
197
- # POST /api/v1/tasks/message:send - Submit non-streaming task
198
- # POST /api/v1/tasks/message:stream - Submit streaming task
199
- # POST /api/v1/tasks/{taskId}:cancel - Cancel a task
152
+ #### dto/
153
+ **Purpose:** Provides Data Transfer Objects for request/response validation and serialization with automatic timestamp conversion
154
+ **Key Exports:** Request and response DTOs for session management with field validation and camelCase aliasing
155
+ **Import Examples:**
156
+ ```python
157
+ from solace_agent_mesh.gateway.http_sse.routers.dto.requests import GetSessionsRequest, UpdateSessionRequest
158
+ from solace_agent_mesh.gateway.http_sse.routers.dto.responses import SessionResponse, MessageResponse
200
159
  ```
201
160
 
202
- ### users.py
203
- **Purpose:** Provides information about the currently authenticated user.
204
- **Import:** `from solace_agent_mesh.gateway.http_sse.routers.users import router`
161
+ ## Complete Usage Guide
205
162
 
206
- **Functions:**
207
- - `get_current_user(request: FastAPIRequest) -> Dict[str, Any]` - Retrieves information about the currently authenticated user.
163
+ ### 1. Setting Up Routers in FastAPI Application
208
164
 
209
- **Usage Examples:**
210
165
  ```python
211
- # Include in FastAPI app
212
166
  from fastapi import FastAPI
213
- from solace_agent_mesh.gateway.http_sse.routers.users import router
167
+ from solace_agent_mesh.gateway.http_sse.routers import (
168
+ agent_cards,
169
+ artifacts,
170
+ auth,
171
+ config,
172
+ feedback,
173
+ people,
174
+ sessions,
175
+ sse,
176
+ tasks,
177
+ users,
178
+ visualization
179
+ )
214
180
 
215
181
  app = FastAPI()
216
- app.include_router(router, prefix="/api/v1/users")
217
182
 
218
- # Client usage:
219
- # GET /api/v1/users/me - Get current user info
183
+ # Include all routers with appropriate prefixes
184
+ app.include_router(agent_cards.router, prefix="/api/v1", tags=["agents"])
185
+ app.include_router(artifacts.router, prefix="/api/v1/artifacts", tags=["artifacts"])
186
+ app.include_router(auth.router, prefix="/api/v1", tags=["auth"])
187
+ app.include_router(config.router, prefix="/api/v1", tags=["config"])
188
+ app.include_router(feedback.router, prefix="/api/v1", tags=["feedback"])
189
+ app.include_router(people.router, prefix="/api/v1", tags=["people"])
190
+ app.include_router(sessions.router, prefix="/api/v1", tags=["sessions"])
191
+ app.include_router(sse.router, prefix="/api/v1/sse", tags=["sse"])
192
+ app.include_router(tasks.router, prefix="/api/v1/tasks", tags=["tasks"])
193
+ app.include_router(users.router, prefix="/api/v1/users", tags=["users"])
194
+ app.include_router(visualization.router, prefix="/api/v1/visualization", tags=["visualization"])
220
195
  ```
221
196
 
222
- ### visualization.py
223
- **Purpose:** Manages A2A message visualization streams for monitoring and debugging.
224
- **Import:** `from solace_agent_mesh.gateway.http_sse.routers.visualization import router, SubscriptionTarget, VisualizationSubscribeRequest`
225
-
226
- **Classes:**
227
- - `SubscriptionTarget(BaseModel)` - Defines an abstract target for A2A message visualization.
228
- - `type: str` - Type of target to monitor
229
- - `identifier: Optional[str]` - Identifier for the target
230
- - `VisualizationSubscribeRequest(BaseModel)` - Request body for initiating a visualization stream.
231
- - `subscription_targets: Optional[List[SubscriptionTarget]]` - Targets to monitor
232
- - `client_stream_id: Optional[str]` - Client-generated ID for idempotency
233
- - `VisualizationSubscribeResponse(BaseModel)` - Response for successful visualization subscription.
234
- - `VisualizationConfigUpdateRequest(BaseModel)` - Request for updating stream configuration.
235
- - `VisualizationConfigUpdateResponse(BaseModel)` - Response for configuration updates.
236
-
237
- **Functions:**
238
- - `subscribe_to_visualization_stream(request_data: VisualizationSubscribeRequest) -> VisualizationSubscribeResponse` - Initiates a new A2A message visualization stream.
239
- - `get_visualization_stream_events(stream_id: str) -> EventSourceResponse` - Establishes SSE connection for filtered A2A messages.
240
- - `update_visualization_stream_config(stream_id: str, update_request: VisualizationConfigUpdateRequest) -> VisualizationConfigUpdateResponse` - Modifies stream configuration.
241
- - `unsubscribe_from_visualization_stream(stream_id: str) -> Response` - Terminates an active visualization stream.
197
+ ### 2. Agent Discovery and Task Submission
242
198
 
243
- **Usage Examples:**
244
199
  ```python
245
- # Include in FastAPI app
246
- from fastapi import FastAPI
247
- from solace_agent_mesh.gateway.http_sse.routers.visualization import router, SubscriptionTarget, VisualizationSubscribeRequest
248
-
249
- app = FastAPI()
250
- app.include_router(router, prefix="/api/v1/visualization")
200
+ import httpx
201
+ from a2a.types import SendStreamingMessageRequest, Message, MessagePart
202
+
203
+ # Discover available agents
204
+ async def get_available_agents():
205
+ async with httpx.AsyncClient() as client:
206
+ response = await client.get("http://localhost:8000/api/v1/agentCards")
207
+ return response.json()
208
+
209
+ # Submit a streaming task to an agent
210
+ async def submit_streaming_task(agent_name: str, message_text: str, session_id: str):
211
+ # Create message parts
212
+ parts = [MessagePart(text=message_text)]
213
+
214
+ # Create message with metadata
215
+ message = Message(
216
+ parts=parts,
217
+ context_id=session_id,
218
+ metadata={"agent_name": agent_name}
219
+ )
220
+
221
+ # Create request payload
222
+ payload = SendStreamingMessageRequest(
223
+ method="message:stream",
224
+ params={"message": message},
225
+ id="req_123"
226
+ )
227
+
228
+ async with httpx.AsyncClient() as client:
229
+ response = await client.post(
230
+ "http://localhost:8000/api/v1/tasks/message:stream",
231
+ json=payload.model_dump()
232
+ )
233
+ return response.json()
234
+
235
+ # Search historical tasks (admin users can query all users)
236
+ async def search_historical_tasks(start_date: str = None, query_user_id: str = None):
237
+ params = {}
238
+ if start_date:
239
+ params["start_date"] = start_date
240
+ if query_user_id:
241
+ params["query_user_id"] = query_user_id
242
+
243
+ async with httpx.AsyncClient() as client:
244
+ response = await client.get(
245
+ "http://localhost:8000/api/v1/tasks",
246
+ params=params
247
+ )
248
+ return response.json()
249
+ ```
251
250
 
252
- # Client usage:
253
- # POST /api/v1/visualization/subscribe - Start visualization stream
254
- # GET /api/v1/visualization/{stream_id}/events - SSE endpoint for events
255
- # PUT /api/v1/visualization/{stream_id}/config - Update stream config
256
- # DELETE /api/v1/visualization/{stream_id}/unsubscribe - Stop stream
251
+ ### 3. Real-time Event Streaming with SSE
257
252
 
258
- # Example subscription request:
259
- targets = [SubscriptionTarget(type="current_namespace_a2a_messages")]
260
- request = VisualizationSubscribeRequest(subscription_targets=targets)
253
+ ```python
254
+ import asyncio
255
+ import httpx
256
+ import json
257
+
258
+ # Client-side SSE connection for task events
259
+ async def listen_to_task_events(task_id: str):
260
+ async with httpx.AsyncClient() as client:
261
+ async with client.stream(
262
+ "GET",
263
+ f"http://localhost:8000/api/v1/sse/subscribe/{task_id}",
264
+ headers={"Accept": "text/event-stream"}
265
+ ) as response:
266
+ async for line in response.aiter_lines():
267
+ if line.startswith("data: "):
268
+ event_data = line[6:] # Remove "data: " prefix
269
+ try:
270
+ parsed_data = json.loads(event_data)
271
+ print(f"Received event: {parsed_data}")
272
+ except json.JSONDecodeError:
273
+ print(f"Received raw data: {event_data}")
274
+
275
+ # Client-side SSE connection for visualization
276
+ async def listen_to_visualization_events(stream_id: str):
277
+ async with httpx.AsyncClient() as client:
278
+ async with client.stream(
279
+ "GET",
280
+ f"http://localhost:8000/api/v1/visualization/{stream_id}/events",
281
+ headers={"Accept": "text/event-stream"}
282
+ ) as response:
283
+ async for line in response.aiter_lines():
284
+ if line.startswith("data: "):
285
+ event_data = line[6:]
286
+ print(f"Visualization event: {event_data}")
261
287
  ```
262
288
 
263
- # content_hash: cd51f2d84ce27b9939390065e8505a44c131798ac8296e1ad69ae55133cab7d5
289
+ ### 4. Comprehensive Artifact Management
290
+
291
+ ```python
292
+ import httpx
293
+ import json
294
+ from pathlib import Path
295
+
296
+ # Upload an artifact with metadata using session-based endpoint
297
+ async def upload_artifact_with_metadata(session_id: str, filename: str, file_path: Path, metadata: dict = None):
298
+ files = {"upload_file": (filename, file_path.open("rb"))}
299
+ data = {}
300
+
301
+ if metadata:
302
+ data["metadata_json"] = json.dumps(metadata)
303
+
304
+ async with httpx.AsyncClient() as client:
305
+ response = await client.post(
306
+ f"http://localhost:8000/api/v1/artifacts/{session_id}/{filename}",
307
+ files=files,
308
+ data=data
309
+ )
310
+ return response.json()
311
+
312
+ # Upload artifact with automatic session creation
313
+
314
+ # content_hash: a98ae1eb7e5483f6e9438569a4c3dd2df4d9992a968e84230d41cf18d2d34624