solace-agent-mesh 1.11.2__py3-none-any.whl → 1.12.0__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.
Files changed (308) hide show
  1. solace_agent_mesh/agent/adk/callbacks.py +177 -10
  2. solace_agent_mesh/agent/adk/embed_resolving_mcp_toolset.py +3 -0
  3. solace_agent_mesh/agent/adk/models/lite_llm.py +34 -16
  4. solace_agent_mesh/agent/adk/runner.py +66 -8
  5. solace_agent_mesh/agent/adk/setup.py +61 -26
  6. solace_agent_mesh/agent/protocol/event_handlers.py +48 -0
  7. solace_agent_mesh/agent/proxies/a2a/component.py +27 -0
  8. solace_agent_mesh/agent/sac/component.py +84 -2
  9. solace_agent_mesh/agent/tools/builtin_artifact_tools.py +41 -22
  10. solace_agent_mesh/agent/tools/peer_agent_tool.py +19 -12
  11. solace_agent_mesh/agent/tools/tool_config_types.py +21 -1
  12. solace_agent_mesh/agent/utils/artifact_helpers.py +54 -0
  13. solace_agent_mesh/assets/docs/404.html +3 -3
  14. solace_agent_mesh/assets/docs/assets/js/15ba94aa.e186750d.js +1 -0
  15. solace_agent_mesh/assets/docs/assets/js/240a0364.83e37aa8.js +1 -0
  16. solace_agent_mesh/assets/docs/assets/js/2e32b5e0.2f0db237.js +1 -0
  17. solace_agent_mesh/assets/docs/assets/js/3a6c6137.7e61915d.js +1 -0
  18. solace_agent_mesh/assets/docs/assets/js/{3ac1795d.28b7c67b.js → 3ac1795d.dc006e20.js} +1 -1
  19. solace_agent_mesh/assets/docs/assets/js/3ff0015d.f08618fb.js +1 -0
  20. solace_agent_mesh/assets/docs/assets/js/4667dc50.bf2ad456.js +1 -0
  21. solace_agent_mesh/assets/docs/assets/js/547e15cc.8e6da617.js +1 -0
  22. solace_agent_mesh/assets/docs/assets/js/5b8d9c11.d4eb37b8.js +1 -0
  23. solace_agent_mesh/assets/docs/assets/js/5c2bd65f.1ee87753.js +1 -0
  24. solace_agent_mesh/assets/docs/assets/js/64195356.09dbd087.js +1 -0
  25. solace_agent_mesh/assets/docs/assets/js/66d4869e.30340bd3.js +1 -0
  26. solace_agent_mesh/assets/docs/assets/js/729898df.7249e9fd.js +1 -0
  27. solace_agent_mesh/assets/docs/assets/js/7e294c01.7c5f6906.js +1 -0
  28. solace_agent_mesh/assets/docs/assets/js/8024126c.e3467286.js +1 -0
  29. solace_agent_mesh/assets/docs/assets/js/81a99df0.95be65d4.js +1 -0
  30. solace_agent_mesh/assets/docs/assets/js/9bb13469.4523ae20.js +1 -0
  31. solace_agent_mesh/assets/docs/assets/js/a7d42657.a956689d.js +1 -0
  32. solace_agent_mesh/assets/docs/assets/js/ab9708a8.3e563275.js +1 -0
  33. solace_agent_mesh/assets/docs/assets/js/e04b235d.06d23db6.js +1 -0
  34. solace_agent_mesh/assets/docs/assets/js/e1b6eeb4.deb2b62e.js +1 -0
  35. solace_agent_mesh/assets/docs/assets/js/e6f9706b.acc800d3.js +1 -0
  36. solace_agent_mesh/assets/docs/assets/js/e92d0134.c147a429.js +1 -0
  37. solace_agent_mesh/assets/docs/assets/js/ee0c2fe7.94d0a351.js +1 -0
  38. solace_agent_mesh/assets/docs/assets/js/f284c35a.08fab659.js +1 -0
  39. solace_agent_mesh/assets/docs/assets/js/main.b241af3e.js +2 -0
  40. solace_agent_mesh/assets/docs/assets/js/runtime~main.4ca7d2e2.js +1 -0
  41. solace_agent_mesh/assets/docs/docs/documentation/components/agents/index.html +4 -4
  42. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/artifact-management/index.html +4 -4
  43. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/audio-tools/index.html +4 -4
  44. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/data-analysis-tools/index.html +4 -4
  45. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/embeds/index.html +4 -4
  46. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/image-tools/index.html +81 -0
  47. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/index.html +14 -12
  48. solace_agent_mesh/assets/docs/docs/documentation/components/cli/index.html +30 -9
  49. solace_agent_mesh/assets/docs/docs/documentation/components/gateways/index.html +4 -4
  50. solace_agent_mesh/assets/docs/docs/documentation/components/index.html +6 -4
  51. solace_agent_mesh/assets/docs/docs/documentation/components/orchestrator/index.html +4 -4
  52. solace_agent_mesh/assets/docs/docs/documentation/components/platform-service/index.html +33 -0
  53. solace_agent_mesh/assets/docs/docs/documentation/components/plugins/index.html +4 -4
  54. solace_agent_mesh/assets/docs/docs/documentation/components/projects/index.html +4 -4
  55. solace_agent_mesh/assets/docs/docs/documentation/components/prompts/index.html +4 -4
  56. solace_agent_mesh/assets/docs/docs/documentation/components/proxies/index.html +4 -4
  57. solace_agent_mesh/assets/docs/docs/documentation/components/speech/index.html +4 -4
  58. solace_agent_mesh/assets/docs/docs/documentation/deploying/debugging/index.html +4 -4
  59. solace_agent_mesh/assets/docs/docs/documentation/deploying/deployment-options/index.html +5 -5
  60. solace_agent_mesh/assets/docs/docs/documentation/deploying/index.html +4 -4
  61. solace_agent_mesh/assets/docs/docs/documentation/deploying/{kubernetes-deployment → kubernetes}/index.html +6 -6
  62. solace_agent_mesh/assets/docs/docs/documentation/deploying/kubernetes/kubernetes-deployment-guide/index.html +197 -0
  63. solace_agent_mesh/assets/docs/docs/documentation/deploying/logging/index.html +11 -6
  64. solace_agent_mesh/assets/docs/docs/documentation/deploying/observability/index.html +4 -4
  65. solace_agent_mesh/assets/docs/docs/documentation/deploying/proxy_configuration/index.html +4 -4
  66. solace_agent_mesh/assets/docs/docs/documentation/developing/create-agents/index.html +4 -4
  67. solace_agent_mesh/assets/docs/docs/documentation/developing/create-gateways/index.html +4 -4
  68. solace_agent_mesh/assets/docs/docs/documentation/developing/creating-python-tools/index.html +23 -5
  69. solace_agent_mesh/assets/docs/docs/documentation/developing/creating-service-providers/index.html +4 -4
  70. solace_agent_mesh/assets/docs/docs/documentation/developing/evaluations/index.html +4 -4
  71. solace_agent_mesh/assets/docs/docs/documentation/developing/index.html +4 -4
  72. solace_agent_mesh/assets/docs/docs/documentation/developing/structure/index.html +4 -4
  73. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/bedrock-agents/index.html +4 -4
  74. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/custom-agent/index.html +4 -4
  75. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/event-mesh-gateway/index.html +4 -4
  76. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/mcp-integration/index.html +17 -8
  77. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/mongodb-integration/index.html +4 -4
  78. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/rag-integration/index.html +4 -4
  79. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/rest-gateway/index.html +4 -4
  80. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/slack-integration/index.html +4 -4
  81. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/sql-database/index.html +4 -4
  82. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/teams-integration/index.html +4 -4
  83. solace_agent_mesh/assets/docs/docs/documentation/enterprise/agent-builder/index.html +5 -5
  84. solace_agent_mesh/assets/docs/docs/documentation/enterprise/connectors/index.html +4 -4
  85. solace_agent_mesh/assets/docs/docs/documentation/enterprise/index.html +4 -4
  86. solace_agent_mesh/assets/docs/docs/documentation/enterprise/installation/index.html +4 -4
  87. solace_agent_mesh/assets/docs/docs/documentation/enterprise/openapi-tools/index.html +4 -4
  88. solace_agent_mesh/assets/docs/docs/documentation/enterprise/rbac-setup-guide/index.html +4 -4
  89. solace_agent_mesh/assets/docs/docs/documentation/enterprise/secure-user-delegated-access/index.html +4 -4
  90. solace_agent_mesh/assets/docs/docs/documentation/enterprise/single-sign-on/index.html +4 -4
  91. solace_agent_mesh/assets/docs/docs/documentation/enterprise/wheel-installation/index.html +4 -4
  92. solace_agent_mesh/assets/docs/docs/documentation/getting-started/architecture/index.html +4 -4
  93. solace_agent_mesh/assets/docs/docs/documentation/getting-started/index.html +6 -5
  94. solace_agent_mesh/assets/docs/docs/documentation/getting-started/introduction/index.html +4 -4
  95. solace_agent_mesh/assets/docs/docs/documentation/getting-started/try-agent-mesh/index.html +4 -4
  96. solace_agent_mesh/assets/docs/docs/documentation/getting-started/vibe_coding/index.html +62 -0
  97. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/artifact-storage/index.html +25 -4
  98. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/configurations/index.html +4 -4
  99. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/index.html +4 -4
  100. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/installation/index.html +4 -4
  101. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/large_language_models/index.html +4 -4
  102. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/run-project/index.html +4 -4
  103. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/session-storage/index.html +4 -4
  104. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/user-feedback/index.html +4 -4
  105. solace_agent_mesh/assets/docs/docs/documentation/migrations/a2a-upgrade/a2a-gateway-upgrade-to-0.3.0/index.html +4 -4
  106. solace_agent_mesh/assets/docs/docs/documentation/migrations/a2a-upgrade/a2a-technical-migration-map/index.html +4 -4
  107. solace_agent_mesh/assets/docs/docs/documentation/migrations/platform-service-split/index.html +85 -0
  108. solace_agent_mesh/assets/docs/lunr-index-1767712284328.json +1 -0
  109. solace_agent_mesh/assets/docs/lunr-index.json +1 -1
  110. solace_agent_mesh/assets/docs/search-doc-1767712284328.json +1 -0
  111. solace_agent_mesh/assets/docs/search-doc.json +1 -1
  112. solace_agent_mesh/assets/docs/sitemap.xml +1 -1
  113. solace_agent_mesh/cli/__init__.py +1 -1
  114. solace_agent_mesh/cli/commands/init_cmd/__init__.py +15 -0
  115. solace_agent_mesh/cli/commands/init_cmd/directory_step.py +1 -1
  116. solace_agent_mesh/cli/commands/init_cmd/env_step.py +29 -2
  117. solace_agent_mesh/cli/commands/init_cmd/platform_service_step.py +85 -0
  118. solace_agent_mesh/cli/commands/tools_cmd.py +315 -0
  119. solace_agent_mesh/cli/main.py +2 -0
  120. solace_agent_mesh/client/webui/frontend/static/assets/{authCallback-Dj3JtK42.js → authCallback-8Nihi8rv.js} +1 -1
  121. solace_agent_mesh/client/webui/frontend/static/assets/{client-ZKk9kEJ5.js → client-DYtZN8p-.js} +1 -1
  122. solace_agent_mesh/client/webui/frontend/static/assets/main-BYGUHQMk.js +435 -0
  123. solace_agent_mesh/client/webui/frontend/static/assets/main-D2CSH1bp.css +1 -0
  124. solace_agent_mesh/client/webui/frontend/static/assets/{vendor-BNV4kZN0.js → vendor-XBWAmrun.js} +106 -101
  125. solace_agent_mesh/client/webui/frontend/static/auth-callback.html +3 -3
  126. solace_agent_mesh/client/webui/frontend/static/index.html +4 -4
  127. solace_agent_mesh/client/webui/frontend/static/ui-version.json +1 -1
  128. solace_agent_mesh/common/a2a/types.py +1 -1
  129. solace_agent_mesh/common/agent_registry.py +38 -11
  130. solace_agent_mesh/common/data_parts.py +28 -0
  131. solace_agent_mesh/common/error_handlers.py +83 -0
  132. solace_agent_mesh/common/sam_events/event_service.py +2 -2
  133. solace_agent_mesh/config_portal/backend/common.py +2 -0
  134. solace_agent_mesh/config_portal/frontend/static/client/assets/_index-ZV-jX48T.js +103 -0
  135. solace_agent_mesh/config_portal/frontend/static/client/assets/{manifest-ba77705e.js → manifest-ce5bc5da.js} +1 -1
  136. solace_agent_mesh/config_portal/frontend/static/client/index.html +1 -1
  137. solace_agent_mesh/core_a2a/service.py +3 -2
  138. solace_agent_mesh/gateway/adapter/base.py +28 -1
  139. solace_agent_mesh/gateway/adapter/types.py +9 -0
  140. solace_agent_mesh/gateway/base/auth_interface.py +103 -0
  141. solace_agent_mesh/gateway/base/component.py +68 -1
  142. solace_agent_mesh/gateway/generic/component.py +195 -30
  143. solace_agent_mesh/gateway/http_sse/app.py +23 -6
  144. solace_agent_mesh/gateway/http_sse/component.py +9 -61
  145. solace_agent_mesh/gateway/http_sse/dependencies.py +9 -51
  146. solace_agent_mesh/gateway/http_sse/main.py +28 -418
  147. solace_agent_mesh/gateway/http_sse/repository/chat_task_repository.py +2 -2
  148. solace_agent_mesh/gateway/http_sse/repository/entities/project.py +1 -1
  149. solace_agent_mesh/gateway/http_sse/repository/entities/project_user.py +1 -1
  150. solace_agent_mesh/gateway/http_sse/repository/entities/session.py +2 -2
  151. solace_agent_mesh/gateway/http_sse/repository/feedback_repository.py +2 -2
  152. solace_agent_mesh/gateway/http_sse/repository/interfaces.py +2 -2
  153. solace_agent_mesh/gateway/http_sse/repository/models/prompt_model.py +1 -1
  154. solace_agent_mesh/gateway/http_sse/repository/models/session_model.py +1 -1
  155. solace_agent_mesh/gateway/http_sse/repository/project_repository.py +1 -1
  156. solace_agent_mesh/gateway/http_sse/repository/project_user_repository.py +1 -1
  157. solace_agent_mesh/gateway/http_sse/repository/session_repository.py +4 -4
  158. solace_agent_mesh/gateway/http_sse/repository/task_repository.py +2 -2
  159. solace_agent_mesh/gateway/http_sse/routers/artifacts.py +16 -15
  160. solace_agent_mesh/gateway/http_sse/routers/auth.py +61 -132
  161. solace_agent_mesh/gateway/http_sse/routers/config.py +12 -8
  162. solace_agent_mesh/gateway/http_sse/routers/dto/requests/session_requests.py +1 -1
  163. solace_agent_mesh/gateway/http_sse/routers/dto/responses/base_responses.py +1 -1
  164. solace_agent_mesh/gateway/http_sse/routers/dto/responses/session_responses.py +2 -2
  165. solace_agent_mesh/gateway/http_sse/routers/feedback.py +2 -2
  166. solace_agent_mesh/gateway/http_sse/routers/people.py +2 -2
  167. solace_agent_mesh/gateway/http_sse/routers/projects.py +2 -1
  168. solace_agent_mesh/gateway/http_sse/routers/prompts.py +2 -1
  169. solace_agent_mesh/gateway/http_sse/routers/sessions.py +3 -3
  170. solace_agent_mesh/gateway/http_sse/routers/speech.py +1 -1
  171. solace_agent_mesh/gateway/http_sse/routers/tasks.py +3 -2
  172. solace_agent_mesh/gateway/http_sse/routers/users.py +1 -1
  173. solace_agent_mesh/gateway/http_sse/routers/visualization.py +2 -1
  174. solace_agent_mesh/gateway/http_sse/services/background_task_monitor.py +1 -1
  175. solace_agent_mesh/gateway/http_sse/services/data_retention_service.py +1 -1
  176. solace_agent_mesh/gateway/http_sse/services/feedback_service.py +1 -1
  177. solace_agent_mesh/gateway/http_sse/services/session_service.py +4 -4
  178. solace_agent_mesh/gateway/http_sse/services/task_logger_service.py +1 -1
  179. solace_agent_mesh/services/platform/__init__.py +23 -12
  180. solace_agent_mesh/services/platform/api/dependencies.py +23 -16
  181. solace_agent_mesh/services/platform/api/main.py +118 -43
  182. solace_agent_mesh/services/platform/api/routers/__init__.py +12 -3
  183. solace_agent_mesh/services/platform/api/routers/health_router.py +31 -0
  184. solace_agent_mesh/services/platform/app.py +101 -7
  185. solace_agent_mesh/services/platform/component.py +552 -33
  186. solace_agent_mesh/shared/__init__.py +14 -0
  187. solace_agent_mesh/shared/api/__init__.py +42 -0
  188. solace_agent_mesh/shared/auth/__init__.py +26 -0
  189. solace_agent_mesh/shared/auth/dependencies.py +204 -0
  190. solace_agent_mesh/shared/auth/middleware.py +291 -0
  191. solace_agent_mesh/shared/database/__init__.py +20 -0
  192. solace_agent_mesh/{gateway/http_sse/shared → shared/database}/base_repository.py +1 -1
  193. solace_agent_mesh/{gateway/http_sse/shared → shared/database}/database_exceptions.py +1 -1
  194. solace_agent_mesh/{gateway/http_sse/shared → shared/database}/database_helpers.py +1 -1
  195. solace_agent_mesh/shared/exceptions/__init__.py +36 -0
  196. solace_agent_mesh/{gateway/http_sse/shared → shared/exceptions}/exception_handlers.py +1 -1
  197. solace_agent_mesh/shared/utils/__init__.py +21 -0
  198. solace_agent_mesh/templates/platform.yaml +49 -0
  199. solace_agent_mesh/templates/webui.yaml +12 -3
  200. {solace_agent_mesh-1.11.2.dist-info → solace_agent_mesh-1.12.0.dist-info}/METADATA +2 -1
  201. {solace_agent_mesh-1.11.2.dist-info → solace_agent_mesh-1.12.0.dist-info}/RECORD +214 -258
  202. solace_agent_mesh/agent/adk/adk_llm.txt +0 -226
  203. solace_agent_mesh/agent/adk/adk_llm_detail.txt +0 -566
  204. solace_agent_mesh/agent/adk/artifacts/artifacts_llm.txt +0 -171
  205. solace_agent_mesh/agent/adk/models/models_llm.txt +0 -189
  206. solace_agent_mesh/agent/agent_llm.txt +0 -369
  207. solace_agent_mesh/agent/agent_llm_detail.txt +0 -1702
  208. solace_agent_mesh/agent/protocol/protocol_llm.txt +0 -81
  209. solace_agent_mesh/agent/protocol/protocol_llm_detail.txt +0 -92
  210. solace_agent_mesh/agent/proxies/a2a/a2a_llm.txt +0 -190
  211. solace_agent_mesh/agent/proxies/base/base_llm.txt +0 -148
  212. solace_agent_mesh/agent/proxies/proxies_llm.txt +0 -283
  213. solace_agent_mesh/agent/sac/sac_llm.txt +0 -189
  214. solace_agent_mesh/agent/sac/sac_llm_detail.txt +0 -200
  215. solace_agent_mesh/agent/testing/testing_llm.txt +0 -58
  216. solace_agent_mesh/agent/testing/testing_llm_detail.txt +0 -68
  217. solace_agent_mesh/agent/tools/tools_llm.txt +0 -276
  218. solace_agent_mesh/agent/tools/tools_llm_detail.txt +0 -275
  219. solace_agent_mesh/agent/utils/utils_llm.txt +0 -152
  220. solace_agent_mesh/agent/utils/utils_llm_detail.txt +0 -149
  221. solace_agent_mesh/assets/docs/assets/js/15ba94aa.92fea363.js +0 -1
  222. solace_agent_mesh/assets/docs/assets/js/240a0364.9ad94d1b.js +0 -1
  223. solace_agent_mesh/assets/docs/assets/js/2e32b5e0.33f5d75b.js +0 -1
  224. solace_agent_mesh/assets/docs/assets/js/3a6c6137.f5940cfa.js +0 -1
  225. solace_agent_mesh/assets/docs/assets/js/3ff0015d.2ddc75c0.js +0 -1
  226. solace_agent_mesh/assets/docs/assets/js/547e15cc.2f7790c1.js +0 -1
  227. solace_agent_mesh/assets/docs/assets/js/5c2bd65f.90a87880.js +0 -1
  228. solace_agent_mesh/assets/docs/assets/js/64195356.c498c4d0.js +0 -1
  229. solace_agent_mesh/assets/docs/assets/js/66d4869e.b77431fc.js +0 -1
  230. solace_agent_mesh/assets/docs/assets/js/8024126c.fa0e7186.js +0 -1
  231. solace_agent_mesh/assets/docs/assets/js/81a99df0.2484b8d9.js +0 -1
  232. solace_agent_mesh/assets/docs/assets/js/9bb13469.b2333011.js +0 -1
  233. solace_agent_mesh/assets/docs/assets/js/ab9708a8.245ae0ef.js +0 -1
  234. solace_agent_mesh/assets/docs/assets/js/db5d6442.3daf1696.js +0 -1
  235. solace_agent_mesh/assets/docs/assets/js/e04b235d.52cb25ed.js +0 -1
  236. solace_agent_mesh/assets/docs/assets/js/e1b6eeb4.b1068f9b.js +0 -1
  237. solace_agent_mesh/assets/docs/assets/js/e6f9706b.4488e34c.js +0 -1
  238. solace_agent_mesh/assets/docs/assets/js/e92d0134.3bda61dd.js +0 -1
  239. solace_agent_mesh/assets/docs/assets/js/f284c35a.250993bf.js +0 -1
  240. solace_agent_mesh/assets/docs/assets/js/main.7acf7ace.js +0 -2
  241. solace_agent_mesh/assets/docs/assets/js/runtime~main.9e0813a2.js +0 -1
  242. solace_agent_mesh/assets/docs/lunr-index-1765810064709.json +0 -1
  243. solace_agent_mesh/assets/docs/search-doc-1765810064709.json +0 -1
  244. solace_agent_mesh/cli/commands/add_cmd/add_cmd_llm.txt +0 -250
  245. solace_agent_mesh/cli/commands/init_cmd/init_cmd_llm.txt +0 -365
  246. solace_agent_mesh/cli/commands/plugin_cmd/plugin_cmd_llm.txt +0 -305
  247. solace_agent_mesh/client/webui/frontend/static/assets/main-BcUaNZ-Q.css +0 -1
  248. solace_agent_mesh/client/webui/frontend/static/assets/main-vjch4RYc.js +0 -435
  249. solace_agent_mesh/common/a2a/a2a_llm.txt +0 -175
  250. solace_agent_mesh/common/a2a/a2a_llm_detail.txt +0 -193
  251. solace_agent_mesh/common/a2a_spec/a2a_spec_llm.txt +0 -445
  252. solace_agent_mesh/common/a2a_spec/a2a_spec_llm_detail.txt +0 -736
  253. solace_agent_mesh/common/a2a_spec/schemas/schemas_llm.txt +0 -330
  254. solace_agent_mesh/common/common_llm.txt +0 -230
  255. solace_agent_mesh/common/common_llm_detail.txt +0 -2562
  256. solace_agent_mesh/common/middleware/middleware_llm.txt +0 -174
  257. solace_agent_mesh/common/middleware/middleware_llm_detail.txt +0 -185
  258. solace_agent_mesh/common/sac/sac_llm.txt +0 -71
  259. solace_agent_mesh/common/sac/sac_llm_detail.txt +0 -82
  260. solace_agent_mesh/common/sam_events/sam_events_llm.txt +0 -104
  261. solace_agent_mesh/common/sam_events/sam_events_llm_detail.txt +0 -115
  262. solace_agent_mesh/common/services/providers/providers_llm.txt +0 -81
  263. solace_agent_mesh/common/services/services_llm.txt +0 -368
  264. solace_agent_mesh/common/services/services_llm_detail.txt +0 -459
  265. solace_agent_mesh/common/utils/embeds/embeds_llm.txt +0 -220
  266. solace_agent_mesh/common/utils/utils_llm.txt +0 -335
  267. solace_agent_mesh/common/utils/utils_llm_detail.txt +0 -572
  268. solace_agent_mesh/config_portal/frontend/static/client/assets/_index-DiOiAjzL.js +0 -103
  269. solace_agent_mesh/core_a2a/core_a2a_llm.txt +0 -90
  270. solace_agent_mesh/core_a2a/core_a2a_llm_detail.txt +0 -101
  271. solace_agent_mesh/gateway/base/base_llm.txt +0 -226
  272. solace_agent_mesh/gateway/base/base_llm_detail.txt +0 -235
  273. solace_agent_mesh/gateway/gateway_llm.txt +0 -369
  274. solace_agent_mesh/gateway/gateway_llm_detail.txt +0 -3885
  275. solace_agent_mesh/gateway/http_sse/alembic/alembic_llm.txt +0 -345
  276. solace_agent_mesh/gateway/http_sse/alembic/versions/versions_llm.txt +0 -161
  277. solace_agent_mesh/gateway/http_sse/components/components_llm.txt +0 -105
  278. solace_agent_mesh/gateway/http_sse/http_sse_llm.txt +0 -299
  279. solace_agent_mesh/gateway/http_sse/http_sse_llm_detail.txt +0 -3278
  280. solace_agent_mesh/gateway/http_sse/repository/entities/entities_llm.txt +0 -221
  281. solace_agent_mesh/gateway/http_sse/repository/models/models_llm.txt +0 -257
  282. solace_agent_mesh/gateway/http_sse/repository/repository_llm.txt +0 -308
  283. solace_agent_mesh/gateway/http_sse/routers/dto/dto_llm.txt +0 -450
  284. solace_agent_mesh/gateway/http_sse/routers/dto/requests/requests_llm.txt +0 -133
  285. solace_agent_mesh/gateway/http_sse/routers/dto/responses/responses_llm.txt +0 -123
  286. solace_agent_mesh/gateway/http_sse/routers/routers_llm.txt +0 -312
  287. solace_agent_mesh/gateway/http_sse/services/services_llm.txt +0 -303
  288. solace_agent_mesh/gateway/http_sse/shared/__init__.py +0 -146
  289. solace_agent_mesh/gateway/http_sse/shared/shared_llm.txt +0 -319
  290. solace_agent_mesh/gateway/http_sse/utils/utils_llm.txt +0 -47
  291. solace_agent_mesh/llm.txt +0 -228
  292. solace_agent_mesh/llm_detail.txt +0 -2835
  293. solace_agent_mesh/solace_agent_mesh_llm.txt +0 -362
  294. solace_agent_mesh/solace_agent_mesh_llm_detail.txt +0 -8599
  295. solace_agent_mesh/templates/templates_llm.txt +0 -147
  296. /solace_agent_mesh/assets/docs/assets/js/{main.7acf7ace.js.LICENSE.txt → main.b241af3e.js.LICENSE.txt} +0 -0
  297. /solace_agent_mesh/{gateway/http_sse/shared → shared/api}/auth_utils.py +0 -0
  298. /solace_agent_mesh/{gateway/http_sse/shared → shared/api}/pagination.py +0 -0
  299. /solace_agent_mesh/{gateway/http_sse/shared → shared/api}/response_utils.py +0 -0
  300. /solace_agent_mesh/{gateway/http_sse/shared → shared/exceptions}/error_dto.py +0 -0
  301. /solace_agent_mesh/{gateway/http_sse/shared → shared/exceptions}/exceptions.py +0 -0
  302. /solace_agent_mesh/{gateway/http_sse/shared → shared/utils}/enums.py +0 -0
  303. /solace_agent_mesh/{gateway/http_sse/shared → shared/utils}/timestamp_utils.py +0 -0
  304. /solace_agent_mesh/{gateway/http_sse/shared → shared/utils}/types.py +0 -0
  305. /solace_agent_mesh/{gateway/http_sse/shared → shared/utils}/utils.py +0 -0
  306. {solace_agent_mesh-1.11.2.dist-info → solace_agent_mesh-1.12.0.dist-info}/WHEEL +0 -0
  307. {solace_agent_mesh-1.11.2.dist-info → solace_agent_mesh-1.12.0.dist-info}/entry_points.txt +0 -0
  308. {solace_agent_mesh-1.11.2.dist-info → solace_agent_mesh-1.12.0.dist-info}/licenses/LICENSE +0 -0
@@ -1,90 +0,0 @@
1
- # DEVELOPER GUIDE: core_a2a
2
-
3
- ## Quick Summary
4
- The `core_a2a` directory provides a reusable service layer for core Agent-to-Agent (A2A) interactions. It handles task submission (both regular and streaming), task cancellation, and agent discovery processing while being decoupled from specific gateway implementations and SAC messaging details.
5
-
6
- ## Files Overview
7
- - `__init__.py` - Package initialization file for the core A2A service layer
8
- - `service.py` - Main service class that encapsulates A2A protocol logic and agent registry operations
9
-
10
- ## Developer API Reference
11
-
12
- ### __init__.py
13
- **Purpose:** Package initialization for the core A2A service layer
14
- **Import:** `import solace_agent_mesh.core_a2a`
15
-
16
- No public classes, functions, or constants defined.
17
-
18
- ### service.py
19
- **Purpose:** Provides the main CoreA2AService class for handling A2A protocol operations
20
- **Import:** `from solace_agent_mesh.core_a2a.service import CoreA2AService`
21
-
22
- **Classes:**
23
- - `CoreA2AService(agent_registry: AgentRegistry, namespace: str)` - Main service class for A2A operations
24
- - `submit_task(agent_name: str, a2a_message: A2AMessage, session_id: str, client_id: str, reply_to_topic: str, user_id: str = "default_user", a2a_user_config: Optional[Dict[str, Any]] = None, metadata_override: Optional[Dict[str, Any]] = None) -> Tuple[str, Dict, Dict]` - Constructs topic, payload, and user properties for non-streaming task requests
25
- - `submit_streaming_task(agent_name: str, a2a_message: A2AMessage, session_id: str, client_id: str, reply_to_topic: str, status_to_topic: str, user_id: str = "default_user", a2a_user_config: Optional[Dict[str, Any]] = None, metadata_override: Optional[Dict[str, Any]] = None) -> Tuple[str, Dict, Dict]` - Constructs topic, payload, and user properties for streaming task requests
26
- - `cancel_task(agent_name: str, task_id: str, client_id: str, user_id: str = "default_user") -> Tuple[str, Dict, Dict]` - Constructs topic, payload, and user properties for task cancellation
27
- - `get_agent(agent_name: str) -> Optional[AgentCard]` - Retrieves a specific agent card by name from the registry
28
- - `get_all_agents() -> List[AgentCard]` - Retrieves all currently discovered agent cards from the registry
29
- - `process_discovery_message(agent_card: AgentCard)` - Processes an incoming agent card discovery message
30
- - `agent_registry: AgentRegistry` - The shared agent registry instance
31
- - `namespace: str` - The namespace string
32
- - `log_identifier: str` - Identifier used for logging
33
-
34
- **Functions:**
35
- None (all functionality is encapsulated in the CoreA2AService class)
36
-
37
- **Constants/Variables:**
38
- None
39
-
40
- **Usage Examples:**
41
- ```python
42
- # Import required dependencies
43
- from solace_agent_mesh.core_a2a.service import CoreA2AService
44
- from solace_agent_mesh.common.agent_registry import AgentRegistry
45
- from a2a.types import A2AMessage, AgentCard
46
-
47
- # Initialize the service
48
- agent_registry = AgentRegistry()
49
- namespace = "my_NAMESPACE"
50
- service = CoreA2AService(agent_registry, namespace)
51
-
52
- # Submit a regular task
53
- message = A2AMessage(parts=[{"type": "text", "content": "Hello"}])
54
- topic, payload, user_props = service.submit_task(
55
- agent_name="my_agent",
56
- a2a_message=message,
57
- session_id="session_123",
58
- client_id="client_456",
59
- reply_to_topic="responses/client_456",
60
- user_id="user_789"
61
- )
62
-
63
- # Submit a streaming task
64
- topic, payload, user_props = service.submit_streaming_task(
65
- agent_name="my_agent",
66
- a2a_message=message,
67
- session_id="session_123",
68
- client_id="client_456",
69
- reply_to_topic="responses/client_456",
70
- status_to_topic="status/client_456",
71
- user_id="user_789"
72
- )
73
-
74
- # Cancel a task
75
- topic, payload, user_props = service.cancel_task(
76
- agent_name="my_agent",
77
- task_id="task-abc123",
78
- client_id="client_456"
79
- )
80
-
81
- # Get agent information
82
- agent = service.get_agent("my_agent")
83
- all_agents = service.get_all_agents()
84
-
85
- # Process discovery message
86
- agent_card = AgentCard(name="new_agent", description="A new agent")
87
- service.process_discovery_message(agent_card)
88
- ```
89
-
90
- # content_hash: 64e02756b1b097e39257e8e52df701d758df0f8d022ea6d6b088057f7025a6d9
@@ -1,101 +0,0 @@
1
- # LLM Summary Detail File
2
-
3
- This file is a concatenation of all individual *llm.txt files found in the 'core_a2a' directory tree. Each section below corresponds to a specific directory's summary file.
4
-
5
- ================================================================================
6
-
7
- ## Section 1: solace_agent_mesh/core_a2a/core_a2a_llm.txt
8
-
9
- **Source file:** `solace_agent_mesh/core_a2a/core_a2a_llm.txt`
10
-
11
- # DEVELOPER GUIDE: core_a2a
12
-
13
- ## Quick Summary
14
- The `core_a2a` directory provides a reusable service layer for core Agent-to-Agent (A2A) interactions. It handles task submission (both regular and streaming), task cancellation, and agent discovery processing while being decoupled from specific gateway implementations and SAC messaging details.
15
-
16
- ## Files Overview
17
- - `__init__.py` - Package initialization file for the core A2A service layer
18
- - `service.py` - Main service class that encapsulates A2A protocol logic and agent registry operations
19
-
20
- ## Developer API Reference
21
-
22
- ### __init__.py
23
- **Purpose:** Package initialization for the core A2A service layer
24
- **Import:** `import solace_agent_mesh.core_a2a`
25
-
26
- No public classes, functions, or constants defined.
27
-
28
- ### service.py
29
- **Purpose:** Provides the main CoreA2AService class for handling A2A protocol operations
30
- **Import:** `from solace_agent_mesh.core_a2a.service import CoreA2AService`
31
-
32
- **Classes:**
33
- - `CoreA2AService(agent_registry: AgentRegistry, namespace: str)` - Main service class for A2A operations
34
- - `submit_task(agent_name: str, a2a_message: A2AMessage, session_id: str, client_id: str, reply_to_topic: str, user_id: str = "default_user", a2a_user_config: Optional[Dict[str, Any]] = None, metadata_override: Optional[Dict[str, Any]] = None) -> Tuple[str, Dict, Dict]` - Constructs topic, payload, and user properties for non-streaming task requests
35
- - `submit_streaming_task(agent_name: str, a2a_message: A2AMessage, session_id: str, client_id: str, reply_to_topic: str, status_to_topic: str, user_id: str = "default_user", a2a_user_config: Optional[Dict[str, Any]] = None, metadata_override: Optional[Dict[str, Any]] = None) -> Tuple[str, Dict, Dict]` - Constructs topic, payload, and user properties for streaming task requests
36
- - `cancel_task(agent_name: str, task_id: str, client_id: str, user_id: str = "default_user") -> Tuple[str, Dict, Dict]` - Constructs topic, payload, and user properties for task cancellation
37
- - `get_agent(agent_name: str) -> Optional[AgentCard]` - Retrieves a specific agent card by name from the registry
38
- - `get_all_agents() -> List[AgentCard]` - Retrieves all currently discovered agent cards from the registry
39
- - `process_discovery_message(agent_card: AgentCard)` - Processes an incoming agent card discovery message
40
- - `agent_registry: AgentRegistry` - The shared agent registry instance
41
- - `namespace: str` - The namespace string
42
- - `log_identifier: str` - Identifier used for logging
43
-
44
- **Functions:**
45
- None (all functionality is encapsulated in the CoreA2AService class)
46
-
47
- **Constants/Variables:**
48
- None
49
-
50
- **Usage Examples:**
51
- ```python
52
- # Import required dependencies
53
- from solace_agent_mesh.core_a2a.service import CoreA2AService
54
- from solace_agent_mesh.common.agent_registry import AgentRegistry
55
- from a2a.types import A2AMessage, AgentCard
56
-
57
- # Initialize the service
58
- agent_registry = AgentRegistry()
59
- namespace = "my_NAMESPACE"
60
- service = CoreA2AService(agent_registry, namespace)
61
-
62
- # Submit a regular task
63
- message = A2AMessage(parts=[{"type": "text", "content": "Hello"}])
64
- topic, payload, user_props = service.submit_task(
65
- agent_name="my_agent",
66
- a2a_message=message,
67
- session_id="session_123",
68
- client_id="client_456",
69
- reply_to_topic="responses/client_456",
70
- user_id="user_789"
71
- )
72
-
73
- # Submit a streaming task
74
- topic, payload, user_props = service.submit_streaming_task(
75
- agent_name="my_agent",
76
- a2a_message=message,
77
- session_id="session_123",
78
- client_id="client_456",
79
- reply_to_topic="responses/client_456",
80
- status_to_topic="status/client_456",
81
- user_id="user_789"
82
- )
83
-
84
- # Cancel a task
85
- topic, payload, user_props = service.cancel_task(
86
- agent_name="my_agent",
87
- task_id="task-abc123",
88
- client_id="client_456"
89
- )
90
-
91
- # Get agent information
92
- agent = service.get_agent("my_agent")
93
- all_agents = service.get_all_agents()
94
-
95
- # Process discovery message
96
- agent_card = AgentCard(name="new_agent", description="A new agent")
97
- service.process_discovery_message(agent_card)
98
- ```
99
-
100
- ================================================================================
101
-
@@ -1,226 +0,0 @@
1
- # DEVELOPER GUIDE: base
2
-
3
- ## Quick Summary
4
- The `base` directory provides foundational abstract classes for building Gateway implementations within the Solace AI Connector. It establishes a framework for handling common gateway tasks such as application configuration, Solace broker integration, A2A (Agent-to-Agent) message protocol handling, and managing the lifecycle of requests from external platforms. Developers should subclass `BaseGatewayApp` and `BaseGatewayComponent` to create new gateways.
5
-
6
- ## Files Overview
7
- - `__init__.py` - Marks the directory as a Python package
8
- - `app.py` - Contains the base application class that handles configuration, schema merging, and broker setup
9
- - `component.py` - Contains the core logic class for processing A2A messages and integrating with external platforms
10
- - `task_context.py` - Provides a thread-safe manager for mapping A2A task IDs to their original request context
11
-
12
- ## Developer API Reference
13
-
14
- ### __init__.py
15
- **Purpose:** Initializes the `gateway.base` Python package
16
- **Import:** `from solace_agent_mesh.gateway.base import ...`
17
-
18
- ---
19
-
20
- ### app.py
21
- **Purpose:** Provides the base application class for gateway implementations with automated configuration schema merging, Solace broker setup, and component instantiation
22
- **Import:** `from solace_agent_mesh.gateway.base.app import BaseGatewayApp, BaseGatewayComponent`
23
-
24
- **Classes:**
25
- - `BaseGatewayComponent(ComponentBase)` - Base marker class for gateway components
26
- - `BaseGatewayApp(app_info: Dict[str, Any], **kwargs)` - Main application class to be subclassed for new gateways
27
- - `_get_gateway_component_class(self) -> Type[BaseGatewayComponent]` - **[Abstract Method]** Must return the specific gateway component class
28
- - `namespace: str` - Absolute topic prefix for A2A communication (e.g., 'myorg/dev')
29
- - `gateway_id: str` - Unique ID for this gateway instance (auto-generated if not provided)
30
- - `artifact_service_config: Dict` - Configuration for the shared ADK Artifact Service
31
- - `enable_embed_resolution: bool` - Flag to enable/disable late-stage 'artifact_content' embed resolution
32
- - `gateway_max_artifact_resolve_size_bytes: int` - Maximum size for resolving artifacts (default: 104857600)
33
- - `gateway_recursive_embed_depth: int` - Maximum depth for recursive embed resolution (default: 12)
34
- - `artifact_handling_mode: str` - How gateway handles file parts: "reference", "embed", or "passthrough"
35
- - `gateway_max_message_size_bytes: int` - Maximum message size in bytes (default: 10MB)
36
-
37
- **Constants/Variables:**
38
- - `BASE_GATEWAY_APP_SCHEMA: Dict[str, List[Dict[str, Any]]]` - Base configuration schema automatically merged with subclass parameters
39
- - `SPECIFIC_APP_SCHEMA_PARAMS_ATTRIBUTE_NAME: str` - Class attribute name ("SPECIFIC_APP_SCHEMA_PARAMS") for subclass-specific config parameters
40
-
41
- **Usage Examples:**
42
- ```python
43
- from typing import Type, List, Dict, Any
44
- from solace_agent_mesh.gateway.base.app import BaseGatewayApp, BaseGatewayComponent
45
-
46
- class MyGatewayComponent(BaseGatewayComponent):
47
- # Implementation details...
48
- pass
49
-
50
- class MyGatewayApp(BaseGatewayApp):
51
- """Custom gateway application for My Platform."""
52
-
53
- # Define additional configuration parameters
54
- SPECIFIC_APP_SCHEMA_PARAMS: List[Dict[str, Any]] = [
55
- {
56
- "name": "my_platform_api_key",
57
- "required": True,
58
- "type": "string",
59
- "description": "API key for connecting to My Platform."
60
- }
61
- ]
62
-
63
- def _get_gateway_component_class(self) -> Type[BaseGatewayComponent]:
64
- return MyGatewayComponent
65
-
66
- # Usage in YAML config:
67
- # app_config:
68
- # namespace: "myorg/prod"
69
- # gateway_id: "my-gateway-instance-01"
70
- # artifact_service:
71
- # type: "local_file"
72
- # base_path: "/data/artifacts"
73
- # my_platform_api_key: "secret-key-here"
74
- ```
75
-
76
- ---
77
-
78
- ### component.py
79
- **Purpose:** Provides the abstract base class for gateway components containing core A2A protocol logic, service management, and external platform integration interface
80
- **Import:** `from solace_agent_mesh.gateway.base.component import BaseGatewayComponent`
81
-
82
- **Classes:**
83
- - `BaseGatewayComponent(resolve_artifact_uris_in_gateway: bool = True, **kwargs: Any)` - Abstract base class for gateway components
84
- - **Public Methods:**
85
- - `get_config(self, key: str, default: Any = None) -> Any` - Retrieves configuration from nested app_config or component_config
86
- - `authenticate_and_enrich_user(self, external_event_data: Any) -> Optional[Dict[str, Any]]` - Orchestrates user authentication and identity enrichment
87
- - `submit_a2a_task(self, target_agent_name: str, a2a_parts: List[ContentPart], external_request_context: Dict[str, Any], user_identity: Any, is_streaming: bool = True, api_version: str = "v2") -> str` - Submits task to target agent, returns task_id
88
- - **Abstract Methods (Must be Implemented):**
89
- - `_extract_initial_claims(self, external_event_data: Any) -> Optional[Dict[str, Any]]` - Extract identity claims from platform event (must return dict with 'id' key)
90
- - `_start_listener(self) -> None` - Start external platform listener (e.g., web server, WebSocket)
91
- - `_stop_listener(self) -> None` - Stop external platform listener
92
- - `_translate_external_input(self, external_event: Any) -> Tuple[str, List[ContentPart], Dict[str, Any]]` - Convert external event to A2A format: (target_agent_name, a2a_parts, context)
93
- - `_send_update_to_external(self, external_request_context: Dict[str, Any], event_data: Union[TaskStatusUpdateEvent, TaskArtifactUpdateEvent], is_final_chunk_of_update: bool) -> None` - Send streaming update to external platform
94
- - `_send_final_response_to_external(self, external_request_context: Dict[str, Any], task_data: Task) -> None` - Send final response to external platform
95
- - `_send_error_to_external(self, external_request_context: Dict[str, Any], error_data: JSONRPCError) -> None` - Send error to external platform
96
- - **Properties:**
97
- - `namespace: str` - A2A communication namespace
98
- - `gateway_id: str` - Unique gateway instance ID
99
- - `agent_registry: AgentRegistry` - Registry for discovered agents
100
- - `core_a2a_service: CoreA2AService` - Core A2A protocol service
101
- - `shared_artifact_service: Optional[BaseArtifactService]` - Artifact service instance
102
- - `task_context_manager: TaskContextManager` - Thread-safe task context storage
103
- - `identity_service: Optional[BaseIdentityService]` - Identity enrichment service
104
-
105
- **Usage Examples:**
106
- ```python
107
- from typing import Any, Dict, List, Optional, Tuple, Union
108
- from solace_agent_mesh.gateway.base.component import BaseGatewayComponent
109
- from solace_agent_mesh.common.a2a.types import ContentPart
110
- from a2a.types import TextPart, Task, TaskStatusUpdateEvent, TaskArtifactUpdateEvent, JSONRPCError
111
-
112
- class MyGatewayComponent(BaseGatewayComponent):
113
-
114
- async def _extract_initial_claims(self, external_event_data: Any) -> Optional[Dict[str, Any]]:
115
- """Extract user identity from platform-specific event."""
116
- # Example for HTTP request
117
- if hasattr(external_event_data, 'headers'):
118
- user_id = external_event_data.headers.get('X-User-ID')
119
- if user_id:
120
- return {"id": user_id, "source": "http_header"}
121
- return None
122
-
123
- def _start_listener(self) -> None:
124
- """Start your platform listener (web server, etc.)."""
125
- # Example: Start FastAPI server, WebSocket connection, etc.
126
- pass
127
-
128
- def _stop_listener(self) -> None:
129
- """Stop your platform listener."""
130
- pass
131
-
132
- async def _translate_external_input(self, external_event: Any) -> Tuple[str, List[ContentPart], Dict[str, Any]]:
133
- """Convert external event to A2A format."""
134
- # Example translation
135
- target_agent = "my-agent"
136
- message_text = getattr(external_event, 'message', 'Hello')
137
- a2a_parts = [TextPart(text=message_text)]
138
- context = {
139
- "platform": "my_platform",
140
- "user_id_for_artifacts": "user123",
141
- "a2a_session_id": "session456"
142
- }
143
- return target_agent, a2a_parts, context
144
-
145
- async def _send_update_to_external(self, external_request_context: Dict[str, Any],
146
- event_data: Union[TaskStatusUpdateEvent, TaskArtifactUpdateEvent],
147
- is_final_chunk_of_update: bool) -> None:
148
- """Send streaming update back to external platform."""
149
- # Extract text from event and send to your platform
150
- pass
151
-
152
- async def _send_final_response_to_external(self, external_request_context: Dict[str, Any],
153
- task_data: Task) -> None:
154
- """Send final response back to external platform."""
155
- # Extract final result and send to your platform
156
- pass
157
-
158
- async def _send_error_to_external(self, external_request_context: Dict[str, Any],
159
- error_data: JSONRPCError) -> None:
160
- """Send error back to external platform."""
161
- # Send error message to your platform
162
- pass
163
-
164
- # Usage in your handler:
165
- async def handle_external_request(request):
166
- # Authenticate user
167
- user_identity = await component.authenticate_and_enrich_user(request)
168
- if not user_identity:
169
- return "Authentication failed"
170
-
171
- # Translate request
172
- target_agent, a2a_parts, context = await component._translate_external_input(request)
173
-
174
- # Submit to A2A system
175
- task_id = await component.submit_a2a_task(
176
- target_agent_name=target_agent,
177
- a2a_parts=a2a_parts,
178
- external_request_context=context,
179
- user_identity=user_identity,
180
- is_streaming=True
181
- )
182
-
183
- return f"Task submitted: {task_id}"
184
- ```
185
-
186
- ---
187
-
188
- ### task_context.py
189
- **Purpose:** Provides thread-safe storage for mapping A2A task IDs to their original external request context
190
- **Import:** `from solace_agent_mesh.gateway.base.task_context import TaskContextManager`
191
-
192
- **Classes:**
193
- - `TaskContextManager()` - Thread-safe context storage manager
194
- - `store_context(self, task_id: str, context_data: Dict[str, Any]) -> None` - Store context for a task ID
195
- - `get_context(self, task_id: str) -> Optional[Dict[str, Any]]` - Retrieve context for a task ID
196
- - `remove_context(self, task_id: str) -> Optional[Dict[str, Any]]` - Remove and return context for a task ID
197
- - `clear_all_contexts_for_testing(self) -> None` - Clear all contexts (testing only)
198
-
199
- **Usage Examples:**
200
- ```python
201
- from solace_agent_mesh.gateway.base.task_context import TaskContextManager
202
-
203
- # Initialize manager
204
- context_manager = TaskContextManager()
205
-
206
- # Store context when submitting task
207
- task_id = "gdk-task-abc123"
208
- context = {
209
- "platform": "slack",
210
- "channel_id": "C1234567890",
211
- "thread_ts": "1234567890.123456",
212
- "user_identity": {"id": "user123", "name": "John Doe"}
213
- }
214
- context_manager.store_context(task_id, context)
215
-
216
- # Retrieve context when processing response
217
- retrieved_context = context_manager.get_context(task_id)
218
- if retrieved_context:
219
- channel_id = retrieved_context["channel_id"]
220
- # Send response back to Slack channel
221
-
222
- # Clean up when task is complete
223
- context_manager.remove_context(task_id)
224
- ```
225
-
226
- # content_hash: 74574cc0c8234142d9ecddd116cc306b5420f938289ab4eab77feaa225adae7a
@@ -1,235 +0,0 @@
1
- # LLM Summary Detail File
2
-
3
- This file is a concatenation of all individual *llm.txt files found in the 'base' directory tree. Each section below corresponds to a specific directory's summary file.
4
-
5
- ================================================================================
6
-
7
- ## Section 1: solace_agent_mesh/gateway/base/base_llm.txt
8
-
9
- **Source file:** `solace_agent_mesh/gateway/base/base_llm.txt`
10
-
11
- # DEVELOPER GUIDE: base
12
-
13
- ## Quick Summary
14
- The `base` directory provides foundational abstract classes for building Gateway implementations within the Solace AI Connector. It establishes a framework for handling common gateway tasks such as application configuration, Solace broker integration, A2A (Agent-to-Agent) message protocol handling, and managing the lifecycle of requests from external platforms. Developers should subclass `BaseGatewayApp` and `BaseGatewayComponent` to create new gateways.
15
-
16
- ## Files Overview
17
- - `__init__.py` - Marks the directory as a Python package
18
- - `app.py` - Contains the base application class that handles configuration, schema merging, and broker setup
19
- - `component.py` - Contains the core logic class for processing A2A messages and integrating with external platforms
20
- - `task_context.py` - Provides a thread-safe manager for mapping A2A task IDs to their original request context
21
-
22
- ## Developer API Reference
23
-
24
- ### __init__.py
25
- **Purpose:** Initializes the `gateway.base` Python package
26
- **Import:** `from solace_agent_mesh.gateway.base import ...`
27
-
28
- ---
29
-
30
- ### app.py
31
- **Purpose:** Provides the base application class for gateway implementations with automated configuration schema merging, Solace broker setup, and component instantiation
32
- **Import:** `from solace_agent_mesh.gateway.base.app import BaseGatewayApp, BaseGatewayComponent`
33
-
34
- **Classes:**
35
- - `BaseGatewayComponent(ComponentBase)` - Base marker class for gateway components
36
- - `BaseGatewayApp(app_info: Dict[str, Any], **kwargs)` - Main application class to be subclassed for new gateways
37
- - `_get_gateway_component_class(self) -> Type[BaseGatewayComponent]` - **[Abstract Method]** Must return the specific gateway component class
38
- - `namespace: str` - Absolute topic prefix for A2A communication (e.g., 'myorg/dev')
39
- - `gateway_id: str` - Unique ID for this gateway instance (auto-generated if not provided)
40
- - `artifact_service_config: Dict` - Configuration for the shared ADK Artifact Service
41
- - `enable_embed_resolution: bool` - Flag to enable/disable late-stage 'artifact_content' embed resolution
42
- - `gateway_max_artifact_resolve_size_bytes: int` - Maximum size for resolving artifacts (default: 104857600)
43
- - `gateway_recursive_embed_depth: int` - Maximum depth for recursive embed resolution (default: 12)
44
-
45
- **Constants/Variables:**
46
- - `BASE_GATEWAY_APP_SCHEMA: Dict[str, List[Dict[str, Any]]]` - Base configuration schema automatically merged with subclass parameters
47
- - `SPECIFIC_APP_SCHEMA_PARAMS_ATTRIBUTE_NAME: str` - Class attribute name ("SPECIFIC_APP_SCHEMA_PARAMS") for subclass-specific config parameters
48
-
49
- **Usage Examples:**
50
- ```python
51
- from typing import Type, List, Dict, Any
52
- from solace_agent_mesh.gateway.base.app import BaseGatewayApp
53
- from .component import MyGatewayComponent
54
-
55
- class MyGatewayApp(BaseGatewayApp):
56
- """Custom gateway application for My Platform."""
57
-
58
- # Define additional configuration parameters
59
- SPECIFIC_APP_SCHEMA_PARAMS: List[Dict[str, Any]] = [
60
- {
61
- "name": "my_platform_api_key",
62
- "required": True,
63
- "type": "string",
64
- "description": "API key for connecting to My Platform."
65
- }
66
- ]
67
-
68
- def _get_gateway_component_class(self) -> Type[MyGatewayComponent]:
69
- return MyGatewayComponent
70
-
71
- # Usage in YAML config:
72
- # app_config:
73
- # namespace: "myorg/prod"
74
- # gateway_id: "my-gateway-instance-01"
75
- # artifact_service:
76
- # type: "local_file"
77
- # base_path: "/data/artifacts"
78
- # my_platform_api_key: "secret-key-here"
79
- ```
80
-
81
- ---
82
-
83
- ### component.py
84
- **Purpose:** Provides the abstract base class for gateway components containing core A2A protocol logic, service management, and external platform integration interface
85
- **Import:** `from solace_agent_mesh.gateway.base.component import BaseGatewayComponent`
86
-
87
- **Classes:**
88
- - `BaseGatewayComponent(**kwargs: Any)` - Abstract base class for gateway components
89
- - **Public Methods:**
90
- - `get_config(self, key: str, default: Any = None) -> Any` - Retrieves configuration from nested app_config or component_config
91
- - `publish_a2a_message(self, topic: str, payload: Dict, user_properties: Optional[Dict] = None) -> None` - Publishes A2A messages to Solace broker
92
- - `authenticate_and_enrich_user(self, external_event_data: Any) -> Optional[Dict[str, Any]]` - Orchestrates user authentication and identity enrichment
93
- - `submit_a2a_task(self, target_agent_name: str, a2a_parts: List[ContentPart], external_request_context: Dict[str, Any], user_identity: Any, is_streaming: bool = True, api_version: str = "v2") -> str` - Submits task to target agent, returns task_id
94
- - `run(self) -> None` - Starts component's async operations and external platform listener
95
- - `cleanup(self) -> None` - Cleans up resources and stops background threads
96
- - **Abstract Methods (Must be Implemented):**
97
- - `_extract_initial_claims(self, external_event_data: Any) -> Optional[Dict[str, Any]]` - Extract identity claims from platform event (must return dict with 'id' key)
98
- - `_start_listener(self) -> None` - Start external platform listener (e.g., web server, WebSocket)
99
- - `_stop_listener(self) -> None` - Stop external platform listener
100
- - `_translate_external_input(self, external_event: Any) -> Tuple[str, List[ContentPart], Dict[str, Any]]` - Convert external event to A2A format: (target_agent_name, a2a_parts, context)
101
- - `_send_update_to_external(self, external_request_context: Dict[str, Any], event_data: Union[TaskStatusUpdateEvent, TaskArtifactUpdateEvent], is_final_chunk_of_update: bool) -> None` - Send streaming update to external platform
102
- - `_send_final_response_to_external(self, external_request_context: Dict[str, Any], task_data: Task) -> None` - Send final response to external platform
103
- - `_send_error_to_external(self, external_request_context: Dict[str, Any], error_data: JSONRPCError) -> None` - Send error to external platform
104
- - **Properties:**
105
- - `namespace: str` - A2A communication namespace
106
- - `gateway_id: str` - Unique gateway instance ID
107
- - `agent_registry: AgentRegistry` - Registry for discovered agents
108
- - `core_a2a_service: CoreA2AService` - Core A2A protocol service
109
- - `shared_artifact_service: Optional[BaseArtifactService]` - Artifact service instance
110
- - `task_context_manager: TaskContextManager` - Thread-safe task context storage
111
- - `identity_service: Optional[BaseIdentityService]` - Identity enrichment service
112
-
113
- **Usage Examples:**
114
- ```python
115
- from typing import Any, Dict, List, Optional, Tuple, Union
116
- from solace_agent_mesh.gateway.base.component import BaseGatewayComponent
117
- from solace_agent_mesh.common.a2a.types import ContentPart
118
- from a2a.types import TextPart, Task, TaskStatusUpdateEvent, TaskArtifactUpdateEvent, JSONRPCError
119
-
120
- class MyGatewayComponent(BaseGatewayComponent):
121
-
122
- async def _extract_initial_claims(self, external_event_data: Any) -> Optional[Dict[str, Any]]:
123
- """Extract user identity from platform-specific event."""
124
- # Example for HTTP request
125
- if hasattr(external_event_data, 'headers'):
126
- user_id = external_event_data.headers.get('X-User-ID')
127
- if user_id:
128
- return {"id": user_id, "source": "http_header"}
129
- return None
130
-
131
- def _start_listener(self) -> None:
132
- """Start your platform listener (web server, etc.)."""
133
- # Example: Start FastAPI server, WebSocket connection, etc.
134
- pass
135
-
136
- def _stop_listener(self) -> None:
137
- """Stop your platform listener."""
138
- pass
139
-
140
- async def _translate_external_input(self, external_event: Any) -> Tuple[str, List[ContentPart], Dict[str, Any]]:
141
- """Convert external event to A2A format."""
142
- # Example translation
143
- target_agent = "my-agent"
144
- message_text = getattr(external_event, 'message', 'Hello')
145
- a2a_parts = [TextPart(text=message_text)]
146
- context = {
147
- "platform": "my_platform",
148
- "user_id_for_artifacts": "user123",
149
- "a2a_session_id": "session456"
150
- }
151
- return target_agent, a2a_parts, context
152
-
153
- async def _send_update_to_external(self, external_request_context: Dict[str, Any],
154
- event_data: Union[TaskStatusUpdateEvent, TaskArtifactUpdateEvent],
155
- is_final_chunk_of_update: bool) -> None:
156
- """Send streaming update back to external platform."""
157
- # Extract text from event and send to your platform
158
- pass
159
-
160
- async def _send_final_response_to_external(self, external_request_context: Dict[str, Any],
161
- task_data: Task) -> None:
162
- """Send final response back to external platform."""
163
- # Extract final result and send to your platform
164
- pass
165
-
166
- async def _send_error_to_external(self, external_request_context: Dict[str, Any],
167
- error_data: JSONRPCError) -> None:
168
- """Send error back to external platform."""
169
- # Send error message to your platform
170
- pass
171
-
172
- # Usage in your handler:
173
- async def handle_external_request(request):
174
- # Authenticate user
175
- user_identity = await component.authenticate_and_enrich_user(request)
176
- if not user_identity:
177
- return "Authentication failed"
178
-
179
- # Translate request
180
- target_agent, a2a_parts, context = await component._translate_external_input(request)
181
-
182
- # Submit to A2A system
183
- task_id = await component.submit_a2a_task(
184
- target_agent_name=target_agent,
185
- a2a_parts=a2a_parts,
186
- external_request_context=context,
187
- user_identity=user_identity,
188
- is_streaming=True
189
- )
190
-
191
- return f"Task submitted: {task_id}"
192
- ```
193
-
194
- ---
195
-
196
- ### task_context.py
197
- **Purpose:** Provides thread-safe storage for mapping A2A task IDs to their original external request context
198
- **Import:** `from solace_agent_mesh.gateway.base.task_context import TaskContextManager`
199
-
200
- **Classes:**
201
- - `TaskContextManager()` - Thread-safe context storage manager
202
- - `store_context(self, task_id: str, context_data: Dict[str, Any]) -> None` - Store context for a task ID
203
- - `get_context(self, task_id: str) -> Optional[Dict[str, Any]]` - Retrieve context for a task ID
204
- - `remove_context(self, task_id: str) -> Optional[Dict[str, Any]]` - Remove and return context for a task ID
205
- - `clear_all_contexts_for_testing(self) -> None` - Clear all contexts (testing only)
206
-
207
- **Usage Examples:**
208
- ```python
209
- from solace_agent_mesh.gateway.base.task_context import TaskContextManager
210
-
211
- # Initialize manager
212
- context_manager = TaskContextManager()
213
-
214
- # Store context when submitting task
215
- task_id = "gdk-task-abc123"
216
- context = {
217
- "platform": "slack",
218
- "channel_id": "C1234567890",
219
- "thread_ts": "1234567890.123456",
220
- "user_identity": {"id": "user123", "name": "John Doe"}
221
- }
222
- context_manager.store_context(task_id, context)
223
-
224
- # Retrieve context when processing response
225
- retrieved_context = context_manager.get_context(task_id)
226
- if retrieved_context:
227
- channel_id = retrieved_context["channel_id"]
228
- # Send response back to Slack channel
229
-
230
- # Clean up when task is complete
231
- context_manager.remove_context(task_id)
232
- ```
233
-
234
- ================================================================================
235
-