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
@@ -0,0 +1,36 @@
1
+ """
2
+ Exception types and handlers for consistent error handling.
3
+
4
+ Provides:
5
+ - Business exception types (ValidationError, EntityNotFoundError, etc.)
6
+ - FastAPI exception handlers
7
+ - Error DTOs for API responses
8
+ """
9
+
10
+ from .exceptions import (
11
+ WebUIBackendException,
12
+ ValidationError,
13
+ EntityNotFoundError,
14
+ EntityAlreadyExistsError,
15
+ BusinessRuleViolationError,
16
+ ConfigurationError,
17
+ DataIntegrityError,
18
+ ExternalServiceError,
19
+ EntityOperation,
20
+ )
21
+ from .exception_handlers import register_exception_handlers
22
+ from .error_dto import EventErrorDTO
23
+
24
+ __all__ = [
25
+ "WebUIBackendException",
26
+ "ValidationError",
27
+ "EntityNotFoundError",
28
+ "EntityAlreadyExistsError",
29
+ "BusinessRuleViolationError",
30
+ "ConfigurationError",
31
+ "DataIntegrityError",
32
+ "ExternalServiceError",
33
+ "EntityOperation",
34
+ "register_exception_handlers",
35
+ "EventErrorDTO",
36
+ ]
@@ -6,6 +6,8 @@ into appropriate HTTP responses with consistent formatting. These handlers
6
6
  can be used by any FastAPI application for uniform error handling.
7
7
  """
8
8
 
9
+ import logging
10
+
9
11
  from fastapi import HTTPException, Request, status
10
12
  from fastapi.responses import JSONResponse
11
13
  from fastapi.exceptions import RequestValidationError
@@ -24,6 +26,8 @@ from .exceptions import (
24
26
  )
25
27
  from .error_dto import EventErrorDTO
26
28
 
29
+ log = logging.getLogger(__name__)
30
+
27
31
 
28
32
  def create_error_response(
29
33
  status_code: int, message: str, validation_details: dict = None
@@ -105,7 +109,18 @@ async def webui_backend_exception_handler(
105
109
  request: Request, exc: WebUIBackendException
106
110
  ) -> JSONResponse:
107
111
  """Handle generic WebUI backend exceptions - 500 Internal Server Error."""
108
- error_dto = EventErrorDTO.create("An unexpected server error occurred.")
112
+ log.error(
113
+ f"WebUIBackendException: {exc.message}",
114
+ extra={
115
+ "path": request.url.path,
116
+ "method": request.method,
117
+ "details": exc.details if hasattr(exc, 'details') else None
118
+ },
119
+ exc_info=True
120
+ )
121
+
122
+ message = exc.message if exc.message else "An unexpected server error occurred."
123
+ error_dto = EventErrorDTO.create(message)
109
124
  return JSONResponse(status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, content=error_dto.model_dump())
110
125
 
111
126
 
@@ -113,9 +128,8 @@ async def http_exception_handler(
113
128
  request: Request, exc: HTTPException
114
129
  ) -> JSONResponse:
115
130
  """Handle FastAPI HTTPExceptions with standardized format."""
116
- # Map common HTTP status codes to standard messages
131
+ # Map common HTTP status codes to standard messages (only used as fallback)
117
132
  message_map = {
118
- 400: "bad request",
119
133
  401: "An authentication error occurred. Try logging out and in again.",
120
134
  403: "You do not have permissions to perform this operation",
121
135
  404: f"Resource not found with path {request.url.path}",
@@ -127,7 +141,7 @@ async def http_exception_handler(
127
141
  503: "Service is unavailable.",
128
142
  }
129
143
 
130
- message = message_map.get(exc.status_code, exc.detail)
144
+ message = exc.detail if exc.detail else message_map.get(exc.status_code, "bad request")
131
145
  error_dto = EventErrorDTO.create(message)
132
146
  return JSONResponse(status_code=exc.status_code, content=error_dto.model_dump())
133
147
 
@@ -179,7 +193,7 @@ def register_exception_handlers(app):
179
193
 
180
194
  Example:
181
195
  from fastapi import FastAPI
182
- from solace_agent_mesh.gateway.http_sse.shared.exception_handlers import register_exception_handlers
196
+ from solace_agent_mesh.shared.exceptions.exception_handlers import register_exception_handlers
183
197
 
184
198
  app = FastAPI()
185
199
  register_exception_handlers(app)
@@ -0,0 +1,21 @@
1
+ """
2
+ General utilities for common operations.
3
+
4
+ Provides:
5
+ - Timestamp utilities (epoch conversions, ISO8601 formatting)
6
+ - Enums
7
+ - Type definitions
8
+ - Generic helper functions
9
+ """
10
+
11
+ from .timestamp_utils import (
12
+ now_epoch_ms,
13
+ epoch_ms_to_iso8601,
14
+ iso8601_to_epoch_ms,
15
+ )
16
+
17
+ __all__ = [
18
+ "now_epoch_ms",
19
+ "epoch_ms_to_iso8601",
20
+ "iso8601_to_epoch_ms",
21
+ ]
@@ -0,0 +1,48 @@
1
+ version: 1
2
+ disable_existing_loggers: false
3
+
4
+ formatters:
5
+ simpleFormatter:
6
+ format: "%(asctime)s | %(levelname)-5s | %(threadName)s | %(name)s | %(message)s"
7
+
8
+ coloredFormatter:
9
+ class: solace_ai_connector.logging.ColoredFormatter
10
+ format: "%(asctime)s | %(levelname)-5s | %(threadName)s | %(name)s | %(message)s"
11
+
12
+ jsonFormatter:
13
+ "()": pythonjsonlogger.json.JsonFormatter
14
+ format: "%(timestamp)s %(levelname)s %(threadName)s %(name)s %(message)s"
15
+ timestamp: "timestamp"
16
+
17
+ handlers:
18
+ streamHandler:
19
+ class: logging.StreamHandler
20
+ formatter: coloredFormatter
21
+ stream: ext://sys.stdout
22
+
23
+ rotatingFileHandler:
24
+ class: logging.handlers.RotatingFileHandler
25
+ formatter: simpleFormatter
26
+ filename: ${LOGGING_FILE_NAME, sam.log}
27
+ mode: a
28
+ maxBytes: 52428800
29
+ backupCount: 10
30
+
31
+ loggers:
32
+ solace_ai_connector:
33
+ level: ${LOGGING_SAC_LEVEL, INFO}
34
+ handlers: []
35
+
36
+ solace_agent_mesh:
37
+ level: ${LOGGING_SAM_LEVEL, INFO}
38
+ handlers: []
39
+
40
+ sam_trace:
41
+ level: ${LOGGING_SAM_TRACE_LEVEL, INFO}
42
+ handlers: []
43
+
44
+ root:
45
+ level: ${LOGGING_ROOT_LEVEL, WARNING}
46
+ handlers:
47
+ - streamHandler
48
+ - rotatingFileHandler
@@ -43,7 +43,18 @@ apps:
43
43
  description: "__AGENT_CARD_DESCRIPTION__"
44
44
  defaultInputModes: __DEFAULT_INPUT_MODES__
45
45
  defaultOutputModes: __DEFAULT_OUTPUT_MODES__
46
- skills: []
46
+ skills:
47
+ - id: strategic_planning
48
+ name: Strategic Planning
49
+ description: Analyzes complex requests and creates structured execution plans, breaking down multi-step goals into logical sequences with clear checkpoints and progress tracking.
50
+
51
+ - id: agent_coordination
52
+ name: Agent Coordination
53
+ description: Identifies the most suitable specialized agents for specific tasks and coordinates multi-agent workflows, managing data handoffs and execution sequences to achieve complex objectives efficiently.
54
+
55
+ - id: artifact_management
56
+ name: Artifact Management
57
+ description: Creates, transforms, and manages various artifact types including documents, reports, and data files, with capabilities for content generation, formatting, embedding dynamic data, and applying sophisticated data transformations.
47
58
 
48
59
  agent_card_publishing:
49
60
  interval_seconds: __AGENT_CARD_PUBLISHING_INTERVAL__
@@ -0,0 +1,49 @@
1
+ # Platform Service Template for Solace Agent Mesh
2
+ # Provides agent management, deployments, connectors, and toolsets
3
+
4
+ log:
5
+ stdout_log_level: INFO
6
+ log_file_level: DEBUG
7
+ log_file: platform_service.log
8
+
9
+ # Shared SAM config (broker, models, etc.)
10
+ !include ../shared_config.yaml
11
+
12
+ apps:
13
+ - name: platform_service_app
14
+ app_base_path: .
15
+ app_module: solace_agent_mesh.services.platform.app
16
+
17
+ broker:
18
+ <<: *broker_connection
19
+
20
+ app_config:
21
+ # --- Required ---
22
+ namespace: ${NAMESPACE}
23
+ database_url: "${PLATFORM_DATABASE_URL, sqlite:///platform.db}"
24
+
25
+ # --- FastAPI Server Configuration ---
26
+ fastapi_host: ${PLATFORM_API_HOST, localhost}
27
+ fastapi_port: ${PLATFORM_API_PORT, 8001}
28
+ cors_allowed_origins:
29
+ - "http://localhost:3000"
30
+ - "http://127.0.0.1:3000"
31
+ - "http://localhost:8000"
32
+
33
+ # --- Message Size Configuration ---
34
+ max_message_size_bytes: ${MAX_MESSAGE_SIZE_BYTES, 10000000}
35
+
36
+ # --- OAuth2 Authentication ---
37
+ # Community mode: frontend_use_authorization=false (dev user)
38
+ # Enterprise mode: frontend_use_authorization=true (OAuth validation)
39
+ external_auth_service_url: ${EXTERNAL_AUTH_SERVICE_URL}
40
+ external_auth_provider: ${EXTERNAL_AUTH_PROVIDER, generic}
41
+ frontend_use_authorization: ${FRONTEND_USE_AUTHORIZATION, false}
42
+
43
+ # --- Background Task Configuration ---
44
+ # Deployment monitoring (enterprise feature)
45
+ deployment_timeout_minutes: ${DEPLOYMENT_TIMEOUT_MINUTES, 5}
46
+ deployment_check_interval_seconds: ${DEPLOYMENT_CHECK_INTERVAL, 60}
47
+
48
+ # Deployer heartbeat monitoring (enterprise feature)
49
+ heartbeat_timeout_seconds: ${HEARTBEAT_TIMEOUT_SECONDS, 90}
@@ -1,34 +1,12 @@
1
- # __PLUGIN_KEBAB_CASE_NAME__ SAM Plugin
1
+ # __PLUGIN_PASCAL_CASE_NAME__ SAM Plugin
2
2
 
3
3
  __PLUGIN_DESCRIPTION__
4
4
 
5
5
  This is a plugin for Solace Agent Mesh (SAM).
6
6
 
7
- ## Configuration (`config.yaml`)
8
-
9
- The `config.yaml` in this plugin serves as a template. When you use `sam plugin add <component_name> --plugin __PLUGIN_KEBAB_CASE_NAME__`, the following placeholders in the YAML structure will be replaced with variations of `<component_name>`:
10
- - `__COMPONENT_UPPER_SNAKE_CASE_NAME__`
11
- - `__COMPONENT_KEBAB_CASE_NAME__`
12
- - `__COMPONENT_PASCAL_CASE_NAME__`
13
-
14
- Customize the `config.yaml` in this plugin directory to define the base configuration for components created from it.
15
-
16
- ## Source Code (`src/`)
17
- The `src/` directory contains the Python source code for your plugin.
18
-
19
- ## Installation (as a developer of this plugin)
20
-
21
- To build and install this plugin locally for testing:
22
- ```bash
23
- sam plugin build
24
- pip install dist/*.whl
25
- ```
26
- (Or `pip install .` if preferred, `sam plugin build` is for creating the distributable wheel)
27
-
28
- ## Usage (as a user of this plugin)
7
+ ## Installation
29
8
 
30
9
  Once the plugin is installed (e.g., from PyPI or a local wheel file):
31
10
  ```bash
32
11
  sam plugin add <your-new-component-name> --plugin __PLUGIN_KEBAB_CASE_NAME__
33
- ```
34
- This will create a new component configuration at `configs/plugins/<your-new-component-name-kebab-case>.yaml`.
12
+ ```
@@ -0,0 +1,109 @@
1
+ # Plugin Metadata:
2
+ # Name: __PLUGIN_KEBAB_CASE_NAME__
3
+ # Version: __PLUGIN_VERSION__
4
+ # Description: __PLUGIN_DESCRIPTION__
5
+ # Author: __PLUGIN_AUTHOR_NAME__ <__PLUGIN_AUTHOR_EMAIL__>
6
+ #
7
+ # --- Start of Agent Configuration Template ---
8
+ # Solace Agent Mesh: Plugin Configuration Template
9
+ #
10
+ # This file serves as a template for creating new agent configurations from this plugin.
11
+ # Use placeholders like __COMPONENT_KEBAB_CASE_NAME__, __COMPONENT_PASCAL_CASE_NAME__,
12
+ # and __COMPONENT_UPPER_SNAKE_CASE_NAME__ where the specific component name should be inserted.
13
+
14
+ log:
15
+ stdout_log_level: INFO
16
+ log_file_level: DEBUG
17
+ log_file: __COMPONENT_KEBAB_CASE_NAME__.log
18
+
19
+ # To use the `shared_config.yaml` file, uncomment the following line and remove the `shared_config` section below.
20
+ # !include ../shared_config.yaml
21
+ shared_config:
22
+ - broker_connection: &broker_connection
23
+ dev_mode: ${SOLACE_DEV_MODE, false}
24
+ broker_url: ${SOLACE_BROKER_URL, ws://localhost:8008}
25
+ broker_username: ${SOLACE_BROKER_USERNAME, default}
26
+ broker_password: ${SOLACE_BROKER_PASSWORD, default}
27
+ broker_vpn: ${SOLACE_BROKER_VPN, default}
28
+ temporary_queue: ${USE_TEMPORARY_QUEUES, true}
29
+
30
+ - models:
31
+ general: &general_model
32
+ # This dictionary structure tells ADK to use the LiteLlm wrapper.
33
+ # 'model' uses the specific model identifier your endpoint expects.
34
+ model: ${LLM_SERVICE_GENERAL_MODEL_NAME} # Use env var for model name
35
+ # 'api_base' tells LiteLLM where to send the request.
36
+ api_base: ${LLM_SERVICE_ENDPOINT} # Use env var for endpoint URL
37
+ # 'api_key' provides authentication.
38
+ api_key: ${LLM_SERVICE_API_KEY} # Use env var for API key
39
+
40
+ - services:
41
+ # Default session service configuration
42
+ session_service: &default_session_service
43
+ type: "memory"
44
+ default_behavior: "PERSISTENT"
45
+
46
+ # Default artifact service configuration
47
+ artifact_service: &default_artifact_service
48
+ type: "filesystem"
49
+ base_path: "/tmp/samv2"
50
+ artifact_scope: namespace # Or "namespace", "app", "custom"
51
+
52
+ apps:
53
+ - name: __COMPONENT_KEBAB_CASE_NAME__-app
54
+ app_base_path: .
55
+ app_module: solace_agent_mesh.agent.sac.app
56
+ broker:
57
+ <<: *broker_connection
58
+
59
+ # App Level Config
60
+ app_config:
61
+ namespace: ${NAMESPACE}
62
+ supports_streaming: true
63
+ agent_name: "__COMPONENT_PASCAL_CASE_NAME__"
64
+ display_name: "__COMPONENT_SPACED_CAPITALIZED_NAME__ Agent"
65
+ model: *general_model
66
+
67
+ instruction: |
68
+ You're __COMPONENT_SPACED_CAPITALIZED_NAME__ agent.
69
+ Configure its specific instructions here.
70
+
71
+ tools:
72
+ - group_name: artifact_management
73
+ tool_type: builtin-group
74
+
75
+ # --- Example Python Tools (defined in tools.py) ---
76
+ # - tool_type: python
77
+ # component_module: __PLUGIN_SNAKE_CASE_NAME__.tools
78
+ # component_base_path: . # Relative to where the agent runs
79
+ # function_name: example_text_processor_tool
80
+ # tool_config:
81
+ # prefix: "PluginProcessed: "
82
+
83
+ # - tool_type: python
84
+ # component_module: __PLUGIN_SNAKE_CASE_NAME__.tools
85
+ # component_base_path: .
86
+ # function_name: example_file_creator_tool
87
+ # tool_config: {} # Add specific config if needed by the tool
88
+
89
+ session_service: *default_session_service
90
+ artifact_service: *default_artifact_service
91
+
92
+ artifact_handling_mode: "reference"
93
+ enable_embed_resolution: true
94
+ enable_artifact_content_instruction: true
95
+
96
+ agent_card:
97
+ description: "__PLUGIN_DESCRIPTION__"
98
+ defaultInputModes: ["text"]
99
+ defaultOutputModes: ["text"]
100
+ skills: [] # Remove brackets after adding entries
101
+ # - id: "example_tool"
102
+ # name: "Example Tool"
103
+ # description: "An example tool provided by the __PLUGIN_PASCAL_CASE_NAME__ plugin."
104
+
105
+ agent_card_publishing: { interval_seconds: 10 }
106
+ agent_discovery: { enabled: false }
107
+ inter_agent_communication:
108
+ allow_list: []
109
+ request_timeout_seconds: 30
@@ -0,0 +1,62 @@
1
+ # A2A Proxy Configuration File
2
+
3
+ log:
4
+ stdout_log_level: INFO
5
+ log_file_level: DEBUG
6
+ log_file: a2a_proxy.log
7
+
8
+ # Shared SAM config (includes broker connection details)
9
+ !include ../shared_config.yaml
10
+
11
+ apps:
12
+ - name: "__PROXY_NAME____app"
13
+ app_base_path: .
14
+ app_module: solace_agent_mesh.agent.proxies.a2a.app
15
+ broker:
16
+ <<: *broker_connection
17
+
18
+ # --- App Level Config for the Proxy ---
19
+ app_config:
20
+ namespace: ${NAMESPACE}
21
+
22
+ # Configuration for the artifact service used by the proxy itself.
23
+ # When the proxy receives an artifact from a downstream agent, it will
24
+ # store it here before forwarding it on the Solace mesh.
25
+ artifact_service:
26
+ type: "filesystem"
27
+ base_path: "/tmp/samv2"
28
+ artifact_scope: namespace # Default scope, shares artifacts within the NAMESPACE
29
+
30
+ # How the proxy should handle artifacts it sends over Solace.
31
+ # 'reference': Sends an artifact:// URI.
32
+ # 'embed': Sends the full content base64 encoded.
33
+ artifact_handling_mode: "reference"
34
+
35
+ # Interval in seconds for the proxy to re-fetch agent cards from
36
+ # downstream agents. Set to 0 to disable periodic checks.
37
+ discovery_interval_seconds: 5
38
+ tools:
39
+ - group_name: artifact_management
40
+ tool_type: builtin-group
41
+
42
+ # --- List of Downstream Agents to Proxy ---
43
+ # A single proxy can manage multiple external agents.
44
+ # Each agent can have its own URL, authentication, and timeout settings.
45
+ proxied_agents:
46
+ # Example 1: A simple agent without authentication
47
+ - name: "HelloWorld" # The name this agent will have on the Solace mesh
48
+ url: "http://localhost:9999" # The real HTTP endpoint of the agent
49
+
50
+ # Example 2: Another agent without authentication
51
+ - name: "AnalysisAgent"
52
+ url: "http://127.0.0.1:10001"
53
+
54
+ # You can add more agents here with different configurations:
55
+ # - name: "SecureAgent"
56
+ # url: "https://api.example.com/agent"
57
+ # authentication:
58
+ # type: "static_bearer"
59
+ # token: "${SECURE_AGENT_TOKEN}"
60
+ # request_timeout_seconds: 180
61
+ # # use_agent_card_url: false # If true (default), uses URL from agent card for tasks.
62
+ # # If false, uses configured URL directly for all calls.
@@ -20,15 +20,25 @@ apps:
20
20
  namespace: ${NAMESPACE}
21
21
  session_secret_key: "${SESSION_SECRET_KEY}"
22
22
 
23
+ model: *general_model
23
24
  artifact_service: *default_artifact_service
24
25
  session_service: __SESSION_SERVICE__
25
26
  gateway_id: ${WEBUI_GATEWAY_ID}
26
27
  fastapi_host: ${FASTAPI_HOST}
27
- fastapi_port: ${FASTAPI_PORT}
28
- cors_allowed_origins:
29
- - "http://localhost:3000"
28
+ fastapi_port: ${FASTAPI_PORT, 8000}
29
+ cors_allowed_origins:
30
+ - "http://localhost:3000"
30
31
  - "http://127.0.0.1:3000"
31
32
 
33
+ # Platform Service Configuration (runs as second app in this template)
34
+ platform_service:
35
+ url: "${PLATFORM_SERVICE_URL, http://localhost:8001}"
36
+
37
+ # OAuth2 Authentication (Community: false, Enterprise: true)
38
+ external_auth_service_url: ${EXTERNAL_AUTH_SERVICE_URL}
39
+ external_auth_provider: ${EXTERNAL_AUTH_PROVIDER, generic}
40
+ frontend_use_authorization: ${FRONTEND_USE_AUTHORIZATION, false}
41
+
32
42
  enable_embed_resolution: ${ENABLE_EMBED_RESOLUTION} # Enable late-stage resolution
33
43
  gateway_artifact_content_limit_bytes: ${GATEWAY_ARTIFACT_LIMIT_BYTES, 10000000} # Max size for late-stage embeds
34
44
  sse_max_queue_size: ${SSE_MAX_QUEUE_SIZE, 200} # Max size of SSE connection queues
@@ -46,6 +56,138 @@ apps:
46
56
  Format responses to the user in Markdown using appropriate formatting.
47
57
 
48
58
  # --- Frontend Config Passthrough ---
49
- frontend_welcome_message: ${FRONTEND_WELCOME_MESSAGE}
50
- frontend_bot_name: ${FRONTEND_BOT_NAME}
51
- frontend_collect_feedback: ${FRONTEND_COLLECT_FEEDBACK}
59
+ frontend_welcome_message: __FRONTEND_WELCOME_MESSAGE__
60
+ frontend_bot_name: __FRONTEND_BOT_NAME__
61
+ frontend_collect_feedback: __FRONTEND_COLLECT_FEEDBACK__
62
+ frontend_logo_url: __FRONTEND_LOGO_URL__
63
+
64
+ task_logging:
65
+ enabled: true
66
+ log_status_updates: true
67
+ log_artifact_events: true
68
+ log_file_parts: true
69
+ max_file_part_size_bytes: 10240
70
+
71
+ # --- Frontend Feature Flags ---
72
+ # Uncomment to control speech features in the UI
73
+ frontend_feature_enablement:
74
+ # speechToText: true # Set to false to hide Speech-to-Text settings & microphone
75
+ # textToSpeech: true # Set to false to hide Text-to-Speech settings & speaker button
76
+ # projects: true
77
+ # promptLibrary: true
78
+ background_tasks: true # NOTE: task_logging must also be enabled for background tasks to work
79
+
80
+ # --- Background Tasks Configuration ---
81
+ background_tasks:
82
+ default_timeout_ms: 3600000 # Default: 1 hour (3600000ms)
83
+
84
+ # --- Speech Configuration (STT/TTS) ---
85
+ speech:
86
+ # stt:
87
+ # provider: openai
88
+ # url: "https://api.openai.com/v1/audio/transcriptions"
89
+ # api_key: "${OPENAI_API_KEY}"
90
+ # model: "whisper-1"
91
+ stt:
92
+ provider: azure
93
+ azure:
94
+ api_key: "${AZURE_SPEECH_KEY}"
95
+ region: "${AZURE_SPEECH_REGION}"
96
+ language: en-US
97
+
98
+ # Text-to-Speech Configuration
99
+ tts:
100
+ provider: ${TTS_PROVIDER, gemini} # "gemini", "azure", or "polly" (can be overridden by UI)
101
+
102
+ # Azure Neural Voices Configuration
103
+ azure:
104
+ api_key: "${AZURE_SPEECH_KEY}"
105
+ region: "${AZURE_SPEECH_REGION}"
106
+ default_voice: "en-US-Andrew:DragonHDLatestNeural"
107
+ voices:
108
+ # DragonHD Latest Neural Voices (Highest Quality)
109
+ - "en-US-Ava:DragonHDLatestNeural"
110
+ - "en-US-Ava3:DragonHDLatestNeural"
111
+ - "en-US-Adam:DragonHDLatestNeural"
112
+ - "en-US-Alloy:DragonHDLatestNeural"
113
+ - "en-US-Andrew:DragonHDLatestNeural"
114
+ - "en-US-Andrew2:DragonHDLatestNeural"
115
+ - "en-US-Andrew3:DragonHDLatestNeural"
116
+ - "en-US-Aria:DragonHDLatestNeural"
117
+ - "en-US-Brian:DragonHDLatestNeural"
118
+ - "en-US-Davis:DragonHDLatestNeural"
119
+ - "en-US-Emma:DragonHDLatestNeural"
120
+ - "en-US-Emma2:DragonHDLatestNeural"
121
+ - "en-US-Jenny:DragonHDLatestNeural"
122
+ - "en-US-MultiTalker-Ava-Andrew:DragonHDLatestNeural"
123
+ - "en-US-Nova:DragonHDLatestNeural"
124
+ - "en-US-Phoebe:DragonHDLatestNeural"
125
+ - "en-US-Serena:DragonHDLatestNeural"
126
+ - "en-US-Steffan:DragonHDLatestNeural"
127
+ # Standard Neural Voices
128
+ - "en-US-JennyNeural"
129
+ - "en-US-GuyNeural"
130
+ - "en-US-AriaNeural"
131
+ - "en-US-DavisNeural"
132
+ - "en-US-JaneNeural"
133
+ - "en-US-JasonNeural"
134
+ - "en-US-NancyNeural"
135
+ - "en-US-TonyNeural"
136
+ - "en-GB-LibbyNeural"
137
+ - "en-GB-RyanNeural"
138
+ - "en-GB-SoniaNeural"
139
+ - "en-AU-NatashaNeural"
140
+ - "en-AU-WilliamNeural"
141
+
142
+ # Google Gemini Configuration
143
+ gemini:
144
+ api_key: "${GEMINI_API_KEY}"
145
+ model: "gemini-2.5-flash-preview-tts"
146
+ default_voice: "Kore"
147
+ language: "en-US"
148
+ voices:
149
+ - "Kore"
150
+ - "Puck"
151
+ - "Zephyr"
152
+ - "Charon"
153
+ - "Fenrir"
154
+ - "Leda"
155
+ - "Aoede"
156
+ - "Callirhoe"
157
+ - "Umbriel"
158
+ - "Enceladus"
159
+ - "Iapetus"
160
+ - "Erinome"
161
+ - "Algieba"
162
+ - "Despina"
163
+ - "Algenib"
164
+ - "Achernar"
165
+ - "Schedar"
166
+ - "Gacrux"
167
+ - "Pulcherrima"
168
+ - "Achird"
169
+ - "Zubenelgenubi"
170
+ - "Vindemiatrix"
171
+ - "Sadachbia"
172
+ - "Sadaltager"
173
+ - "Sulafat"
174
+ - "Autonoe"
175
+ - "Laomedeia"
176
+ - "Orus"
177
+ - "Rasalgethi"
178
+ - "Alnilam"
179
+
180
+ # Frontend Speech Tab Default Settings (optional)
181
+ speechTab:
182
+ advancedMode: false
183
+ speechToText:
184
+ speechToText: true
185
+ engineSTT: "external" # Use external for better quality
186
+ languageSTT: "en-US"
187
+ textToSpeech:
188
+ textToSpeech: true
189
+ engineTTS: "external" # Use external for better quality
190
+ voice: "Kore"
191
+ playbackRate: 1.0
192
+ cacheTTS: true
193
+
@@ -0,0 +1,18 @@
1
+ """Web search tools for Solace Agent Mesh.
2
+
3
+ This module provides Google Search integration. For other search providers
4
+ (Exa, Brave, Tavily), please use the corresponding plugins from
5
+ solace-agent-mesh-plugins repository.
6
+ """
7
+
8
+ from .models import SearchSource, SearchResult, ImageResult
9
+ from .base import WebSearchTool
10
+ from .google_search import GoogleSearchTool
11
+
12
+ __all__ = [
13
+ "SearchSource",
14
+ "SearchResult",
15
+ "ImageResult",
16
+ "WebSearchTool",
17
+ "GoogleSearchTool",
18
+ ]