solace-agent-mesh 0.2.4__py3-none-any.whl → 1.0.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 (521) hide show
  1. solace_agent_mesh/__init__.py +5 -0
  2. solace_agent_mesh/agent/adk/adk_llm.txt +93 -0
  3. solace_agent_mesh/agent/adk/app_llm_agent.py +26 -0
  4. solace_agent_mesh/agent/adk/callbacks.py +1716 -0
  5. solace_agent_mesh/agent/adk/filesystem_artifact_service.py +381 -0
  6. solace_agent_mesh/agent/adk/invocation_monitor.py +295 -0
  7. solace_agent_mesh/agent/adk/models/lite_llm.py +872 -0
  8. solace_agent_mesh/agent/adk/models/models_llm.txt +94 -0
  9. solace_agent_mesh/agent/adk/runner.py +357 -0
  10. solace_agent_mesh/agent/adk/services.py +240 -0
  11. solace_agent_mesh/agent/adk/setup.py +751 -0
  12. solace_agent_mesh/agent/adk/stream_parser.py +214 -0
  13. solace_agent_mesh/agent/adk/tool_wrapper.py +139 -0
  14. solace_agent_mesh/agent/agent_llm.txt +41 -0
  15. solace_agent_mesh/agent/protocol/event_handlers.py +1444 -0
  16. solace_agent_mesh/agent/protocol/protocol_llm.txt +21 -0
  17. solace_agent_mesh/agent/sac/app.py +640 -0
  18. solace_agent_mesh/agent/sac/component.py +3496 -0
  19. solace_agent_mesh/agent/sac/patch_adk.py +111 -0
  20. solace_agent_mesh/agent/sac/sac_llm.txt +105 -0
  21. solace_agent_mesh/agent/sac/task_execution_context.py +185 -0
  22. solace_agent_mesh/agent/testing/__init__.py +3 -0
  23. solace_agent_mesh/agent/testing/debug_utils.py +135 -0
  24. solace_agent_mesh/agent/testing/testing_llm.txt +90 -0
  25. solace_agent_mesh/agent/tools/__init__.py +14 -0
  26. solace_agent_mesh/agent/tools/audio_tools.py +1622 -0
  27. solace_agent_mesh/agent/tools/builtin_artifact_tools.py +1954 -0
  28. solace_agent_mesh/agent/tools/builtin_data_analysis_tools.py +238 -0
  29. solace_agent_mesh/agent/tools/general_agent_tools.py +571 -0
  30. solace_agent_mesh/agent/tools/image_tools.py +1184 -0
  31. solace_agent_mesh/agent/tools/peer_agent_tool.py +290 -0
  32. solace_agent_mesh/agent/tools/registry.py +36 -0
  33. solace_agent_mesh/agent/tools/test_tools.py +135 -0
  34. solace_agent_mesh/agent/tools/tool_definition.py +45 -0
  35. solace_agent_mesh/agent/tools/tools_llm.txt +104 -0
  36. solace_agent_mesh/agent/tools/web_tools.py +381 -0
  37. solace_agent_mesh/agent/utils/artifact_helpers.py +927 -0
  38. solace_agent_mesh/agent/utils/config_parser.py +47 -0
  39. solace_agent_mesh/agent/utils/context_helpers.py +60 -0
  40. solace_agent_mesh/agent/utils/utils_llm.txt +153 -0
  41. solace_agent_mesh/assets/docs/404.html +16 -0
  42. solace_agent_mesh/assets/docs/assets/css/styles.906a1503.css +1 -0
  43. solace_agent_mesh/assets/docs/assets/images/Solace_AI_Framework_With_Broker-85f0a306a9bcdd20b390b7a949f6d862.png +0 -0
  44. solace_agent_mesh/assets/docs/assets/images/sac-flows-80d5b603c6aafd33e87945680ce0abf3.png +0 -0
  45. solace_agent_mesh/assets/docs/assets/images/sac_parts_of_a_component-cb3d0424b1d0c17734c5435cca6b4082.png +0 -0
  46. solace_agent_mesh/assets/docs/assets/js/04989206.674a8007.js +1 -0
  47. solace_agent_mesh/assets/docs/assets/js/0e682baa.79f0ab22.js +1 -0
  48. solace_agent_mesh/assets/docs/assets/js/1001.0182a8bd.js +1 -0
  49. solace_agent_mesh/assets/docs/assets/js/1023fc19.015679ca.js +1 -0
  50. solace_agent_mesh/assets/docs/assets/js/1039.0bd46aa1.js +1 -0
  51. solace_agent_mesh/assets/docs/assets/js/149.b797a808.js +1 -0
  52. solace_agent_mesh/assets/docs/assets/js/1523c6b4.91c7bc01.js +1 -0
  53. solace_agent_mesh/assets/docs/assets/js/165.6a39807d.js +2 -0
  54. solace_agent_mesh/assets/docs/assets/js/165.6a39807d.js.LICENSE.txt +9 -0
  55. solace_agent_mesh/assets/docs/assets/js/166ab619.7d97ccaf.js +1 -0
  56. solace_agent_mesh/assets/docs/assets/js/17896441.a5e82f9b.js +2 -0
  57. solace_agent_mesh/assets/docs/assets/js/17896441.a5e82f9b.js.LICENSE.txt +7 -0
  58. solace_agent_mesh/assets/docs/assets/js/1c6e87d2.a8c5ce5a.js +1 -0
  59. solace_agent_mesh/assets/docs/assets/js/2130.ab9fd314.js +1 -0
  60. solace_agent_mesh/assets/docs/assets/js/21ceee5f.614fa8dd.js +1 -0
  61. solace_agent_mesh/assets/docs/assets/js/2237.5e477fc6.js +1 -0
  62. solace_agent_mesh/assets/docs/assets/js/2334.622a6395.js +1 -0
  63. solace_agent_mesh/assets/docs/assets/js/2a9cab12.8909df92.js +1 -0
  64. solace_agent_mesh/assets/docs/assets/js/3219.adc1d663.js +1 -0
  65. solace_agent_mesh/assets/docs/assets/js/332e10b5.7a103f42.js +1 -0
  66. solace_agent_mesh/assets/docs/assets/js/3624.b524e433.js +1 -0
  67. solace_agent_mesh/assets/docs/assets/js/375.708d48db.js +1 -0
  68. solace_agent_mesh/assets/docs/assets/js/3834.b6cd790e.js +1 -0
  69. solace_agent_mesh/assets/docs/assets/js/3d406171.f722eaf5.js +1 -0
  70. solace_agent_mesh/assets/docs/assets/js/4250.95455b28.js +1 -0
  71. solace_agent_mesh/assets/docs/assets/js/42b3f8d8.36090198.js +1 -0
  72. solace_agent_mesh/assets/docs/assets/js/4356.d169ab5b.js +1 -0
  73. solace_agent_mesh/assets/docs/assets/js/442a8107.5ba94b65.js +1 -0
  74. solace_agent_mesh/assets/docs/assets/js/4458.518e66fa.js +1 -0
  75. solace_agent_mesh/assets/docs/assets/js/4488.c7cc3442.js +1 -0
  76. solace_agent_mesh/assets/docs/assets/js/4494.6ee23046.js +1 -0
  77. solace_agent_mesh/assets/docs/assets/js/4855.fc4444b6.js +1 -0
  78. solace_agent_mesh/assets/docs/assets/js/4866.22daefc0.js +1 -0
  79. solace_agent_mesh/assets/docs/assets/js/4950.ca4caeda.js +1 -0
  80. solace_agent_mesh/assets/docs/assets/js/4c2787c2.66ee00e9.js +1 -0
  81. solace_agent_mesh/assets/docs/assets/js/5388.7a136447.js +1 -0
  82. solace_agent_mesh/assets/docs/assets/js/55f47984.c484bf96.js +1 -0
  83. solace_agent_mesh/assets/docs/assets/js/5607.081356f8.js +1 -0
  84. solace_agent_mesh/assets/docs/assets/js/5864.b0d0e9de.js +1 -0
  85. solace_agent_mesh/assets/docs/assets/js/5b4258a4.bda20761.js +1 -0
  86. solace_agent_mesh/assets/docs/assets/js/5e95c892.558d5167.js +1 -0
  87. solace_agent_mesh/assets/docs/assets/js/6143.0a1464c9.js +1 -0
  88. solace_agent_mesh/assets/docs/assets/js/6395.e9c73649.js +1 -0
  89. solace_agent_mesh/assets/docs/assets/js/6796.51d2c9b7.js +1 -0
  90. solace_agent_mesh/assets/docs/assets/js/6976.379be23b.js +1 -0
  91. solace_agent_mesh/assets/docs/assets/js/6978.ee0b945c.js +1 -0
  92. solace_agent_mesh/assets/docs/assets/js/7040.cb436723.js +1 -0
  93. solace_agent_mesh/assets/docs/assets/js/7195.412f418a.js +1 -0
  94. solace_agent_mesh/assets/docs/assets/js/7280.3fb73bdb.js +1 -0
  95. solace_agent_mesh/assets/docs/assets/js/768e31b0.a12673db.js +1 -0
  96. solace_agent_mesh/assets/docs/assets/js/7845.e33e7c4c.js +1 -0
  97. solace_agent_mesh/assets/docs/assets/js/7900.69516146.js +1 -0
  98. solace_agent_mesh/assets/docs/assets/js/8356.8a379c04.js +1 -0
  99. solace_agent_mesh/assets/docs/assets/js/85387663.6bf41934.js +1 -0
  100. solace_agent_mesh/assets/docs/assets/js/8567.4732c6b7.js +1 -0
  101. solace_agent_mesh/assets/docs/assets/js/8573.cb04eda5.js +1 -0
  102. solace_agent_mesh/assets/docs/assets/js/8577.1d54e766.js +1 -0
  103. solace_agent_mesh/assets/docs/assets/js/8591.d7c16be6.js +2 -0
  104. solace_agent_mesh/assets/docs/assets/js/8591.d7c16be6.js.LICENSE.txt +61 -0
  105. solace_agent_mesh/assets/docs/assets/js/8709.7ecd4047.js +1 -0
  106. solace_agent_mesh/assets/docs/assets/js/8731.49e930c2.js +1 -0
  107. solace_agent_mesh/assets/docs/assets/js/8908.f9d1b506.js +1 -0
  108. solace_agent_mesh/assets/docs/assets/js/9157.b4093d07.js +1 -0
  109. solace_agent_mesh/assets/docs/assets/js/9278.a4fd875d.js +1 -0
  110. solace_agent_mesh/assets/docs/assets/js/945fb41e.74d728aa.js +1 -0
  111. solace_agent_mesh/assets/docs/assets/js/9616.b75c2f6d.js +1 -0
  112. solace_agent_mesh/assets/docs/assets/js/9793.c6d16376.js +1 -0
  113. solace_agent_mesh/assets/docs/assets/js/9eff14a2.1bf8f61c.js +1 -0
  114. solace_agent_mesh/assets/docs/assets/js/a3a92b25.26ca071f.js +1 -0
  115. solace_agent_mesh/assets/docs/assets/js/a7bd4aaa.2204d2f7.js +1 -0
  116. solace_agent_mesh/assets/docs/assets/js/a94703ab.0438dbc2.js +1 -0
  117. solace_agent_mesh/assets/docs/assets/js/aba21aa0.c42a534c.js +1 -0
  118. solace_agent_mesh/assets/docs/assets/js/aba87c2f.d3e2dcc3.js +1 -0
  119. solace_agent_mesh/assets/docs/assets/js/ae4415af.8e279b5d.js +1 -0
  120. solace_agent_mesh/assets/docs/assets/js/b7006a3a.40b10c9d.js +1 -0
  121. solace_agent_mesh/assets/docs/assets/js/bac0be12.f50d9bac.js +1 -0
  122. solace_agent_mesh/assets/docs/assets/js/bb2ef573.207e6990.js +1 -0
  123. solace_agent_mesh/assets/docs/assets/js/c2c06897.63b76e9e.js +1 -0
  124. solace_agent_mesh/assets/docs/assets/js/cc969b05.954186d4.js +1 -0
  125. solace_agent_mesh/assets/docs/assets/js/cd3d4052.ca6eed8c.js +1 -0
  126. solace_agent_mesh/assets/docs/assets/js/ced92a13.fb92e7ca.js +1 -0
  127. solace_agent_mesh/assets/docs/assets/js/cee5d587.f5b73ca1.js +1 -0
  128. solace_agent_mesh/assets/docs/assets/js/f284c35a.ecc3d195.js +1 -0
  129. solace_agent_mesh/assets/docs/assets/js/f897a61a.f8c53b0f.js +1 -0
  130. solace_agent_mesh/assets/docs/assets/js/fbfa3e75.aca209c9.js +1 -0
  131. solace_agent_mesh/assets/docs/assets/js/main.c6286d7c.js +2 -0
  132. solace_agent_mesh/assets/docs/assets/js/main.c6286d7c.js.LICENSE.txt +81 -0
  133. solace_agent_mesh/assets/docs/assets/js/runtime~main.d5133813.js +1 -0
  134. solace_agent_mesh/assets/docs/docs/documentation/concepts/agents/index.html +128 -0
  135. solace_agent_mesh/assets/docs/docs/documentation/concepts/architecture/index.html +91 -0
  136. solace_agent_mesh/assets/docs/docs/documentation/concepts/cli/index.html +201 -0
  137. solace_agent_mesh/assets/docs/docs/documentation/concepts/gateways/index.html +91 -0
  138. solace_agent_mesh/assets/docs/docs/documentation/concepts/orchestrator/index.html +55 -0
  139. solace_agent_mesh/assets/docs/docs/documentation/concepts/plugins/index.html +82 -0
  140. solace_agent_mesh/assets/docs/docs/documentation/deployment/debugging/index.html +77 -0
  141. solace_agent_mesh/assets/docs/docs/documentation/deployment/deploy/index.html +48 -0
  142. solace_agent_mesh/assets/docs/docs/documentation/deployment/observability/index.html +54 -0
  143. solace_agent_mesh/assets/docs/docs/documentation/enterprise/index.html +17 -0
  144. solace_agent_mesh/assets/docs/docs/documentation/getting-started/component-overview/index.html +45 -0
  145. solace_agent_mesh/assets/docs/docs/documentation/getting-started/installation/index.html +76 -0
  146. solace_agent_mesh/assets/docs/docs/documentation/getting-started/introduction/index.html +150 -0
  147. solace_agent_mesh/assets/docs/docs/documentation/getting-started/quick-start/index.html +54 -0
  148. solace_agent_mesh/assets/docs/docs/documentation/tutorials/bedrock-agents/index.html +267 -0
  149. solace_agent_mesh/assets/docs/docs/documentation/tutorials/custom-agent/index.html +136 -0
  150. solace_agent_mesh/assets/docs/docs/documentation/tutorials/event-mesh-gateway/index.html +116 -0
  151. solace_agent_mesh/assets/docs/docs/documentation/tutorials/mcp-integration/index.html +80 -0
  152. solace_agent_mesh/assets/docs/docs/documentation/tutorials/mongodb-integration/index.html +164 -0
  153. solace_agent_mesh/assets/docs/docs/documentation/tutorials/rest-gateway/index.html +57 -0
  154. solace_agent_mesh/assets/docs/docs/documentation/tutorials/slack-integration/index.html +72 -0
  155. solace_agent_mesh/assets/docs/docs/documentation/tutorials/sql-database/index.html +102 -0
  156. solace_agent_mesh/assets/docs/docs/documentation/user-guide/builtin-tools/artifact-management/index.html +99 -0
  157. solace_agent_mesh/assets/docs/docs/documentation/user-guide/builtin-tools/audio-tools/index.html +90 -0
  158. solace_agent_mesh/assets/docs/docs/documentation/user-guide/builtin-tools/data-analysis-tools/index.html +107 -0
  159. solace_agent_mesh/assets/docs/docs/documentation/user-guide/builtin-tools/embeds/index.html +152 -0
  160. solace_agent_mesh/assets/docs/docs/documentation/user-guide/builtin-tools/index.html +103 -0
  161. solace_agent_mesh/assets/docs/docs/documentation/user-guide/create-agents/index.html +170 -0
  162. solace_agent_mesh/assets/docs/docs/documentation/user-guide/create-gateways/index.html +200 -0
  163. solace_agent_mesh/assets/docs/docs/documentation/user-guide/creating-service-providers/index.html +54 -0
  164. solace_agent_mesh/assets/docs/docs/documentation/user-guide/solace-ai-connector/index.html +69 -0
  165. solace_agent_mesh/assets/docs/docs/documentation/user-guide/structure/index.html +59 -0
  166. solace_agent_mesh/assets/docs/img/Solace_AI_Framework_README.png +0 -0
  167. solace_agent_mesh/assets/docs/img/Solace_AI_Framework_With_Broker.png +0 -0
  168. solace_agent_mesh/assets/docs/img/logo.png +0 -0
  169. solace_agent_mesh/assets/docs/img/sac-flows.png +0 -0
  170. solace_agent_mesh/assets/docs/img/sac_parts_of_a_component.png +0 -0
  171. solace_agent_mesh/assets/docs/img/solace-logo.png +0 -0
  172. solace_agent_mesh/assets/docs/lunr-index-1754075282978.json +1 -0
  173. solace_agent_mesh/assets/docs/lunr-index.json +1 -0
  174. solace_agent_mesh/assets/docs/search-doc-1754075282978.json +1 -0
  175. solace_agent_mesh/assets/docs/search-doc.json +1 -0
  176. solace_agent_mesh/assets/docs/sitemap.xml +1 -0
  177. solace_agent_mesh/cli/__init__.py +1 -1
  178. solace_agent_mesh/cli/commands/add_cmd/__init__.py +15 -0
  179. solace_agent_mesh/cli/commands/add_cmd/add_cmd_llm.txt +250 -0
  180. solace_agent_mesh/cli/commands/add_cmd/agent_cmd.py +659 -0
  181. solace_agent_mesh/cli/commands/add_cmd/gateway_cmd.py +322 -0
  182. solace_agent_mesh/cli/commands/add_cmd/web_add_agent_step.py +93 -0
  183. solace_agent_mesh/cli/commands/add_cmd/web_add_gateway_step.py +118 -0
  184. solace_agent_mesh/cli/commands/docs_cmd.py +57 -0
  185. solace_agent_mesh/cli/commands/eval_cmd.py +64 -0
  186. solace_agent_mesh/cli/commands/init_cmd/__init__.py +404 -0
  187. solace_agent_mesh/cli/commands/init_cmd/broker_step.py +201 -0
  188. solace_agent_mesh/cli/commands/init_cmd/directory_step.py +28 -0
  189. solace_agent_mesh/cli/commands/init_cmd/env_step.py +205 -0
  190. solace_agent_mesh/cli/commands/init_cmd/init_cmd_llm.txt +365 -0
  191. solace_agent_mesh/cli/commands/init_cmd/orchestrator_step.py +407 -0
  192. solace_agent_mesh/cli/commands/init_cmd/project_files_step.py +38 -0
  193. solace_agent_mesh/cli/commands/init_cmd/web_init_step.py +110 -0
  194. solace_agent_mesh/cli/commands/init_cmd/webui_gateway_step.py +183 -0
  195. solace_agent_mesh/cli/commands/plugin_cmd/__init__.py +18 -0
  196. solace_agent_mesh/cli/commands/plugin_cmd/add_cmd.py +372 -0
  197. solace_agent_mesh/cli/commands/plugin_cmd/build_cmd.py +86 -0
  198. solace_agent_mesh/cli/commands/plugin_cmd/catalog_cmd.py +139 -0
  199. solace_agent_mesh/cli/commands/plugin_cmd/create_cmd.py +309 -0
  200. solace_agent_mesh/cli/commands/plugin_cmd/official_registry.py +175 -0
  201. solace_agent_mesh/cli/commands/plugin_cmd/plugin_cmd_llm.txt +305 -0
  202. solace_agent_mesh/cli/commands/run_cmd.py +158 -0
  203. solace_agent_mesh/cli/main.py +17 -294
  204. solace_agent_mesh/cli/utils.py +135 -204
  205. solace_agent_mesh/client/webui/frontend/static/assets/authCallback-DvlO62me.js +1 -0
  206. solace_agent_mesh/client/webui/frontend/static/assets/client-bp6u3qVZ.js +49 -0
  207. solace_agent_mesh/client/webui/frontend/static/assets/favicon-BLgzUch9.ico +0 -0
  208. solace_agent_mesh/client/webui/frontend/static/assets/main-D11Lmy9p.css +1 -0
  209. solace_agent_mesh/client/webui/frontend/static/assets/main-Gfk3BYn5.js +663 -0
  210. solace_agent_mesh/client/webui/frontend/static/auth-callback.html +14 -0
  211. solace_agent_mesh/client/webui/frontend/static/index.html +15 -0
  212. solace_agent_mesh/common/__init__.py +1 -0
  213. solace_agent_mesh/common/a2a_protocol.py +564 -0
  214. solace_agent_mesh/common/agent_registry.py +42 -0
  215. solace_agent_mesh/common/client/__init__.py +4 -0
  216. solace_agent_mesh/common/client/card_resolver.py +21 -0
  217. solace_agent_mesh/common/client/client.py +85 -0
  218. solace_agent_mesh/common/client/client_llm.txt +133 -0
  219. solace_agent_mesh/common/common_llm.txt +144 -0
  220. solace_agent_mesh/common/constants.py +1 -14
  221. solace_agent_mesh/common/middleware/__init__.py +12 -0
  222. solace_agent_mesh/common/middleware/config_resolver.py +130 -0
  223. solace_agent_mesh/common/middleware/middleware_llm.txt +174 -0
  224. solace_agent_mesh/common/middleware/registry.py +125 -0
  225. solace_agent_mesh/common/server/__init__.py +4 -0
  226. solace_agent_mesh/common/server/server.py +122 -0
  227. solace_agent_mesh/common/server/server_llm.txt +169 -0
  228. solace_agent_mesh/common/server/task_manager.py +291 -0
  229. solace_agent_mesh/common/server/utils.py +28 -0
  230. solace_agent_mesh/common/services/__init__.py +4 -0
  231. solace_agent_mesh/common/services/employee_service.py +162 -0
  232. solace_agent_mesh/common/services/identity_service.py +129 -0
  233. solace_agent_mesh/common/services/providers/__init__.py +4 -0
  234. solace_agent_mesh/common/services/providers/local_file_identity_service.py +148 -0
  235. solace_agent_mesh/common/services/providers/providers_llm.txt +113 -0
  236. solace_agent_mesh/common/services/services_llm.txt +132 -0
  237. solace_agent_mesh/common/types.py +411 -0
  238. solace_agent_mesh/common/utils/__init__.py +7 -0
  239. solace_agent_mesh/common/utils/asyncio_macos_fix.py +86 -0
  240. solace_agent_mesh/common/utils/embeds/__init__.py +33 -0
  241. solace_agent_mesh/common/utils/embeds/constants.py +55 -0
  242. solace_agent_mesh/common/utils/embeds/converter.py +452 -0
  243. solace_agent_mesh/common/utils/embeds/embeds_llm.txt +124 -0
  244. solace_agent_mesh/common/utils/embeds/evaluators.py +394 -0
  245. solace_agent_mesh/common/utils/embeds/modifiers.py +816 -0
  246. solace_agent_mesh/common/utils/embeds/resolver.py +865 -0
  247. solace_agent_mesh/common/utils/embeds/types.py +14 -0
  248. solace_agent_mesh/common/utils/in_memory_cache.py +108 -0
  249. solace_agent_mesh/common/utils/initializer.py +51 -0
  250. solace_agent_mesh/common/utils/log_formatters.py +44 -0
  251. solace_agent_mesh/common/utils/mime_helpers.py +106 -0
  252. solace_agent_mesh/common/utils/push_notification_auth.py +134 -0
  253. solace_agent_mesh/common/utils/utils_llm.txt +67 -0
  254. solace_agent_mesh/config_portal/backend/common.py +66 -24
  255. solace_agent_mesh/config_portal/backend/plugin_catalog/constants.py +24 -0
  256. solace_agent_mesh/config_portal/backend/plugin_catalog/models.py +49 -0
  257. solace_agent_mesh/config_portal/backend/plugin_catalog/registry_manager.py +164 -0
  258. solace_agent_mesh/config_portal/backend/plugin_catalog/scraper.py +521 -0
  259. solace_agent_mesh/config_portal/backend/plugin_catalog_server.py +217 -0
  260. solace_agent_mesh/config_portal/backend/server.py +551 -181
  261. solace_agent_mesh/config_portal/frontend/static/client/assets/_index-_7yox_eh.js +48 -0
  262. solace_agent_mesh/config_portal/frontend/static/client/assets/components-B7lKcHVY.js +140 -0
  263. solace_agent_mesh/config_portal/frontend/static/client/assets/{entry.client-DX1misIU.js → entry.client-CEumGClk.js} +3 -3
  264. solace_agent_mesh/config_portal/frontend/static/client/assets/index-DSo1AH_7.js +68 -0
  265. solace_agent_mesh/config_portal/frontend/static/client/assets/manifest-e5c3acfe.js +1 -0
  266. solace_agent_mesh/config_portal/frontend/static/client/assets/{root-BApq5dPK.js → root-C4XmHinv.js} +2 -2
  267. solace_agent_mesh/config_portal/frontend/static/client/assets/root-DxRwaWiE.css +1 -0
  268. solace_agent_mesh/config_portal/frontend/static/client/index.html +3 -3
  269. solace_agent_mesh/core_a2a/__init__.py +1 -0
  270. solace_agent_mesh/core_a2a/core_a2a_llm.txt +88 -0
  271. solace_agent_mesh/core_a2a/service.py +331 -0
  272. solace_agent_mesh/evaluation/config_loader.py +657 -0
  273. solace_agent_mesh/evaluation/evaluator.py +667 -0
  274. solace_agent_mesh/evaluation/message_organizer.py +568 -0
  275. solace_agent_mesh/evaluation/report/benchmark_info.html +35 -0
  276. solace_agent_mesh/evaluation/report/chart_section.html +141 -0
  277. solace_agent_mesh/evaluation/report/detailed_breakdown.html +28 -0
  278. solace_agent_mesh/evaluation/report/modal.html +59 -0
  279. solace_agent_mesh/evaluation/report/modal_chart_functions.js +411 -0
  280. solace_agent_mesh/evaluation/report/modal_script.js +296 -0
  281. solace_agent_mesh/evaluation/report/modal_styles.css +340 -0
  282. solace_agent_mesh/evaluation/report/performance_metrics_styles.css +93 -0
  283. solace_agent_mesh/evaluation/report/templates/footer.html +2 -0
  284. solace_agent_mesh/evaluation/report/templates/header.html +340 -0
  285. solace_agent_mesh/evaluation/report_data_processor.py +972 -0
  286. solace_agent_mesh/evaluation/report_generator.py +613 -0
  287. solace_agent_mesh/evaluation/run.py +613 -0
  288. solace_agent_mesh/evaluation/subscriber.py +872 -0
  289. solace_agent_mesh/evaluation/summary_builder.py +775 -0
  290. solace_agent_mesh/evaluation/test_case_loader.py +714 -0
  291. solace_agent_mesh/gateway/base/__init__.py +1 -0
  292. solace_agent_mesh/gateway/base/app.py +266 -0
  293. solace_agent_mesh/gateway/base/base_llm.txt +119 -0
  294. solace_agent_mesh/gateway/base/component.py +1542 -0
  295. solace_agent_mesh/gateway/base/task_context.py +74 -0
  296. solace_agent_mesh/gateway/gateway_llm.txt +125 -0
  297. solace_agent_mesh/gateway/http_sse/app.py +190 -0
  298. solace_agent_mesh/gateway/http_sse/component.py +1602 -0
  299. solace_agent_mesh/gateway/http_sse/components/__init__.py +7 -0
  300. solace_agent_mesh/gateway/http_sse/components/components_llm.txt +65 -0
  301. solace_agent_mesh/gateway/http_sse/components/visualization_forwarder_component.py +108 -0
  302. solace_agent_mesh/gateway/http_sse/dependencies.py +316 -0
  303. solace_agent_mesh/gateway/http_sse/http_sse_llm.txt +63 -0
  304. solace_agent_mesh/gateway/http_sse/main.py +442 -0
  305. solace_agent_mesh/gateway/http_sse/routers/__init__.py +4 -0
  306. solace_agent_mesh/gateway/http_sse/routers/agents.py +41 -0
  307. solace_agent_mesh/gateway/http_sse/routers/artifacts.py +827 -0
  308. solace_agent_mesh/gateway/http_sse/routers/auth.py +212 -0
  309. solace_agent_mesh/gateway/http_sse/routers/config.py +55 -0
  310. solace_agent_mesh/gateway/http_sse/routers/people.py +69 -0
  311. solace_agent_mesh/gateway/http_sse/routers/routers_llm.txt +37 -0
  312. solace_agent_mesh/gateway/http_sse/routers/sessions.py +80 -0
  313. solace_agent_mesh/gateway/http_sse/routers/sse.py +138 -0
  314. solace_agent_mesh/gateway/http_sse/routers/tasks.py +294 -0
  315. solace_agent_mesh/gateway/http_sse/routers/users.py +59 -0
  316. solace_agent_mesh/gateway/http_sse/routers/visualization.py +1131 -0
  317. solace_agent_mesh/gateway/http_sse/services/__init__.py +4 -0
  318. solace_agent_mesh/gateway/http_sse/services/agent_service.py +69 -0
  319. solace_agent_mesh/gateway/http_sse/services/people_service.py +158 -0
  320. solace_agent_mesh/gateway/http_sse/services/services_llm.txt +179 -0
  321. solace_agent_mesh/gateway/http_sse/services/task_service.py +121 -0
  322. solace_agent_mesh/gateway/http_sse/session_manager.py +187 -0
  323. solace_agent_mesh/gateway/http_sse/sse_manager.py +328 -0
  324. solace_agent_mesh/llm.txt +228 -0
  325. solace_agent_mesh/llm_detail.txt +2835 -0
  326. solace_agent_mesh/templates/agent_template.yaml +53 -0
  327. solace_agent_mesh/templates/eval_backend_template.yaml +54 -0
  328. solace_agent_mesh/templates/gateway_app_template.py +73 -0
  329. solace_agent_mesh/templates/gateway_component_template.py +431 -0
  330. solace_agent_mesh/templates/gateway_config_template.yaml +43 -0
  331. solace_agent_mesh/templates/logging_config_template.ini +64 -0
  332. solace_agent_mesh/templates/main_orchestrator.yaml +55 -0
  333. solace_agent_mesh/templates/plugin_agent_config_template.yaml +122 -0
  334. solace_agent_mesh/templates/plugin_custom_config_template.yaml +27 -0
  335. solace_agent_mesh/templates/plugin_custom_template.py +10 -0
  336. solace_agent_mesh/templates/plugin_gateway_config_template.yaml +63 -0
  337. solace_agent_mesh/templates/plugin_pyproject_template.toml +33 -0
  338. solace_agent_mesh/templates/plugin_readme_template.md +34 -0
  339. solace_agent_mesh/templates/plugin_tools_template.py +224 -0
  340. solace_agent_mesh/templates/shared_config.yaml +66 -0
  341. solace_agent_mesh/templates/templates_llm.txt +147 -0
  342. solace_agent_mesh/templates/webui.yaml +53 -0
  343. solace_agent_mesh-1.0.2.dist-info/METADATA +432 -0
  344. solace_agent_mesh-1.0.2.dist-info/RECORD +361 -0
  345. solace_agent_mesh-1.0.2.dist-info/entry_points.txt +3 -0
  346. {solace_agent_mesh-0.2.4.dist-info → solace_agent_mesh-1.0.2.dist-info}/licenses/LICENSE +1 -1
  347. solace_agent_mesh/agents/base_agent_component.py +0 -256
  348. solace_agent_mesh/agents/global/actions/agent_state_change.py +0 -54
  349. solace_agent_mesh/agents/global/actions/clear_history.py +0 -32
  350. solace_agent_mesh/agents/global/actions/convert_file_to_markdown.py +0 -160
  351. solace_agent_mesh/agents/global/actions/create_file.py +0 -70
  352. solace_agent_mesh/agents/global/actions/error_action.py +0 -45
  353. solace_agent_mesh/agents/global/actions/plantuml_diagram.py +0 -163
  354. solace_agent_mesh/agents/global/actions/plotly_graph.py +0 -152
  355. solace_agent_mesh/agents/global/actions/retrieve_file.py +0 -51
  356. solace_agent_mesh/agents/global/global_agent_component.py +0 -38
  357. solace_agent_mesh/agents/image_processing/actions/create_image.py +0 -75
  358. solace_agent_mesh/agents/image_processing/actions/describe_image.py +0 -115
  359. solace_agent_mesh/agents/image_processing/image_processing_agent_component.py +0 -23
  360. solace_agent_mesh/agents/slack/__init__.py +0 -1
  361. solace_agent_mesh/agents/slack/actions/__init__.py +0 -1
  362. solace_agent_mesh/agents/slack/actions/post_message.py +0 -177
  363. solace_agent_mesh/agents/slack/slack_agent_component.py +0 -59
  364. solace_agent_mesh/agents/web_request/actions/do_image_search.py +0 -84
  365. solace_agent_mesh/agents/web_request/actions/do_news_search.py +0 -47
  366. solace_agent_mesh/agents/web_request/actions/do_suggestion_search.py +0 -34
  367. solace_agent_mesh/agents/web_request/actions/do_web_request.py +0 -135
  368. solace_agent_mesh/agents/web_request/actions/download_file.py +0 -69
  369. solace_agent_mesh/agents/web_request/web_request_agent_component.py +0 -33
  370. solace_agent_mesh/assets/web-visualizer/assets/index-D0qORgkg.css +0 -1
  371. solace_agent_mesh/assets/web-visualizer/assets/index-DnDr1pnu.js +0 -109
  372. solace_agent_mesh/assets/web-visualizer/index.html +0 -14
  373. solace_agent_mesh/assets/web-visualizer/vite.svg +0 -1
  374. solace_agent_mesh/cli/commands/add/__init__.py +0 -3
  375. solace_agent_mesh/cli/commands/add/add.py +0 -88
  376. solace_agent_mesh/cli/commands/add/agent.py +0 -110
  377. solace_agent_mesh/cli/commands/add/copy_from_plugin.py +0 -92
  378. solace_agent_mesh/cli/commands/add/gateway.py +0 -374
  379. solace_agent_mesh/cli/commands/build.py +0 -670
  380. solace_agent_mesh/cli/commands/chat/__init__.py +0 -3
  381. solace_agent_mesh/cli/commands/chat/chat.py +0 -361
  382. solace_agent_mesh/cli/commands/config.py +0 -29
  383. solace_agent_mesh/cli/commands/init/__init__.py +0 -3
  384. solace_agent_mesh/cli/commands/init/ai_provider_step.py +0 -93
  385. solace_agent_mesh/cli/commands/init/broker_step.py +0 -99
  386. solace_agent_mesh/cli/commands/init/builtin_agent_step.py +0 -83
  387. solace_agent_mesh/cli/commands/init/check_if_already_done.py +0 -13
  388. solace_agent_mesh/cli/commands/init/create_config_file_step.py +0 -65
  389. solace_agent_mesh/cli/commands/init/create_other_project_files_step.py +0 -147
  390. solace_agent_mesh/cli/commands/init/file_service_step.py +0 -73
  391. solace_agent_mesh/cli/commands/init/init.py +0 -92
  392. solace_agent_mesh/cli/commands/init/project_structure_step.py +0 -16
  393. solace_agent_mesh/cli/commands/init/web_init_step.py +0 -32
  394. solace_agent_mesh/cli/commands/plugin/__init__.py +0 -3
  395. solace_agent_mesh/cli/commands/plugin/add.py +0 -100
  396. solace_agent_mesh/cli/commands/plugin/build.py +0 -268
  397. solace_agent_mesh/cli/commands/plugin/create.py +0 -117
  398. solace_agent_mesh/cli/commands/plugin/plugin.py +0 -124
  399. solace_agent_mesh/cli/commands/plugin/remove.py +0 -73
  400. solace_agent_mesh/cli/commands/run.py +0 -68
  401. solace_agent_mesh/cli/commands/visualizer.py +0 -138
  402. solace_agent_mesh/cli/config.py +0 -85
  403. solace_agent_mesh/common/action.py +0 -91
  404. solace_agent_mesh/common/action_list.py +0 -37
  405. solace_agent_mesh/common/action_response.py +0 -340
  406. solace_agent_mesh/common/mysql_database.py +0 -40
  407. solace_agent_mesh/common/postgres_database.py +0 -85
  408. solace_agent_mesh/common/prompt_templates.py +0 -28
  409. solace_agent_mesh/common/stimulus_utils.py +0 -152
  410. solace_agent_mesh/common/time.py +0 -24
  411. solace_agent_mesh/common/utils.py +0 -712
  412. solace_agent_mesh/config_portal/frontend/static/client/assets/_index-a-zJ6rLx.js +0 -46
  413. solace_agent_mesh/config_portal/frontend/static/client/assets/components-ZIfdTbrV.js +0 -191
  414. solace_agent_mesh/config_portal/frontend/static/client/assets/index-BJHAE5s4.js +0 -17
  415. solace_agent_mesh/config_portal/frontend/static/client/assets/manifest-44c41103.js +0 -1
  416. solace_agent_mesh/config_portal/frontend/static/client/assets/root-DX4gQ516.css +0 -1
  417. solace_agent_mesh/configs/agent_global.yaml +0 -74
  418. solace_agent_mesh/configs/agent_image_processing.yaml +0 -82
  419. solace_agent_mesh/configs/agent_slack.yaml +0 -64
  420. solace_agent_mesh/configs/agent_web_request.yaml +0 -75
  421. solace_agent_mesh/configs/conversation_to_file.yaml +0 -56
  422. solace_agent_mesh/configs/error_catcher.yaml +0 -56
  423. solace_agent_mesh/configs/monitor.yaml +0 -0
  424. solace_agent_mesh/configs/monitor_stim_and_errors_to_slack.yaml +0 -109
  425. solace_agent_mesh/configs/monitor_user_feedback.yaml +0 -58
  426. solace_agent_mesh/configs/orchestrator.yaml +0 -241
  427. solace_agent_mesh/configs/service_embedding.yaml +0 -81
  428. solace_agent_mesh/configs/service_llm.yaml +0 -265
  429. solace_agent_mesh/configs/visualize_websocket.yaml +0 -55
  430. solace_agent_mesh/gateway/components/gateway_base.py +0 -47
  431. solace_agent_mesh/gateway/components/gateway_input.py +0 -278
  432. solace_agent_mesh/gateway/components/gateway_output.py +0 -298
  433. solace_agent_mesh/gateway/identity/bamboohr_identity.py +0 -18
  434. solace_agent_mesh/gateway/identity/identity_base.py +0 -10
  435. solace_agent_mesh/gateway/identity/identity_provider.py +0 -60
  436. solace_agent_mesh/gateway/identity/no_identity.py +0 -9
  437. solace_agent_mesh/gateway/identity/passthru_identity.py +0 -9
  438. solace_agent_mesh/monitors/base_monitor_component.py +0 -26
  439. solace_agent_mesh/monitors/feedback/user_feedback_monitor.py +0 -75
  440. solace_agent_mesh/monitors/stim_and_errors/stim_and_error_monitor.py +0 -560
  441. solace_agent_mesh/orchestrator/__init__.py +0 -0
  442. solace_agent_mesh/orchestrator/action_manager.py +0 -237
  443. solace_agent_mesh/orchestrator/components/__init__.py +0 -0
  444. solace_agent_mesh/orchestrator/components/orchestrator_action_manager_timeout_component.py +0 -58
  445. solace_agent_mesh/orchestrator/components/orchestrator_action_response_component.py +0 -179
  446. solace_agent_mesh/orchestrator/components/orchestrator_register_component.py +0 -107
  447. solace_agent_mesh/orchestrator/components/orchestrator_stimulus_processor_component.py +0 -527
  448. solace_agent_mesh/orchestrator/components/orchestrator_streaming_output_component.py +0 -260
  449. solace_agent_mesh/orchestrator/orchestrator_main.py +0 -172
  450. solace_agent_mesh/orchestrator/orchestrator_prompt.py +0 -539
  451. solace_agent_mesh/services/__init__.py +0 -0
  452. solace_agent_mesh/services/authorization/providers/base_authorization_provider.py +0 -56
  453. solace_agent_mesh/services/bamboo_hr_service/__init__.py +0 -3
  454. solace_agent_mesh/services/bamboo_hr_service/bamboo_hr.py +0 -182
  455. solace_agent_mesh/services/common/__init__.py +0 -4
  456. solace_agent_mesh/services/common/auto_expiry.py +0 -45
  457. solace_agent_mesh/services/common/singleton.py +0 -18
  458. solace_agent_mesh/services/file_service/__init__.py +0 -14
  459. solace_agent_mesh/services/file_service/file_manager/__init__.py +0 -0
  460. solace_agent_mesh/services/file_service/file_manager/bucket_file_manager.py +0 -149
  461. solace_agent_mesh/services/file_service/file_manager/file_manager_base.py +0 -162
  462. solace_agent_mesh/services/file_service/file_manager/memory_file_manager.py +0 -64
  463. solace_agent_mesh/services/file_service/file_manager/volume_file_manager.py +0 -106
  464. solace_agent_mesh/services/file_service/file_service.py +0 -437
  465. solace_agent_mesh/services/file_service/file_service_constants.py +0 -54
  466. solace_agent_mesh/services/file_service/file_transformations.py +0 -141
  467. solace_agent_mesh/services/file_service/file_utils.py +0 -324
  468. solace_agent_mesh/services/file_service/transformers/__init__.py +0 -5
  469. solace_agent_mesh/services/history_service/__init__.py +0 -3
  470. solace_agent_mesh/services/history_service/history_providers/__init__.py +0 -0
  471. solace_agent_mesh/services/history_service/history_providers/base_history_provider.py +0 -54
  472. solace_agent_mesh/services/history_service/history_providers/file_history_provider.py +0 -74
  473. solace_agent_mesh/services/history_service/history_providers/index.py +0 -40
  474. solace_agent_mesh/services/history_service/history_providers/memory_history_provider.py +0 -33
  475. solace_agent_mesh/services/history_service/history_providers/mongodb_history_provider.py +0 -66
  476. solace_agent_mesh/services/history_service/history_providers/redis_history_provider.py +0 -66
  477. solace_agent_mesh/services/history_service/history_providers/sql_history_provider.py +0 -93
  478. solace_agent_mesh/services/history_service/history_service.py +0 -413
  479. solace_agent_mesh/services/history_service/long_term_memory/__init__.py +0 -0
  480. solace_agent_mesh/services/history_service/long_term_memory/long_term_memory.py +0 -399
  481. solace_agent_mesh/services/llm_service/components/llm_request_component.py +0 -340
  482. solace_agent_mesh/services/llm_service/components/llm_service_component_base.py +0 -152
  483. solace_agent_mesh/services/middleware_service/__init__.py +0 -0
  484. solace_agent_mesh/services/middleware_service/middleware_service.py +0 -20
  485. solace_agent_mesh/templates/action.py +0 -38
  486. solace_agent_mesh/templates/agent.py +0 -29
  487. solace_agent_mesh/templates/agent.yaml +0 -70
  488. solace_agent_mesh/templates/gateway-config-template.yaml +0 -6
  489. solace_agent_mesh/templates/gateway-default-config.yaml +0 -28
  490. solace_agent_mesh/templates/gateway-flows.yaml +0 -78
  491. solace_agent_mesh/templates/gateway-header.yaml +0 -16
  492. solace_agent_mesh/templates/gateway_base.py +0 -15
  493. solace_agent_mesh/templates/gateway_input.py +0 -98
  494. solace_agent_mesh/templates/gateway_output.py +0 -71
  495. solace_agent_mesh/templates/plugin-gateway-default-config.yaml +0 -29
  496. solace_agent_mesh/templates/plugin-pyproject.toml +0 -30
  497. solace_agent_mesh/templates/rest-api-default-config.yaml +0 -31
  498. solace_agent_mesh/templates/rest-api-flows.yaml +0 -81
  499. solace_agent_mesh/templates/slack-default-config.yaml +0 -16
  500. solace_agent_mesh/templates/slack-flows.yaml +0 -81
  501. solace_agent_mesh/templates/solace-agent-mesh-default.yaml +0 -86
  502. solace_agent_mesh/templates/solace-agent-mesh-plugin-default.yaml +0 -8
  503. solace_agent_mesh/templates/web-default-config.yaml +0 -10
  504. solace_agent_mesh/templates/web-flows.yaml +0 -76
  505. solace_agent_mesh/tools/__init__.py +0 -0
  506. solace_agent_mesh/tools/components/__init__.py +0 -0
  507. solace_agent_mesh/tools/components/conversation_formatter.py +0 -111
  508. solace_agent_mesh/tools/components/file_resolver_component.py +0 -58
  509. solace_agent_mesh/tools/config/runtime_config.py +0 -26
  510. solace_agent_mesh-0.2.4.dist-info/METADATA +0 -176
  511. solace_agent_mesh-0.2.4.dist-info/RECORD +0 -193
  512. solace_agent_mesh-0.2.4.dist-info/entry_points.txt +0 -3
  513. /solace_agent_mesh/{agents → agent}/__init__.py +0 -0
  514. /solace_agent_mesh/{agents/global → agent/adk}/__init__.py +0 -0
  515. /solace_agent_mesh/{agents/global/actions → agent/protocol}/__init__.py +0 -0
  516. /solace_agent_mesh/{agents/image_processing → agent/sac}/__init__.py +0 -0
  517. /solace_agent_mesh/{agents/image_processing/actions → agent/utils}/__init__.py +0 -0
  518. /solace_agent_mesh/{agents/web_request → config_portal/backend/plugin_catalog}/__init__.py +0 -0
  519. /solace_agent_mesh/{agents/web_request/actions → evaluation}/__init__.py +0 -0
  520. /solace_agent_mesh/gateway/{components → http_sse}/__init__.py +0 -0
  521. {solace_agent_mesh-0.2.4.dist-info → solace_agent_mesh-1.0.2.dist-info}/WHEEL +0 -0
@@ -0,0 +1,21 @@
1
+ ## Quick Summary
2
+ 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.
3
+
4
+ ## Files Overview
5
+ - `__init__.py` - An empty file that marks the directory as a Python package.
6
+ - `event_handlers.py` - Contains the primary logic for handling all A2A protocol events, including routing incoming messages to the correct processors, managing task execution, and handling agent discovery.
7
+
8
+ ## Developer API Reference
9
+
10
+ ### __init__.py
11
+ **Purpose:** Standard Python package initialization file.
12
+ **Import:** `from src.solace_agent_mesh.agent.protocol import *`
13
+
14
+ This is an empty package initialization file and has no public interfaces.
15
+
16
+ ### event_handlers.py
17
+ **Purpose:** This file is the central hub for processing all events related to the A2A protocol. It receives events from the Solace AI Connector framework, determines their type (e.g., new task request, peer agent response, discovery message, timer), and routes them to the appropriate handler function. It manages the lifecycle of tasks, from initiation and cancellation to handling responses from peer agents.
18
+ **Import:** `from src.solace_agent_mesh.agent.protocol.event_handlers import process_event, handle_a2a_request, handle_agent_card_message, handle_a2a_response, publish_agent_card`
19
+
20
+ **Functions:**
21
+ - `process_event(component: "SamAgentComponent", event: Event
@@ -0,0 +1,640 @@
1
+ import sys
2
+ import os
3
+
4
+ sys.path.insert(
5
+ 0, os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(__file__))))
6
+ )
7
+
8
+ from common.utils.asyncio_macos_fix import ensure_asyncio_compatibility
9
+ from .patch_adk import patch_adk
10
+ from solace_ai_connector.common.log import log
11
+
12
+ ensure_asyncio_compatibility()
13
+ patch_adk()
14
+
15
+ from typing import Any, Dict
16
+ from solace_ai_connector.flow.app import App
17
+ from solace_ai_connector.common.log import log
18
+
19
+ from ...common.a2a_protocol import (
20
+ get_agent_request_topic,
21
+ get_discovery_topic,
22
+ get_agent_response_subscription_topic,
23
+ get_agent_status_subscription_topic,
24
+ )
25
+ from ...common.constants import DEFAULT_COMMUNICATION_TIMEOUT
26
+ from ...agent.sac.component import SamAgentComponent
27
+ from ...agent.utils.artifact_helpers import DEFAULT_SCHEMA_MAX_KEYS
28
+
29
+ info = {
30
+ "class_name": "SamAgentApp",
31
+ "description": "Custom App class for SAM Agent Host with namespace prefixing and automatic subscription generation.",
32
+ }
33
+
34
+
35
+ class SamAgentApp(App):
36
+ """
37
+ Custom App class for SAM Agent Host that automatically generates
38
+ the required Solace subscriptions based on namespace and agent name,
39
+ and programmatically defines the single SamAgentComponent instance.
40
+ It also defines the expected configuration structure via `app_schema`.
41
+ """
42
+
43
+ app_schema = {
44
+ "config_parameters": [
45
+ # --- A2A Config (Flattened) ---
46
+ {
47
+ "name": "namespace",
48
+ "required": True,
49
+ "type": "string",
50
+ "description": "Absolute topic prefix for A2A communication (e.g., 'myorg/dev').",
51
+ },
52
+ {
53
+ "name": "supports_streaming",
54
+ "required": False,
55
+ "type": "boolean",
56
+ "default": False,
57
+ "description": "Whether this host supports A2A streaming (tasks/sendSubscribe).",
58
+ },
59
+ # --- Core ADK Agent Definition ---
60
+ {
61
+ "name": "agent_name",
62
+ "required": True,
63
+ "type": "string",
64
+ "description": "Unique name for this ADK agent instance.",
65
+ },
66
+ {
67
+ "name": "model",
68
+ "required": True,
69
+ "type": "any",
70
+ "description": "ADK model name (string) or BaseLlm config dict.",
71
+ },
72
+ {
73
+ "name": "instruction",
74
+ "required": False,
75
+ "type": "any",
76
+ "default": "",
77
+ "description": "User-provided instructions for the ADK agent (string or invoke block).",
78
+ },
79
+ {
80
+ "name": "global_instruction",
81
+ "required": False,
82
+ "type": "any",
83
+ "default": "",
84
+ "description": "User-provided global instructions for the agent tree (string or invoke block).",
85
+ },
86
+ {
87
+ "name": "tools",
88
+ "required": False,
89
+ "type": "list",
90
+ "default": [],
91
+ "description": "List of tool configurations (python, mcp, built-in). Each tool can have 'required_scopes'.",
92
+ "items": { # Schema for each item in the tools list
93
+ "type": "object",
94
+ "properties": {
95
+ "tool_type": {
96
+ "type": "string",
97
+ "required": True,
98
+ "enum": ["python", "mcp", "builtin", "builtin-group"],
99
+ "description": "Type of the tool.",
100
+ },
101
+ "tool_name": {
102
+ "type": "string",
103
+ "required": False, # Required for mcp/builtin, optional for python
104
+ "description": "Name of the tool (e.g., ADK built-in name, specific MCP tool name). Overwrite function_name for python tools.",
105
+ },
106
+ "tool_description": {
107
+ "type": "string",
108
+ "required": False, # Optional, Only for python
109
+ "description": "Description of the tool to overwrite for python tools. Overwrite the python function description",
110
+ },
111
+ "component_module": { # For python tools
112
+ "type": "string",
113
+ "required": False,
114
+ "description": "Python module for 'python' tool type.",
115
+ },
116
+ "function_name": { # For python tools
117
+ "type": "string",
118
+ "required": False,
119
+ "description": "Function name within the module for 'python' tool type.",
120
+ },
121
+ "component_base_path": { # For python tools
122
+ "type": "string",
123
+ "required": False,
124
+ "description": "Base path for 'python' tool module resolution.",
125
+ },
126
+ "connection_params": { # For mcp tools
127
+ "type": "object",
128
+ "required": False,
129
+ "description": "Connection parameters for 'mcp' tool type.",
130
+ },
131
+ "environment_variables": { # For mcp tools (stdio)
132
+ "type": "object",
133
+ "required": False,
134
+ "description": "Environment variables for 'mcp' tool type with stdio connection.",
135
+ },
136
+ "required_scopes": {
137
+ "type": "list",
138
+ "required": False,
139
+ "default": [],
140
+ "description": "List of scope strings required to use this specific tool.",
141
+ "items": {"type": "string"},
142
+ },
143
+ "tool_config": {
144
+ "type": "object",
145
+ "required": False,
146
+ "default": {},
147
+ "description": "A dictionary holding specific configuration for this tool instance (e.g., API keys, model names for an image generation tool).",
148
+ "additionalProperties": True,
149
+ },
150
+ },
151
+ },
152
+ },
153
+ {
154
+ "name": "data_tools_config",
155
+ "required": False,
156
+ "type": "object",
157
+ "default": {},
158
+ "description": "Runtime configuration parameters for built-in data analysis tools.",
159
+ "properties": {
160
+ "sqlite_memory_threshold_mb": {
161
+ "type": "integer",
162
+ "required": False,
163
+ "default": 100,
164
+ "description": "Size threshold (MB) for using in-memory vs. temp file SQLite DB for CSV input.",
165
+ },
166
+ "max_result_preview_rows": {
167
+ "type": "integer",
168
+ "required": False,
169
+ "default": 50,
170
+ "description": "Max rows to return in preview for SQL/JQ results.",
171
+ },
172
+ "max_result_preview_bytes": {
173
+ "type": "integer",
174
+ "required": False,
175
+ "default": 4096,
176
+ "description": "Max bytes to return in preview for SQL/JQ results (if row limit not hit first).",
177
+ },
178
+ },
179
+ },
180
+ {
181
+ "name": "planner",
182
+ "required": False,
183
+ "type": "object",
184
+ "default": None,
185
+ "description": "Optional configuration for an ADK planner.",
186
+ },
187
+ {
188
+ "name": "code_executor",
189
+ "required": False,
190
+ "type": "object",
191
+ "default": None,
192
+ "description": "Optional configuration for an ADK code executor.",
193
+ },
194
+ {
195
+ "name": "inject_current_time",
196
+ "required": False,
197
+ "type": "boolean",
198
+ "default": True,
199
+ "description": "Whether to inject the current time into the agent's instruction.",
200
+ },
201
+ # --- ADK Services Configuration ---
202
+ {
203
+ "name": "session_service",
204
+ "required": True,
205
+ "type": "object",
206
+ "description": "Configuration for ADK Session Service (e.g., { type: 'memory' }).",
207
+ "default": {"type": "memory", "default_behavior": "PERSISTENT"},
208
+ "properties": {
209
+ "type": {
210
+ "type": "string",
211
+ "required": True,
212
+ "description": "Service type (e.g., 'memory', 'vertex_rag').",
213
+ },
214
+ "default_behavior": {
215
+ "type": "string",
216
+ "required": False,
217
+ "default": "PERSISTENT",
218
+ "enum": ["PERSISTENT", "RUN_BASED"],
219
+ "description": "Default behavior for session service: 'PERSISTENT' (default) or 'RUN_BASED' for how long to keep the session history.",
220
+ },
221
+ },
222
+ },
223
+ {
224
+ "name": "artifact_service",
225
+ "required": False,
226
+ "type": "object",
227
+ "default": {"type": "memory"},
228
+ "description": "Configuration for ADK Artifact Service (defaults to memory).",
229
+ "properties": {
230
+ "type": {
231
+ "type": "string",
232
+ "required": True,
233
+ "description": "Service type (e.g., 'memory', 'gcs', 'filesystem').",
234
+ },
235
+ "base_path": {
236
+ "type": "string",
237
+ "required": False, # Required only if type is filesystem
238
+ "description": "Base directory path (required for type 'filesystem').",
239
+ },
240
+ "bucket_name": {
241
+ "type": "string",
242
+ "required": False, # Required only if type is gcs
243
+ "description": "GCS bucket name (required for type 'gcs').",
244
+ },
245
+ "artifact_scope": {
246
+ "type": "string",
247
+ "required": False,
248
+ "default": "namespace",
249
+ "enum": ["namespace", "app", "custom"],
250
+ "description": "Scope for filesystem artifacts: 'namespace' (default, shared by namespace), 'app' (isolated by app name), 'custom' (use artifact_scope_value).",
251
+ },
252
+ "artifact_scope_value": {
253
+ "type": "string",
254
+ "required": False,
255
+ "default": None,
256
+ "description": "Custom identifier for artifact scope (required if artifact_scope is 'custom').",
257
+ },
258
+ },
259
+ },
260
+ {
261
+ "name": "memory_service",
262
+ "required": False,
263
+ "type": "object",
264
+ "default": {"type": "memory"},
265
+ "description": "Configuration for ADK Memory Service (defaults to memory).",
266
+ },
267
+ # --- Tool Output Handling (Generalized) ---
268
+ {
269
+ "name": "tool_output_save_threshold_bytes",
270
+ "required": False,
271
+ "type": "integer",
272
+ "default": 2048, # 2KB
273
+ "description": "If any tool's processed output (e.g., extracted content from an artifact, MCP response) exceeds this size (bytes), its full content is saved as a new ADK artifact. This threshold should generally be less than or equal to tool_output_llm_return_max_bytes.",
274
+ },
275
+ {
276
+ "name": "tool_output_llm_return_max_bytes",
277
+ "required": False,
278
+ "type": "integer",
279
+ "default": 4096, # 4KB
280
+ "description": "Maximum size (bytes) of any tool's (potentially summarized or original) output content returned directly to the LLM. If exceeded, the content will be truncated, and the full original output will be saved as an artifact if not already.",
281
+ },
282
+ # --- LLM-Powered Artifact Extraction Tool Config ---
283
+ {
284
+ "name": "extract_content_from_artifact_config",
285
+ "required": False,
286
+ "type": "object",
287
+ "default": {},
288
+ "description": "Configuration for the LLM-powered artifact extraction tool.",
289
+ "properties": {
290
+ "supported_binary_mime_types": {
291
+ "type": "list",
292
+ "required": False,
293
+ "default": [],
294
+ "items": {"type": "string"},
295
+ "description": "List of binary MIME type patterns (e.g., 'image/png', 'image/*', 'video/mp4') that the tool should attempt to process using its internal LLM.",
296
+ },
297
+ "model": {
298
+ "type": "any", # Union[str, Dict[str, Any]]
299
+ "required": False,
300
+ "default": None,
301
+ "description": "Specifies the LLM for extraction. String (ADK LLMRegistry name) or dict (LiteLlm config). Defaults to agent's LLM.",
302
+ },
303
+ },
304
+ },
305
+ # --- Artifact Handling ---
306
+ {
307
+ "name": "artifact_handling_mode",
308
+ "required": False,
309
+ "type": "string",
310
+ "default": "ignore",
311
+ "description": "How to represent created artifacts in A2A messages: 'ignore' (default), 'embed' (include base64 data), 'reference' (include fetch URI).",
312
+ },
313
+ # --- Schema Inference Config ---
314
+ {
315
+ "name": "schema_max_keys",
316
+ "required": False,
317
+ "type": "integer",
318
+ "default": DEFAULT_SCHEMA_MAX_KEYS,
319
+ "description": "Maximum number of dictionary keys to inspect during schema inference.",
320
+ },
321
+ # --- Embed Resolution Config ---
322
+ {
323
+ "name": "enable_embed_resolution",
324
+ "required": False,
325
+ "type": "boolean",
326
+ "default": True,
327
+ "description": "Enable early-stage processing (state, math, etc.) of dynamic embeds and inject related instructions.",
328
+ },
329
+ {
330
+ "name": "enable_auto_continuation",
331
+ "required": False,
332
+ "type": "boolean",
333
+ "default": True,
334
+ "description": "If true, automatically attempts to continue LLM generation if it is interrupted by a token limit.",
335
+ },
336
+ {
337
+ "name": "stream_batching_threshold_bytes",
338
+ "required": False,
339
+ "type": "integer",
340
+ "default": 0,
341
+ "description": "Minimum size in bytes for accumulated text from LLM stream before sending a status update. If 0 or less, batching is disabled and updates are sent per chunk. Final LLM chunks are always sent regardless of this threshold.",
342
+ },
343
+ {
344
+ "name": "enable_artifact_content_instruction",
345
+ "required": False,
346
+ "type": "boolean",
347
+ "default": True,
348
+ "description": "Inject instructions about the 'artifact_content' embed type (resolved late-stage, typically by a gateway).",
349
+ },
350
+ # --- Agent Card Definition (Simplified) ---
351
+ {
352
+ "name": "agent_card",
353
+ "required": True,
354
+ "type": "object",
355
+ "description": "Static definition of this agent's capabilities for discovery.",
356
+ "properties": {
357
+ "description": {
358
+ "type": "string",
359
+ "required": False,
360
+ "default": "",
361
+ "description": "Concise agent description for discovery.",
362
+ },
363
+ "defaultInputModes": {
364
+ "type": "list",
365
+ "required": False,
366
+ "default": ["text"],
367
+ "description": "Supported input content types.",
368
+ },
369
+ "defaultOutputModes": {
370
+ "type": "list",
371
+ "required": False,
372
+ "default": ["text"],
373
+ "description": "Supported output content types.",
374
+ },
375
+ "skills": {
376
+ "type": "list",
377
+ "required": False,
378
+ "default": [],
379
+ "description": "List of advertised agent skills (A2A AgentSkill structure).",
380
+ },
381
+ "documentationUrl": {
382
+ "type": "string",
383
+ "required": False,
384
+ "default": None,
385
+ "description": "Optional URL for agent documentation.",
386
+ },
387
+ "provider": {
388
+ "type": "object",
389
+ "required": False,
390
+ "default": None,
391
+ "description": "Optional provider information (A2A AgentProvider structure).",
392
+ "properties": {
393
+ "organization": {"type": "string", "required": True},
394
+ "url": {"type": "string", "required": False},
395
+ },
396
+ },
397
+ },
398
+ },
399
+ # --- Agent Discovery & Communication ---
400
+ {
401
+ "name": "agent_card_publishing",
402
+ "required": True,
403
+ "type": "object",
404
+ "description": "Settings for publishing the agent card.",
405
+ "properties": {
406
+ "interval_seconds": {
407
+ "type": "integer",
408
+ "required": True,
409
+ "description": "Publish interval (seconds). <= 0 disables periodic publish.",
410
+ }
411
+ },
412
+ },
413
+ {
414
+ "name": "agent_discovery",
415
+ "required": True,
416
+ "type": "object",
417
+ "description": "Settings for discovering other agents and injecting related instructions.",
418
+ "properties": {
419
+ "enabled": {
420
+ "type": "boolean",
421
+ "required": False,
422
+ "default": True,
423
+ "description": "Enable discovery and instruction injection.",
424
+ }
425
+ },
426
+ },
427
+ {
428
+ "name": "inter_agent_communication",
429
+ "required": True,
430
+ "type": "object",
431
+ "description": "Configuration for interacting with peer agents.",
432
+ "properties": {
433
+ "allow_list": {
434
+ "type": "list",
435
+ "required": False,
436
+ "default": ["*"],
437
+ "description": "Agent name patterns to allow delegation to.",
438
+ },
439
+ "deny_list": {
440
+ "type": "list",
441
+ "required": False,
442
+ "default": [],
443
+ "description": "Agent name patterns to deny delegation to.",
444
+ },
445
+ "request_timeout_seconds": {
446
+ "type": "integer",
447
+ "required": False,
448
+ "default": DEFAULT_COMMUNICATION_TIMEOUT,
449
+ "description": "Timeout for peer requests (seconds).",
450
+ },
451
+ },
452
+ },
453
+ {
454
+ "name": "inject_system_purpose",
455
+ "required": False,
456
+ "type": "boolean",
457
+ "default": False,
458
+ "description": "If true, injects the system_purpose received from the gateway (via task metadata) into the agent's prompt.",
459
+ },
460
+ {
461
+ "name": "inject_response_format",
462
+ "required": False,
463
+ "type": "boolean",
464
+ "default": False,
465
+ "description": "If true, injects the response_format received from the gateway (via task metadata) into the agent's prompt.",
466
+ },
467
+ {
468
+ "name": "inject_user_profile",
469
+ "required": False,
470
+ "type": "boolean",
471
+ "default": False,
472
+ "description": "If true, injects the user_profile received from the gateway (via task metadata) into the agent's prompt.",
473
+ },
474
+ # --- Configurable Agent Initialization ---
475
+ {
476
+ "name": "agent_init_function",
477
+ "required": False,
478
+ "type": "object",
479
+ "description": "Configuration for the agent's custom initialization function.",
480
+ "properties": {
481
+ "module": {
482
+ "type": "string",
483
+ "required": True,
484
+ "description": "Python module path for the init function (e.g., 'my_plugin.initializers').",
485
+ },
486
+ "name": {
487
+ "type": "string",
488
+ "required": True,
489
+ "description": "Name of the init function within the module.",
490
+ },
491
+ "base_path": {
492
+ "type": "string",
493
+ "required": False,
494
+ "description": "Optional base path for module resolution if not in PYTHONPATH.",
495
+ },
496
+ "config": {
497
+ "type": "object",
498
+ "required": False,
499
+ "default": {},
500
+ "additionalProperties": True,
501
+ "description": "Configuration dictionary for the init function, validated by its Pydantic model.",
502
+ },
503
+ },
504
+ },
505
+ # --- Configurable Agent Cleanup ---
506
+ {
507
+ "name": "agent_cleanup_function",
508
+ "required": False,
509
+ "type": "object",
510
+ "description": "Configuration for the agent's custom cleanup function.",
511
+ "properties": {
512
+ "module": {
513
+ "type": "string",
514
+ "required": True,
515
+ "description": "Python module path for the cleanup function.",
516
+ },
517
+ "name": {
518
+ "type": "string",
519
+ "required": True,
520
+ "description": "Name of the cleanup function within the module.",
521
+ },
522
+ "base_path": {
523
+ "type": "string",
524
+ "required": False,
525
+ "description": "Optional base path for module resolution.",
526
+ },
527
+ },
528
+ },
529
+ {
530
+ "name": "text_artifact_content_max_length",
531
+ "required": False,
532
+ "type": "integer",
533
+ "default": 1000,
534
+ "minimum": 100,
535
+ "maximum": 100000,
536
+ "description": "Maximum character length for text-based artifact content (100-100000 characters). Binary artifacts are unaffected.",
537
+ },
538
+ {
539
+ "name": "max_llm_calls_per_task",
540
+ "required": False,
541
+ "type": "integer",
542
+ "default": 20,
543
+ "description": "Maximum number of LLM calls allowed for a single A2A task. A value of 0 or less means unlimited.",
544
+ },
545
+ ]
546
+ }
547
+
548
+ def __init__(self, app_info: Dict[str, Any], **kwargs):
549
+ log.debug("Initializing A2A_ADK_App...")
550
+
551
+ app_config = app_info.get("app_config", {})
552
+ namespace = app_config.get("namespace")
553
+ agent_name = app_config.get("agent_name")
554
+
555
+ if not namespace or not isinstance(namespace, str):
556
+ raise ValueError(
557
+ "Internal Error: Namespace missing or invalid after validation."
558
+ )
559
+ if not agent_name or not isinstance(agent_name, str):
560
+ raise ValueError(
561
+ "Internal Error: Agent name missing or invalid after validation."
562
+ )
563
+
564
+ artifact_mode = app_config.get("artifact_handling_mode", "ignore").lower()
565
+ if artifact_mode not in ["ignore", "embed", "reference"]:
566
+ log.warning(
567
+ "Invalid 'artifact_handling_mode' value '%s' in app_config. Using 'ignore'. Allowed values: 'ignore', 'embed', 'reference'.",
568
+ artifact_mode,
569
+ )
570
+ app_config["artifact_handling_mode"] = "ignore"
571
+
572
+ schema_max_keys = app_config.get("schema_max_keys", DEFAULT_SCHEMA_MAX_KEYS)
573
+ if not isinstance(schema_max_keys, int) or schema_max_keys < 0:
574
+ log.warning(
575
+ "Invalid 'schema_max_keys' value '%s' in app_config. Using default: %d.",
576
+ schema_max_keys,
577
+ DEFAULT_SCHEMA_MAX_KEYS,
578
+ )
579
+ app_config["schema_max_keys"] = DEFAULT_SCHEMA_MAX_KEYS
580
+
581
+ artifact_service_config = app_config.get("artifact_service", {})
582
+ if artifact_service_config.get("type") == "filesystem":
583
+ artifact_scope = artifact_service_config.get("artifact_scope", "namespace")
584
+ if artifact_scope == "custom" and not artifact_service_config.get(
585
+ "artifact_scope_value"
586
+ ):
587
+ raise ValueError(
588
+ "Configuration Error: 'artifact_scope_value' is required when 'artifact_scope' is 'custom'."
589
+ )
590
+ if artifact_scope != "custom" and artifact_service_config.get(
591
+ "artifact_scope_value"
592
+ ):
593
+ log.warning(
594
+ "Configuration Warning: 'artifact_scope_value' is ignored when 'artifact_scope' is not 'custom'."
595
+ )
596
+
597
+ log.info(
598
+ "Configuring A2A_ADK_App for Agent: '%s' in Namespace: '%s'",
599
+ agent_name,
600
+ namespace,
601
+ )
602
+
603
+ required_topics = [
604
+ get_agent_request_topic(namespace, agent_name),
605
+ get_discovery_topic(namespace),
606
+ get_agent_response_subscription_topic(namespace, agent_name),
607
+ get_agent_status_subscription_topic(namespace, agent_name),
608
+ ]
609
+ generated_subs = [{"topic": topic} for topic in required_topics]
610
+ log.info(
611
+ "Automatically generated subscriptions for Agent '%s': %s",
612
+ agent_name,
613
+ generated_subs,
614
+ )
615
+
616
+ component_definition = {
617
+ "name": f"{agent_name}_host",
618
+ "component_class": SamAgentComponent,
619
+ "component_config": {},
620
+ "subscriptions": generated_subs,
621
+ }
622
+
623
+ app_info["components"] = [component_definition]
624
+ log.debug("Replaced 'components' in app_info with programmatic definition.")
625
+
626
+ broker_config = app_info.setdefault("broker", {})
627
+
628
+ broker_config["input_enabled"] = True
629
+ broker_config["output_enabled"] = True
630
+ log.debug("Injected broker.input_enabled=True and broker.output_enabled=True")
631
+
632
+ generated_queue_name = f"{namespace.strip('/')}/q/a2a/{agent_name}"
633
+ broker_config["queue_name"] = generated_queue_name
634
+ log.debug("Injected generated broker.queue_name: %s", generated_queue_name)
635
+
636
+ broker_config["temporary_queue"] = True
637
+ log.debug("Set broker_config.temporary_queue = True")
638
+
639
+ super().__init__(app_info, **kwargs)
640
+ log.debug("A2A_ADK_App initialization complete.")