solace-agent-mesh 1.6.1__py3-none-any.whl → 1.13.2__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 (481) hide show
  1. solace_agent_mesh/agent/adk/alembic/README +74 -0
  2. solace_agent_mesh/agent/adk/alembic/env.py +77 -0
  3. solace_agent_mesh/agent/adk/alembic/script.py.mako +28 -0
  4. solace_agent_mesh/agent/adk/alembic/versions/e2902798564d_adk_session_db_upgrade.py +52 -0
  5. solace_agent_mesh/agent/adk/alembic.ini +112 -0
  6. solace_agent_mesh/agent/adk/app_llm_agent.py +26 -0
  7. solace_agent_mesh/agent/adk/artifacts/filesystem_artifact_service.py +165 -1
  8. solace_agent_mesh/agent/adk/artifacts/s3_artifact_service.py +163 -0
  9. solace_agent_mesh/agent/adk/callbacks.py +852 -109
  10. solace_agent_mesh/agent/adk/embed_resolving_mcp_toolset.py +234 -36
  11. solace_agent_mesh/agent/adk/intelligent_mcp_callbacks.py +52 -5
  12. solace_agent_mesh/agent/adk/mcp_content_processor.py +1 -1
  13. solace_agent_mesh/agent/adk/models/lite_llm.py +77 -21
  14. solace_agent_mesh/agent/adk/models/oauth2_token_manager.py +24 -137
  15. solace_agent_mesh/agent/adk/runner.py +85 -20
  16. solace_agent_mesh/agent/adk/schema_migration.py +88 -0
  17. solace_agent_mesh/agent/adk/services.py +94 -18
  18. solace_agent_mesh/agent/adk/setup.py +281 -65
  19. solace_agent_mesh/agent/adk/stream_parser.py +231 -37
  20. solace_agent_mesh/agent/adk/tool_wrapper.py +3 -0
  21. solace_agent_mesh/agent/protocol/event_handlers.py +472 -137
  22. solace_agent_mesh/agent/proxies/a2a/app.py +3 -2
  23. solace_agent_mesh/agent/proxies/a2a/component.py +572 -75
  24. solace_agent_mesh/agent/proxies/a2a/config.py +80 -4
  25. solace_agent_mesh/agent/proxies/base/app.py +3 -2
  26. solace_agent_mesh/agent/proxies/base/component.py +188 -22
  27. solace_agent_mesh/agent/proxies/base/proxy_task_context.py +3 -1
  28. solace_agent_mesh/agent/sac/app.py +91 -3
  29. solace_agent_mesh/agent/sac/component.py +591 -157
  30. solace_agent_mesh/agent/sac/patch_adk.py +8 -16
  31. solace_agent_mesh/agent/sac/task_execution_context.py +146 -4
  32. solace_agent_mesh/agent/tools/__init__.py +3 -0
  33. solace_agent_mesh/agent/tools/audio_tools.py +3 -3
  34. solace_agent_mesh/agent/tools/builtin_artifact_tools.py +710 -171
  35. solace_agent_mesh/agent/tools/deep_research_tools.py +2161 -0
  36. solace_agent_mesh/agent/tools/dynamic_tool.py +2 -0
  37. solace_agent_mesh/agent/tools/peer_agent_tool.py +82 -15
  38. solace_agent_mesh/agent/tools/time_tools.py +126 -0
  39. solace_agent_mesh/agent/tools/tool_config_types.py +57 -2
  40. solace_agent_mesh/agent/tools/web_search_tools.py +279 -0
  41. solace_agent_mesh/agent/tools/web_tools.py +125 -17
  42. solace_agent_mesh/agent/utils/artifact_helpers.py +248 -6
  43. solace_agent_mesh/agent/utils/context_helpers.py +17 -0
  44. solace_agent_mesh/assets/docs/404.html +6 -6
  45. solace_agent_mesh/assets/docs/assets/css/{styles.906a1503.css → styles.8162edfb.css} +1 -1
  46. solace_agent_mesh/assets/docs/assets/js/05749d90.19ac4f35.js +1 -0
  47. solace_agent_mesh/assets/docs/assets/js/15ba94aa.e186750d.js +1 -0
  48. solace_agent_mesh/assets/docs/assets/js/15e40e79.434bb30f.js +1 -0
  49. solace_agent_mesh/assets/docs/assets/js/17896441.e612dfb4.js +1 -0
  50. solace_agent_mesh/assets/docs/assets/js/2279.550aa580.js +2 -0
  51. solace_agent_mesh/assets/docs/assets/js/{17896441.a5e82f9b.js.LICENSE.txt → 2279.550aa580.js.LICENSE.txt} +6 -0
  52. solace_agent_mesh/assets/docs/assets/js/240a0364.83e37aa8.js +1 -0
  53. solace_agent_mesh/assets/docs/assets/js/2987107d.a80604f9.js +1 -0
  54. solace_agent_mesh/assets/docs/assets/js/2e32b5e0.2f0db237.js +1 -0
  55. solace_agent_mesh/assets/docs/assets/js/3a6c6137.7e61915d.js +1 -0
  56. solace_agent_mesh/assets/docs/assets/js/3ac1795d.7f7ab1c1.js +1 -0
  57. solace_agent_mesh/assets/docs/assets/js/3ff0015d.e53c9b78.js +1 -0
  58. solace_agent_mesh/assets/docs/assets/js/41adc471.0e95b87c.js +1 -0
  59. solace_agent_mesh/assets/docs/assets/js/4667dc50.bf2ad456.js +1 -0
  60. solace_agent_mesh/assets/docs/assets/js/49eed117.493d6f99.js +1 -0
  61. solace_agent_mesh/assets/docs/assets/js/{509e993c.4c7a1a6d.js → 509e993c.a1fbf45a.js} +1 -1
  62. solace_agent_mesh/assets/docs/assets/js/547e15cc.8e6da617.js +1 -0
  63. solace_agent_mesh/assets/docs/assets/js/55b7b518.29d6e75d.js +1 -0
  64. solace_agent_mesh/assets/docs/assets/js/5b8d9c11.d4eb37b8.js +1 -0
  65. solace_agent_mesh/assets/docs/assets/js/5c2bd65f.1ee87753.js +1 -0
  66. solace_agent_mesh/assets/docs/assets/js/60702c0e.a8bdd79b.js +1 -0
  67. solace_agent_mesh/assets/docs/assets/js/631738c7.fa471607.js +1 -0
  68. solace_agent_mesh/assets/docs/assets/js/64195356.09dbd087.js +1 -0
  69. solace_agent_mesh/assets/docs/assets/js/66d4869e.30340bd3.js +1 -0
  70. solace_agent_mesh/assets/docs/assets/js/6a520c9d.b6e3f2ce.js +1 -0
  71. solace_agent_mesh/assets/docs/assets/js/6aaedf65.7253541d.js +1 -0
  72. solace_agent_mesh/assets/docs/assets/js/6ad8f0bd.a5b36a60.js +1 -0
  73. solace_agent_mesh/assets/docs/assets/js/6d84eae0.fd23ba4a.js +1 -0
  74. solace_agent_mesh/assets/docs/assets/js/71da7b71.374b9d54.js +1 -0
  75. solace_agent_mesh/assets/docs/assets/js/729898df.7249e9fd.js +1 -0
  76. solace_agent_mesh/assets/docs/assets/js/7e294c01.7c5f6906.js +1 -0
  77. solace_agent_mesh/assets/docs/assets/js/8024126c.e3467286.js +1 -0
  78. solace_agent_mesh/assets/docs/assets/js/81a99df0.7ed65d45.js +1 -0
  79. solace_agent_mesh/assets/docs/assets/js/82fbfb93.161823a5.js +1 -0
  80. solace_agent_mesh/assets/docs/assets/js/8b032486.91a91afc.js +1 -0
  81. solace_agent_mesh/assets/docs/assets/js/924ffdeb.975e428a.js +1 -0
  82. solace_agent_mesh/assets/docs/assets/js/94e8668d.16083b3f.js +1 -0
  83. solace_agent_mesh/assets/docs/assets/js/9bb13469.4523ae20.js +1 -0
  84. solace_agent_mesh/assets/docs/assets/js/a7d42657.a956689d.js +1 -0
  85. solace_agent_mesh/assets/docs/assets/js/a94703ab.3e5fbcb3.js +1 -0
  86. solace_agent_mesh/assets/docs/assets/js/ab9708a8.3e563275.js +1 -0
  87. solace_agent_mesh/assets/docs/assets/js/ad87452a.9d73dad6.js +1 -0
  88. solace_agent_mesh/assets/docs/assets/js/c93cbaa0.0e0d8baf.js +1 -0
  89. solace_agent_mesh/assets/docs/assets/js/cab03b5b.6a073091.js +1 -0
  90. solace_agent_mesh/assets/docs/assets/js/cbe2e9ea.07e170dd.js +1 -0
  91. solace_agent_mesh/assets/docs/assets/js/da0b5bad.b62f7b08.js +1 -0
  92. solace_agent_mesh/assets/docs/assets/js/dd817ffc.c37a755e.js +1 -0
  93. solace_agent_mesh/assets/docs/assets/js/dd81e2b8.b682e9c2.js +1 -0
  94. solace_agent_mesh/assets/docs/assets/js/de915948.44a432bc.js +1 -0
  95. solace_agent_mesh/assets/docs/assets/js/e04b235d.06d23db6.js +1 -0
  96. solace_agent_mesh/assets/docs/assets/js/e1b6eeb4.deb2b62e.js +1 -0
  97. solace_agent_mesh/assets/docs/assets/js/e3d9abda.1476f570.js +1 -0
  98. solace_agent_mesh/assets/docs/assets/js/e6f9706b.acc800d3.js +1 -0
  99. solace_agent_mesh/assets/docs/assets/js/e92d0134.c147a429.js +1 -0
  100. solace_agent_mesh/assets/docs/assets/js/ee0c2fe7.94d0a351.js +1 -0
  101. solace_agent_mesh/assets/docs/assets/js/f284c35a.cc97854c.js +1 -0
  102. solace_agent_mesh/assets/docs/assets/js/ff4d71f2.74710fc1.js +1 -0
  103. solace_agent_mesh/assets/docs/assets/js/main.d634009f.js +2 -0
  104. solace_agent_mesh/assets/docs/assets/js/runtime~main.27bb82a7.js +1 -0
  105. solace_agent_mesh/assets/docs/docs/documentation/components/agents/index.html +68 -68
  106. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/artifact-management/index.html +50 -50
  107. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/audio-tools/index.html +42 -42
  108. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/data-analysis-tools/index.html +55 -55
  109. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/embeds/index.html +82 -68
  110. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/image-tools/index.html +81 -0
  111. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/index.html +67 -50
  112. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/research-tools/index.html +136 -0
  113. solace_agent_mesh/assets/docs/docs/documentation/components/cli/index.html +178 -144
  114. solace_agent_mesh/assets/docs/docs/documentation/components/gateways/index.html +43 -42
  115. solace_agent_mesh/assets/docs/docs/documentation/components/index.html +20 -18
  116. solace_agent_mesh/assets/docs/docs/documentation/components/orchestrator/index.html +23 -23
  117. solace_agent_mesh/assets/docs/docs/documentation/components/platform-service/index.html +33 -0
  118. solace_agent_mesh/assets/docs/docs/documentation/components/plugins/index.html +45 -45
  119. solace_agent_mesh/assets/docs/docs/documentation/components/projects/index.html +182 -0
  120. solace_agent_mesh/assets/docs/docs/documentation/components/prompts/index.html +147 -0
  121. solace_agent_mesh/assets/docs/docs/documentation/components/proxies/index.html +208 -125
  122. solace_agent_mesh/assets/docs/docs/documentation/components/speech/index.html +52 -0
  123. solace_agent_mesh/assets/docs/docs/documentation/deploying/debugging/index.html +28 -49
  124. solace_agent_mesh/assets/docs/docs/documentation/deploying/deployment-options/index.html +29 -30
  125. solace_agent_mesh/assets/docs/docs/documentation/deploying/index.html +14 -14
  126. solace_agent_mesh/assets/docs/docs/documentation/deploying/kubernetes/index.html +47 -0
  127. solace_agent_mesh/assets/docs/docs/documentation/deploying/kubernetes/kubernetes-deployment-guide/index.html +197 -0
  128. solace_agent_mesh/assets/docs/docs/documentation/deploying/logging/index.html +90 -0
  129. solace_agent_mesh/assets/docs/docs/documentation/deploying/observability/index.html +17 -16
  130. solace_agent_mesh/assets/docs/docs/documentation/deploying/proxy_configuration/index.html +49 -0
  131. solace_agent_mesh/assets/docs/docs/documentation/developing/create-agents/index.html +38 -38
  132. solace_agent_mesh/assets/docs/docs/documentation/developing/create-gateways/index.html +162 -171
  133. solace_agent_mesh/assets/docs/docs/documentation/developing/creating-python-tools/index.html +67 -49
  134. solace_agent_mesh/assets/docs/docs/documentation/developing/creating-service-providers/index.html +17 -17
  135. solace_agent_mesh/assets/docs/docs/documentation/developing/evaluations/index.html +51 -51
  136. solace_agent_mesh/assets/docs/docs/documentation/developing/index.html +22 -22
  137. solace_agent_mesh/assets/docs/docs/documentation/developing/structure/index.html +27 -27
  138. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/bedrock-agents/index.html +135 -135
  139. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/custom-agent/index.html +66 -66
  140. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/event-mesh-gateway/index.html +51 -51
  141. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/mcp-integration/index.html +50 -38
  142. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/mongodb-integration/index.html +86 -86
  143. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/rag-integration/index.html +51 -51
  144. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/rest-gateway/index.html +24 -24
  145. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/slack-integration/index.html +30 -30
  146. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/sql-database/index.html +44 -44
  147. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/teams-integration/index.html +115 -0
  148. solace_agent_mesh/assets/docs/docs/documentation/enterprise/agent-builder/index.html +86 -0
  149. solace_agent_mesh/assets/docs/docs/documentation/enterprise/connectors/index.html +67 -0
  150. solace_agent_mesh/assets/docs/docs/documentation/enterprise/index.html +23 -19
  151. solace_agent_mesh/assets/docs/docs/documentation/enterprise/installation/index.html +40 -37
  152. solace_agent_mesh/assets/docs/docs/documentation/enterprise/openapi-tools/index.html +324 -0
  153. solace_agent_mesh/assets/docs/docs/documentation/enterprise/rbac-setup-guide/index.html +112 -87
  154. solace_agent_mesh/assets/docs/docs/documentation/enterprise/secure-user-delegated-access/index.html +440 -0
  155. solace_agent_mesh/assets/docs/docs/documentation/enterprise/single-sign-on/index.html +87 -64
  156. solace_agent_mesh/assets/docs/docs/documentation/enterprise/wheel-installation/index.html +62 -0
  157. solace_agent_mesh/assets/docs/docs/documentation/getting-started/architecture/index.html +44 -44
  158. solace_agent_mesh/assets/docs/docs/documentation/getting-started/index.html +39 -37
  159. solace_agent_mesh/assets/docs/docs/documentation/getting-started/introduction/index.html +30 -30
  160. solace_agent_mesh/assets/docs/docs/documentation/getting-started/try-agent-mesh/index.html +18 -18
  161. solace_agent_mesh/assets/docs/docs/documentation/getting-started/vibe_coding/index.html +62 -0
  162. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/artifact-storage/index.html +311 -0
  163. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/configurations/index.html +39 -42
  164. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/index.html +14 -14
  165. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/installation/index.html +27 -25
  166. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/large_language_models/index.html +69 -69
  167. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/run-project/index.html +72 -72
  168. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/session-storage/index.html +251 -0
  169. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/user-feedback/index.html +88 -0
  170. solace_agent_mesh/assets/docs/docs/documentation/migrations/a2a-upgrade/a2a-gateway-upgrade-to-0.3.0/index.html +42 -42
  171. solace_agent_mesh/assets/docs/docs/documentation/migrations/a2a-upgrade/a2a-technical-migration-map/index.html +20 -20
  172. solace_agent_mesh/assets/docs/docs/documentation/migrations/platform-service-split/index.html +85 -0
  173. solace_agent_mesh/assets/docs/lunr-index-1768329217460.json +1 -0
  174. solace_agent_mesh/assets/docs/lunr-index.json +1 -1
  175. solace_agent_mesh/assets/docs/search-doc-1768329217460.json +1 -0
  176. solace_agent_mesh/assets/docs/search-doc.json +1 -1
  177. solace_agent_mesh/assets/docs/sitemap.xml +1 -1
  178. solace_agent_mesh/cli/__init__.py +1 -1
  179. solace_agent_mesh/cli/commands/add_cmd/__init__.py +3 -1
  180. solace_agent_mesh/cli/commands/add_cmd/agent_cmd.py +6 -1
  181. solace_agent_mesh/cli/commands/add_cmd/proxy_cmd.py +100 -0
  182. solace_agent_mesh/cli/commands/docs_cmd.py +4 -1
  183. solace_agent_mesh/cli/commands/eval_cmd.py +1 -1
  184. solace_agent_mesh/cli/commands/init_cmd/__init__.py +15 -0
  185. solace_agent_mesh/cli/commands/init_cmd/directory_step.py +1 -1
  186. solace_agent_mesh/cli/commands/init_cmd/env_step.py +30 -3
  187. solace_agent_mesh/cli/commands/init_cmd/orchestrator_step.py +3 -4
  188. solace_agent_mesh/cli/commands/init_cmd/platform_service_step.py +85 -0
  189. solace_agent_mesh/cli/commands/init_cmd/webui_gateway_step.py +16 -3
  190. solace_agent_mesh/cli/commands/plugin_cmd/add_cmd.py +2 -1
  191. solace_agent_mesh/cli/commands/plugin_cmd/catalog_cmd.py +1 -0
  192. solace_agent_mesh/cli/commands/plugin_cmd/create_cmd.py +3 -3
  193. solace_agent_mesh/cli/commands/run_cmd.py +64 -49
  194. solace_agent_mesh/cli/commands/tools_cmd.py +315 -0
  195. solace_agent_mesh/cli/main.py +15 -0
  196. solace_agent_mesh/client/webui/frontend/static/assets/{authCallback-BTf6dqwp.js → authCallback-KnKMP_vb.js} +1 -1
  197. solace_agent_mesh/client/webui/frontend/static/assets/client-DpBL2stg.js +25 -0
  198. solace_agent_mesh/client/webui/frontend/static/assets/main-Cd498TV2.js +435 -0
  199. solace_agent_mesh/client/webui/frontend/static/assets/main-rSf8Vu29.css +1 -0
  200. solace_agent_mesh/client/webui/frontend/static/assets/vendor-CGk8Suyh.js +565 -0
  201. solace_agent_mesh/client/webui/frontend/static/auth-callback.html +3 -3
  202. solace_agent_mesh/client/webui/frontend/static/index.html +4 -4
  203. solace_agent_mesh/client/webui/frontend/static/mockServiceWorker.js +336 -0
  204. solace_agent_mesh/client/webui/frontend/static/ui-version.json +6 -0
  205. solace_agent_mesh/common/a2a/events.py +2 -1
  206. solace_agent_mesh/common/a2a/protocol.py +5 -0
  207. solace_agent_mesh/common/a2a/types.py +2 -1
  208. solace_agent_mesh/common/a2a_spec/schemas/artifact_creation_progress.json +23 -6
  209. solace_agent_mesh/common/a2a_spec/schemas/feedback_event.json +51 -0
  210. solace_agent_mesh/common/agent_registry.py +38 -11
  211. solace_agent_mesh/common/data_parts.py +144 -4
  212. solace_agent_mesh/common/error_handlers.py +83 -0
  213. solace_agent_mesh/common/exceptions.py +24 -0
  214. solace_agent_mesh/common/oauth/__init__.py +17 -0
  215. solace_agent_mesh/common/oauth/oauth_client.py +408 -0
  216. solace_agent_mesh/common/oauth/utils.py +50 -0
  217. solace_agent_mesh/common/rag_dto.py +156 -0
  218. solace_agent_mesh/common/sac/sam_component_base.py +97 -19
  219. solace_agent_mesh/common/sam_events/event_service.py +2 -2
  220. solace_agent_mesh/common/services/employee_service.py +1 -1
  221. solace_agent_mesh/common/utils/embeds/constants.py +1 -0
  222. solace_agent_mesh/common/utils/embeds/converter.py +1 -8
  223. solace_agent_mesh/common/utils/embeds/modifiers.py +4 -28
  224. solace_agent_mesh/common/utils/embeds/resolver.py +152 -31
  225. solace_agent_mesh/common/utils/embeds/types.py +9 -0
  226. solace_agent_mesh/common/utils/log_formatters.py +20 -0
  227. solace_agent_mesh/common/utils/mime_helpers.py +12 -5
  228. solace_agent_mesh/common/utils/pydantic_utils.py +90 -3
  229. solace_agent_mesh/common/utils/rbac_utils.py +69 -0
  230. solace_agent_mesh/common/utils/templates/__init__.py +8 -0
  231. solace_agent_mesh/common/utils/templates/liquid_renderer.py +210 -0
  232. solace_agent_mesh/common/utils/templates/template_resolver.py +161 -0
  233. solace_agent_mesh/config_portal/backend/common.py +12 -0
  234. solace_agent_mesh/config_portal/frontend/static/client/assets/_index-CljP4_mv.js +103 -0
  235. solace_agent_mesh/config_portal/frontend/static/client/assets/{components-Rk0n-9cK.js → components-CaC6hG8d.js} +22 -22
  236. solace_agent_mesh/config_portal/frontend/static/client/assets/{entry.client-mvZjNKiz.js → entry.client-H_TM0YBt.js} +3 -3
  237. solace_agent_mesh/config_portal/frontend/static/client/assets/{index-DzNKzXrc.js → index-CnFykb2v.js} +16 -16
  238. solace_agent_mesh/config_portal/frontend/static/client/assets/manifest-f8439d40.js +1 -0
  239. solace_agent_mesh/config_portal/frontend/static/client/assets/root-BIMqslJB.css +1 -0
  240. solace_agent_mesh/config_portal/frontend/static/client/assets/root-mJmTIdIk.js +10 -0
  241. solace_agent_mesh/config_portal/frontend/static/client/index.html +3 -3
  242. solace_agent_mesh/core_a2a/service.py +3 -2
  243. solace_agent_mesh/gateway/adapter/__init__.py +1 -0
  244. solace_agent_mesh/gateway/adapter/base.py +170 -0
  245. solace_agent_mesh/gateway/adapter/types.py +230 -0
  246. solace_agent_mesh/gateway/base/app.py +39 -2
  247. solace_agent_mesh/gateway/base/auth_interface.py +103 -0
  248. solace_agent_mesh/gateway/base/component.py +1027 -151
  249. solace_agent_mesh/gateway/generic/__init__.py +1 -0
  250. solace_agent_mesh/gateway/generic/app.py +50 -0
  251. solace_agent_mesh/gateway/generic/component.py +894 -0
  252. solace_agent_mesh/gateway/http_sse/alembic/env.py +0 -7
  253. solace_agent_mesh/gateway/http_sse/alembic/versions/20251023_add_project_users_table.py +72 -0
  254. solace_agent_mesh/gateway/http_sse/alembic/versions/20251023_add_soft_delete_and_search.py +109 -0
  255. solace_agent_mesh/gateway/http_sse/alembic/versions/20251024_add_default_agent_to_projects.py +26 -0
  256. solace_agent_mesh/gateway/http_sse/alembic/versions/20251024_add_projects_table.py +135 -0
  257. solace_agent_mesh/gateway/http_sse/alembic/versions/20251108_create_prompt_tables_with_sharing.py +154 -0
  258. solace_agent_mesh/gateway/http_sse/alembic/versions/20251115_add_parent_task_id.py +32 -0
  259. solace_agent_mesh/gateway/http_sse/alembic/versions/20251126_add_background_task_fields.py +47 -0
  260. solace_agent_mesh/gateway/http_sse/alembic/versions/20251202_add_versioned_fields_to_prompts.py +52 -0
  261. solace_agent_mesh/gateway/http_sse/alembic.ini +0 -36
  262. solace_agent_mesh/gateway/http_sse/app.py +40 -11
  263. solace_agent_mesh/gateway/http_sse/component.py +285 -160
  264. solace_agent_mesh/gateway/http_sse/dependencies.py +149 -114
  265. solace_agent_mesh/gateway/http_sse/main.py +68 -450
  266. solace_agent_mesh/gateway/http_sse/repository/__init__.py +19 -1
  267. solace_agent_mesh/gateway/http_sse/repository/chat_task_repository.py +2 -2
  268. solace_agent_mesh/gateway/http_sse/repository/entities/project.py +81 -0
  269. solace_agent_mesh/gateway/http_sse/repository/entities/project_user.py +47 -0
  270. solace_agent_mesh/gateway/http_sse/repository/entities/session.py +26 -3
  271. solace_agent_mesh/gateway/http_sse/repository/entities/task.py +7 -0
  272. solace_agent_mesh/gateway/http_sse/repository/feedback_repository.py +47 -0
  273. solace_agent_mesh/gateway/http_sse/repository/interfaces.py +114 -6
  274. solace_agent_mesh/gateway/http_sse/repository/models/__init__.py +13 -0
  275. solace_agent_mesh/gateway/http_sse/repository/models/project_model.py +51 -0
  276. solace_agent_mesh/gateway/http_sse/repository/models/project_user_model.py +75 -0
  277. solace_agent_mesh/gateway/http_sse/repository/models/prompt_model.py +159 -0
  278. solace_agent_mesh/gateway/http_sse/repository/models/session_model.py +8 -2
  279. solace_agent_mesh/gateway/http_sse/repository/models/task_model.py +8 -1
  280. solace_agent_mesh/gateway/http_sse/repository/project_repository.py +172 -0
  281. solace_agent_mesh/gateway/http_sse/repository/project_user_repository.py +186 -0
  282. solace_agent_mesh/gateway/http_sse/repository/session_repository.py +177 -11
  283. solace_agent_mesh/gateway/http_sse/repository/task_repository.py +86 -2
  284. solace_agent_mesh/gateway/http_sse/routers/agent_cards.py +38 -7
  285. solace_agent_mesh/gateway/http_sse/routers/artifacts.py +256 -58
  286. solace_agent_mesh/gateway/http_sse/routers/auth.py +168 -134
  287. solace_agent_mesh/gateway/http_sse/routers/config.py +302 -8
  288. solace_agent_mesh/gateway/http_sse/routers/dto/project_dto.py +69 -0
  289. solace_agent_mesh/gateway/http_sse/routers/dto/prompt_dto.py +255 -0
  290. solace_agent_mesh/gateway/http_sse/routers/dto/requests/project_requests.py +48 -0
  291. solace_agent_mesh/gateway/http_sse/routers/dto/requests/session_requests.py +14 -1
  292. solace_agent_mesh/gateway/http_sse/routers/dto/responses/base_responses.py +1 -1
  293. solace_agent_mesh/gateway/http_sse/routers/dto/responses/project_responses.py +31 -0
  294. solace_agent_mesh/gateway/http_sse/routers/dto/responses/session_responses.py +5 -2
  295. solace_agent_mesh/gateway/http_sse/routers/dto/responses/version_responses.py +31 -0
  296. solace_agent_mesh/gateway/http_sse/routers/feedback.py +133 -2
  297. solace_agent_mesh/gateway/http_sse/routers/people.py +2 -2
  298. solace_agent_mesh/gateway/http_sse/routers/projects.py +768 -0
  299. solace_agent_mesh/gateway/http_sse/routers/prompts.py +1416 -0
  300. solace_agent_mesh/gateway/http_sse/routers/sessions.py +167 -7
  301. solace_agent_mesh/gateway/http_sse/routers/speech.py +355 -0
  302. solace_agent_mesh/gateway/http_sse/routers/sse.py +131 -8
  303. solace_agent_mesh/gateway/http_sse/routers/tasks.py +670 -18
  304. solace_agent_mesh/gateway/http_sse/routers/users.py +1 -1
  305. solace_agent_mesh/gateway/http_sse/routers/version.py +343 -0
  306. solace_agent_mesh/gateway/http_sse/routers/visualization.py +92 -9
  307. solace_agent_mesh/gateway/http_sse/services/audio_service.py +1227 -0
  308. solace_agent_mesh/gateway/http_sse/services/background_task_monitor.py +186 -0
  309. solace_agent_mesh/gateway/http_sse/services/data_retention_service.py +1 -1
  310. solace_agent_mesh/gateway/http_sse/services/feedback_service.py +1 -1
  311. solace_agent_mesh/gateway/http_sse/services/project_service.py +930 -0
  312. solace_agent_mesh/gateway/http_sse/services/prompt_builder_assistant.py +303 -0
  313. solace_agent_mesh/gateway/http_sse/services/session_service.py +361 -12
  314. solace_agent_mesh/gateway/http_sse/services/task_logger_service.py +354 -4
  315. solace_agent_mesh/gateway/http_sse/session_manager.py +15 -15
  316. solace_agent_mesh/gateway/http_sse/sse_manager.py +286 -166
  317. solace_agent_mesh/gateway/http_sse/utils/artifact_copy_utils.py +370 -0
  318. solace_agent_mesh/gateway/http_sse/utils/stim_utils.py +41 -1
  319. solace_agent_mesh/services/__init__.py +0 -0
  320. solace_agent_mesh/services/platform/__init__.py +29 -0
  321. solace_agent_mesh/services/platform/alembic/env.py +85 -0
  322. solace_agent_mesh/services/platform/alembic/script.py.mako +28 -0
  323. solace_agent_mesh/services/platform/alembic.ini +109 -0
  324. solace_agent_mesh/services/platform/api/__init__.py +3 -0
  325. solace_agent_mesh/services/platform/api/dependencies.py +154 -0
  326. solace_agent_mesh/services/platform/api/main.py +314 -0
  327. solace_agent_mesh/services/platform/api/middleware.py +51 -0
  328. solace_agent_mesh/services/platform/api/routers/__init__.py +33 -0
  329. solace_agent_mesh/services/platform/api/routers/health_router.py +31 -0
  330. solace_agent_mesh/services/platform/app.py +215 -0
  331. solace_agent_mesh/services/platform/component.py +777 -0
  332. solace_agent_mesh/shared/__init__.py +14 -0
  333. solace_agent_mesh/shared/api/__init__.py +42 -0
  334. solace_agent_mesh/shared/auth/__init__.py +26 -0
  335. solace_agent_mesh/shared/auth/dependencies.py +204 -0
  336. solace_agent_mesh/shared/auth/middleware.py +347 -0
  337. solace_agent_mesh/shared/database/__init__.py +20 -0
  338. solace_agent_mesh/{gateway/http_sse/shared → shared/database}/base_repository.py +1 -1
  339. solace_agent_mesh/{gateway/http_sse/shared → shared/database}/database_exceptions.py +1 -1
  340. solace_agent_mesh/{gateway/http_sse/shared → shared/database}/database_helpers.py +1 -1
  341. solace_agent_mesh/shared/exceptions/__init__.py +36 -0
  342. solace_agent_mesh/{gateway/http_sse/shared → shared/exceptions}/exception_handlers.py +19 -5
  343. solace_agent_mesh/shared/utils/__init__.py +21 -0
  344. solace_agent_mesh/templates/logging_config_template.yaml +48 -0
  345. solace_agent_mesh/templates/main_orchestrator.yaml +12 -1
  346. solace_agent_mesh/templates/platform.yaml +49 -0
  347. solace_agent_mesh/templates/plugin_readme_template.md +3 -25
  348. solace_agent_mesh/templates/plugin_tool_config_template.yaml +109 -0
  349. solace_agent_mesh/templates/proxy_template.yaml +62 -0
  350. solace_agent_mesh/templates/webui.yaml +148 -6
  351. solace_agent_mesh/tools/web_search/__init__.py +18 -0
  352. solace_agent_mesh/tools/web_search/base.py +84 -0
  353. solace_agent_mesh/tools/web_search/google_search.py +247 -0
  354. solace_agent_mesh/tools/web_search/models.py +99 -0
  355. {solace_agent_mesh-1.6.1.dist-info → solace_agent_mesh-1.13.2.dist-info}/METADATA +31 -12
  356. solace_agent_mesh-1.13.2.dist-info/RECORD +591 -0
  357. {solace_agent_mesh-1.6.1.dist-info → solace_agent_mesh-1.13.2.dist-info}/WHEEL +1 -1
  358. solace_agent_mesh/agent/adk/adk_llm.txt +0 -232
  359. solace_agent_mesh/agent/adk/adk_llm_detail.txt +0 -566
  360. solace_agent_mesh/agent/adk/artifacts/artifacts_llm.txt +0 -171
  361. solace_agent_mesh/agent/adk/models/models_llm.txt +0 -142
  362. solace_agent_mesh/agent/agent_llm.txt +0 -378
  363. solace_agent_mesh/agent/agent_llm_detail.txt +0 -1702
  364. solace_agent_mesh/agent/protocol/protocol_llm.txt +0 -81
  365. solace_agent_mesh/agent/protocol/protocol_llm_detail.txt +0 -92
  366. solace_agent_mesh/agent/sac/sac_llm.txt +0 -189
  367. solace_agent_mesh/agent/sac/sac_llm_detail.txt +0 -200
  368. solace_agent_mesh/agent/testing/testing_llm.txt +0 -57
  369. solace_agent_mesh/agent/testing/testing_llm_detail.txt +0 -68
  370. solace_agent_mesh/agent/tools/tools_llm.txt +0 -263
  371. solace_agent_mesh/agent/tools/tools_llm_detail.txt +0 -274
  372. solace_agent_mesh/agent/utils/utils_llm.txt +0 -138
  373. solace_agent_mesh/agent/utils/utils_llm_detail.txt +0 -149
  374. solace_agent_mesh/assets/docs/assets/js/15ba94aa.932dd2db.js +0 -1
  375. solace_agent_mesh/assets/docs/assets/js/17896441.a5e82f9b.js +0 -2
  376. solace_agent_mesh/assets/docs/assets/js/240a0364.7eac6021.js +0 -1
  377. solace_agent_mesh/assets/docs/assets/js/2e32b5e0.33f5d75b.js +0 -1
  378. solace_agent_mesh/assets/docs/assets/js/3a6c6137.f5940cfa.js +0 -1
  379. solace_agent_mesh/assets/docs/assets/js/3ac1795d.76654dd9.js +0 -1
  380. solace_agent_mesh/assets/docs/assets/js/3ff0015d.2be20244.js +0 -1
  381. solace_agent_mesh/assets/docs/assets/js/547e15cc.2cbb060a.js +0 -1
  382. solace_agent_mesh/assets/docs/assets/js/55b7b518.f2b1d1ba.js +0 -1
  383. solace_agent_mesh/assets/docs/assets/js/5c2bd65f.eda4bcb2.js +0 -1
  384. solace_agent_mesh/assets/docs/assets/js/631738c7.a8b1ef8b.js +0 -1
  385. solace_agent_mesh/assets/docs/assets/js/6a520c9d.ba015d81.js +0 -1
  386. solace_agent_mesh/assets/docs/assets/js/6ad8f0bd.f4b15f3b.js +0 -1
  387. solace_agent_mesh/assets/docs/assets/js/6d84eae0.4a5fbf39.js +0 -1
  388. solace_agent_mesh/assets/docs/assets/js/71da7b71.38583438.js +0 -1
  389. solace_agent_mesh/assets/docs/assets/js/8024126c.56e59919.js +0 -1
  390. solace_agent_mesh/assets/docs/assets/js/81a99df0.07034dd9.js +0 -1
  391. solace_agent_mesh/assets/docs/assets/js/82fbfb93.139a1a1f.js +0 -1
  392. solace_agent_mesh/assets/docs/assets/js/924ffdeb.8095e148.js +0 -1
  393. solace_agent_mesh/assets/docs/assets/js/94e8668d.b5ddb7a1.js +0 -1
  394. solace_agent_mesh/assets/docs/assets/js/9bb13469.dd1c9b54.js +0 -1
  395. solace_agent_mesh/assets/docs/assets/js/a94703ab.0438dbc2.js +0 -1
  396. solace_agent_mesh/assets/docs/assets/js/ab9708a8.3e6dd091.js +0 -1
  397. solace_agent_mesh/assets/docs/assets/js/c93cbaa0.eaff365e.js +0 -1
  398. solace_agent_mesh/assets/docs/assets/js/da0b5bad.d08a9466.js +0 -1
  399. solace_agent_mesh/assets/docs/assets/js/dd817ffc.0aa9630a.js +0 -1
  400. solace_agent_mesh/assets/docs/assets/js/dd81e2b8.d590bc9e.js +0 -1
  401. solace_agent_mesh/assets/docs/assets/js/de915948.27d6b065.js +0 -1
  402. solace_agent_mesh/assets/docs/assets/js/e3d9abda.6b9493d0.js +0 -1
  403. solace_agent_mesh/assets/docs/assets/js/e6f9706b.e74a984d.js +0 -1
  404. solace_agent_mesh/assets/docs/assets/js/e92d0134.cf6d6522.js +0 -1
  405. solace_agent_mesh/assets/docs/assets/js/f284c35a.42f59cdd.js +0 -1
  406. solace_agent_mesh/assets/docs/assets/js/ff4d71f2.15b02f97.js +0 -1
  407. solace_agent_mesh/assets/docs/assets/js/main.b12eac43.js +0 -2
  408. solace_agent_mesh/assets/docs/assets/js/runtime~main.e268214e.js +0 -1
  409. solace_agent_mesh/assets/docs/lunr-index-1761248203150.json +0 -1
  410. solace_agent_mesh/assets/docs/search-doc-1761248203150.json +0 -1
  411. solace_agent_mesh/cli/commands/add_cmd/add_cmd_llm.txt +0 -250
  412. solace_agent_mesh/cli/commands/init_cmd/init_cmd_llm.txt +0 -365
  413. solace_agent_mesh/cli/commands/plugin_cmd/plugin_cmd_llm.txt +0 -305
  414. solace_agent_mesh/client/webui/frontend/static/assets/client-CaY59VuC.js +0 -25
  415. solace_agent_mesh/client/webui/frontend/static/assets/main-B32noGmR.js +0 -342
  416. solace_agent_mesh/client/webui/frontend/static/assets/main-DHJKSW1S.css +0 -1
  417. solace_agent_mesh/client/webui/frontend/static/assets/vendor-BEmvJSYz.js +0 -405
  418. solace_agent_mesh/common/a2a/a2a_llm.txt +0 -182
  419. solace_agent_mesh/common/a2a/a2a_llm_detail.txt +0 -193
  420. solace_agent_mesh/common/a2a_spec/a2a_spec_llm.txt +0 -407
  421. solace_agent_mesh/common/a2a_spec/a2a_spec_llm_detail.txt +0 -736
  422. solace_agent_mesh/common/a2a_spec/schemas/schemas_llm.txt +0 -313
  423. solace_agent_mesh/common/common_llm.txt +0 -251
  424. solace_agent_mesh/common/common_llm_detail.txt +0 -2562
  425. solace_agent_mesh/common/middleware/middleware_llm.txt +0 -174
  426. solace_agent_mesh/common/middleware/middleware_llm_detail.txt +0 -185
  427. solace_agent_mesh/common/sac/sac_llm.txt +0 -71
  428. solace_agent_mesh/common/sac/sac_llm_detail.txt +0 -82
  429. solace_agent_mesh/common/sam_events/sam_events_llm.txt +0 -104
  430. solace_agent_mesh/common/sam_events/sam_events_llm_detail.txt +0 -115
  431. solace_agent_mesh/common/services/providers/providers_llm.txt +0 -80
  432. solace_agent_mesh/common/services/services_llm.txt +0 -363
  433. solace_agent_mesh/common/services/services_llm_detail.txt +0 -459
  434. solace_agent_mesh/common/utils/embeds/embeds_llm.txt +0 -220
  435. solace_agent_mesh/common/utils/utils_llm.txt +0 -336
  436. solace_agent_mesh/common/utils/utils_llm_detail.txt +0 -572
  437. solace_agent_mesh/config_portal/frontend/static/client/assets/_index-ByU1X1HD.js +0 -98
  438. solace_agent_mesh/config_portal/frontend/static/client/assets/manifest-61038fc6.js +0 -1
  439. solace_agent_mesh/config_portal/frontend/static/client/assets/root-BWvk5-gF.js +0 -10
  440. solace_agent_mesh/config_portal/frontend/static/client/assets/root-DxRwaWiE.css +0 -1
  441. solace_agent_mesh/core_a2a/core_a2a_llm.txt +0 -90
  442. solace_agent_mesh/core_a2a/core_a2a_llm_detail.txt +0 -101
  443. solace_agent_mesh/gateway/base/base_llm.txt +0 -224
  444. solace_agent_mesh/gateway/base/base_llm_detail.txt +0 -235
  445. solace_agent_mesh/gateway/gateway_llm.txt +0 -373
  446. solace_agent_mesh/gateway/gateway_llm_detail.txt +0 -3885
  447. solace_agent_mesh/gateway/http_sse/alembic/alembic_llm.txt +0 -295
  448. solace_agent_mesh/gateway/http_sse/alembic/versions/versions_llm.txt +0 -155
  449. solace_agent_mesh/gateway/http_sse/components/components_llm.txt +0 -105
  450. solace_agent_mesh/gateway/http_sse/http_sse_llm.txt +0 -299
  451. solace_agent_mesh/gateway/http_sse/http_sse_llm_detail.txt +0 -3278
  452. solace_agent_mesh/gateway/http_sse/repository/entities/entities_llm.txt +0 -263
  453. solace_agent_mesh/gateway/http_sse/repository/models/models_llm.txt +0 -266
  454. solace_agent_mesh/gateway/http_sse/repository/repository_llm.txt +0 -340
  455. solace_agent_mesh/gateway/http_sse/routers/dto/dto_llm.txt +0 -346
  456. solace_agent_mesh/gateway/http_sse/routers/dto/requests/requests_llm.txt +0 -83
  457. solace_agent_mesh/gateway/http_sse/routers/dto/responses/responses_llm.txt +0 -107
  458. solace_agent_mesh/gateway/http_sse/routers/routers_llm.txt +0 -314
  459. solace_agent_mesh/gateway/http_sse/services/services_llm.txt +0 -297
  460. solace_agent_mesh/gateway/http_sse/shared/__init__.py +0 -146
  461. solace_agent_mesh/gateway/http_sse/shared/shared_llm.txt +0 -285
  462. solace_agent_mesh/gateway/http_sse/utils/utils_llm.txt +0 -47
  463. solace_agent_mesh/llm.txt +0 -228
  464. solace_agent_mesh/llm_detail.txt +0 -2835
  465. solace_agent_mesh/solace_agent_mesh_llm.txt +0 -362
  466. solace_agent_mesh/solace_agent_mesh_llm_detail.txt +0 -8599
  467. solace_agent_mesh/templates/logging_config_template.ini +0 -45
  468. solace_agent_mesh/templates/templates_llm.txt +0 -147
  469. solace_agent_mesh-1.6.1.dist-info/RECORD +0 -525
  470. /solace_agent_mesh/assets/docs/assets/js/{main.b12eac43.js.LICENSE.txt → main.d634009f.js.LICENSE.txt} +0 -0
  471. /solace_agent_mesh/{gateway/http_sse/shared → shared/api}/auth_utils.py +0 -0
  472. /solace_agent_mesh/{gateway/http_sse/shared → shared/api}/pagination.py +0 -0
  473. /solace_agent_mesh/{gateway/http_sse/shared → shared/api}/response_utils.py +0 -0
  474. /solace_agent_mesh/{gateway/http_sse/shared → shared/exceptions}/error_dto.py +0 -0
  475. /solace_agent_mesh/{gateway/http_sse/shared → shared/exceptions}/exceptions.py +0 -0
  476. /solace_agent_mesh/{gateway/http_sse/shared → shared/utils}/enums.py +0 -0
  477. /solace_agent_mesh/{gateway/http_sse/shared → shared/utils}/timestamp_utils.py +0 -0
  478. /solace_agent_mesh/{gateway/http_sse/shared → shared/utils}/types.py +0 -0
  479. /solace_agent_mesh/{gateway/http_sse/shared → shared/utils}/utils.py +0 -0
  480. {solace_agent_mesh-1.6.1.dist-info → solace_agent_mesh-1.13.2.dist-info}/entry_points.txt +0 -0
  481. {solace_agent_mesh-1.6.1.dist-info → solace_agent_mesh-1.13.2.dist-info}/licenses/LICENSE +0 -0
@@ -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
-
@@ -1,373 +0,0 @@
1
- I notice the content was cut off at the end. Let me provide the complete developer guide based on the available information:
2
-
3
- # DEVELOPER GUIDE: gateway
4
-
5
- ## Quick Summary
6
- The `gateway` directory provides a comprehensive framework for building gateways that connect external platforms (Slack, HTTP/SSE web interfaces) to the Solace AI Connector's A2A (Agent-to-Agent) messaging system. The architecture consists of a foundational `base` module that defines abstract classes for gateway implementations, and specific gateway implementations like `slack` for Slack integration and `http_sse` for web-based interfaces. The framework handles authentication, message translation between external formats and A2A protocol, real-time streaming updates, and manages the complete lifecycle of requests from external platforms to AI agents.
7
-
8
- ## Files and Subdirectories Overview
9
- - **Direct files:**
10
- - `__init__.py`: Standard Python package initializer
11
- - `gateway_llm.txt`: Documentation or configuration file for LLM-related gateway functionality
12
-
13
- - **Subdirectories:**
14
- - `base/`: Foundational abstract classes and utilities for building gateway implementations
15
- - `slack/`: Complete Slack platform integration gateway with bot functionality
16
- - `http_sse/`: HTTP/Server-Sent Events gateway for web-based user interfaces
17
-
18
- ## Developer API Reference
19
-
20
- ### Direct Files
21
-
22
- #### __init__.py
23
- **Purpose:** Initializes the `gateway` Python package
24
- **Import:** `from solace_agent_mesh.gateway import ...`
25
-
26
- **Classes/Functions/Constants:**
27
- This file is empty and contains no direct exports.
28
-
29
- #### gateway_llm.txt
30
- **Purpose:** Documentation or configuration file for LLM-related gateway functionality
31
- **Import:** Not applicable (text/documentation file)
32
-
33
- **Content:** This appears to be a documentation or configuration file rather than executable code.
34
-
35
- ### Subdirectory APIs
36
-
37
- #### base/
38
- **Purpose:** Provides foundational abstract classes for building Gateway implementations
39
- **Key Exports:** `BaseGatewayApp`, `BaseGatewayComponent`, `TaskContextManager`
40
- **Import Examples:**
41
- ```python
42
- from solace_agent_mesh.gateway.base.app import BaseGatewayApp
43
- from solace_agent_mesh.gateway.base.component import BaseGatewayComponent
44
- from solace_agent_mesh.gateway.base.task_context import TaskContextManager
45
- ```
46
-
47
- #### slack/
48
- **Purpose:** Complete Slack platform integration with bot functionality, event handling, and A2A message translation
49
- **Key Exports:** `SlackGatewayApp`, `SlackGatewayComponent`, utility functions for Slack operations
50
- **Import Examples:**
51
- ```python
52
- from solace_agent_mesh.gateway.slack.app import SlackGatewayApp
53
- from solace_agent_mesh.gateway.slack.component import SlackGatewayComponent
54
- from solace_agent_mesh.gateway.slack.utils import generate_a2a_session_id, send_slack_message
55
- ```
56
-
57
- #### http_sse/
58
- **Purpose:** HTTP/Server-Sent Events gateway for web-based user interfaces with real-time streaming
59
- **Key Exports:** `WebUIBackendApp`, `WebUIBackendComponent`, `SSEManager`, `SessionManager`, routers, services
60
- **Import Examples:**
61
- ```python
62
- from solace_agent_mesh.gateway.http_sse.app import WebUIBackendApp
63
- from solace_agent_mesh.gateway.http_sse.component import WebUIBackendComponent
64
- from solace_agent_mesh.gateway.http_sse.sse_manager import SSEManager
65
- from solace_agent_mesh.gateway.http_sse.dependencies import get_sse_manager, get_session_manager
66
- ```
67
-
68
- ## Complete Usage Guide
69
-
70
- ### 1. Creating a Custom Gateway Implementation
71
-
72
- ```python
73
- from typing import Type, List, Dict, Any, Optional, Tuple, Union
74
- from solace_agent_mesh.gateway.base.app import BaseGatewayApp
75
- from solace_agent_mesh.gateway.base.component import BaseGatewayComponent
76
- from solace_agent_mesh.common.a2a.types import ContentPart, TextPart
77
- from a2a.types import Task, TaskStatusUpdateEvent, TaskArtifactUpdateEvent, JSONRPCError
78
-
79
- # Step 1: Define your gateway app class
80
- class MyCustomGatewayApp(BaseGatewayApp):
81
- """Custom gateway for My Platform integration."""
82
-
83
- # Define platform-specific configuration parameters
84
- SPECIFIC_APP_SCHEMA_PARAMS: List[Dict[str, Any]] = [
85
- {
86
- "name": "my_platform_api_key",
87
- "required": True,
88
- "type": "string",
89
- "description": "API key for My Platform"
90
- },
91
- {
92
- "name": "my_platform_webhook_url",
93
- "required": False,
94
- "type": "string",
95
- "description": "Webhook URL for receiving events"
96
- },
97
- {
98
- "name": "default_agent_name",
99
- "required": False,
100
- "type": "string",
101
- "default": "assistant",
102
- "description": "Default agent to route messages to"
103
- }
104
- ]
105
-
106
- def _get_gateway_component_class(self) -> Type[BaseGatewayComponent]:
107
- return MyCustomGatewayComponent
108
-
109
- # Step 2: Implement your gateway component
110
- class MyCustomGatewayComponent(BaseGatewayComponent):
111
- """Component implementing My Platform integration logic."""
112
-
113
- def __init__(self, **kwargs):
114
- super().__init__(**kwargs)
115
- self.api_key = self.get_config("my_platform_api_key")
116
- self.webhook_url = self.get_config("my_platform_webhook_url")
117
- self.default_agent = self.get_config("default_agent_name", "assistant")
118
- self.platform_client = None # Initialize your platform client
119
-
120
- async def _extract_initial_claims(self, external_event_data: Any) -> Optional[Dict[str, Any]]:
121
- """Extract user identity from platform event."""
122
- # Example: Extract user ID from your platform's event structure
123
- if hasattr(external_event_data, 'user_id'):
124
- return {
125
- "id": external_event_data.user_id,
126
- "platform": "my_platform",
127
- "username": getattr(external_event_data, 'username', None)
128
- }
129
- return None
130
-
131
- def _start_listener(self) -> None:
132
- """Start your platform's event listener."""
133
- # Example: Start webhook server, WebSocket connection, etc.
134
- print(f"Starting My Platform listener on {self.webhook_url}")
135
- # Initialize your platform client/listener here
136
-
137
- def _stop_listener(self) -> None:
138
- """Stop your platform's event listener."""
139
- print("Stopping My Platform listener")
140
- # Clean up platform client/listener here
141
-
142
- async def _translate_external_input(self, external_event: Any) -> Tuple[str, List[ContentPart], Dict[str, Any]]:
143
- """Convert platform event to A2A format."""
144
- # Extract message content
145
- message_text = getattr(external_event, 'message', '')
146
-
147
- # Determine target agent (could be extracted from message or use default)
148
- target_agent = getattr(external_event, 'target_agent', self.default_agent)
149
-
150
- # Create A2A content parts
151
- a2a_parts = [TextPart(text=message_text)]
152
-
153
- # Create context for tracking this request
154
- context = {
155
- "platform": "my_platform",
156
- "event_id": getattr(external_event, 'id', ''),
157
- "channel_id": getattr(external_event, 'channel_id', ''),
158
- "user_id_for_artifacts": getattr(external_event, 'user_id', ''),
159
- "a2a_session_id": f"my_platform_{getattr(external_event, 'session_id', '')}"
160
- }
161
-
162
- return target_agent, a2a_parts, context
163
-
164
- async def _send_update_to_external(self,
165
- external_request_context: Dict[str, Any],
166
- event_data: Union[TaskStatusUpdateEvent, TaskArtifactUpdateEvent],
167
- is_final_chunk_of_update: bool) -> None:
168
- """Send streaming update to your platform."""
169
- channel_id = external_request_context.get("channel_id")
170
-
171
- # Extract text content from the event
172
- if hasattr(event_data, 'text_delta'):
173
- text_content = event_data.text_delta
174
- elif hasattr(event_data, 'content'):
175
- text_content = str(event_data.content)
176
- else:
177
- text_content = "Update received"
178
-
179
- # Send to your platform (example)
180
- await self._send_to_platform(channel_id, text_content, is_partial=not is_final_chunk_of_update)
181
-
182
- async def _send_final_response_to_external(self,
183
- external_request_context: Dict[str, Any],
184
- task_data: Task) -> None:
185
- """Send final response to your platform."""
186
- channel_id = external_request_context.get("channel_id")
187
-
188
- # Extract final response from task data
189
- final_response = "Task completed"
190
- if task_data.result and hasattr(task_data.result, 'content'):
191
- final_response = str(task_data.result.content)
192
-
193
- await self._send_to_platform(channel_id, final_response, is_final=True)
194
-
195
- async def _send_error_to_external(self,
196
- external_request_context: Dict[str, Any],
197
- error_data: JSONRPCError) -> None:
198
- """Send error to your platform."""
199
- channel_id = external_request_context.get("channel_id")
200
- error_message = f"Error: {error_data.message}"
201
- await self._send_to_platform(channel_id, error_message, is_error=True)
202
-
203
- async def _send_to_platform(self, channel_id: str, message: str, **kwargs):
204
- """Helper method to send messages to your platform."""
205
- # Implement your platform's message sending logic here
206
- print(f"Sending to {channel_id}: {message}")
207
-
208
- # Step 3: Usage
209
- if __name__ == "__main__":
210
- config = {
211
- "name": "my-custom-gateway",
212
- "namespace": "/myorg/prod",
213
- "gateway_id": "my-gateway-01",
214
- "my_platform_api_key": "your-api-key",
215
- "my_platform_webhook_url": "https://my-webhook.example.com",
216
- "default_agent_name": "my-assistant",
217
- "solace_config": {
218
- "broker_url": "tcp://localhost:55555",
219
- "vpn_name": "default",
220
- "username": "default",
221
- "password": "default"
222
- }
223
- }
224
-
225
- app = MyCustomGatewayApp(app_info=config)
226
- app.run()
227
- ```
228
-
229
- ### 2. Using the Slack Gateway
230
-
231
- ```python
232
- from solace_agent_mesh.gateway.slack.app import SlackGatewayApp
233
-
234
- # Configure Slack gateway
235
- slack_config = {
236
- "name": "my-slack-bot",
237
- "namespace": "/myorg/prod",
238
- "gateway_id": "slack-bot-01",
239
-
240
- # Slack credentials (get these from your Slack app)
241
- "slack_bot_token": "xoxb-your-bot-token",
242
- "slack_app_token": "xapp-your-app-token",
243
- "slack_signing_secret": "your-signing-secret",
244
-
245
- # Gateway settings
246
- "default_agent_name": "assistant",
247
- "enable_socket_mode": True,
248
- "enable_file_upload": True,
249
- "slack_request_timeout": 30,
250
-
251
- # A2A system configuration
252
- "solace_config": {
253
- "broker_url": "tcp://localhost:55555",
254
- "vpn_name": "default",
255
- "username": "default",
256
- "password": "default"
257
- }
258
- }
259
-
260
- # Create and run the Slack gateway
261
- slack_app = SlackGatewayApp(app_info=slack_config)
262
- slack_app.run()
263
- ```
264
-
265
- ### 3. Using the HTTP/SSE Gateway for Web Interfaces
266
-
267
- ```python
268
- from solace_agent_mesh.gateway.http_sse.app import WebUIBackendApp
269
- from fastapi import APIRouter, Depends, Request
270
- from solace_agent_mesh.gateway.http_sse.dependencies import (
271
- get_sse_manager, get_session_manager, get_core_a2a_service
272
- )
273
-
274
- # Configure web UI gateway
275
- webui_config = {
276
- "name": "my-webui",
277
- "session_secret_key": "your-secret-key",
278
- "fastapi_host": "0.0.0.0",
279
- "fastapi_port": 8000,
280
- "namespace": "/myorg/prod",
281
- "gateway_id": "webui-01",
282
- "cors_allowed_origins": ["http://localhost:3000"],
283
- "frontend_welcome_message": "Welcome to AI Assistant!",
284
- "frontend_bot_name": "Assistant",
285
- "frontend_enable_file_upload": True,
286
- "frontend_enable_agent_selection": True,
287
-
288
- # Database for session persistence
289
- "session_service": {
290
- "type": "sql",
291
- "database_url": "sqlite:///./sessions.db"
292
- },
293
-
294
- # A2A system configuration
295
- "solace_config": {
296
- "broker_url": "tcp://localhost:55555",
297
- "vpn_name": "default",
298
- "username": "default",
299
- "password": "default"
300
- }
301
- }
302
-
303
- # Create custom router for additional endpoints
304
- custom_router = APIRouter(prefix="/api/custom")
305
-
306
- @custom_router.get("/my-endpoint")
307
- async def my_custom_endpoint(
308
- request: Request,
309
- sse_manager = Depends(get_sse_manager),
310
- session_manager = Depends(get_session_manager)
311
- ):
312
- """Custom endpoint with access to gateway services."""
313
- user_id = session_manager.get_a2a_client_id(request)
314
- return {"user_id": user_id, "message": "Custom endpoint response"}
315
-
316
- # Create and run the web UI gateway
317
- webui_app = WebUIBackendApp(app_info=webui_config)
318
- webui_app.run()
319
- ```
320
-
321
- ### 4. Working with Task Context and Session Management
322
-
323
- ```python
324
- from solace_agent_mesh.gateway.base.task_context import TaskContextManager
325
- from solace_agent_mesh.gateway.http_sse.session_manager import SessionManager
326
-
327
- # Task context management (used internally by gateways)
328
- context_manager = TaskContextManager()
329
-
330
- # Store context when submitting a task
331
- task_id = "task-123"
332
- context = {
333
- "platform": "slack",
334
- "channel_id": "C1234567890",
335
- "user_id": "U1234567890",
336
- "thread_ts": "1234567890.123456"
337
- }
338
- context_manager.store_context(task_id, context)
339
-
340
- # Retrieve context when processing response
341
- retrieved_context = context_manager.get_context(task_id)
342
- if retrieved_context:
343
- # Send response back to original platform
344
- channel_id = retrieved_context["channel_id"]
345
-
346
- # Session management for web interfaces
347
- session_manager = SessionManager(
348
- secret_key="your-secret-key",
349
- app_config={"session_timeout": 3600}
350
- )
351
-
352
- # In a FastAPI endpoint
353
- @app.get("/api/session-info")
354
- async def get_session_info(request: Request):
355
- # Get A2A client ID for this web session
356
- client_id = session_manager.get_a2a_client_id(request)
357
-
358
- # Ensure we have an A2A session
359
- session_id = session_manager.ensure_a2a_session(request)
360
-
361
- return {
362
- "client_id": client_id,
363
- "session_id": session_id
364
- }
365
- ```
366
-
367
- ### 5. Advanced Integration: Combining Multiple Gateways
368
-
369
- ```python
370
- import asyncio
371
- from solace_agent_mesh.gateway.slack.app import Sl
372
-
373
- # content_hash: 39731f2779a4f0ef42b1948f8441baf5b76eff10fbfc48def5fbb270fa334f6b