solace-agent-mesh 1.6.3__py3-none-any.whl → 1.7.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of solace-agent-mesh might be problematic. Click here for more details.

Files changed (244) hide show
  1. solace_agent_mesh/agent/adk/adk_llm.txt +12 -18
  2. solace_agent_mesh/agent/adk/artifacts/artifacts_llm.txt +1 -1
  3. solace_agent_mesh/agent/adk/callbacks.py +138 -20
  4. solace_agent_mesh/agent/adk/embed_resolving_mcp_toolset.py +2 -0
  5. solace_agent_mesh/agent/adk/models/lite_llm.py +38 -5
  6. solace_agent_mesh/agent/adk/models/models_llm.txt +82 -35
  7. solace_agent_mesh/agent/adk/runner.py +9 -0
  8. solace_agent_mesh/agent/adk/stream_parser.py +6 -1
  9. solace_agent_mesh/agent/adk/tool_wrapper.py +3 -0
  10. solace_agent_mesh/agent/agent_llm.txt +61 -70
  11. solace_agent_mesh/agent/protocol/event_handlers.py +29 -1
  12. solace_agent_mesh/agent/protocol/protocol_llm.txt +1 -1
  13. solace_agent_mesh/agent/proxies/a2a/a2a_llm.txt +190 -0
  14. solace_agent_mesh/agent/proxies/base/base_llm.txt +148 -0
  15. solace_agent_mesh/agent/proxies/proxies_llm.txt +283 -0
  16. solace_agent_mesh/agent/sac/app.py +22 -0
  17. solace_agent_mesh/agent/sac/component.py +76 -40
  18. solace_agent_mesh/agent/sac/sac_llm.txt +1 -1
  19. solace_agent_mesh/agent/sac/task_execution_context.py +21 -0
  20. solace_agent_mesh/agent/testing/testing_llm.txt +2 -1
  21. solace_agent_mesh/agent/tools/builtin_artifact_tools.py +13 -148
  22. solace_agent_mesh/agent/tools/dynamic_tool.py +2 -0
  23. solace_agent_mesh/agent/tools/tools_llm.txt +93 -80
  24. solace_agent_mesh/agent/tools/tools_llm_detail.txt +3 -2
  25. solace_agent_mesh/agent/utils/artifact_helpers.py +4 -0
  26. solace_agent_mesh/agent/utils/utils_llm.txt +16 -2
  27. solace_agent_mesh/assets/docs/404.html +3 -3
  28. solace_agent_mesh/assets/docs/assets/js/05749d90.c70b2be9.js +1 -0
  29. solace_agent_mesh/assets/docs/assets/js/15ba94aa.92fea363.js +1 -0
  30. solace_agent_mesh/assets/docs/assets/js/15e40e79.36003774.js +1 -0
  31. solace_agent_mesh/assets/docs/assets/js/2987107d.a80604f9.js +1 -0
  32. solace_agent_mesh/assets/docs/assets/js/3ac1795d.e4870a49.js +1 -0
  33. solace_agent_mesh/assets/docs/assets/js/3ff0015d.b63ee53a.js +1 -0
  34. solace_agent_mesh/assets/docs/assets/js/547e15cc.2f7790c1.js +1 -0
  35. solace_agent_mesh/assets/docs/assets/js/5c2bd65f.45b32c2b.js +1 -0
  36. solace_agent_mesh/assets/docs/assets/js/631738c7.fa471607.js +1 -0
  37. solace_agent_mesh/assets/docs/assets/js/64195356.c498c4d0.js +1 -0
  38. solace_agent_mesh/assets/docs/assets/js/6a520c9d.b6e3f2ce.js +1 -0
  39. solace_agent_mesh/assets/docs/assets/js/6ad8f0bd.a5b36a60.js +1 -0
  40. solace_agent_mesh/assets/docs/assets/js/71da7b71.374b9d54.js +1 -0
  41. solace_agent_mesh/assets/docs/assets/js/8024126c.fa0e7186.js +1 -0
  42. solace_agent_mesh/assets/docs/assets/js/8b032486.91a91afc.js +1 -0
  43. solace_agent_mesh/assets/docs/assets/js/94e8668d.09ed9234.js +1 -0
  44. solace_agent_mesh/assets/docs/assets/js/{ab9708a8.3e6dd091.js → ab9708a8.245ae0ef.js} +1 -1
  45. solace_agent_mesh/assets/docs/assets/js/ad87452a.9d73dad6.js +1 -0
  46. solace_agent_mesh/assets/docs/assets/js/cbe2e9ea.f902fad8.js +1 -0
  47. solace_agent_mesh/assets/docs/assets/js/da0b5bad.b62f7b08.js +1 -0
  48. solace_agent_mesh/assets/docs/assets/js/db5d6442.3daf1696.js +1 -0
  49. solace_agent_mesh/assets/docs/assets/js/dd817ffc.c37a755e.js +1 -0
  50. solace_agent_mesh/assets/docs/assets/js/dd81e2b8.b682e9c2.js +1 -0
  51. solace_agent_mesh/assets/docs/assets/js/de915948.44a432bc.js +1 -0
  52. solace_agent_mesh/assets/docs/assets/js/e04b235d.c9c50c7b.js +1 -0
  53. solace_agent_mesh/assets/docs/assets/js/e3d9abda.d11c67a7.js +1 -0
  54. solace_agent_mesh/assets/docs/assets/js/{e6f9706b.e74a984d.js → e6f9706b.045d0fa1.js} +1 -1
  55. solace_agent_mesh/assets/docs/assets/js/e92d0134.3bda61dd.js +1 -0
  56. solace_agent_mesh/assets/docs/assets/js/f284c35a.5099c51e.js +1 -0
  57. solace_agent_mesh/assets/docs/assets/js/ff4d71f2.74710fc1.js +1 -0
  58. solace_agent_mesh/assets/docs/assets/js/main.f213fe0c.js +2 -0
  59. solace_agent_mesh/assets/docs/assets/js/runtime~main.d9606d6a.js +1 -0
  60. solace_agent_mesh/assets/docs/docs/documentation/components/agents/index.html +4 -4
  61. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/artifact-management/index.html +4 -4
  62. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/audio-tools/index.html +4 -4
  63. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/data-analysis-tools/index.html +4 -4
  64. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/embeds/index.html +18 -4
  65. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/index.html +4 -4
  66. solace_agent_mesh/assets/docs/docs/documentation/components/cli/index.html +4 -4
  67. solace_agent_mesh/assets/docs/docs/documentation/components/gateways/index.html +5 -5
  68. solace_agent_mesh/assets/docs/docs/documentation/components/index.html +4 -4
  69. solace_agent_mesh/assets/docs/docs/documentation/components/orchestrator/index.html +4 -4
  70. solace_agent_mesh/assets/docs/docs/documentation/components/plugins/index.html +4 -4
  71. solace_agent_mesh/assets/docs/docs/documentation/components/projects/index.html +196 -0
  72. solace_agent_mesh/assets/docs/docs/documentation/components/proxies/index.html +4 -4
  73. solace_agent_mesh/assets/docs/docs/documentation/deploying/debugging/index.html +5 -5
  74. solace_agent_mesh/assets/docs/docs/documentation/deploying/deployment-options/index.html +6 -7
  75. solace_agent_mesh/assets/docs/docs/documentation/deploying/index.html +4 -4
  76. solace_agent_mesh/assets/docs/docs/documentation/deploying/kubernetes-deployment/index.html +47 -0
  77. solace_agent_mesh/assets/docs/docs/documentation/deploying/logging/index.html +4 -4
  78. solace_agent_mesh/assets/docs/docs/documentation/deploying/observability/index.html +4 -4
  79. solace_agent_mesh/assets/docs/docs/documentation/developing/create-agents/index.html +4 -4
  80. solace_agent_mesh/assets/docs/docs/documentation/developing/create-gateways/index.html +160 -169
  81. solace_agent_mesh/assets/docs/docs/documentation/developing/creating-python-tools/index.html +4 -4
  82. solace_agent_mesh/assets/docs/docs/documentation/developing/creating-service-providers/index.html +4 -4
  83. solace_agent_mesh/assets/docs/docs/documentation/developing/evaluations/index.html +4 -4
  84. solace_agent_mesh/assets/docs/docs/documentation/developing/index.html +4 -4
  85. solace_agent_mesh/assets/docs/docs/documentation/developing/structure/index.html +4 -4
  86. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/bedrock-agents/index.html +4 -4
  87. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/custom-agent/index.html +5 -5
  88. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/event-mesh-gateway/index.html +4 -4
  89. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/mcp-integration/index.html +4 -4
  90. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/mongodb-integration/index.html +4 -4
  91. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/rag-integration/index.html +4 -4
  92. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/rest-gateway/index.html +4 -4
  93. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/slack-integration/index.html +4 -4
  94. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/sql-database/index.html +4 -4
  95. solace_agent_mesh/assets/docs/docs/documentation/enterprise/agent-builder/index.html +59 -0
  96. solace_agent_mesh/assets/docs/docs/documentation/enterprise/connectors/index.html +62 -0
  97. solace_agent_mesh/assets/docs/docs/documentation/enterprise/index.html +10 -6
  98. solace_agent_mesh/assets/docs/docs/documentation/enterprise/installation/index.html +4 -4
  99. solace_agent_mesh/assets/docs/docs/documentation/enterprise/rbac-setup-guide/index.html +4 -4
  100. solace_agent_mesh/assets/docs/docs/documentation/enterprise/secure-user-delegated-access/index.html +440 -0
  101. solace_agent_mesh/assets/docs/docs/documentation/enterprise/single-sign-on/index.html +27 -4
  102. solace_agent_mesh/assets/docs/docs/documentation/enterprise/wheel-installation/index.html +62 -0
  103. solace_agent_mesh/assets/docs/docs/documentation/getting-started/architecture/index.html +4 -4
  104. solace_agent_mesh/assets/docs/docs/documentation/getting-started/index.html +5 -4
  105. solace_agent_mesh/assets/docs/docs/documentation/getting-started/introduction/index.html +3 -3
  106. solace_agent_mesh/assets/docs/docs/documentation/getting-started/try-agent-mesh/index.html +3 -3
  107. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/artifact-storage/index.html +290 -0
  108. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/configurations/index.html +9 -9
  109. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/index.html +4 -4
  110. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/installation/index.html +4 -4
  111. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/large_language_models/index.html +4 -4
  112. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/run-project/index.html +4 -4
  113. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/session-storage/index.html +251 -0
  114. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/user-feedback/index.html +88 -0
  115. solace_agent_mesh/assets/docs/docs/documentation/migrations/a2a-upgrade/a2a-gateway-upgrade-to-0.3.0/index.html +3 -3
  116. solace_agent_mesh/assets/docs/docs/documentation/migrations/a2a-upgrade/a2a-technical-migration-map/index.html +3 -3
  117. solace_agent_mesh/assets/docs/lunr-index-1762283454666.json +1 -0
  118. solace_agent_mesh/assets/docs/lunr-index.json +1 -1
  119. solace_agent_mesh/assets/docs/search-doc-1762283454666.json +1 -0
  120. solace_agent_mesh/assets/docs/search-doc.json +1 -1
  121. solace_agent_mesh/assets/docs/sitemap.xml +1 -1
  122. solace_agent_mesh/cli/__init__.py +1 -1
  123. solace_agent_mesh/cli/commands/docs_cmd.py +4 -1
  124. solace_agent_mesh/cli/commands/init_cmd/orchestrator_step.py +1 -1
  125. solace_agent_mesh/client/webui/frontend/static/assets/{authCallback-D4_RMYRh.js → authCallback-tcIFZLis.js} +1 -1
  126. solace_agent_mesh/client/webui/frontend/static/assets/{client-UZ3qU6Bq.js → client-CRYdKo2Q.js} +3 -3
  127. solace_agent_mesh/client/webui/frontend/static/assets/main-CojeY_1w.css +1 -0
  128. solace_agent_mesh/client/webui/frontend/static/assets/main-ILja9MCG.js +353 -0
  129. solace_agent_mesh/client/webui/frontend/static/assets/vendor-CINwxvwV.js +470 -0
  130. solace_agent_mesh/client/webui/frontend/static/auth-callback.html +3 -3
  131. solace_agent_mesh/client/webui/frontend/static/index.html +4 -4
  132. solace_agent_mesh/common/a2a/a2a_llm.txt +13 -20
  133. solace_agent_mesh/common/a2a/protocol.py +5 -0
  134. solace_agent_mesh/common/a2a/types.py +1 -0
  135. solace_agent_mesh/common/a2a_spec/a2a_spec_llm.txt +49 -11
  136. solace_agent_mesh/common/a2a_spec/schemas/artifact_creation_progress.json +23 -6
  137. solace_agent_mesh/common/a2a_spec/schemas/feedback_event.json +51 -0
  138. solace_agent_mesh/common/a2a_spec/schemas/schemas_llm.txt +26 -9
  139. solace_agent_mesh/common/common_llm.txt +13 -34
  140. solace_agent_mesh/common/data_parts.py +20 -4
  141. solace_agent_mesh/common/middleware/middleware_llm.txt +1 -1
  142. solace_agent_mesh/common/sac/sac_llm.txt +1 -1
  143. solace_agent_mesh/common/sam_events/sam_events_llm.txt +1 -1
  144. solace_agent_mesh/common/services/employee_service.py +1 -1
  145. solace_agent_mesh/common/services/providers/providers_llm.txt +3 -2
  146. solace_agent_mesh/common/services/services_llm.txt +9 -4
  147. solace_agent_mesh/common/utils/embeds/constants.py +1 -0
  148. solace_agent_mesh/common/utils/embeds/embeds_llm.txt +1 -1
  149. solace_agent_mesh/common/utils/embeds/modifiers.py +2 -1
  150. solace_agent_mesh/common/utils/embeds/resolver.py +58 -6
  151. solace_agent_mesh/common/utils/embeds/types.py +8 -0
  152. solace_agent_mesh/common/utils/utils_llm.txt +5 -6
  153. solace_agent_mesh/core_a2a/core_a2a_llm.txt +1 -1
  154. solace_agent_mesh/gateway/adapter/__init__.py +1 -0
  155. solace_agent_mesh/gateway/adapter/base.py +143 -0
  156. solace_agent_mesh/gateway/adapter/types.py +221 -0
  157. solace_agent_mesh/gateway/base/app.py +29 -2
  158. solace_agent_mesh/gateway/base/base_llm.txt +10 -8
  159. solace_agent_mesh/gateway/base/component.py +573 -142
  160. solace_agent_mesh/gateway/gateway_llm.txt +55 -59
  161. solace_agent_mesh/gateway/generic/__init__.py +1 -0
  162. solace_agent_mesh/gateway/generic/app.py +50 -0
  163. solace_agent_mesh/gateway/generic/component.py +650 -0
  164. solace_agent_mesh/gateway/http_sse/alembic/alembic_llm.txt +99 -49
  165. solace_agent_mesh/gateway/http_sse/alembic/versions/20251023_add_fulltext_search_indexes.py +92 -0
  166. solace_agent_mesh/gateway/http_sse/alembic/versions/20251023_add_project_users_table.py +72 -0
  167. solace_agent_mesh/gateway/http_sse/alembic/versions/20251023_add_soft_delete_and_search.py +150 -0
  168. solace_agent_mesh/gateway/http_sse/alembic/versions/20251024_add_default_agent_to_projects.py +26 -0
  169. solace_agent_mesh/gateway/http_sse/alembic/versions/20251024_add_projects_table.py +135 -0
  170. solace_agent_mesh/gateway/http_sse/alembic/versions/versions_llm.txt +26 -20
  171. solace_agent_mesh/gateway/http_sse/app.py +0 -14
  172. solace_agent_mesh/gateway/http_sse/component.py +17 -56
  173. solace_agent_mesh/gateway/http_sse/components/components_llm.txt +1 -1
  174. solace_agent_mesh/gateway/http_sse/dependencies.py +21 -3
  175. solace_agent_mesh/gateway/http_sse/http_sse_llm.txt +8 -8
  176. solace_agent_mesh/gateway/http_sse/main.py +23 -5
  177. solace_agent_mesh/gateway/http_sse/repository/__init__.py +19 -1
  178. solace_agent_mesh/gateway/http_sse/repository/entities/entities_llm.txt +56 -98
  179. solace_agent_mesh/gateway/http_sse/repository/entities/project.py +81 -0
  180. solace_agent_mesh/gateway/http_sse/repository/entities/project_user.py +47 -0
  181. solace_agent_mesh/gateway/http_sse/repository/entities/session.py +23 -1
  182. solace_agent_mesh/gateway/http_sse/repository/feedback_repository.py +47 -0
  183. solace_agent_mesh/gateway/http_sse/repository/interfaces.py +112 -4
  184. solace_agent_mesh/gateway/http_sse/repository/models/__init__.py +9 -1
  185. solace_agent_mesh/gateway/http_sse/repository/models/models_llm.txt +51 -60
  186. solace_agent_mesh/gateway/http_sse/repository/models/project_model.py +51 -0
  187. solace_agent_mesh/gateway/http_sse/repository/models/project_user_model.py +75 -0
  188. solace_agent_mesh/gateway/http_sse/repository/models/session_model.py +7 -1
  189. solace_agent_mesh/gateway/http_sse/repository/project_repository.py +172 -0
  190. solace_agent_mesh/gateway/http_sse/repository/project_user_repository.py +186 -0
  191. solace_agent_mesh/gateway/http_sse/repository/repository_llm.txt +125 -157
  192. solace_agent_mesh/gateway/http_sse/repository/session_repository.py +269 -8
  193. solace_agent_mesh/gateway/http_sse/routers/artifacts.py +143 -51
  194. solace_agent_mesh/gateway/http_sse/routers/config.py +69 -0
  195. solace_agent_mesh/gateway/http_sse/routers/dto/dto_llm.txt +198 -94
  196. solace_agent_mesh/gateway/http_sse/routers/dto/requests/project_requests.py +48 -0
  197. solace_agent_mesh/gateway/http_sse/routers/dto/requests/requests_llm.txt +68 -18
  198. solace_agent_mesh/gateway/http_sse/routers/dto/requests/session_requests.py +13 -0
  199. solace_agent_mesh/gateway/http_sse/routers/dto/responses/project_responses.py +30 -0
  200. solace_agent_mesh/gateway/http_sse/routers/dto/responses/responses_llm.txt +51 -35
  201. solace_agent_mesh/gateway/http_sse/routers/dto/responses/session_responses.py +2 -0
  202. solace_agent_mesh/gateway/http_sse/routers/feedback.py +133 -2
  203. solace_agent_mesh/gateway/http_sse/routers/projects.py +542 -0
  204. solace_agent_mesh/gateway/http_sse/routers/routers_llm.txt +9 -11
  205. solace_agent_mesh/gateway/http_sse/routers/sessions.py +154 -3
  206. solace_agent_mesh/gateway/http_sse/routers/tasks.py +296 -4
  207. solace_agent_mesh/gateway/http_sse/services/project_service.py +403 -0
  208. solace_agent_mesh/gateway/http_sse/services/services_llm.txt +16 -10
  209. solace_agent_mesh/gateway/http_sse/services/session_service.py +178 -6
  210. solace_agent_mesh/gateway/http_sse/shared/exception_handlers.py +2 -3
  211. solace_agent_mesh/gateway/http_sse/shared/shared_llm.txt +48 -14
  212. solace_agent_mesh/solace_agent_mesh_llm.txt +1 -1
  213. {solace_agent_mesh-1.6.3.dist-info → solace_agent_mesh-1.7.1.dist-info}/METADATA +3 -5
  214. {solace_agent_mesh-1.6.3.dist-info → solace_agent_mesh-1.7.1.dist-info}/RECORD +218 -175
  215. solace_agent_mesh/assets/docs/assets/js/15ba94aa.932dd2db.js +0 -1
  216. solace_agent_mesh/assets/docs/assets/js/3ac1795d.76654dd9.js +0 -1
  217. solace_agent_mesh/assets/docs/assets/js/3ff0015d.2be20244.js +0 -1
  218. solace_agent_mesh/assets/docs/assets/js/547e15cc.2cbb060a.js +0 -1
  219. solace_agent_mesh/assets/docs/assets/js/5c2bd65f.eda4bcb2.js +0 -1
  220. solace_agent_mesh/assets/docs/assets/js/631738c7.7c4594c9.js +0 -1
  221. solace_agent_mesh/assets/docs/assets/js/6a520c9d.ba015d81.js +0 -1
  222. solace_agent_mesh/assets/docs/assets/js/6ad8f0bd.f4b15f3b.js +0 -1
  223. solace_agent_mesh/assets/docs/assets/js/71da7b71.ddbdfbe2.js +0 -1
  224. solace_agent_mesh/assets/docs/assets/js/8024126c.56e59919.js +0 -1
  225. solace_agent_mesh/assets/docs/assets/js/94e8668d.3b883666.js +0 -1
  226. solace_agent_mesh/assets/docs/assets/js/da0b5bad.d08a9466.js +0 -1
  227. solace_agent_mesh/assets/docs/assets/js/dd817ffc.0aa9630a.js +0 -1
  228. solace_agent_mesh/assets/docs/assets/js/dd81e2b8.d590bc9e.js +0 -1
  229. solace_agent_mesh/assets/docs/assets/js/de915948.27d6b065.js +0 -1
  230. solace_agent_mesh/assets/docs/assets/js/e3d9abda.6b9493d0.js +0 -1
  231. solace_agent_mesh/assets/docs/assets/js/e92d0134.4f395c6b.js +0 -1
  232. solace_agent_mesh/assets/docs/assets/js/f284c35a.720d2ef2.js +0 -1
  233. solace_agent_mesh/assets/docs/assets/js/ff4d71f2.15b02f97.js +0 -1
  234. solace_agent_mesh/assets/docs/assets/js/main.ed05b14d.js +0 -2
  235. solace_agent_mesh/assets/docs/assets/js/runtime~main.a8a75e0b.js +0 -1
  236. solace_agent_mesh/assets/docs/lunr-index-1761744323675.json +0 -1
  237. solace_agent_mesh/assets/docs/search-doc-1761744323675.json +0 -1
  238. solace_agent_mesh/client/webui/frontend/static/assets/main--3yJYl7S.css +0 -1
  239. solace_agent_mesh/client/webui/frontend/static/assets/main-DojKHS49.js +0 -342
  240. solace_agent_mesh/client/webui/frontend/static/assets/vendor-DSqhjwq_.js +0 -405
  241. /solace_agent_mesh/assets/docs/assets/js/{main.ed05b14d.js.LICENSE.txt → main.f213fe0c.js.LICENSE.txt} +0 -0
  242. {solace_agent_mesh-1.6.3.dist-info → solace_agent_mesh-1.7.1.dist-info}/WHEEL +0 -0
  243. {solace_agent_mesh-1.6.3.dist-info → solace_agent_mesh-1.7.1.dist-info}/entry_points.txt +0 -0
  244. {solace_agent_mesh-1.6.3.dist-info → solace_agent_mesh-1.7.1.dist-info}/licenses/LICENSE +0 -0
@@ -10,6 +10,7 @@ The architecture is modular, consisting of several key components:
10
10
  - **`protocol/`:** The underlying implementation of the A2A (Agent-to-Agent) communication protocol, handling message routing and event processing.
11
11
  - **`utils/`:** A collection of helper modules for common tasks like artifact management, configuration parsing, and context handling.
12
12
  - **`testing/`:** Utilities to aid in debugging and testing custom agent implementations.
13
+ - **`proxies/`:** Framework for creating proxy applications that enable communication with downstream agents using various protocols.
13
14
 
14
15
  These components work together to create a robust environment where an ADK agent can be configured with specific instructions and tools, communicate with other agents, and execute complex tasks in a distributed, event-driven manner.
15
16
 
@@ -17,9 +18,11 @@ These components work together to create a robust environment where an ADK agent
17
18
  - **Direct files:**
18
19
  - `__init__.py`: Standard Python package initializer that marks the `agent` directory as a Python package
19
20
  - `agent_llm.txt`: Documentation file containing comprehensive developer guide content
21
+ - `agent_llm_detail.txt`: Concatenated documentation file from all subdirectories
20
22
  - **Subdirectories:**
21
23
  - `adk/`: Provides the core integration layer with Google's ADK, including custom agents, services, and callbacks
22
24
  - `protocol/`: Implements the A2A protocol event handlers for message routing and agent communication
25
+ - `proxies/`: Framework for creating proxy applications that bridge different agent protocols
23
26
  - `sac/`: Contains the Solace AI Connector app and component implementations for hosting ADK agents
24
27
  - `testing/`: Provides utilities for testing the A2A framework and debugging agent behavior
25
28
  - `tools/`: A comprehensive, registry-based tool library for AI agents
@@ -41,16 +44,23 @@ These components work together to create a robust environment where an ADK agent
41
44
 
42
45
  **Classes/Functions/Constants:** [None - documentation file]
43
46
 
47
+ #### agent_llm_detail.txt
48
+ **Purpose:** Concatenated documentation file from all subdirectories
49
+ **Import:** Not applicable - this is a documentation file, not a code module
50
+
51
+ **Classes/Functions/Constants:** [None - documentation file]
52
+
44
53
  ### Subdirectory APIs
45
54
 
46
55
  #### adk/
47
56
  **Purpose:** Provides the core integration layer between the Solace AI Connector and Google's ADK
48
- **Key Exports:** `AppLlmAgent`, `initialize_adk_agent`, `initialize_adk_runner`, `load_adk_tools`, `FilesystemArtifactService`, `LiteLlm`
57
+ **Key Exports:** `AppLlmAgent`, `initialize_adk_agent`, `initialize_adk_runner`, `load_adk_tools`, `FilesystemArtifactService`, `S3ArtifactService`, `LiteLlm`
49
58
  **Import Examples:**
50
59
  ```python
51
60
  from solace_agent_mesh.agent.adk.setup import load_adk_tools, initialize_adk_agent, initialize_adk_runner
52
61
  from solace_agent_mesh.agent.adk.app_llm_agent import AppLlmAgent
53
- from solace_agent_mesh.agent.adk.filesystem_artifact_service import FilesystemArtifactService
62
+ from solace_agent_mesh.agent.adk.artifacts.filesystem_artifact_service import FilesystemArtifactService
63
+ from solace_agent_mesh.agent.adk.artifacts.s3_artifact_service import S3ArtifactService
54
64
  from solace_agent_mesh.agent.adk.models.lite_llm import LiteLlm
55
65
  from solace_agent_mesh.agent.adk.services import initialize_session_service, initialize_artifact_service
56
66
  ```
@@ -63,6 +73,18 @@ from solace_agent_mesh.agent.adk.services import initialize_session_service, ini
63
73
  from solace_agent_mesh.agent.protocol.event_handlers import process_event, publish_agent_card
64
74
  ```
65
75
 
76
+ #### proxies/
77
+ **Purpose:** Framework for creating proxy applications that enable communication with downstream agents using various protocols
78
+ **Key Exports:** `BaseProxyApp`, `BaseProxyComponent`, `A2AProxyApp`, `A2AProxyComponent`, `OAuth2TokenCache`
79
+ **Import Examples:**
80
+ ```python
81
+ from solace_agent_mesh.agent.proxies.base.app import BaseProxyApp
82
+ from solace_agent_mesh.agent.proxies.base.component import BaseProxyComponent
83
+ from solace_agent_mesh.agent.proxies.a2a.app import A2AProxyApp
84
+ from solace_agent_mesh.agent.proxies.a2a.component import A2AProxyComponent
85
+ from solace_agent_mesh.agent.proxies.a2a.oauth_token_cache import OAuth2TokenCache
86
+ ```
87
+
66
88
  #### sac/
67
89
  **Purpose:** Provides the Solace AI Connector app and component implementations for hosting ADK agents
68
90
  **Key Exports:** `SamAgentApp`, `SamAgentComponent`, `TaskExecutionContext`
@@ -90,6 +112,7 @@ from solace_agent_mesh.agent.tools.registry import tool_registry
90
112
  from solace_agent_mesh.agent.tools.peer_agent_tool import PeerAgentTool
91
113
  from solace_agent_mesh.agent.tools.audio_tools import text_to_speech
92
114
  from solace_agent_mesh.agent.tools.builtin_artifact_tools import list_artifacts, load_artifact
115
+ from solace_agent_mesh.agent.tools.image_tools import create_image_from_description
93
116
  ```
94
117
 
95
118
  #### utils/
@@ -290,7 +313,40 @@ async def multimedia_example(tool_context):
290
313
  return tts_result, conversation_result, image_result
291
314
  ```
292
315
 
293
- ### 7. Testing and Debugging
316
+ ### 7. Proxy Applications for External Agents
317
+
318
+ ```python
319
+ from solace_agent_mesh.agent.proxies.a2a.app import A2AProxyApp
320
+
321
+ # Configure proxy for external A2A-over-HTTPS agents
322
+ proxy_config = {
323
+ "app_config": {
324
+ "namespace": "myorg/production",
325
+ "proxied_agents": [
326
+ {
327
+ "name": "external-agent",
328
+ "url": "https://external-agent.example.com",
329
+ "authentication": {
330
+ "type": "oauth2_client_credentials",
331
+ "token_url": "https://auth.example.com/oauth/token",
332
+ "client_id": "my-client-id",
333
+ "client_secret": "my-client-secret"
334
+ }
335
+ }
336
+ ],
337
+ "artifact_service": {
338
+ "type": "gcs",
339
+ "bucket_name": "my-artifacts-bucket"
340
+ }
341
+ }
342
+ }
343
+
344
+ # Create and run the proxy
345
+ proxy_app = A2AProxyApp(proxy_config)
346
+ # Proxy automatically handles discovery and request forwarding
347
+ ```
348
+
349
+ ### 8. Testing and Debugging
294
350
 
295
351
  ```python
296
352
  from solace_agent_mesh.agent.testing.debug_utils import pretty_print_event_history
@@ -308,71 +364,6 @@ def test_agent_behavior():
308
364
 
309
365
  # Monitor agent invocations
310
366
  monitor = InvocationMonitor()
311
- monitor.log_message_event("incoming", "agent/request", {"task": "analyze data"})
312
- ```
313
-
314
- ### 8. Configuration and Context Handling
315
-
316
- ```python
317
- from solace_agent_mesh.agent.utils.config_parser import resolve_instruction_provider
318
- from solace_agent_mesh.agent.utils.context_helpers import get_session_from_callback_context
319
-
320
- # Resolve dynamic instructions
321
- def setup_agent_instructions(component):
322
- # Static instruction
323
- static_instruction = resolve_instruction_provider(
324
- component,
325
- "You are a helpful customer service agent."
326
- )
327
-
328
- # Dynamic instruction function
329
- def dynamic_instruction(context):
330
- return f"You are assisting user {context.user_id} in session {context.session_id}"
331
-
332
- dynamic_provider = resolve_instruction_provider(component, dynamic_instruction)
333
-
334
- return static_instruction, dynamic_provider
335
-
336
- # Safe context extraction in tools
337
- def my_tool_with_context(tool_context):
338
- session = get_session_from_callback_context(tool_context)
339
- original_session_id = get_original_session_id(tool_context._invocation_context)
340
-
341
- return {"session_id": original_session_id, "session_data": session}
342
- ```
343
-
344
- ### 9. Complete Agent Implementation Example
345
-
346
- ```python
347
- from solace_agent_mesh.agent.sac.app import SamAgentApp
348
- from solace_agent_mesh.agent.sac.component import SamAgentComponent
349
- from solace_agent_mesh.agent.adk.setup import load_adk_tools, initialize_adk_agent, initialize_adk_runner
350
- from solace_agent_mesh.agent.tools.registry import tool_registry
351
- from solace_agent_mesh.agent.tools.tool_definition import BuiltinTool
352
-
353
- # Custom initialization function
354
- def initialize_my_agent(host_component: SamAgentComponent, config: dict):
355
- """Custom initialization function for the agent."""
356
- # Store custom state
357
- host_component.set_agent_specific_state('custom_data', config.get('custom_data'))
358
-
359
- # Set dynamic system instruction
360
- def dynamic_instruction(context):
361
- return f"You are a specialized agent for user {context.user_id}"
362
-
363
- host_component.set_agent_system_instruction_callback(dynamic_instruction)
364
-
365
- # Custom tool
366
- async def my_business_tool(
367
- query: str,
368
- tool_context = None,
369
- tool_config: dict = None
370
- ) -> dict:
371
- """Custom business logic tool."""
372
- host_component = tool_context._invocation_context.agent.host_component
373
- custom_data = host_component.get_agent_specific_state('custom_data')
374
-
375
- # Process business logic
376
- result =
367
+ monitor.log_message_event("
377
368
 
378
- # content_hash: 596f8253b415eaca3335f7660837dee9a090b3cab0b6e0a4daf92ca9a16d0123
369
+ # content_hash: 044545e92d39d61fac8f9bf62598018a7cbee362201bc3a6f0ae74b299fa4374
@@ -27,7 +27,7 @@ from solace_ai_connector.common.event import Event, EventType
27
27
  from solace_ai_connector.common.message import Message as SolaceMessage
28
28
 
29
29
  from ...agent.adk.callbacks import _publish_data_part_status_update
30
- from ...agent.adk.runner import run_adk_async_task_thread_wrapper
30
+ from ...agent.adk.runner import TaskCancelledError, run_adk_async_task_thread_wrapper
31
31
  from ...agent.utils.artifact_helpers import generate_artifact_metadata_summary
32
32
  from ...common import a2a
33
33
  from ...common.a2a import (
@@ -489,6 +489,34 @@ async def handle_a2a_request(component, message: SolaceMessage):
489
489
  logical_task_id,
490
490
  sub_task_info,
491
491
  )
492
+ else:
493
+ # No peer sub-tasks - check if task is paused and needs immediate finalization
494
+ if task_context.get_is_paused():
495
+ log.info(
496
+ "%s Task %s is paused with no peer sub-tasks. Scheduling immediate finalization.",
497
+ component.log_identifier,
498
+ logical_task_id,
499
+ )
500
+ loop = component.get_async_loop()
501
+ if loop and loop.is_running():
502
+ task_context.set_paused(False)
503
+
504
+ asyncio.run_coroutine_threadsafe(
505
+ component.finalize_task_with_cleanup(
506
+ task_context.a2a_context,
507
+ is_paused=False,
508
+ exception=TaskCancelledError(
509
+ f"Task {logical_task_id} cancelled while paused."
510
+ )
511
+ ),
512
+ loop,
513
+ )
514
+ else:
515
+ log.error(
516
+ "%s Cannot finalize cancelled paused task %s - event loop not available.",
517
+ component.log_identifier,
518
+ logical_task_id,
519
+ )
492
520
  else:
493
521
  log.info(
494
522
  "%s No active task found for cancellation (ID: %s) or task already completed. Ignoring signal.",
@@ -78,4 +78,4 @@ await cleanup_agent_session(component, "session_123", "user_456")
78
78
  - Integrates with Google ADK for task execution
79
79
  - Manages task contexts through `TaskExecutionContext`
80
80
 
81
- # content_hash: 4b8a426320c6f06c621b469c79087c315f5590ef14497ccf17de02eeb66db91d
81
+ # content_hash: 02e6f51922fe92594201d9e7a07ae8469cad977a13297c53db5a75534ca1e9f7
@@ -0,0 +1,190 @@
1
+ # DEVELOPER GUIDE: a2a
2
+
3
+ ## Quick Summary
4
+ The `a2a` directory provides a concrete implementation for proxying standard A2A-over-HTTPS agents. It enables the Solace Agent Mesh to communicate with downstream agents that implement the A2A (Agent-to-Agent) protocol over HTTP/HTTPS, handling authentication, request forwarding, and response processing.
5
+
6
+ ## Files Overview
7
+ - `__init__.py` - Package initialization for A2A-over-HTTPS proxy implementation
8
+ - `app.py` - Main application class that validates A2A-specific configuration
9
+ - `component.py` - Core proxy component that handles A2A protocol communication and request forwarding
10
+ - `config.py` - Pydantic configuration models for A2A proxy settings and authentication
11
+ - `oauth_token_cache.py` - OAuth 2.0 token caching system with automatic expiration
12
+
13
+ ## Developer API Reference
14
+
15
+ ### app.py
16
+ **Purpose:** Provides the main application class for A2A proxy with configuration validation
17
+ **Import:** `from solace_agent_mesh.agent.proxies.a2a.app import A2AProxyApp`
18
+
19
+ **Classes:**
20
+ - `A2AProxyApp(app_info: Dict[str, Any], **kwargs)` - Main A2A proxy application class
21
+ - Inherits from `BaseProxyApp` and adds A2A-specific configuration validation
22
+ - Validates authentication settings, URLs, and other A2A-specific parameters
23
+
24
+ **Usage Examples:**
25
+ ```python
26
+ from solace_agent_mesh.agent.proxies.a2a.app import A2AProxyApp
27
+
28
+ # Create A2A proxy app with configuration
29
+ app_info = {
30
+ "app_config": {
31
+ "proxied_agents": [
32
+ {
33
+ "name": "my-agent",
34
+ "url": "https://agent.example.com",
35
+ "authentication": {
36
+ "type": "oauth2_client_credentials",
37
+ "token_url": "https://auth.example.com/token",
38
+ "client_id": "my-client-id",
39
+ "client_secret": "my-secret"
40
+ }
41
+ }
42
+ ]
43
+ }
44
+ }
45
+
46
+ app = A2AProxyApp(app_info)
47
+ ```
48
+
49
+ ### component.py
50
+ **Purpose:** Core component that handles A2A protocol communication, authentication, and request forwarding
51
+ **Import:** `from solace_agent_mesh.agent.proxies.a2a.component import A2AProxyComponent`
52
+
53
+ **Classes:**
54
+ - `A2AProxyComponent(**kwargs: Any)` - Main proxy component for A2A-over-HTTPS agents
55
+ - `clear_client_cache() -> None` - Clears all cached A2A clients and OAuth tokens
56
+ - `cleanup() -> None` - Cleans up resources on component shutdown
57
+
58
+ **Usage Examples:**
59
+ ```python
60
+ from solace_agent_mesh.agent.proxies.a2a.component import A2AProxyComponent
61
+
62
+ # Create component (typically done by the framework)
63
+ component = A2AProxyComponent(
64
+ proxied_agents_config=[
65
+ {
66
+ "name": "my-agent",
67
+ "url": "https://agent.example.com",
68
+ "authentication": {
69
+ "type": "static_bearer",
70
+ "token": "my-bearer-token"
71
+ }
72
+ }
73
+ ]
74
+ )
75
+
76
+ # Clear cache if needed (useful for testing)
77
+ component.clear_client_cache()
78
+
79
+ # Cleanup when shutting down
80
+ component.cleanup()
81
+ ```
82
+
83
+ ### config.py
84
+ **Purpose:** Pydantic configuration models for A2A proxy settings and authentication validation
85
+ **Import:** `from solace_agent_mesh.agent.proxies.a2a.config import A2AProxyAppConfig, AuthenticationConfig, A2AProxiedAgentConfig`
86
+
87
+ **Classes:**
88
+ - `AuthenticationConfig()` - Authentication configuration for downstream A2A agents
89
+ - `type: Optional[Literal["static_bearer", "static_apikey", "oauth2_client_credentials"]]` - Authentication type
90
+ - `token: Optional[str]` - Authentication token (for static types)
91
+ - `token_url: Optional[str]` - OAuth 2.0 token endpoint URL
92
+ - `client_id: Optional[str]` - OAuth 2.0 client identifier
93
+ - `client_secret: Optional[str]` - OAuth 2.0 client secret
94
+ - `scope: Optional[str]` - OAuth 2.0 scope string
95
+ - `token_cache_duration_seconds: int` - Token cache duration (default: 3300)
96
+
97
+ - `A2AProxiedAgentConfig()` - Configuration for a single A2A agent
98
+ - `url: str` - Base URL of the downstream A2A agent
99
+ - `authentication: Optional[AuthenticationConfig]` - Authentication details
100
+
101
+ - `A2AProxyAppConfig()` - Complete configuration for A2A proxy application
102
+ - `proxied_agents: List[A2AProxiedAgentConfig]` - List of agents to proxy
103
+
104
+ **Usage Examples:**
105
+ ```python
106
+ from solace_agent_mesh.agent.proxies.a2a.config import (
107
+ A2AProxyAppConfig,
108
+ A2AProxiedAgentConfig,
109
+ AuthenticationConfig
110
+ )
111
+
112
+ # OAuth 2.0 authentication
113
+ oauth_auth = AuthenticationConfig(
114
+ type="oauth2_client_credentials",
115
+ token_url="https://auth.example.com/token",
116
+ client_id="my-client-id",
117
+ client_secret="my-secret",
118
+ scope="agent:read agent:write",
119
+ token_cache_duration_seconds=3300
120
+ )
121
+
122
+ # Static bearer token authentication
123
+ bearer_auth = AuthenticationConfig(
124
+ type="static_bearer",
125
+ token="my-bearer-token"
126
+ )
127
+
128
+ # Agent configuration
129
+ agent_config = A2AProxiedAgentConfig(
130
+ name="my-agent",
131
+ url="https://agent.example.com",
132
+ authentication=oauth_auth
133
+ )
134
+
135
+ # Complete app configuration
136
+ app_config = A2AProxyAppConfig(
137
+ proxied_agents=[agent_config]
138
+ )
139
+
140
+ # Validate configuration
141
+ validated_config = A2AProxyAppConfig.model_validate({
142
+ "proxied_agents": [
143
+ {
144
+ "name": "test-agent",
145
+ "url": "https://agent.example.com",
146
+ "authentication": {
147
+ "type": "static_bearer",
148
+ "token": "abc123"
149
+ }
150
+ }
151
+ ]
152
+ })
153
+ ```
154
+
155
+ ### oauth_token_cache.py
156
+ **Purpose:** Thread-safe OAuth 2.0 token caching with automatic expiration
157
+ **Import:** `from solace_agent_mesh.agent.proxies.a2a.oauth_token_cache import OAuth2TokenCache, CachedToken`
158
+
159
+ **Classes:**
160
+ - `CachedToken(access_token: str, expires_at: float)` - Represents a cached token with expiration
161
+ - `access_token: str` - The OAuth 2.0 access token
162
+ - `expires_at: float` - Unix timestamp when token expires
163
+
164
+ - `OAuth2TokenCache()` - Thread-safe in-memory cache for OAuth tokens
165
+ - `get(agent_name: str) -> Optional[str]` - Retrieves cached token if valid
166
+ - `set(agent_name: str, access_token: str, cache_duration_seconds: int) -> None` - Caches token with expiration
167
+ - `invalidate(agent_name: str) -> None` - Removes token from cache
168
+
169
+ **Usage Examples:**
170
+ ```python
171
+ from solace_agent_mesh.agent.proxies.a2a.oauth_token_cache import OAuth2TokenCache
172
+
173
+ # Create token cache
174
+ cache = OAuth2TokenCache()
175
+
176
+ # Cache a token for 1 hour
177
+ await cache.set("my-agent", "access_token_123", 3600)
178
+
179
+ # Retrieve cached token
180
+ token = await cache.get("my-agent")
181
+ if token:
182
+ print(f"Using cached token: {token}")
183
+ else:
184
+ print("No valid cached token found")
185
+
186
+ # Invalidate cached token
187
+ await cache.invalidate("my-agent")
188
+ ```
189
+
190
+ # content_hash: 7bb671773b0ece239704f18e12a92ac5dc3f97dd0ebb154ac56f53e0d277a1b7
@@ -0,0 +1,148 @@
1
+ # DEVELOPER GUIDE: base
2
+
3
+ ## Quick Summary
4
+ The `base` directory contains protocol-agnostic abstract base classes for implementing proxy applications in the Solace Agent Mesh. These classes handle common functionality like A2A message routing, agent discovery, task lifecycle management, and artifact resolution, allowing concrete proxy implementations to focus on protocol-specific details.
5
+
6
+ ## Files Overview
7
+ - `__init__.py` - Package initialization for base proxy classes
8
+ - `app.py` - Abstract base class for proxy applications with configuration validation and component setup
9
+ - `component.py` - Abstract base class for proxy components handling Solace interaction and task management
10
+ - `config.py` - Pydantic configuration models for proxy applications
11
+ - `proxy_task_context.py` - Runtime state container for individual proxied agent tasks
12
+
13
+ ## Developer API Reference
14
+
15
+ ### __init__.py
16
+ **Purpose:** Package initialization file for base proxy classes
17
+ **Import:** `from solace_agent_mesh.agent.proxies.base import *`
18
+
19
+ This file contains only package documentation and no public API.
20
+
21
+ ### app.py
22
+ **Purpose:** Abstract base class for proxy applications that handles configuration validation and automatic component setup
23
+ **Import:** `from solace_agent_mesh.agent.proxies.base.app import BaseProxyApp`
24
+
25
+ **Classes:**
26
+ - `BaseProxyApp(app_info: Dict[str, Any], **kwargs)` - Abstract base for proxy apps that automatically configures subscriptions and components
27
+ - `_get_component_class() -> Type[BaseProxyComponent]` - Abstract method to return the specific proxy component class
28
+
29
+ **Usage Examples:**
30
+ ```python
31
+ from solace_agent_mesh.agent.proxies.base.app import BaseProxyApp
32
+ from solace_agent_mesh.agent.proxies.base.component import BaseProxyComponent
33
+
34
+ class MyProxyApp(BaseProxyApp):
35
+ def _get_component_class(self):
36
+ return MyProxyComponent
37
+
38
+ # App will automatically:
39
+ # - Validate configuration against BaseProxyAppConfig
40
+ # - Generate Solace subscriptions for all proxied agents
41
+ # - Create component instance with proper broker settings
42
+ ```
43
+
44
+ ### component.py
45
+ **Purpose:** Abstract base class for proxy components that handles Solace interaction, discovery, and task lifecycle
46
+ **Import:** `from solace_agent_mesh.agent.proxies.base.component import BaseProxyComponent`
47
+
48
+ **Classes:**
49
+ - `BaseProxyComponent(**kwargs: Any)` - Abstract base for proxy components with async event processing
50
+ - `process_event(event: Event) -> None` - Processes incoming Solace events
51
+ - `invoke(message: SolaceMessage, data: dict) -> dict` - Placeholder invoke method (not used)
52
+ - `run() -> None` - Starts component operations and discovery timers
53
+ - `cleanup() -> None` - Cleans up resources on shutdown
54
+ - `clear_client_cache() -> None` - Clears cached clients (override in subclasses)
55
+ - `_fetch_agent_card(agent_config: dict) -> Optional[AgentCard]` - Abstract method to fetch agent cards
56
+ - `_forward_request(task_context: ProxyTaskContext, request: A2ARequest, agent_name: str) -> None` - Abstract method to forward requests
57
+
58
+ **Usage Examples:**
59
+ ```python
60
+ from solace_agent_mesh.agent.proxies.base.component import BaseProxyComponent
61
+ from a2a.types import AgentCard, A2ARequest
62
+
63
+ class MyProxyComponent(BaseProxyComponent):
64
+ async def _fetch_agent_card(self, agent_config: dict) -> Optional[AgentCard]:
65
+ # Implement protocol-specific agent discovery
66
+ url = agent_config.get("url")
67
+ # ... fetch and return AgentCard
68
+
69
+ async def _forward_request(self, task_context, request: A2ARequest, agent_name: str):
70
+ # Implement protocol-specific request forwarding
71
+ # ... forward request to downstream agent
72
+ # ... handle responses and publish back to Solace
73
+ ```
74
+
75
+ ### config.py
76
+ **Purpose:** Pydantic configuration models for proxy applications
77
+ **Import:** `from solace_agent_mesh.agent.proxies.base.config import BaseProxyAppConfig, ProxiedAgentConfig, ArtifactServiceConfig`
78
+
79
+ **Classes:**
80
+ - `ArtifactServiceConfig()` - Configuration for artifact service
81
+ - `type: str` - Service type ('memory', 'gcs', 'filesystem')
82
+ - `base_path: Optional[str]` - Base directory for filesystem type
83
+ - `bucket_name: Optional[str]` - GCS bucket name
84
+ - `artifact_scope: Literal["namespace", "app", "custom"]` - Scope for artifacts
85
+ - `artifact_scope_value: Optional[str]` - Custom scope identifier
86
+
87
+ - `ProxiedAgentConfig()` - Configuration for individual proxied agents
88
+ - `name: str` - Agent name on Solace mesh
89
+ - `request_timeout_seconds: Optional[int]` - Timeout override for this agent
90
+
91
+ - `BaseProxyAppConfig()` - Base configuration for proxy applications
92
+ - `namespace: str` - Topic prefix for A2A communication
93
+ - `proxied_agents: List[ProxiedAgentConfig]` - List of agents to proxy
94
+ - `artifact_service: ArtifactServiceConfig` - Artifact service configuration
95
+ - `discovery_interval_seconds: int` - Agent discovery interval (default: 60)
96
+ - `default_request_timeout_seconds: int` - Default request timeout (default: 300)
97
+
98
+ **Usage Examples:**
99
+ ```python
100
+ from solace_agent_mesh.agent.proxies.base.config import BaseProxyAppConfig
101
+
102
+ # Configuration validation
103
+ config_dict = {
104
+ "namespace": "myorg/dev",
105
+ "proxied_agents": [
106
+ {"name": "my-agent", "request_timeout_seconds": 120}
107
+ ],
108
+ "artifact_service": {"type": "memory"},
109
+ "discovery_interval_seconds": 30
110
+ }
111
+
112
+ config = BaseProxyAppConfig.model_validate(config_dict)
113
+ ```
114
+
115
+ ### proxy_task_context.py
116
+ **Purpose:** Runtime state container for individual proxied agent tasks
117
+ **Import:** `from solace_agent_mesh.agent.proxies.base.proxy_task_context import ProxyTaskContext`
118
+
119
+ **Classes:**
120
+ - `ProxyTaskContext(task_id: str, a2a_context: Dict[str, Any])` - Runtime state for a proxied task
121
+ - `task_id: str` - Unique identifier for the task
122
+ - `a2a_context: Dict[str, Any]` - A2A protocol context information
123
+
124
+ **Usage Examples:**
125
+ ```python
126
+ from solace_agent_mesh.agent.proxies.base.proxy_task_context import ProxyTaskContext
127
+
128
+ # Create task context when handling new request
129
+ a2a_context = {
130
+ "jsonrpc_request_id": "req-123",
131
+ "logical_task_id": "task-456",
132
+ "session_id": "session-789",
133
+ "user_id": "user123",
134
+ "status_topic": "status/topic",
135
+ "reply_to_topic": "reply/topic",
136
+ "is_streaming": False
137
+ }
138
+
139
+ task_context = ProxyTaskContext(
140
+ task_id="task-456",
141
+ a2a_context=a2a_context
142
+ )
143
+
144
+ # Store in active tasks for lifecycle management
145
+ self.active_tasks[task_context.task_id] = task_context
146
+ ```
147
+
148
+ # content_hash: 40cb6427440b8b946d69d0d721d47ca5994dd19621e6e631544e8e39b7a96624