solace-agent-mesh 1.6.1__py3-none-any.whl → 1.13.2__py3-none-any.whl

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

Potentially problematic release.


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

Files changed (481) hide show
  1. solace_agent_mesh/agent/adk/alembic/README +74 -0
  2. solace_agent_mesh/agent/adk/alembic/env.py +77 -0
  3. solace_agent_mesh/agent/adk/alembic/script.py.mako +28 -0
  4. solace_agent_mesh/agent/adk/alembic/versions/e2902798564d_adk_session_db_upgrade.py +52 -0
  5. solace_agent_mesh/agent/adk/alembic.ini +112 -0
  6. solace_agent_mesh/agent/adk/app_llm_agent.py +26 -0
  7. solace_agent_mesh/agent/adk/artifacts/filesystem_artifact_service.py +165 -1
  8. solace_agent_mesh/agent/adk/artifacts/s3_artifact_service.py +163 -0
  9. solace_agent_mesh/agent/adk/callbacks.py +852 -109
  10. solace_agent_mesh/agent/adk/embed_resolving_mcp_toolset.py +234 -36
  11. solace_agent_mesh/agent/adk/intelligent_mcp_callbacks.py +52 -5
  12. solace_agent_mesh/agent/adk/mcp_content_processor.py +1 -1
  13. solace_agent_mesh/agent/adk/models/lite_llm.py +77 -21
  14. solace_agent_mesh/agent/adk/models/oauth2_token_manager.py +24 -137
  15. solace_agent_mesh/agent/adk/runner.py +85 -20
  16. solace_agent_mesh/agent/adk/schema_migration.py +88 -0
  17. solace_agent_mesh/agent/adk/services.py +94 -18
  18. solace_agent_mesh/agent/adk/setup.py +281 -65
  19. solace_agent_mesh/agent/adk/stream_parser.py +231 -37
  20. solace_agent_mesh/agent/adk/tool_wrapper.py +3 -0
  21. solace_agent_mesh/agent/protocol/event_handlers.py +472 -137
  22. solace_agent_mesh/agent/proxies/a2a/app.py +3 -2
  23. solace_agent_mesh/agent/proxies/a2a/component.py +572 -75
  24. solace_agent_mesh/agent/proxies/a2a/config.py +80 -4
  25. solace_agent_mesh/agent/proxies/base/app.py +3 -2
  26. solace_agent_mesh/agent/proxies/base/component.py +188 -22
  27. solace_agent_mesh/agent/proxies/base/proxy_task_context.py +3 -1
  28. solace_agent_mesh/agent/sac/app.py +91 -3
  29. solace_agent_mesh/agent/sac/component.py +591 -157
  30. solace_agent_mesh/agent/sac/patch_adk.py +8 -16
  31. solace_agent_mesh/agent/sac/task_execution_context.py +146 -4
  32. solace_agent_mesh/agent/tools/__init__.py +3 -0
  33. solace_agent_mesh/agent/tools/audio_tools.py +3 -3
  34. solace_agent_mesh/agent/tools/builtin_artifact_tools.py +710 -171
  35. solace_agent_mesh/agent/tools/deep_research_tools.py +2161 -0
  36. solace_agent_mesh/agent/tools/dynamic_tool.py +2 -0
  37. solace_agent_mesh/agent/tools/peer_agent_tool.py +82 -15
  38. solace_agent_mesh/agent/tools/time_tools.py +126 -0
  39. solace_agent_mesh/agent/tools/tool_config_types.py +57 -2
  40. solace_agent_mesh/agent/tools/web_search_tools.py +279 -0
  41. solace_agent_mesh/agent/tools/web_tools.py +125 -17
  42. solace_agent_mesh/agent/utils/artifact_helpers.py +248 -6
  43. solace_agent_mesh/agent/utils/context_helpers.py +17 -0
  44. solace_agent_mesh/assets/docs/404.html +6 -6
  45. solace_agent_mesh/assets/docs/assets/css/{styles.906a1503.css → styles.8162edfb.css} +1 -1
  46. solace_agent_mesh/assets/docs/assets/js/05749d90.19ac4f35.js +1 -0
  47. solace_agent_mesh/assets/docs/assets/js/15ba94aa.e186750d.js +1 -0
  48. solace_agent_mesh/assets/docs/assets/js/15e40e79.434bb30f.js +1 -0
  49. solace_agent_mesh/assets/docs/assets/js/17896441.e612dfb4.js +1 -0
  50. solace_agent_mesh/assets/docs/assets/js/2279.550aa580.js +2 -0
  51. solace_agent_mesh/assets/docs/assets/js/{17896441.a5e82f9b.js.LICENSE.txt → 2279.550aa580.js.LICENSE.txt} +6 -0
  52. solace_agent_mesh/assets/docs/assets/js/240a0364.83e37aa8.js +1 -0
  53. solace_agent_mesh/assets/docs/assets/js/2987107d.a80604f9.js +1 -0
  54. solace_agent_mesh/assets/docs/assets/js/2e32b5e0.2f0db237.js +1 -0
  55. solace_agent_mesh/assets/docs/assets/js/3a6c6137.7e61915d.js +1 -0
  56. solace_agent_mesh/assets/docs/assets/js/3ac1795d.7f7ab1c1.js +1 -0
  57. solace_agent_mesh/assets/docs/assets/js/3ff0015d.e53c9b78.js +1 -0
  58. solace_agent_mesh/assets/docs/assets/js/41adc471.0e95b87c.js +1 -0
  59. solace_agent_mesh/assets/docs/assets/js/4667dc50.bf2ad456.js +1 -0
  60. solace_agent_mesh/assets/docs/assets/js/49eed117.493d6f99.js +1 -0
  61. solace_agent_mesh/assets/docs/assets/js/{509e993c.4c7a1a6d.js → 509e993c.a1fbf45a.js} +1 -1
  62. solace_agent_mesh/assets/docs/assets/js/547e15cc.8e6da617.js +1 -0
  63. solace_agent_mesh/assets/docs/assets/js/55b7b518.29d6e75d.js +1 -0
  64. solace_agent_mesh/assets/docs/assets/js/5b8d9c11.d4eb37b8.js +1 -0
  65. solace_agent_mesh/assets/docs/assets/js/5c2bd65f.1ee87753.js +1 -0
  66. solace_agent_mesh/assets/docs/assets/js/60702c0e.a8bdd79b.js +1 -0
  67. solace_agent_mesh/assets/docs/assets/js/631738c7.fa471607.js +1 -0
  68. solace_agent_mesh/assets/docs/assets/js/64195356.09dbd087.js +1 -0
  69. solace_agent_mesh/assets/docs/assets/js/66d4869e.30340bd3.js +1 -0
  70. solace_agent_mesh/assets/docs/assets/js/6a520c9d.b6e3f2ce.js +1 -0
  71. solace_agent_mesh/assets/docs/assets/js/6aaedf65.7253541d.js +1 -0
  72. solace_agent_mesh/assets/docs/assets/js/6ad8f0bd.a5b36a60.js +1 -0
  73. solace_agent_mesh/assets/docs/assets/js/6d84eae0.fd23ba4a.js +1 -0
  74. solace_agent_mesh/assets/docs/assets/js/71da7b71.374b9d54.js +1 -0
  75. solace_agent_mesh/assets/docs/assets/js/729898df.7249e9fd.js +1 -0
  76. solace_agent_mesh/assets/docs/assets/js/7e294c01.7c5f6906.js +1 -0
  77. solace_agent_mesh/assets/docs/assets/js/8024126c.e3467286.js +1 -0
  78. solace_agent_mesh/assets/docs/assets/js/81a99df0.7ed65d45.js +1 -0
  79. solace_agent_mesh/assets/docs/assets/js/82fbfb93.161823a5.js +1 -0
  80. solace_agent_mesh/assets/docs/assets/js/8b032486.91a91afc.js +1 -0
  81. solace_agent_mesh/assets/docs/assets/js/924ffdeb.975e428a.js +1 -0
  82. solace_agent_mesh/assets/docs/assets/js/94e8668d.16083b3f.js +1 -0
  83. solace_agent_mesh/assets/docs/assets/js/9bb13469.4523ae20.js +1 -0
  84. solace_agent_mesh/assets/docs/assets/js/a7d42657.a956689d.js +1 -0
  85. solace_agent_mesh/assets/docs/assets/js/a94703ab.3e5fbcb3.js +1 -0
  86. solace_agent_mesh/assets/docs/assets/js/ab9708a8.3e563275.js +1 -0
  87. solace_agent_mesh/assets/docs/assets/js/ad87452a.9d73dad6.js +1 -0
  88. solace_agent_mesh/assets/docs/assets/js/c93cbaa0.0e0d8baf.js +1 -0
  89. solace_agent_mesh/assets/docs/assets/js/cab03b5b.6a073091.js +1 -0
  90. solace_agent_mesh/assets/docs/assets/js/cbe2e9ea.07e170dd.js +1 -0
  91. solace_agent_mesh/assets/docs/assets/js/da0b5bad.b62f7b08.js +1 -0
  92. solace_agent_mesh/assets/docs/assets/js/dd817ffc.c37a755e.js +1 -0
  93. solace_agent_mesh/assets/docs/assets/js/dd81e2b8.b682e9c2.js +1 -0
  94. solace_agent_mesh/assets/docs/assets/js/de915948.44a432bc.js +1 -0
  95. solace_agent_mesh/assets/docs/assets/js/e04b235d.06d23db6.js +1 -0
  96. solace_agent_mesh/assets/docs/assets/js/e1b6eeb4.deb2b62e.js +1 -0
  97. solace_agent_mesh/assets/docs/assets/js/e3d9abda.1476f570.js +1 -0
  98. solace_agent_mesh/assets/docs/assets/js/e6f9706b.acc800d3.js +1 -0
  99. solace_agent_mesh/assets/docs/assets/js/e92d0134.c147a429.js +1 -0
  100. solace_agent_mesh/assets/docs/assets/js/ee0c2fe7.94d0a351.js +1 -0
  101. solace_agent_mesh/assets/docs/assets/js/f284c35a.cc97854c.js +1 -0
  102. solace_agent_mesh/assets/docs/assets/js/ff4d71f2.74710fc1.js +1 -0
  103. solace_agent_mesh/assets/docs/assets/js/main.d634009f.js +2 -0
  104. solace_agent_mesh/assets/docs/assets/js/runtime~main.27bb82a7.js +1 -0
  105. solace_agent_mesh/assets/docs/docs/documentation/components/agents/index.html +68 -68
  106. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/artifact-management/index.html +50 -50
  107. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/audio-tools/index.html +42 -42
  108. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/data-analysis-tools/index.html +55 -55
  109. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/embeds/index.html +82 -68
  110. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/image-tools/index.html +81 -0
  111. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/index.html +67 -50
  112. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/research-tools/index.html +136 -0
  113. solace_agent_mesh/assets/docs/docs/documentation/components/cli/index.html +178 -144
  114. solace_agent_mesh/assets/docs/docs/documentation/components/gateways/index.html +43 -42
  115. solace_agent_mesh/assets/docs/docs/documentation/components/index.html +20 -18
  116. solace_agent_mesh/assets/docs/docs/documentation/components/orchestrator/index.html +23 -23
  117. solace_agent_mesh/assets/docs/docs/documentation/components/platform-service/index.html +33 -0
  118. solace_agent_mesh/assets/docs/docs/documentation/components/plugins/index.html +45 -45
  119. solace_agent_mesh/assets/docs/docs/documentation/components/projects/index.html +182 -0
  120. solace_agent_mesh/assets/docs/docs/documentation/components/prompts/index.html +147 -0
  121. solace_agent_mesh/assets/docs/docs/documentation/components/proxies/index.html +208 -125
  122. solace_agent_mesh/assets/docs/docs/documentation/components/speech/index.html +52 -0
  123. solace_agent_mesh/assets/docs/docs/documentation/deploying/debugging/index.html +28 -49
  124. solace_agent_mesh/assets/docs/docs/documentation/deploying/deployment-options/index.html +29 -30
  125. solace_agent_mesh/assets/docs/docs/documentation/deploying/index.html +14 -14
  126. solace_agent_mesh/assets/docs/docs/documentation/deploying/kubernetes/index.html +47 -0
  127. solace_agent_mesh/assets/docs/docs/documentation/deploying/kubernetes/kubernetes-deployment-guide/index.html +197 -0
  128. solace_agent_mesh/assets/docs/docs/documentation/deploying/logging/index.html +90 -0
  129. solace_agent_mesh/assets/docs/docs/documentation/deploying/observability/index.html +17 -16
  130. solace_agent_mesh/assets/docs/docs/documentation/deploying/proxy_configuration/index.html +49 -0
  131. solace_agent_mesh/assets/docs/docs/documentation/developing/create-agents/index.html +38 -38
  132. solace_agent_mesh/assets/docs/docs/documentation/developing/create-gateways/index.html +162 -171
  133. solace_agent_mesh/assets/docs/docs/documentation/developing/creating-python-tools/index.html +67 -49
  134. solace_agent_mesh/assets/docs/docs/documentation/developing/creating-service-providers/index.html +17 -17
  135. solace_agent_mesh/assets/docs/docs/documentation/developing/evaluations/index.html +51 -51
  136. solace_agent_mesh/assets/docs/docs/documentation/developing/index.html +22 -22
  137. solace_agent_mesh/assets/docs/docs/documentation/developing/structure/index.html +27 -27
  138. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/bedrock-agents/index.html +135 -135
  139. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/custom-agent/index.html +66 -66
  140. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/event-mesh-gateway/index.html +51 -51
  141. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/mcp-integration/index.html +50 -38
  142. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/mongodb-integration/index.html +86 -86
  143. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/rag-integration/index.html +51 -51
  144. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/rest-gateway/index.html +24 -24
  145. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/slack-integration/index.html +30 -30
  146. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/sql-database/index.html +44 -44
  147. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/teams-integration/index.html +115 -0
  148. solace_agent_mesh/assets/docs/docs/documentation/enterprise/agent-builder/index.html +86 -0
  149. solace_agent_mesh/assets/docs/docs/documentation/enterprise/connectors/index.html +67 -0
  150. solace_agent_mesh/assets/docs/docs/documentation/enterprise/index.html +23 -19
  151. solace_agent_mesh/assets/docs/docs/documentation/enterprise/installation/index.html +40 -37
  152. solace_agent_mesh/assets/docs/docs/documentation/enterprise/openapi-tools/index.html +324 -0
  153. solace_agent_mesh/assets/docs/docs/documentation/enterprise/rbac-setup-guide/index.html +112 -87
  154. solace_agent_mesh/assets/docs/docs/documentation/enterprise/secure-user-delegated-access/index.html +440 -0
  155. solace_agent_mesh/assets/docs/docs/documentation/enterprise/single-sign-on/index.html +87 -64
  156. solace_agent_mesh/assets/docs/docs/documentation/enterprise/wheel-installation/index.html +62 -0
  157. solace_agent_mesh/assets/docs/docs/documentation/getting-started/architecture/index.html +44 -44
  158. solace_agent_mesh/assets/docs/docs/documentation/getting-started/index.html +39 -37
  159. solace_agent_mesh/assets/docs/docs/documentation/getting-started/introduction/index.html +30 -30
  160. solace_agent_mesh/assets/docs/docs/documentation/getting-started/try-agent-mesh/index.html +18 -18
  161. solace_agent_mesh/assets/docs/docs/documentation/getting-started/vibe_coding/index.html +62 -0
  162. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/artifact-storage/index.html +311 -0
  163. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/configurations/index.html +39 -42
  164. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/index.html +14 -14
  165. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/installation/index.html +27 -25
  166. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/large_language_models/index.html +69 -69
  167. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/run-project/index.html +72 -72
  168. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/session-storage/index.html +251 -0
  169. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/user-feedback/index.html +88 -0
  170. solace_agent_mesh/assets/docs/docs/documentation/migrations/a2a-upgrade/a2a-gateway-upgrade-to-0.3.0/index.html +42 -42
  171. solace_agent_mesh/assets/docs/docs/documentation/migrations/a2a-upgrade/a2a-technical-migration-map/index.html +20 -20
  172. solace_agent_mesh/assets/docs/docs/documentation/migrations/platform-service-split/index.html +85 -0
  173. solace_agent_mesh/assets/docs/lunr-index-1768329217460.json +1 -0
  174. solace_agent_mesh/assets/docs/lunr-index.json +1 -1
  175. solace_agent_mesh/assets/docs/search-doc-1768329217460.json +1 -0
  176. solace_agent_mesh/assets/docs/search-doc.json +1 -1
  177. solace_agent_mesh/assets/docs/sitemap.xml +1 -1
  178. solace_agent_mesh/cli/__init__.py +1 -1
  179. solace_agent_mesh/cli/commands/add_cmd/__init__.py +3 -1
  180. solace_agent_mesh/cli/commands/add_cmd/agent_cmd.py +6 -1
  181. solace_agent_mesh/cli/commands/add_cmd/proxy_cmd.py +100 -0
  182. solace_agent_mesh/cli/commands/docs_cmd.py +4 -1
  183. solace_agent_mesh/cli/commands/eval_cmd.py +1 -1
  184. solace_agent_mesh/cli/commands/init_cmd/__init__.py +15 -0
  185. solace_agent_mesh/cli/commands/init_cmd/directory_step.py +1 -1
  186. solace_agent_mesh/cli/commands/init_cmd/env_step.py +30 -3
  187. solace_agent_mesh/cli/commands/init_cmd/orchestrator_step.py +3 -4
  188. solace_agent_mesh/cli/commands/init_cmd/platform_service_step.py +85 -0
  189. solace_agent_mesh/cli/commands/init_cmd/webui_gateway_step.py +16 -3
  190. solace_agent_mesh/cli/commands/plugin_cmd/add_cmd.py +2 -1
  191. solace_agent_mesh/cli/commands/plugin_cmd/catalog_cmd.py +1 -0
  192. solace_agent_mesh/cli/commands/plugin_cmd/create_cmd.py +3 -3
  193. solace_agent_mesh/cli/commands/run_cmd.py +64 -49
  194. solace_agent_mesh/cli/commands/tools_cmd.py +315 -0
  195. solace_agent_mesh/cli/main.py +15 -0
  196. solace_agent_mesh/client/webui/frontend/static/assets/{authCallback-BTf6dqwp.js → authCallback-KnKMP_vb.js} +1 -1
  197. solace_agent_mesh/client/webui/frontend/static/assets/client-DpBL2stg.js +25 -0
  198. solace_agent_mesh/client/webui/frontend/static/assets/main-Cd498TV2.js +435 -0
  199. solace_agent_mesh/client/webui/frontend/static/assets/main-rSf8Vu29.css +1 -0
  200. solace_agent_mesh/client/webui/frontend/static/assets/vendor-CGk8Suyh.js +565 -0
  201. solace_agent_mesh/client/webui/frontend/static/auth-callback.html +3 -3
  202. solace_agent_mesh/client/webui/frontend/static/index.html +4 -4
  203. solace_agent_mesh/client/webui/frontend/static/mockServiceWorker.js +336 -0
  204. solace_agent_mesh/client/webui/frontend/static/ui-version.json +6 -0
  205. solace_agent_mesh/common/a2a/events.py +2 -1
  206. solace_agent_mesh/common/a2a/protocol.py +5 -0
  207. solace_agent_mesh/common/a2a/types.py +2 -1
  208. solace_agent_mesh/common/a2a_spec/schemas/artifact_creation_progress.json +23 -6
  209. solace_agent_mesh/common/a2a_spec/schemas/feedback_event.json +51 -0
  210. solace_agent_mesh/common/agent_registry.py +38 -11
  211. solace_agent_mesh/common/data_parts.py +144 -4
  212. solace_agent_mesh/common/error_handlers.py +83 -0
  213. solace_agent_mesh/common/exceptions.py +24 -0
  214. solace_agent_mesh/common/oauth/__init__.py +17 -0
  215. solace_agent_mesh/common/oauth/oauth_client.py +408 -0
  216. solace_agent_mesh/common/oauth/utils.py +50 -0
  217. solace_agent_mesh/common/rag_dto.py +156 -0
  218. solace_agent_mesh/common/sac/sam_component_base.py +97 -19
  219. solace_agent_mesh/common/sam_events/event_service.py +2 -2
  220. solace_agent_mesh/common/services/employee_service.py +1 -1
  221. solace_agent_mesh/common/utils/embeds/constants.py +1 -0
  222. solace_agent_mesh/common/utils/embeds/converter.py +1 -8
  223. solace_agent_mesh/common/utils/embeds/modifiers.py +4 -28
  224. solace_agent_mesh/common/utils/embeds/resolver.py +152 -31
  225. solace_agent_mesh/common/utils/embeds/types.py +9 -0
  226. solace_agent_mesh/common/utils/log_formatters.py +20 -0
  227. solace_agent_mesh/common/utils/mime_helpers.py +12 -5
  228. solace_agent_mesh/common/utils/pydantic_utils.py +90 -3
  229. solace_agent_mesh/common/utils/rbac_utils.py +69 -0
  230. solace_agent_mesh/common/utils/templates/__init__.py +8 -0
  231. solace_agent_mesh/common/utils/templates/liquid_renderer.py +210 -0
  232. solace_agent_mesh/common/utils/templates/template_resolver.py +161 -0
  233. solace_agent_mesh/config_portal/backend/common.py +12 -0
  234. solace_agent_mesh/config_portal/frontend/static/client/assets/_index-CljP4_mv.js +103 -0
  235. solace_agent_mesh/config_portal/frontend/static/client/assets/{components-Rk0n-9cK.js → components-CaC6hG8d.js} +22 -22
  236. solace_agent_mesh/config_portal/frontend/static/client/assets/{entry.client-mvZjNKiz.js → entry.client-H_TM0YBt.js} +3 -3
  237. solace_agent_mesh/config_portal/frontend/static/client/assets/{index-DzNKzXrc.js → index-CnFykb2v.js} +16 -16
  238. solace_agent_mesh/config_portal/frontend/static/client/assets/manifest-f8439d40.js +1 -0
  239. solace_agent_mesh/config_portal/frontend/static/client/assets/root-BIMqslJB.css +1 -0
  240. solace_agent_mesh/config_portal/frontend/static/client/assets/root-mJmTIdIk.js +10 -0
  241. solace_agent_mesh/config_portal/frontend/static/client/index.html +3 -3
  242. solace_agent_mesh/core_a2a/service.py +3 -2
  243. solace_agent_mesh/gateway/adapter/__init__.py +1 -0
  244. solace_agent_mesh/gateway/adapter/base.py +170 -0
  245. solace_agent_mesh/gateway/adapter/types.py +230 -0
  246. solace_agent_mesh/gateway/base/app.py +39 -2
  247. solace_agent_mesh/gateway/base/auth_interface.py +103 -0
  248. solace_agent_mesh/gateway/base/component.py +1027 -151
  249. solace_agent_mesh/gateway/generic/__init__.py +1 -0
  250. solace_agent_mesh/gateway/generic/app.py +50 -0
  251. solace_agent_mesh/gateway/generic/component.py +894 -0
  252. solace_agent_mesh/gateway/http_sse/alembic/env.py +0 -7
  253. solace_agent_mesh/gateway/http_sse/alembic/versions/20251023_add_project_users_table.py +72 -0
  254. solace_agent_mesh/gateway/http_sse/alembic/versions/20251023_add_soft_delete_and_search.py +109 -0
  255. solace_agent_mesh/gateway/http_sse/alembic/versions/20251024_add_default_agent_to_projects.py +26 -0
  256. solace_agent_mesh/gateway/http_sse/alembic/versions/20251024_add_projects_table.py +135 -0
  257. solace_agent_mesh/gateway/http_sse/alembic/versions/20251108_create_prompt_tables_with_sharing.py +154 -0
  258. solace_agent_mesh/gateway/http_sse/alembic/versions/20251115_add_parent_task_id.py +32 -0
  259. solace_agent_mesh/gateway/http_sse/alembic/versions/20251126_add_background_task_fields.py +47 -0
  260. solace_agent_mesh/gateway/http_sse/alembic/versions/20251202_add_versioned_fields_to_prompts.py +52 -0
  261. solace_agent_mesh/gateway/http_sse/alembic.ini +0 -36
  262. solace_agent_mesh/gateway/http_sse/app.py +40 -11
  263. solace_agent_mesh/gateway/http_sse/component.py +285 -160
  264. solace_agent_mesh/gateway/http_sse/dependencies.py +149 -114
  265. solace_agent_mesh/gateway/http_sse/main.py +68 -450
  266. solace_agent_mesh/gateway/http_sse/repository/__init__.py +19 -1
  267. solace_agent_mesh/gateway/http_sse/repository/chat_task_repository.py +2 -2
  268. solace_agent_mesh/gateway/http_sse/repository/entities/project.py +81 -0
  269. solace_agent_mesh/gateway/http_sse/repository/entities/project_user.py +47 -0
  270. solace_agent_mesh/gateway/http_sse/repository/entities/session.py +26 -3
  271. solace_agent_mesh/gateway/http_sse/repository/entities/task.py +7 -0
  272. solace_agent_mesh/gateway/http_sse/repository/feedback_repository.py +47 -0
  273. solace_agent_mesh/gateway/http_sse/repository/interfaces.py +114 -6
  274. solace_agent_mesh/gateway/http_sse/repository/models/__init__.py +13 -0
  275. solace_agent_mesh/gateway/http_sse/repository/models/project_model.py +51 -0
  276. solace_agent_mesh/gateway/http_sse/repository/models/project_user_model.py +75 -0
  277. solace_agent_mesh/gateway/http_sse/repository/models/prompt_model.py +159 -0
  278. solace_agent_mesh/gateway/http_sse/repository/models/session_model.py +8 -2
  279. solace_agent_mesh/gateway/http_sse/repository/models/task_model.py +8 -1
  280. solace_agent_mesh/gateway/http_sse/repository/project_repository.py +172 -0
  281. solace_agent_mesh/gateway/http_sse/repository/project_user_repository.py +186 -0
  282. solace_agent_mesh/gateway/http_sse/repository/session_repository.py +177 -11
  283. solace_agent_mesh/gateway/http_sse/repository/task_repository.py +86 -2
  284. solace_agent_mesh/gateway/http_sse/routers/agent_cards.py +38 -7
  285. solace_agent_mesh/gateway/http_sse/routers/artifacts.py +256 -58
  286. solace_agent_mesh/gateway/http_sse/routers/auth.py +168 -134
  287. solace_agent_mesh/gateway/http_sse/routers/config.py +302 -8
  288. solace_agent_mesh/gateway/http_sse/routers/dto/project_dto.py +69 -0
  289. solace_agent_mesh/gateway/http_sse/routers/dto/prompt_dto.py +255 -0
  290. solace_agent_mesh/gateway/http_sse/routers/dto/requests/project_requests.py +48 -0
  291. solace_agent_mesh/gateway/http_sse/routers/dto/requests/session_requests.py +14 -1
  292. solace_agent_mesh/gateway/http_sse/routers/dto/responses/base_responses.py +1 -1
  293. solace_agent_mesh/gateway/http_sse/routers/dto/responses/project_responses.py +31 -0
  294. solace_agent_mesh/gateway/http_sse/routers/dto/responses/session_responses.py +5 -2
  295. solace_agent_mesh/gateway/http_sse/routers/dto/responses/version_responses.py +31 -0
  296. solace_agent_mesh/gateway/http_sse/routers/feedback.py +133 -2
  297. solace_agent_mesh/gateway/http_sse/routers/people.py +2 -2
  298. solace_agent_mesh/gateway/http_sse/routers/projects.py +768 -0
  299. solace_agent_mesh/gateway/http_sse/routers/prompts.py +1416 -0
  300. solace_agent_mesh/gateway/http_sse/routers/sessions.py +167 -7
  301. solace_agent_mesh/gateway/http_sse/routers/speech.py +355 -0
  302. solace_agent_mesh/gateway/http_sse/routers/sse.py +131 -8
  303. solace_agent_mesh/gateway/http_sse/routers/tasks.py +670 -18
  304. solace_agent_mesh/gateway/http_sse/routers/users.py +1 -1
  305. solace_agent_mesh/gateway/http_sse/routers/version.py +343 -0
  306. solace_agent_mesh/gateway/http_sse/routers/visualization.py +92 -9
  307. solace_agent_mesh/gateway/http_sse/services/audio_service.py +1227 -0
  308. solace_agent_mesh/gateway/http_sse/services/background_task_monitor.py +186 -0
  309. solace_agent_mesh/gateway/http_sse/services/data_retention_service.py +1 -1
  310. solace_agent_mesh/gateway/http_sse/services/feedback_service.py +1 -1
  311. solace_agent_mesh/gateway/http_sse/services/project_service.py +930 -0
  312. solace_agent_mesh/gateway/http_sse/services/prompt_builder_assistant.py +303 -0
  313. solace_agent_mesh/gateway/http_sse/services/session_service.py +361 -12
  314. solace_agent_mesh/gateway/http_sse/services/task_logger_service.py +354 -4
  315. solace_agent_mesh/gateway/http_sse/session_manager.py +15 -15
  316. solace_agent_mesh/gateway/http_sse/sse_manager.py +286 -166
  317. solace_agent_mesh/gateway/http_sse/utils/artifact_copy_utils.py +370 -0
  318. solace_agent_mesh/gateway/http_sse/utils/stim_utils.py +41 -1
  319. solace_agent_mesh/services/__init__.py +0 -0
  320. solace_agent_mesh/services/platform/__init__.py +29 -0
  321. solace_agent_mesh/services/platform/alembic/env.py +85 -0
  322. solace_agent_mesh/services/platform/alembic/script.py.mako +28 -0
  323. solace_agent_mesh/services/platform/alembic.ini +109 -0
  324. solace_agent_mesh/services/platform/api/__init__.py +3 -0
  325. solace_agent_mesh/services/platform/api/dependencies.py +154 -0
  326. solace_agent_mesh/services/platform/api/main.py +314 -0
  327. solace_agent_mesh/services/platform/api/middleware.py +51 -0
  328. solace_agent_mesh/services/platform/api/routers/__init__.py +33 -0
  329. solace_agent_mesh/services/platform/api/routers/health_router.py +31 -0
  330. solace_agent_mesh/services/platform/app.py +215 -0
  331. solace_agent_mesh/services/platform/component.py +777 -0
  332. solace_agent_mesh/shared/__init__.py +14 -0
  333. solace_agent_mesh/shared/api/__init__.py +42 -0
  334. solace_agent_mesh/shared/auth/__init__.py +26 -0
  335. solace_agent_mesh/shared/auth/dependencies.py +204 -0
  336. solace_agent_mesh/shared/auth/middleware.py +347 -0
  337. solace_agent_mesh/shared/database/__init__.py +20 -0
  338. solace_agent_mesh/{gateway/http_sse/shared → shared/database}/base_repository.py +1 -1
  339. solace_agent_mesh/{gateway/http_sse/shared → shared/database}/database_exceptions.py +1 -1
  340. solace_agent_mesh/{gateway/http_sse/shared → shared/database}/database_helpers.py +1 -1
  341. solace_agent_mesh/shared/exceptions/__init__.py +36 -0
  342. solace_agent_mesh/{gateway/http_sse/shared → shared/exceptions}/exception_handlers.py +19 -5
  343. solace_agent_mesh/shared/utils/__init__.py +21 -0
  344. solace_agent_mesh/templates/logging_config_template.yaml +48 -0
  345. solace_agent_mesh/templates/main_orchestrator.yaml +12 -1
  346. solace_agent_mesh/templates/platform.yaml +49 -0
  347. solace_agent_mesh/templates/plugin_readme_template.md +3 -25
  348. solace_agent_mesh/templates/plugin_tool_config_template.yaml +109 -0
  349. solace_agent_mesh/templates/proxy_template.yaml +62 -0
  350. solace_agent_mesh/templates/webui.yaml +148 -6
  351. solace_agent_mesh/tools/web_search/__init__.py +18 -0
  352. solace_agent_mesh/tools/web_search/base.py +84 -0
  353. solace_agent_mesh/tools/web_search/google_search.py +247 -0
  354. solace_agent_mesh/tools/web_search/models.py +99 -0
  355. {solace_agent_mesh-1.6.1.dist-info → solace_agent_mesh-1.13.2.dist-info}/METADATA +31 -12
  356. solace_agent_mesh-1.13.2.dist-info/RECORD +591 -0
  357. {solace_agent_mesh-1.6.1.dist-info → solace_agent_mesh-1.13.2.dist-info}/WHEEL +1 -1
  358. solace_agent_mesh/agent/adk/adk_llm.txt +0 -232
  359. solace_agent_mesh/agent/adk/adk_llm_detail.txt +0 -566
  360. solace_agent_mesh/agent/adk/artifacts/artifacts_llm.txt +0 -171
  361. solace_agent_mesh/agent/adk/models/models_llm.txt +0 -142
  362. solace_agent_mesh/agent/agent_llm.txt +0 -378
  363. solace_agent_mesh/agent/agent_llm_detail.txt +0 -1702
  364. solace_agent_mesh/agent/protocol/protocol_llm.txt +0 -81
  365. solace_agent_mesh/agent/protocol/protocol_llm_detail.txt +0 -92
  366. solace_agent_mesh/agent/sac/sac_llm.txt +0 -189
  367. solace_agent_mesh/agent/sac/sac_llm_detail.txt +0 -200
  368. solace_agent_mesh/agent/testing/testing_llm.txt +0 -57
  369. solace_agent_mesh/agent/testing/testing_llm_detail.txt +0 -68
  370. solace_agent_mesh/agent/tools/tools_llm.txt +0 -263
  371. solace_agent_mesh/agent/tools/tools_llm_detail.txt +0 -274
  372. solace_agent_mesh/agent/utils/utils_llm.txt +0 -138
  373. solace_agent_mesh/agent/utils/utils_llm_detail.txt +0 -149
  374. solace_agent_mesh/assets/docs/assets/js/15ba94aa.932dd2db.js +0 -1
  375. solace_agent_mesh/assets/docs/assets/js/17896441.a5e82f9b.js +0 -2
  376. solace_agent_mesh/assets/docs/assets/js/240a0364.7eac6021.js +0 -1
  377. solace_agent_mesh/assets/docs/assets/js/2e32b5e0.33f5d75b.js +0 -1
  378. solace_agent_mesh/assets/docs/assets/js/3a6c6137.f5940cfa.js +0 -1
  379. solace_agent_mesh/assets/docs/assets/js/3ac1795d.76654dd9.js +0 -1
  380. solace_agent_mesh/assets/docs/assets/js/3ff0015d.2be20244.js +0 -1
  381. solace_agent_mesh/assets/docs/assets/js/547e15cc.2cbb060a.js +0 -1
  382. solace_agent_mesh/assets/docs/assets/js/55b7b518.f2b1d1ba.js +0 -1
  383. solace_agent_mesh/assets/docs/assets/js/5c2bd65f.eda4bcb2.js +0 -1
  384. solace_agent_mesh/assets/docs/assets/js/631738c7.a8b1ef8b.js +0 -1
  385. solace_agent_mesh/assets/docs/assets/js/6a520c9d.ba015d81.js +0 -1
  386. solace_agent_mesh/assets/docs/assets/js/6ad8f0bd.f4b15f3b.js +0 -1
  387. solace_agent_mesh/assets/docs/assets/js/6d84eae0.4a5fbf39.js +0 -1
  388. solace_agent_mesh/assets/docs/assets/js/71da7b71.38583438.js +0 -1
  389. solace_agent_mesh/assets/docs/assets/js/8024126c.56e59919.js +0 -1
  390. solace_agent_mesh/assets/docs/assets/js/81a99df0.07034dd9.js +0 -1
  391. solace_agent_mesh/assets/docs/assets/js/82fbfb93.139a1a1f.js +0 -1
  392. solace_agent_mesh/assets/docs/assets/js/924ffdeb.8095e148.js +0 -1
  393. solace_agent_mesh/assets/docs/assets/js/94e8668d.b5ddb7a1.js +0 -1
  394. solace_agent_mesh/assets/docs/assets/js/9bb13469.dd1c9b54.js +0 -1
  395. solace_agent_mesh/assets/docs/assets/js/a94703ab.0438dbc2.js +0 -1
  396. solace_agent_mesh/assets/docs/assets/js/ab9708a8.3e6dd091.js +0 -1
  397. solace_agent_mesh/assets/docs/assets/js/c93cbaa0.eaff365e.js +0 -1
  398. solace_agent_mesh/assets/docs/assets/js/da0b5bad.d08a9466.js +0 -1
  399. solace_agent_mesh/assets/docs/assets/js/dd817ffc.0aa9630a.js +0 -1
  400. solace_agent_mesh/assets/docs/assets/js/dd81e2b8.d590bc9e.js +0 -1
  401. solace_agent_mesh/assets/docs/assets/js/de915948.27d6b065.js +0 -1
  402. solace_agent_mesh/assets/docs/assets/js/e3d9abda.6b9493d0.js +0 -1
  403. solace_agent_mesh/assets/docs/assets/js/e6f9706b.e74a984d.js +0 -1
  404. solace_agent_mesh/assets/docs/assets/js/e92d0134.cf6d6522.js +0 -1
  405. solace_agent_mesh/assets/docs/assets/js/f284c35a.42f59cdd.js +0 -1
  406. solace_agent_mesh/assets/docs/assets/js/ff4d71f2.15b02f97.js +0 -1
  407. solace_agent_mesh/assets/docs/assets/js/main.b12eac43.js +0 -2
  408. solace_agent_mesh/assets/docs/assets/js/runtime~main.e268214e.js +0 -1
  409. solace_agent_mesh/assets/docs/lunr-index-1761248203150.json +0 -1
  410. solace_agent_mesh/assets/docs/search-doc-1761248203150.json +0 -1
  411. solace_agent_mesh/cli/commands/add_cmd/add_cmd_llm.txt +0 -250
  412. solace_agent_mesh/cli/commands/init_cmd/init_cmd_llm.txt +0 -365
  413. solace_agent_mesh/cli/commands/plugin_cmd/plugin_cmd_llm.txt +0 -305
  414. solace_agent_mesh/client/webui/frontend/static/assets/client-CaY59VuC.js +0 -25
  415. solace_agent_mesh/client/webui/frontend/static/assets/main-B32noGmR.js +0 -342
  416. solace_agent_mesh/client/webui/frontend/static/assets/main-DHJKSW1S.css +0 -1
  417. solace_agent_mesh/client/webui/frontend/static/assets/vendor-BEmvJSYz.js +0 -405
  418. solace_agent_mesh/common/a2a/a2a_llm.txt +0 -182
  419. solace_agent_mesh/common/a2a/a2a_llm_detail.txt +0 -193
  420. solace_agent_mesh/common/a2a_spec/a2a_spec_llm.txt +0 -407
  421. solace_agent_mesh/common/a2a_spec/a2a_spec_llm_detail.txt +0 -736
  422. solace_agent_mesh/common/a2a_spec/schemas/schemas_llm.txt +0 -313
  423. solace_agent_mesh/common/common_llm.txt +0 -251
  424. solace_agent_mesh/common/common_llm_detail.txt +0 -2562
  425. solace_agent_mesh/common/middleware/middleware_llm.txt +0 -174
  426. solace_agent_mesh/common/middleware/middleware_llm_detail.txt +0 -185
  427. solace_agent_mesh/common/sac/sac_llm.txt +0 -71
  428. solace_agent_mesh/common/sac/sac_llm_detail.txt +0 -82
  429. solace_agent_mesh/common/sam_events/sam_events_llm.txt +0 -104
  430. solace_agent_mesh/common/sam_events/sam_events_llm_detail.txt +0 -115
  431. solace_agent_mesh/common/services/providers/providers_llm.txt +0 -80
  432. solace_agent_mesh/common/services/services_llm.txt +0 -363
  433. solace_agent_mesh/common/services/services_llm_detail.txt +0 -459
  434. solace_agent_mesh/common/utils/embeds/embeds_llm.txt +0 -220
  435. solace_agent_mesh/common/utils/utils_llm.txt +0 -336
  436. solace_agent_mesh/common/utils/utils_llm_detail.txt +0 -572
  437. solace_agent_mesh/config_portal/frontend/static/client/assets/_index-ByU1X1HD.js +0 -98
  438. solace_agent_mesh/config_portal/frontend/static/client/assets/manifest-61038fc6.js +0 -1
  439. solace_agent_mesh/config_portal/frontend/static/client/assets/root-BWvk5-gF.js +0 -10
  440. solace_agent_mesh/config_portal/frontend/static/client/assets/root-DxRwaWiE.css +0 -1
  441. solace_agent_mesh/core_a2a/core_a2a_llm.txt +0 -90
  442. solace_agent_mesh/core_a2a/core_a2a_llm_detail.txt +0 -101
  443. solace_agent_mesh/gateway/base/base_llm.txt +0 -224
  444. solace_agent_mesh/gateway/base/base_llm_detail.txt +0 -235
  445. solace_agent_mesh/gateway/gateway_llm.txt +0 -373
  446. solace_agent_mesh/gateway/gateway_llm_detail.txt +0 -3885
  447. solace_agent_mesh/gateway/http_sse/alembic/alembic_llm.txt +0 -295
  448. solace_agent_mesh/gateway/http_sse/alembic/versions/versions_llm.txt +0 -155
  449. solace_agent_mesh/gateway/http_sse/components/components_llm.txt +0 -105
  450. solace_agent_mesh/gateway/http_sse/http_sse_llm.txt +0 -299
  451. solace_agent_mesh/gateway/http_sse/http_sse_llm_detail.txt +0 -3278
  452. solace_agent_mesh/gateway/http_sse/repository/entities/entities_llm.txt +0 -263
  453. solace_agent_mesh/gateway/http_sse/repository/models/models_llm.txt +0 -266
  454. solace_agent_mesh/gateway/http_sse/repository/repository_llm.txt +0 -340
  455. solace_agent_mesh/gateway/http_sse/routers/dto/dto_llm.txt +0 -346
  456. solace_agent_mesh/gateway/http_sse/routers/dto/requests/requests_llm.txt +0 -83
  457. solace_agent_mesh/gateway/http_sse/routers/dto/responses/responses_llm.txt +0 -107
  458. solace_agent_mesh/gateway/http_sse/routers/routers_llm.txt +0 -314
  459. solace_agent_mesh/gateway/http_sse/services/services_llm.txt +0 -297
  460. solace_agent_mesh/gateway/http_sse/shared/__init__.py +0 -146
  461. solace_agent_mesh/gateway/http_sse/shared/shared_llm.txt +0 -285
  462. solace_agent_mesh/gateway/http_sse/utils/utils_llm.txt +0 -47
  463. solace_agent_mesh/llm.txt +0 -228
  464. solace_agent_mesh/llm_detail.txt +0 -2835
  465. solace_agent_mesh/solace_agent_mesh_llm.txt +0 -362
  466. solace_agent_mesh/solace_agent_mesh_llm_detail.txt +0 -8599
  467. solace_agent_mesh/templates/logging_config_template.ini +0 -45
  468. solace_agent_mesh/templates/templates_llm.txt +0 -147
  469. solace_agent_mesh-1.6.1.dist-info/RECORD +0 -525
  470. /solace_agent_mesh/assets/docs/assets/js/{main.b12eac43.js.LICENSE.txt → main.d634009f.js.LICENSE.txt} +0 -0
  471. /solace_agent_mesh/{gateway/http_sse/shared → shared/api}/auth_utils.py +0 -0
  472. /solace_agent_mesh/{gateway/http_sse/shared → shared/api}/pagination.py +0 -0
  473. /solace_agent_mesh/{gateway/http_sse/shared → shared/api}/response_utils.py +0 -0
  474. /solace_agent_mesh/{gateway/http_sse/shared → shared/exceptions}/error_dto.py +0 -0
  475. /solace_agent_mesh/{gateway/http_sse/shared → shared/exceptions}/exceptions.py +0 -0
  476. /solace_agent_mesh/{gateway/http_sse/shared → shared/utils}/enums.py +0 -0
  477. /solace_agent_mesh/{gateway/http_sse/shared → shared/utils}/timestamp_utils.py +0 -0
  478. /solace_agent_mesh/{gateway/http_sse/shared → shared/utils}/types.py +0 -0
  479. /solace_agent_mesh/{gateway/http_sse/shared → shared/utils}/utils.py +0 -0
  480. {solace_agent_mesh-1.6.1.dist-info → solace_agent_mesh-1.13.2.dist-info}/entry_points.txt +0 -0
  481. {solace_agent_mesh-1.6.1.dist-info → solace_agent_mesh-1.13.2.dist-info}/licenses/LICENSE +0 -0
@@ -1,81 +0,0 @@
1
- # DEVELOPER GUIDE: protocol
2
-
3
- ## Quick Summary
4
- The `protocol` directory implements the core logic for Agent-to-Agent (A2A) communication. It handles receiving and processing requests, responses, and discovery messages (Agent Cards) over the Solace event mesh. It acts as the bridge between the A2A protocol and the underlying Google ADK execution environment.
5
-
6
- ## Files Overview
7
- - `__init__.py` - Empty package initialization file
8
- - `event_handlers.py` - Contains the primary logic for handling all A2A protocol events, including routing incoming messages, managing task execution, and handling agent discovery
9
-
10
- ## Developer API Reference
11
-
12
- ### __init__.py
13
- **Purpose:** Standard Python package initialization file
14
- **Import:** `from solace_agent_mesh.agent.protocol import *`
15
-
16
- This is an empty package initialization file and has no public interfaces.
17
-
18
- ### event_handlers.py
19
- **Purpose:** Central hub for processing all events related to the A2A protocol. Routes events to appropriate handlers and manages task lifecycle.
20
- **Import:** `from solace_agent_mesh.agent.protocol.event_handlers import process_event, handle_a2a_request, handle_agent_card_message, handle_a2a_response, publish_agent_card, handle_sam_event, cleanup_agent_session`
21
-
22
- **Functions:**
23
- - `process_event(component, event: Event) -> None` - Main event router that processes incoming events and delegates to specific handlers based on event type and topic
24
- - `handle_a2a_request(component, message: SolaceMessage) -> None` - Handles incoming A2A request messages, starts ADK runner for SendTask requests, and processes CancelTask requests
25
- - `handle_agent_card_message(component, message: SolaceMessage) -> None` - Processes incoming Agent Card discovery messages and updates peer agent registry
26
- - `handle_a2a_response(component, message: SolaceMessage) -> None` - Handles responses and status updates from peer agents, manages parallel task completion
27
- - `publish_agent_card(component) -> None` - Publishes the agent's capabilities and information to the discovery topic
28
- - `handle_sam_event(component, message: SolaceMessage, topic: str) -> None` - Handles incoming SAM system events like session deletion
29
- - `cleanup_agent_session(component, session_id: str, user_id: str) -> None` - Cleans up agent-side session data when sessions are deleted
30
-
31
- **Internal Helper Functions:**
32
- - `_register_peer_artifacts_in_parent_context(parent_task_context: "TaskExecutionContext", peer_task_object: Task, log_identifier: str) -> None` - Registers artifacts produced by peer agents in the parent task context
33
- - `_publish_peer_tool_result_notification(component: "SamAgentComponent", correlation_data: Dict[str, Any], payload_to_queue: Any, log_identifier: str) -> None` - Publishes a ToolResultData status update for a completed peer tool call
34
-
35
- **Usage Examples:**
36
- ```python
37
- # Main event processing (typically called by the SAC framework)
38
- from solace_agent_mesh.agent.protocol.event_handlers import process_event
39
- from solace_ai_connector.common.event import Event, EventType
40
-
41
- # Process an incoming event
42
- await process_event(component, event)
43
-
44
- # Publish agent discovery card
45
- from solace_agent_mesh.agent.protocol.event_handlers import publish_agent_card
46
-
47
- publish_agent_card(component)
48
-
49
- # Handle specific message types (usually called internally by process_event)
50
- from solace_agent_mesh.agent.protocol.event_handlers import handle_a2a_request
51
-
52
- await handle_a2a_request(component, solace_message)
53
-
54
- # Handle SAM system events
55
- from solace_agent_mesh.agent.protocol.event_handlers import handle_sam_event
56
-
57
- handle_sam_event(component, message, topic)
58
-
59
- # Clean up session data
60
- from solace_agent_mesh.agent.protocol.event_handlers import cleanup_agent_session
61
-
62
- await cleanup_agent_session(component, "session_123", "user_456")
63
- ```
64
-
65
- **Key Event Flow:**
66
- 1. `process_event()` receives all events and routes based on type (MESSAGE, TIMER, CACHE_EXPIRY)
67
- 2. For MESSAGE events, routes to specific handlers based on topic patterns:
68
- - Agent request topics → `handle_a2a_request()`
69
- - Discovery topics → `handle_agent_card_message()`
70
- - Response/status topics → `handle_a2a_response()`
71
- - SAM events topics → `handle_sam_event()`
72
- 3. For TIMER events, handles periodic agent card publishing
73
- 4. For CACHE_EXPIRY events, delegates to component's cache handling
74
-
75
- **Dependencies:**
76
- - Requires `SamAgentComponent` instance with proper configuration
77
- - Uses A2A protocol types from `a2a.types`
78
- - Integrates with Google ADK for task execution
79
- - Manages task contexts through `TaskExecutionContext`
80
-
81
- # content_hash: 4b8a426320c6f06c621b469c79087c315f5590ef14497ccf17de02eeb66db91d
@@ -1,92 +0,0 @@
1
- # LLM Summary Detail File
2
-
3
- This file is a concatenation of all individual *llm.txt files found in the 'protocol' directory tree. Each section below corresponds to a specific directory's summary file.
4
-
5
- ================================================================================
6
-
7
- ## Section 1: solace_agent_mesh/agent/protocol/protocol_llm.txt
8
-
9
- **Source file:** `solace_agent_mesh/agent/protocol/protocol_llm.txt`
10
-
11
- # DEVELOPER GUIDE: protocol
12
-
13
- ## Quick Summary
14
- The `protocol` directory implements the core logic for Agent-to-Agent (A2A) communication. It handles receiving and processing requests, responses, and discovery messages (Agent Cards) over the Solace event mesh. It acts as the bridge between the A2A protocol and the underlying Google ADK execution environment.
15
-
16
- ## Files Overview
17
- - `__init__.py` - Empty package initialization file
18
- - `event_handlers.py` - Contains the primary logic for handling all A2A protocol events, including routing incoming messages, managing task execution, and handling agent discovery
19
-
20
- ## Developer API Reference
21
-
22
- ### __init__.py
23
- **Purpose:** Standard Python package initialization file
24
- **Import:** `from solace_agent_mesh.agent.protocol import *`
25
-
26
- This is an empty package initialization file and has no public interfaces.
27
-
28
- ### event_handlers.py
29
- **Purpose:** Central hub for processing all events related to the A2A protocol. Routes events to appropriate handlers and manages task lifecycle.
30
- **Import:** `from solace_agent_mesh.agent.protocol.event_handlers import process_event, handle_a2a_request, handle_agent_card_message, handle_a2a_response, publish_agent_card, handle_sam_event, cleanup_agent_session`
31
-
32
- **Functions:**
33
- - `process_event(component, event: Event) -> None` - Main event router that processes incoming events and delegates to specific handlers based on event type and topic
34
- - `handle_a2a_request(component, message: SolaceMessage) -> None` - Handles incoming A2A request messages, starts ADK runner for SendTask requests, and processes CancelTask requests
35
- - `handle_agent_card_message(component, message: SolaceMessage) -> None` - Processes incoming Agent Card discovery messages and updates peer agent registry
36
- - `handle_a2a_response(component, message: SolaceMessage) -> None` - Handles responses and status updates from peer agents, manages parallel task completion
37
- - `publish_agent_card(component) -> None` - Publishes the agent's capabilities and information to the discovery topic
38
- - `handle_sam_event(component, message: SolaceMessage, topic: str) -> None` - Handles incoming SAM system events like session deletion
39
- - `cleanup_agent_session(component, session_id: str, user_id: str) -> None` - Cleans up agent-side session data when sessions are deleted
40
-
41
- **Internal Helper Functions:**
42
- - `_register_peer_artifacts_in_parent_context(parent_task_context: "TaskExecutionContext", peer_task_object: Task, log_identifier: str) -> None` - Registers artifacts produced by peer agents in the parent task context
43
- - `_publish_peer_tool_result_notification(component: "SamAgentComponent", correlation_data: Dict[str, Any], payload_to_queue: Any, log_identifier: str) -> None` - Publishes a ToolResultData status update for a completed peer tool call
44
-
45
- **Usage Examples:**
46
- ```python
47
- # Main event processing (typically called by the SAC framework)
48
- from solace_agent_mesh.agent.protocol.event_handlers import process_event
49
- from solace_ai_connector.common.event import Event, EventType
50
-
51
- # Process an incoming event
52
- await process_event(component, event)
53
-
54
- # Publish agent discovery card
55
- from solace_agent_mesh.agent.protocol.event_handlers import publish_agent_card
56
-
57
- publish_agent_card(component)
58
-
59
- # Handle specific message types (usually called internally by process_event)
60
- from solace_agent_mesh.agent.protocol.event_handlers import handle_a2a_request
61
-
62
- await handle_a2a_request(component, solace_message)
63
-
64
- # Handle SAM system events
65
- from solace_agent_mesh.agent.protocol.event_handlers import handle_sam_event
66
-
67
- handle_sam_event(component, message, topic)
68
-
69
- # Clean up session data
70
- from solace_agent_mesh.agent.protocol.event_handlers import cleanup_agent_session
71
-
72
- await cleanup_agent_session(component, "session_123", "user_456")
73
- ```
74
-
75
- **Key Event Flow:**
76
- 1. `process_event()` receives all events and routes based on type (MESSAGE, TIMER, CACHE_EXPIRY)
77
- 2. For MESSAGE events, routes to specific handlers based on topic patterns:
78
- - Agent request topics → `handle_a2a_request()`
79
- - Discovery topics → `handle_agent_card_message()`
80
- - Response/status topics → `handle_a2a_response()`
81
- - SAM events topics → `handle_sam_event()`
82
- 3. For TIMER events, handles periodic agent card publishing
83
- 4. For CACHE_EXPIRY events, delegates to component's cache handling
84
-
85
- **Dependencies:**
86
- - Requires `SamAgentComponent` instance with proper configuration
87
- - Uses A2A protocol types from `a2a.types`
88
- - Integrates with Google ADK for task execution
89
- - Manages task contexts through `TaskExecutionContext`
90
-
91
- ================================================================================
92
-
@@ -1,189 +0,0 @@
1
- # DEVELOPER GUIDE for the directory: sac
2
-
3
- ## Quick Summary
4
- The `sac` (Solace AI Connector) directory provides the core implementation for hosting a Google ADK (Agent Development Kit) agent within the Solace AI Connector framework. It acts as a bridge, enabling ADK agents to communicate using the A2A (Agent-to-Agent) protocol over Solace messaging. This allows for the creation of distributed, collaborative agent systems where agents can delegate tasks, share information, and work together to solve complex problems.
5
-
6
- ## Files Overview
7
- - `__init__.py` - Empty package marker file
8
- - `app.py` - Custom SAC App class that automatically configures Solace subscriptions and broker settings for A2A communication
9
- - `component.py` - Main SAC Component that hosts the ADK agent, manages its lifecycle, and handles all A2A protocol messaging
10
- - `patch_adk.py` - Runtime patches for the Google ADK library to enhance or correct its behavior
11
- - `task_execution_context.py` - State management class that encapsulates all runtime information for a single, in-flight A2A task
12
-
13
- ## Developer API Reference
14
-
15
- ### app.py
16
- **Purpose:** Provides a custom SAC App class that simplifies the configuration of an A2A agent
17
- **Import:** `from solace_agent_mesh.agent.sac.app import SamAgentApp`
18
-
19
- **Classes:**
20
- - `SamAgentApp(app_info: Dict[str, Any], **kwargs)` - Custom App class for SAM Agent Host with namespace prefixing and automatic subscription generation
21
- - `app_schema: Dict` - Class attribute defining comprehensive configuration schema for agent host validation
22
-
23
- **Constants/Variables:**
24
- - `info: Dict[str, str]` - Metadata dictionary about the SamAgentApp class for SAC framework discovery
25
-
26
- **Usage Examples:**
27
- ```python
28
- # SamAgentApp is typically instantiated by the SAC framework from YAML config
29
- # Example agent-config.yaml:
30
- # app:
31
- # class_name: solace_agent_mesh.agent.sac.app.SamAgentApp
32
- # app_config:
33
- # namespace: "my-org/production"
34
- # agent_name: "customer-support-agent"
35
- # model: "gemini-1.5-pro-latest"
36
- # tools:
37
- # - tool_type: "builtin"
38
- # tool_name: "file_search"
39
- # agent_card:
40
- # description: "An agent that can answer questions about customer accounts."
41
- # agent_card_publishing:
42
- # interval_seconds: 60
43
- # session_service:
44
- # type: "memory"
45
- ```
46
-
47
- ### component.py
48
- **Purpose:** Core component that hosts a Google ADK agent and bridges communication to A2A protocol
49
- **Import:** `from solace_agent_mesh.agent.sac.component import SamAgentComponent`
50
-
51
- **Classes:**
52
- - `SamAgentComponent(**kwargs)` - Solace AI Connector component that hosts a Google ADK agent
53
- - `process_event(event: Event) -> None` - Main entry point for all SAC framework events
54
- - `handle_timer_event(timer_data: Dict[str, Any]) -> None` - Handles scheduled timer events for agent card publishing
55
- - `handle_cache_expiry_event(cache_data: Dict[str, Any]) -> None` - Handles cache expiry events for peer agent timeouts
56
- - `finalize_task_success(a2a_context: Dict) -> None` - Async method to finalize successful task completion
57
- - `finalize_task_canceled(a2a_context: Dict) -> None` - Finalizes task as CANCELED
58
- - `finalize_task_error(exception: Exception, a2a_context: Dict) -> None` - Async method to finalize failed tasks
59
- - `cleanup() -> None` - Cleans up resources on component shutdown
60
- - `set_agent_specific_state(key: str, value: Any) -> None` - Sets key-value pair in agent state dictionary
61
- - `get_agent_specific_state(key: str, default: Optional[Any] = None) -> Any` - Retrieves value from agent state
62
- - `get_async_loop() -> Optional[asyncio.AbstractEventLoop]` - Returns dedicated asyncio event loop
63
- - `set_agent_system_instruction_string(instruction_string: str) -> None` - Sets static system prompt injection
64
- - `set_agent_system_instruction_callback(callback_function: Callable) -> None` - Sets dynamic system prompt callback
65
- - `get_gateway_id() -> str` - Returns unique identifier for agent host instance
66
- - `submit_a2a_task(target_agent_name: str, a2a_message: A2AMessage, user_id: str, user_config: Dict[str, Any], sub_task_id: str) -> str` - Submits task to peer agent
67
- - `get_agent_context() -> Dict[str, Any]` - Returns agent context for middleware interactions
68
-
69
- **Constants/Variables:**
70
- - `info: Dict` - Metadata dictionary for SAC framework
71
- - `CORRELATION_DATA_PREFIX: str` - Prefix for cache keys when tracking peer requests
72
- - `HOST_COMPONENT_VERSION: str` - Version string of the host component
73
-
74
- **Usage Examples:**
75
- ```python
76
- # Custom initialization function example
77
- from solace_agent_mesh.agent.sac.component import SamAgentComponent
78
-
79
- def initialize_my_agent(host_component: SamAgentComponent, config: dict):
80
- """Custom initialization function for the agent."""
81
- # Store database connection in agent state
82
- db_connection = create_database_connection(config.get('db_url'))
83
- host_component.set_agent_specific_state('db_connection', db_connection)
84
-
85
- # Set custom system instruction
86
- host_component.set_agent_system_instruction_string(
87
- "You are a specialized customer service agent with access to our database."
88
- )
89
-
90
- # Tool accessing agent state
91
- def my_custom_tool(host_component: SamAgentComponent, query: str) -> str:
92
- """Tool that uses stored database connection."""
93
- db_connection = host_component.get_agent_specific_state('db_connection')
94
- if db_connection:
95
- return db_connection.execute_query(query)
96
- return "Database not available"
97
-
98
- # Scheduling async work from synchronous code
99
- def schedule_background_task(host_component: SamAgentComponent):
100
- """Schedule async work on the component's event loop."""
101
- loop = host_component.get_async_loop()
102
- if loop:
103
- asyncio.run_coroutine_threadsafe(my_async_task(), loop)
104
- ```
105
-
106
- ### patch_adk.py
107
- **Purpose:** Contains runtime patches for the Google ADK library to enhance behavior
108
- **Import:** `from solace_agent_mesh.agent.sac.patch_adk import patch_adk`
109
-
110
- **Functions:**
111
- - `patch_adk() -> None` - Applies all necessary patches to the ADK library
112
-
113
- **Usage Examples:**
114
- ```python
115
- from solace_agent_mesh.agent.sac.patch_adk import patch_adk
116
-
117
- # Apply patches before using ADK
118
- patch_adk()
119
- ```
120
-
121
- ### task_execution_context.py
122
- **Purpose:** State management class for single, in-flight agent tasks
123
- **Import:** `from solace_agent_mesh.agent.sac.task_execution_context import TaskExecutionContext`
124
-
125
- **Classes:**
126
- - `TaskExecutionContext(task_id: str, a2a_context: Dict[str, Any])` - Encapsulates runtime state for a single agent task
127
- - `cancel() -> None` - Signals that the task should be cancelled
128
- - `is_cancelled() -> bool` - Checks if cancellation event has been set
129
- - `append_to_streaming_buffer(text: str) -> None` - Appends text to streaming buffer
130
- - `flush_streaming_buffer() -> str` - Returns and clears streaming buffer content
131
- - `get_streaming_buffer_content() -> str` - Returns buffer content without clearing
132
- - `append_to_run_based_buffer(text: str) -> None` - Appends text to run-based response buffer
133
- - `register_peer_sub_task(sub_task_id: str, correlation_data: Dict[str, Any]) -> None` - Adds peer sub-task tracking
134
- - `claim_sub_task_completion(sub_task_id: str) -> Optional[Dict[str, Any]]` - Atomically retrieves and removes sub-task data
135
- - `register_parallel_call_sent(invocation_id: str) -> None` - Registers new parallel tool call
136
- - `handle_peer_timeout(sub_task_id: str, correlation_data: Dict, timeout_sec: int, invocation_id: str) -> bool` - Handles peer timeout
137
- - `record_parallel_result(result: Dict, invocation_id: str) -> bool` - Records parallel tool call result
138
- - `clear_parallel_invocation_state(invocation_id: str) -> None` - Removes completed invocation state
139
- - `register_produced_artifact(filename: str, version: int) -> None` - Tracks newly created artifacts
140
- - `add_artifact_signal(signal: Dict[str, Any]) -> None` - Adds artifact return signal
141
- - `get_and_clear_artifact_signals() -> List[Dict[str, Any]]` - Retrieves and clears artifact signals
142
- - `set_event_loop(loop: asyncio.AbstractEventLoop) -> None` - Stores event loop reference
143
- - `get_event_loop() -> Optional[asyncio.AbstractEventLoop]` - Retrieves stored event loop
144
- - `record_token_usage(input_tokens: int, output_tokens: int, model: str, source: str = "agent", tool_name: Optional[str] = None, cached_input_tokens: int = 0) -> None` - Records token usage for LLM calls
145
- - `get_token_usage_summary() -> Dict[str, Any]` - Returns summary of all token usage for the task
146
-
147
- **Usage Examples:**
148
- ```python
149
- from solace_agent_mesh.agent.sac.task_execution_context import TaskExecutionContext
150
-
151
- # Create task context
152
- a2a_context = {
153
- "logical_task_id": "task-123",
154
- "user_id": "user-456",
155
- "session_id": "session-789"
156
- }
157
- task_context = TaskExecutionContext("task-123", a2a_context)
158
-
159
- # Use streaming buffer
160
- task_context.append_to_streaming_buffer("Hello ")
161
- task_context.append_to_streaming_buffer("world!")
162
- content = task_context.flush_streaming_buffer() # Returns "Hello world!"
163
-
164
- # Track peer sub-tasks
165
- correlation_data = {
166
- "peer_agent_name": "math-agent",
167
- "adk_function_call_id": "call-123"
168
- }
169
- task_context.register_peer_sub_task("sub-task-456", correlation_data)
170
-
171
- # Handle completion
172
- completed_data = task_context.claim_sub_task_completion("sub-task-456")
173
- if completed_data:
174
- print(f"Sub-task completed: {completed_data}")
175
-
176
- # Track token usage
177
- task_context.record_token_usage(
178
- input_tokens=100,
179
- output_tokens=50,
180
- model="gemini-1.5-pro",
181
- source="agent"
182
- )
183
-
184
- # Get usage summary
185
- usage = task_context.get_token_usage_summary()
186
- print(f"Total tokens used: {usage['total_tokens']}")
187
- ```
188
-
189
- # content_hash: 27b0000d250131d578d28ab8c4d06c2e2084d888b47102e9b3b133adbc61a169
@@ -1,200 +0,0 @@
1
- # LLM Summary Detail File
2
-
3
- This file is a concatenation of all individual *llm.txt files found in the 'sac' directory tree. Each section below corresponds to a specific directory's summary file.
4
-
5
- ================================================================================
6
-
7
- ## Section 1: solace_agent_mesh/agent/sac/sac_llm.txt
8
-
9
- **Source file:** `solace_agent_mesh/agent/sac/sac_llm.txt`
10
-
11
- # DEVELOPER GUIDE for the directory: sac
12
-
13
- ## Quick Summary
14
- The `sac` (Solace AI Connector) directory provides the core implementation for hosting a Google ADK (Agent Development Kit) agent within the Solace AI Connector framework. It acts as a bridge, enabling ADK agents to communicate using the A2A (Agent-to-Agent) protocol over Solace messaging. This allows for the creation of distributed, collaborative agent systems where agents can delegate tasks, share information, and work together to solve complex problems.
15
-
16
- ## Files Overview
17
- - `__init__.py` - Empty package marker file
18
- - `app.py` - Custom SAC App class that automatically configures Solace subscriptions and broker settings for A2A communication
19
- - `component.py` - Main SAC Component that hosts the ADK agent, manages its lifecycle, and handles all A2A protocol messaging
20
- - `patch_adk.py` - Runtime patches for the Google ADK library to enhance or correct its behavior
21
- - `task_execution_context.py` - State management class that encapsulates all runtime information for a single, in-flight A2A task
22
-
23
- ## Developer API Reference
24
-
25
- ### app.py
26
- **Purpose:** Provides a custom SAC App class that simplifies the configuration of an A2A agent
27
- **Import:** `from solace_agent_mesh.agent.sac.app import SamAgentApp`
28
-
29
- **Classes:**
30
- - `SamAgentApp(app_info: Dict[str, Any], **kwargs)` - Custom App class for SAM Agent Host with namespace prefixing and automatic subscription generation
31
- - `app_schema: Dict` - Class attribute defining comprehensive configuration schema for agent host validation
32
-
33
- **Constants/Variables:**
34
- - `info: Dict[str, str]` - Metadata dictionary about the SamAgentApp class for SAC framework discovery
35
-
36
- **Usage Examples:**
37
- ```python
38
- # SamAgentApp is typically instantiated by the SAC framework from YAML config
39
- # Example agent-config.yaml:
40
- # app:
41
- # class_name: solace_agent_mesh.agent.sac.app.SamAgentApp
42
- # app_config:
43
- # namespace: "my-org/production"
44
- # agent_name: "customer-support-agent"
45
- # model: "gemini-1.5-pro-latest"
46
- # tools:
47
- # - tool_type: "builtin"
48
- # tool_name: "file_search"
49
- # agent_card:
50
- # description: "An agent that can answer questions about customer accounts."
51
- # agent_card_publishing:
52
- # interval_seconds: 60
53
- # session_service:
54
- # type: "memory"
55
- ```
56
-
57
- ### component.py
58
- **Purpose:** Core component that hosts a Google ADK agent and bridges communication to A2A protocol
59
- **Import:** `from solace_agent_mesh.agent.sac.component import SamAgentComponent`
60
-
61
- **Classes:**
62
- - `SamAgentComponent(**kwargs)` - Solace AI Connector component that hosts a Google ADK agent
63
- - `process_event(event: Event) -> None` - Main entry point for all SAC framework events
64
- - `handle_timer_event(timer_data: Dict[str, Any]) -> None` - Handles scheduled timer events for agent card publishing
65
- - `handle_cache_expiry_event(cache_data: Dict[str, Any]) -> None` - Handles cache expiry events for peer agent timeouts
66
- - `finalize_task_success(a2a_context: Dict) -> None` - Async method to finalize successful task completion
67
- - `finalize_task_canceled(a2a_context: Dict) -> None` - Finalizes task as CANCELED
68
- - `finalize_task_error(exception: Exception, a2a_context: Dict) -> None` - Async method to finalize failed tasks
69
- - `cleanup() -> None` - Cleans up resources on component shutdown
70
- - `set_agent_specific_state(key: str, value: Any) -> None` - Sets key-value pair in agent state dictionary
71
- - `get_agent_specific_state(key: str, default: Optional[Any] = None) -> Any` - Retrieves value from agent state
72
- - `get_async_loop() -> Optional[asyncio.AbstractEventLoop]` - Returns dedicated asyncio event loop
73
- - `set_agent_system_instruction_string(instruction_string: str) -> None` - Sets static system prompt injection
74
- - `set_agent_system_instruction_callback(callback_function: Callable) -> None` - Sets dynamic system prompt callback
75
- - `get_gateway_id() -> str` - Returns unique identifier for agent host instance
76
- - `submit_a2a_task(target_agent_name: str, a2a_message: A2AMessage, user_id: str, user_config: Dict[str, Any], sub_task_id: str) -> str` - Submits task to peer agent
77
- - `get_agent_context() -> Dict[str, Any]` - Returns agent context for middleware interactions
78
-
79
- **Constants/Variables:**
80
- - `info: Dict` - Metadata dictionary for SAC framework
81
- - `CORRELATION_DATA_PREFIX: str` - Prefix for cache keys when tracking peer requests
82
- - `HOST_COMPONENT_VERSION: str` - Version string of the host component
83
-
84
- **Usage Examples:**
85
- ```python
86
- # Custom initialization function example
87
- from solace_agent_mesh.agent.sac.component import SamAgentComponent
88
-
89
- def initialize_my_agent(host_component: SamAgentComponent, config: dict):
90
- """Custom initialization function for the agent."""
91
- # Store database connection in agent state
92
- db_connection = create_database_connection(config.get('db_url'))
93
- host_component.set_agent_specific_state('db_connection', db_connection)
94
-
95
- # Set custom system instruction
96
- host_component.set_agent_system_instruction_string(
97
- "You are a specialized customer service agent with access to our database."
98
- )
99
-
100
- # Tool accessing agent state
101
- def my_custom_tool(host_component: SamAgentComponent, query: str) -> str:
102
- """Tool that uses stored database connection."""
103
- db_connection = host_component.get_agent_specific_state('db_connection')
104
- if db_connection:
105
- return db_connection.execute_query(query)
106
- return "Database not available"
107
-
108
- # Scheduling async work from synchronous code
109
- def schedule_background_task(host_component: SamAgentComponent):
110
- """Schedule async work on the component's event loop."""
111
- loop = host_component.get_async_loop()
112
- if loop:
113
- asyncio.run_coroutine_threadsafe(my_async_task(), loop)
114
- ```
115
-
116
- ### patch_adk.py
117
- **Purpose:** Contains runtime patches for the Google ADK library to enhance behavior
118
- **Import:** `from solace_agent_mesh.agent.sac.patch_adk import patch_adk`
119
-
120
- **Functions:**
121
- - `patch_adk() -> None` - Applies all necessary patches to the ADK library
122
-
123
- **Usage Examples:**
124
- ```python
125
- from solace_agent_mesh.agent.sac.patch_adk import patch_adk
126
-
127
- # Apply patches before using ADK
128
- patch_adk()
129
- ```
130
-
131
- ### task_execution_context.py
132
- **Purpose:** State management class for single, in-flight agent tasks
133
- **Import:** `from solace_agent_mesh.agent.sac.task_execution_context import TaskExecutionContext`
134
-
135
- **Classes:**
136
- - `TaskExecutionContext(task_id: str, a2a_context: Dict[str, Any])` - Encapsulates runtime state for a single agent task
137
- - `cancel() -> None` - Signals that the task should be cancelled
138
- - `is_cancelled() -> bool` - Checks if cancellation event has been set
139
- - `append_to_streaming_buffer(text: str) -> None` - Appends text to streaming buffer
140
- - `flush_streaming_buffer() -> str` - Returns and clears streaming buffer content
141
- - `get_streaming_buffer_content() -> str` - Returns buffer content without clearing
142
- - `append_to_run_based_buffer(text: str) -> None` - Appends text to run-based response buffer
143
- - `register_peer_sub_task(sub_task_id: str, correlation_data: Dict[str, Any]) -> None` - Adds peer sub-task tracking
144
- - `claim_sub_task_completion(sub_task_id: str) -> Optional[Dict[str, Any]]` - Atomically retrieves and removes sub-task data
145
- - `register_parallel_call_sent(invocation_id: str) -> None` - Registers new parallel tool call
146
- - `handle_peer_timeout(sub_task_id: str, correlation_data: Dict, timeout_sec: int, invocation_id: str) -> bool` - Handles peer timeout
147
- - `record_parallel_result(result: Dict, invocation_id: str) -> bool` - Records parallel tool call result
148
- - `clear_parallel_invocation_state(invocation_id: str) -> None` - Removes completed invocation state
149
- - `register_produced_artifact(filename: str, version: int) -> None` - Tracks newly created artifacts
150
- - `add_artifact_signal(signal: Dict[str, Any]) -> None` - Adds artifact return signal
151
- - `get_and_clear_artifact_signals() -> List[Dict[str, Any]]` - Retrieves and clears artifact signals
152
- - `set_event_loop(loop: asyncio.AbstractEventLoop) -> None` - Stores event loop reference
153
- - `get_event_loop() -> Optional[asyncio.AbstractEventLoop]` - Retrieves stored event loop
154
- - `record_token_usage(input_tokens: int, output_tokens: int, model: str, source: str = "agent", tool_name: Optional[str] = None, cached_input_tokens: int = 0) -> None` - Records token usage for LLM calls
155
- - `get_token_usage_summary() -> Dict[str, Any]` - Returns summary of all token usage for the task
156
-
157
- **Usage Examples:**
158
- ```python
159
- from solace_agent_mesh.agent.sac.task_execution_context import TaskExecutionContext
160
-
161
- # Create task context
162
- a2a_context = {
163
- "logical_task_id": "task-123",
164
- "user_id": "user-456",
165
- "session_id": "session-789"
166
- }
167
- task_context = TaskExecutionContext("task-123", a2a_context)
168
-
169
- # Use streaming buffer
170
- task_context.append_to_streaming_buffer("Hello ")
171
- task_context.append_to_streaming_buffer("world!")
172
- content = task_context.flush_streaming_buffer() # Returns "Hello world!"
173
-
174
- # Track peer sub-tasks
175
- correlation_data = {
176
- "peer_agent_name": "math-agent",
177
- "adk_function_call_id": "call-123"
178
- }
179
- task_context.register_peer_sub_task("sub-task-456", correlation_data)
180
-
181
- # Handle completion
182
- completed_data = task_context.claim_sub_task_completion("sub-task-456")
183
- if completed_data:
184
- print(f"Sub-task completed: {completed_data}")
185
-
186
- # Track token usage
187
- task_context.record_token_usage(
188
- input_tokens=100,
189
- output_tokens=50,
190
- model="gemini-1.5-pro",
191
- source="agent"
192
- )
193
-
194
- # Get usage summary
195
- usage = task_context.get_token_usage_summary()
196
- print(f"Total tokens used: {usage['total_tokens']}")
197
- ```
198
-
199
- ================================================================================
200
-
@@ -1,57 +0,0 @@
1
- ## Quick Summary
2
- The `testing` directory provides utilities for testing the A2A (Agent-to-Agent) framework, with a focus on debugging tools that help developers understand test failures by providing readable representations of agent event histories.
3
-
4
- ## Files Overview
5
- - `__init__.py` - Package initialization file marking the directory as a Python module
6
- - `debug_utils.py` - Debugging utilities including pretty-printing for A2A event history
7
- - `testing_llm.txt` - Documentation file (not a code module)
8
-
9
- ## Developer API Reference
10
-
11
- ### debug_utils.py
12
- **Purpose:** Provides debugging utilities for the declarative test framework, including a pretty-printer for A2A event history
13
- **Import:** `from solace_agent_mesh.agent.testing.debug_utils import pretty_print_event_history`
14
-
15
- **Functions:**
16
- - `pretty_print_event_history(event_history: List[Dict[str, Any]], max_string_length: int = 200) -> None` - Formats and prints a list of A2A event payloads for debugging, intelligently parsing different event types and truncating long strings for readability
17
-
18
- **Usage Examples:**
19
- ```python
20
- # Import the debugging utility
21
- from solace_agent_mesh.agent.testing.debug_utils import pretty_print_event_history
22
- from typing import List, Dict, Any
23
-
24
- # Example: Debug a failed test by printing event history
25
- event_history: List[Dict[str, Any]] = [
26
- {
27
- "result": {
28
- "status": {
29
- "state": "EXECUTING",
30
- "message": {
31
- "parts": [
32
- {"type": "text", "text": "Processing your request..."}
33
- ]
34
- }
35
- },
36
- "final": False
37
- }
38
- },
39
- {
40
- "error": {
41
- "code": "TIMEOUT_ERROR",
42
- "message": "Request timed out after 30 seconds"
43
- }
44
- }
45
- ]
46
-
47
- # Print formatted event history for debugging
48
- pretty_print_event_history(event_history)
49
-
50
- # Print with custom string truncation length
51
- pretty_print_event_history(event_history, max_string_length=100)
52
-
53
- # Handle empty event history (when test fails before any events)
54
- pretty_print_event_history([])
55
- ```
56
-
57
- # content_hash: 890ba89aa47c5be30f5ec9cdbb4a05e9ee3bd022e56a56fcc4feea72aac653e8