solace-agent-mesh 0.2.4__py3-none-any.whl → 1.0.1__py3-none-any.whl

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

Potentially problematic release.


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

Files changed (518) hide show
  1. solace_agent_mesh/agent/adk/adk_llm.txt +93 -0
  2. solace_agent_mesh/agent/adk/app_llm_agent.py +26 -0
  3. solace_agent_mesh/agent/adk/callbacks.py +1694 -0
  4. solace_agent_mesh/agent/adk/filesystem_artifact_service.py +381 -0
  5. solace_agent_mesh/agent/adk/invocation_monitor.py +295 -0
  6. solace_agent_mesh/agent/adk/models/lite_llm.py +872 -0
  7. solace_agent_mesh/agent/adk/models/models_llm.txt +94 -0
  8. solace_agent_mesh/agent/adk/runner.py +353 -0
  9. solace_agent_mesh/agent/adk/services.py +240 -0
  10. solace_agent_mesh/agent/adk/setup.py +751 -0
  11. solace_agent_mesh/agent/adk/stream_parser.py +214 -0
  12. solace_agent_mesh/agent/adk/tool_wrapper.py +139 -0
  13. solace_agent_mesh/agent/agent_llm.txt +41 -0
  14. solace_agent_mesh/agent/protocol/event_handlers.py +1469 -0
  15. solace_agent_mesh/agent/protocol/protocol_llm.txt +21 -0
  16. solace_agent_mesh/agent/sac/app.py +640 -0
  17. solace_agent_mesh/agent/sac/component.py +3388 -0
  18. solace_agent_mesh/agent/sac/patch_adk.py +111 -0
  19. solace_agent_mesh/agent/sac/sac_llm.txt +105 -0
  20. solace_agent_mesh/agent/sac/task_execution_context.py +176 -0
  21. solace_agent_mesh/agent/testing/__init__.py +3 -0
  22. solace_agent_mesh/agent/testing/debug_utils.py +135 -0
  23. solace_agent_mesh/agent/testing/testing_llm.txt +90 -0
  24. solace_agent_mesh/agent/tools/__init__.py +14 -0
  25. solace_agent_mesh/agent/tools/audio_tools.py +1622 -0
  26. solace_agent_mesh/agent/tools/builtin_artifact_tools.py +1954 -0
  27. solace_agent_mesh/agent/tools/builtin_data_analysis_tools.py +238 -0
  28. solace_agent_mesh/agent/tools/general_agent_tools.py +569 -0
  29. solace_agent_mesh/agent/tools/image_tools.py +1184 -0
  30. solace_agent_mesh/agent/tools/peer_agent_tool.py +289 -0
  31. solace_agent_mesh/agent/tools/registry.py +36 -0
  32. solace_agent_mesh/agent/tools/test_tools.py +135 -0
  33. solace_agent_mesh/agent/tools/tool_definition.py +45 -0
  34. solace_agent_mesh/agent/tools/tools_llm.txt +104 -0
  35. solace_agent_mesh/agent/tools/web_tools.py +381 -0
  36. solace_agent_mesh/agent/utils/artifact_helpers.py +927 -0
  37. solace_agent_mesh/agent/utils/config_parser.py +47 -0
  38. solace_agent_mesh/agent/utils/context_helpers.py +60 -0
  39. solace_agent_mesh/agent/utils/utils_llm.txt +153 -0
  40. solace_agent_mesh/assets/docs/404.html +16 -0
  41. solace_agent_mesh/assets/docs/assets/css/styles.906a1503.css +1 -0
  42. solace_agent_mesh/assets/docs/assets/images/Solace_AI_Framework_With_Broker-85f0a306a9bcdd20b390b7a949f6d862.png +0 -0
  43. solace_agent_mesh/assets/docs/assets/images/sac-flows-80d5b603c6aafd33e87945680ce0abf3.png +0 -0
  44. solace_agent_mesh/assets/docs/assets/images/sac_parts_of_a_component-cb3d0424b1d0c17734c5435cca6b4082.png +0 -0
  45. solace_agent_mesh/assets/docs/assets/js/04989206.674a8007.js +1 -0
  46. solace_agent_mesh/assets/docs/assets/js/0e682baa.79f0ab22.js +1 -0
  47. solace_agent_mesh/assets/docs/assets/js/1001.0182a8bd.js +1 -0
  48. solace_agent_mesh/assets/docs/assets/js/1023fc19.015679ca.js +1 -0
  49. solace_agent_mesh/assets/docs/assets/js/1039.0bd46aa1.js +1 -0
  50. solace_agent_mesh/assets/docs/assets/js/149.b797a808.js +1 -0
  51. solace_agent_mesh/assets/docs/assets/js/1523c6b4.91c7bc01.js +1 -0
  52. solace_agent_mesh/assets/docs/assets/js/165.6a39807d.js +2 -0
  53. solace_agent_mesh/assets/docs/assets/js/165.6a39807d.js.LICENSE.txt +9 -0
  54. solace_agent_mesh/assets/docs/assets/js/166ab619.7d97ccaf.js +1 -0
  55. solace_agent_mesh/assets/docs/assets/js/17896441.a5e82f9b.js +2 -0
  56. solace_agent_mesh/assets/docs/assets/js/17896441.a5e82f9b.js.LICENSE.txt +7 -0
  57. solace_agent_mesh/assets/docs/assets/js/1c6e87d2.23bccffb.js +1 -0
  58. solace_agent_mesh/assets/docs/assets/js/2130.ab9fd314.js +1 -0
  59. solace_agent_mesh/assets/docs/assets/js/21ceee5f.614fa8dd.js +1 -0
  60. solace_agent_mesh/assets/docs/assets/js/2237.5e477fc6.js +1 -0
  61. solace_agent_mesh/assets/docs/assets/js/2334.622a6395.js +1 -0
  62. solace_agent_mesh/assets/docs/assets/js/2a9cab12.8909df92.js +1 -0
  63. solace_agent_mesh/assets/docs/assets/js/3219.adc1d663.js +1 -0
  64. solace_agent_mesh/assets/docs/assets/js/332e10b5.7a103f42.js +1 -0
  65. solace_agent_mesh/assets/docs/assets/js/3624.b524e433.js +1 -0
  66. solace_agent_mesh/assets/docs/assets/js/375.708d48db.js +1 -0
  67. solace_agent_mesh/assets/docs/assets/js/3834.b6cd790e.js +1 -0
  68. solace_agent_mesh/assets/docs/assets/js/3d406171.f722eaf5.js +1 -0
  69. solace_agent_mesh/assets/docs/assets/js/4250.95455b28.js +1 -0
  70. solace_agent_mesh/assets/docs/assets/js/42b3f8d8.36090198.js +1 -0
  71. solace_agent_mesh/assets/docs/assets/js/4356.d169ab5b.js +1 -0
  72. solace_agent_mesh/assets/docs/assets/js/442a8107.5ba94b65.js +1 -0
  73. solace_agent_mesh/assets/docs/assets/js/4458.518e66fa.js +1 -0
  74. solace_agent_mesh/assets/docs/assets/js/4488.c7cc3442.js +1 -0
  75. solace_agent_mesh/assets/docs/assets/js/4494.6ee23046.js +1 -0
  76. solace_agent_mesh/assets/docs/assets/js/4855.fc4444b6.js +1 -0
  77. solace_agent_mesh/assets/docs/assets/js/4866.22daefc0.js +1 -0
  78. solace_agent_mesh/assets/docs/assets/js/4950.ca4caeda.js +1 -0
  79. solace_agent_mesh/assets/docs/assets/js/4c2787c2.66ee00e9.js +1 -0
  80. solace_agent_mesh/assets/docs/assets/js/5388.7a136447.js +1 -0
  81. solace_agent_mesh/assets/docs/assets/js/55f47984.c484bf96.js +1 -0
  82. solace_agent_mesh/assets/docs/assets/js/5607.081356f8.js +1 -0
  83. solace_agent_mesh/assets/docs/assets/js/5864.b0d0e9de.js +1 -0
  84. solace_agent_mesh/assets/docs/assets/js/5b4258a4.bda20761.js +1 -0
  85. solace_agent_mesh/assets/docs/assets/js/5e95c892.558d5167.js +1 -0
  86. solace_agent_mesh/assets/docs/assets/js/6143.0a1464c9.js +1 -0
  87. solace_agent_mesh/assets/docs/assets/js/6395.e9c73649.js +1 -0
  88. solace_agent_mesh/assets/docs/assets/js/6796.51d2c9b7.js +1 -0
  89. solace_agent_mesh/assets/docs/assets/js/6976.379be23b.js +1 -0
  90. solace_agent_mesh/assets/docs/assets/js/6978.ee0b945c.js +1 -0
  91. solace_agent_mesh/assets/docs/assets/js/7040.cb436723.js +1 -0
  92. solace_agent_mesh/assets/docs/assets/js/7195.412f418a.js +1 -0
  93. solace_agent_mesh/assets/docs/assets/js/7280.3fb73bdb.js +1 -0
  94. solace_agent_mesh/assets/docs/assets/js/768e31b0.a12673db.js +1 -0
  95. solace_agent_mesh/assets/docs/assets/js/7845.e33e7c4c.js +1 -0
  96. solace_agent_mesh/assets/docs/assets/js/7900.69516146.js +1 -0
  97. solace_agent_mesh/assets/docs/assets/js/8356.8a379c04.js +1 -0
  98. solace_agent_mesh/assets/docs/assets/js/85387663.6bf41934.js +1 -0
  99. solace_agent_mesh/assets/docs/assets/js/8567.4732c6b7.js +1 -0
  100. solace_agent_mesh/assets/docs/assets/js/8573.cb04eda5.js +1 -0
  101. solace_agent_mesh/assets/docs/assets/js/8577.1d54e766.js +1 -0
  102. solace_agent_mesh/assets/docs/assets/js/8591.d7c16be6.js +2 -0
  103. solace_agent_mesh/assets/docs/assets/js/8591.d7c16be6.js.LICENSE.txt +61 -0
  104. solace_agent_mesh/assets/docs/assets/js/8709.7ecd4047.js +1 -0
  105. solace_agent_mesh/assets/docs/assets/js/8731.49e930c2.js +1 -0
  106. solace_agent_mesh/assets/docs/assets/js/8908.f9d1b506.js +1 -0
  107. solace_agent_mesh/assets/docs/assets/js/9157.b4093d07.js +1 -0
  108. solace_agent_mesh/assets/docs/assets/js/9278.a4fd875d.js +1 -0
  109. solace_agent_mesh/assets/docs/assets/js/945fb41e.74d728aa.js +1 -0
  110. solace_agent_mesh/assets/docs/assets/js/9616.b75c2f6d.js +1 -0
  111. solace_agent_mesh/assets/docs/assets/js/9793.c6d16376.js +1 -0
  112. solace_agent_mesh/assets/docs/assets/js/9eff14a2.1bf8f61c.js +1 -0
  113. solace_agent_mesh/assets/docs/assets/js/a3a92b25.26ca071f.js +1 -0
  114. solace_agent_mesh/assets/docs/assets/js/a7bd4aaa.2204d2f7.js +1 -0
  115. solace_agent_mesh/assets/docs/assets/js/a94703ab.0438dbc2.js +1 -0
  116. solace_agent_mesh/assets/docs/assets/js/aba21aa0.c42a534c.js +1 -0
  117. solace_agent_mesh/assets/docs/assets/js/aba87c2f.d3e2dcc3.js +1 -0
  118. solace_agent_mesh/assets/docs/assets/js/ae4415af.8e279b5d.js +1 -0
  119. solace_agent_mesh/assets/docs/assets/js/b7006a3a.40b10c9d.js +1 -0
  120. solace_agent_mesh/assets/docs/assets/js/bac0be12.f50d9bac.js +1 -0
  121. solace_agent_mesh/assets/docs/assets/js/bb2ef573.207e6990.js +1 -0
  122. solace_agent_mesh/assets/docs/assets/js/c2c06897.63b76e9e.js +1 -0
  123. solace_agent_mesh/assets/docs/assets/js/cc969b05.954186d4.js +1 -0
  124. solace_agent_mesh/assets/docs/assets/js/cd3d4052.ca6eed8c.js +1 -0
  125. solace_agent_mesh/assets/docs/assets/js/ced92a13.fb92e7ca.js +1 -0
  126. solace_agent_mesh/assets/docs/assets/js/cee5d587.f5b73ca1.js +1 -0
  127. solace_agent_mesh/assets/docs/assets/js/f284c35a.ecc3d195.js +1 -0
  128. solace_agent_mesh/assets/docs/assets/js/f897a61a.2c2e152c.js +1 -0
  129. solace_agent_mesh/assets/docs/assets/js/fbfa3e75.aca209c9.js +1 -0
  130. solace_agent_mesh/assets/docs/assets/js/main.7ed3319f.js +2 -0
  131. solace_agent_mesh/assets/docs/assets/js/main.7ed3319f.js.LICENSE.txt +81 -0
  132. solace_agent_mesh/assets/docs/assets/js/runtime~main.d9520ae2.js +1 -0
  133. solace_agent_mesh/assets/docs/docs/documentation/concepts/agents/index.html +128 -0
  134. solace_agent_mesh/assets/docs/docs/documentation/concepts/architecture/index.html +91 -0
  135. solace_agent_mesh/assets/docs/docs/documentation/concepts/cli/index.html +201 -0
  136. solace_agent_mesh/assets/docs/docs/documentation/concepts/gateways/index.html +91 -0
  137. solace_agent_mesh/assets/docs/docs/documentation/concepts/orchestrator/index.html +55 -0
  138. solace_agent_mesh/assets/docs/docs/documentation/concepts/plugins/index.html +82 -0
  139. solace_agent_mesh/assets/docs/docs/documentation/deployment/debugging/index.html +60 -0
  140. solace_agent_mesh/assets/docs/docs/documentation/deployment/deploy/index.html +48 -0
  141. solace_agent_mesh/assets/docs/docs/documentation/deployment/observability/index.html +54 -0
  142. solace_agent_mesh/assets/docs/docs/documentation/enterprise/index.html +17 -0
  143. solace_agent_mesh/assets/docs/docs/documentation/getting-started/component-overview/index.html +45 -0
  144. solace_agent_mesh/assets/docs/docs/documentation/getting-started/installation/index.html +76 -0
  145. solace_agent_mesh/assets/docs/docs/documentation/getting-started/introduction/index.html +150 -0
  146. solace_agent_mesh/assets/docs/docs/documentation/getting-started/quick-start/index.html +54 -0
  147. solace_agent_mesh/assets/docs/docs/documentation/tutorials/bedrock-agents/index.html +267 -0
  148. solace_agent_mesh/assets/docs/docs/documentation/tutorials/custom-agent/index.html +136 -0
  149. solace_agent_mesh/assets/docs/docs/documentation/tutorials/event-mesh-gateway/index.html +116 -0
  150. solace_agent_mesh/assets/docs/docs/documentation/tutorials/mcp-integration/index.html +80 -0
  151. solace_agent_mesh/assets/docs/docs/documentation/tutorials/mongodb-integration/index.html +164 -0
  152. solace_agent_mesh/assets/docs/docs/documentation/tutorials/rest-gateway/index.html +57 -0
  153. solace_agent_mesh/assets/docs/docs/documentation/tutorials/slack-integration/index.html +72 -0
  154. solace_agent_mesh/assets/docs/docs/documentation/tutorials/sql-database/index.html +102 -0
  155. solace_agent_mesh/assets/docs/docs/documentation/user-guide/builtin-tools/artifact-management/index.html +99 -0
  156. solace_agent_mesh/assets/docs/docs/documentation/user-guide/builtin-tools/audio-tools/index.html +90 -0
  157. solace_agent_mesh/assets/docs/docs/documentation/user-guide/builtin-tools/data-analysis-tools/index.html +107 -0
  158. solace_agent_mesh/assets/docs/docs/documentation/user-guide/builtin-tools/embeds/index.html +152 -0
  159. solace_agent_mesh/assets/docs/docs/documentation/user-guide/builtin-tools/index.html +103 -0
  160. solace_agent_mesh/assets/docs/docs/documentation/user-guide/create-agents/index.html +170 -0
  161. solace_agent_mesh/assets/docs/docs/documentation/user-guide/create-gateways/index.html +200 -0
  162. solace_agent_mesh/assets/docs/docs/documentation/user-guide/creating-service-providers/index.html +54 -0
  163. solace_agent_mesh/assets/docs/docs/documentation/user-guide/solace-ai-connector/index.html +69 -0
  164. solace_agent_mesh/assets/docs/docs/documentation/user-guide/structure/index.html +59 -0
  165. solace_agent_mesh/assets/docs/img/Solace_AI_Framework_README.png +0 -0
  166. solace_agent_mesh/assets/docs/img/Solace_AI_Framework_With_Broker.png +0 -0
  167. solace_agent_mesh/assets/docs/img/logo.png +0 -0
  168. solace_agent_mesh/assets/docs/img/sac-flows.png +0 -0
  169. solace_agent_mesh/assets/docs/img/sac_parts_of_a_component.png +0 -0
  170. solace_agent_mesh/assets/docs/img/solace-logo.png +0 -0
  171. solace_agent_mesh/assets/docs/lunr-index-1753813536522.json +1 -0
  172. solace_agent_mesh/assets/docs/lunr-index.json +1 -0
  173. solace_agent_mesh/assets/docs/search-doc-1753813536522.json +1 -0
  174. solace_agent_mesh/assets/docs/search-doc.json +1 -0
  175. solace_agent_mesh/assets/docs/sitemap.xml +1 -0
  176. solace_agent_mesh/cli/__init__.py +1 -1
  177. solace_agent_mesh/cli/commands/add_cmd/__init__.py +15 -0
  178. solace_agent_mesh/cli/commands/add_cmd/add_cmd_llm.txt +250 -0
  179. solace_agent_mesh/cli/commands/add_cmd/agent_cmd.py +659 -0
  180. solace_agent_mesh/cli/commands/add_cmd/gateway_cmd.py +322 -0
  181. solace_agent_mesh/cli/commands/add_cmd/web_add_agent_step.py +93 -0
  182. solace_agent_mesh/cli/commands/add_cmd/web_add_gateway_step.py +118 -0
  183. solace_agent_mesh/cli/commands/docs_cmd.py +57 -0
  184. solace_agent_mesh/cli/commands/eval_cmd.py +64 -0
  185. solace_agent_mesh/cli/commands/init_cmd/__init__.py +404 -0
  186. solace_agent_mesh/cli/commands/init_cmd/broker_step.py +201 -0
  187. solace_agent_mesh/cli/commands/init_cmd/directory_step.py +28 -0
  188. solace_agent_mesh/cli/commands/init_cmd/env_step.py +197 -0
  189. solace_agent_mesh/cli/commands/init_cmd/init_cmd_llm.txt +365 -0
  190. solace_agent_mesh/cli/commands/init_cmd/orchestrator_step.py +387 -0
  191. solace_agent_mesh/cli/commands/init_cmd/project_files_step.py +38 -0
  192. solace_agent_mesh/cli/commands/init_cmd/web_init_step.py +110 -0
  193. solace_agent_mesh/cli/commands/init_cmd/webui_gateway_step.py +183 -0
  194. solace_agent_mesh/cli/commands/plugin_cmd/__init__.py +18 -0
  195. solace_agent_mesh/cli/commands/plugin_cmd/add_cmd.py +372 -0
  196. solace_agent_mesh/cli/commands/plugin_cmd/build_cmd.py +86 -0
  197. solace_agent_mesh/cli/commands/plugin_cmd/catalog_cmd.py +138 -0
  198. solace_agent_mesh/cli/commands/plugin_cmd/create_cmd.py +309 -0
  199. solace_agent_mesh/cli/commands/plugin_cmd/official_registry.py +174 -0
  200. solace_agent_mesh/cli/commands/plugin_cmd/plugin_cmd_llm.txt +305 -0
  201. solace_agent_mesh/cli/commands/run_cmd.py +158 -0
  202. solace_agent_mesh/cli/main.py +17 -294
  203. solace_agent_mesh/cli/utils.py +135 -204
  204. solace_agent_mesh/client/webui/frontend/static/assets/authCallback-DvlO62me.js +1 -0
  205. solace_agent_mesh/client/webui/frontend/static/assets/client-bp6u3qVZ.js +49 -0
  206. solace_agent_mesh/client/webui/frontend/static/assets/favicon-BLgzUch9.ico +0 -0
  207. solace_agent_mesh/client/webui/frontend/static/assets/main-An0a5j5k.js +663 -0
  208. solace_agent_mesh/client/webui/frontend/static/assets/main-Bu5-4Bac.css +1 -0
  209. solace_agent_mesh/client/webui/frontend/static/auth-callback.html +14 -0
  210. solace_agent_mesh/client/webui/frontend/static/index.html +15 -0
  211. solace_agent_mesh/common/__init__.py +1 -0
  212. solace_agent_mesh/common/a2a_protocol.py +564 -0
  213. solace_agent_mesh/common/agent_registry.py +42 -0
  214. solace_agent_mesh/common/client/__init__.py +4 -0
  215. solace_agent_mesh/common/client/card_resolver.py +21 -0
  216. solace_agent_mesh/common/client/client.py +85 -0
  217. solace_agent_mesh/common/client/client_llm.txt +133 -0
  218. solace_agent_mesh/common/common_llm.txt +144 -0
  219. solace_agent_mesh/common/constants.py +1 -14
  220. solace_agent_mesh/common/middleware/__init__.py +12 -0
  221. solace_agent_mesh/common/middleware/config_resolver.py +130 -0
  222. solace_agent_mesh/common/middleware/middleware_llm.txt +174 -0
  223. solace_agent_mesh/common/middleware/registry.py +125 -0
  224. solace_agent_mesh/common/server/__init__.py +4 -0
  225. solace_agent_mesh/common/server/server.py +122 -0
  226. solace_agent_mesh/common/server/server_llm.txt +169 -0
  227. solace_agent_mesh/common/server/task_manager.py +291 -0
  228. solace_agent_mesh/common/server/utils.py +28 -0
  229. solace_agent_mesh/common/services/__init__.py +4 -0
  230. solace_agent_mesh/common/services/employee_service.py +162 -0
  231. solace_agent_mesh/common/services/identity_service.py +129 -0
  232. solace_agent_mesh/common/services/providers/__init__.py +4 -0
  233. solace_agent_mesh/common/services/providers/local_file_identity_service.py +148 -0
  234. solace_agent_mesh/common/services/providers/providers_llm.txt +113 -0
  235. solace_agent_mesh/common/services/services_llm.txt +132 -0
  236. solace_agent_mesh/common/types.py +411 -0
  237. solace_agent_mesh/common/utils/__init__.py +7 -0
  238. solace_agent_mesh/common/utils/asyncio_macos_fix.py +86 -0
  239. solace_agent_mesh/common/utils/embeds/__init__.py +33 -0
  240. solace_agent_mesh/common/utils/embeds/constants.py +55 -0
  241. solace_agent_mesh/common/utils/embeds/converter.py +452 -0
  242. solace_agent_mesh/common/utils/embeds/embeds_llm.txt +124 -0
  243. solace_agent_mesh/common/utils/embeds/evaluators.py +394 -0
  244. solace_agent_mesh/common/utils/embeds/modifiers.py +816 -0
  245. solace_agent_mesh/common/utils/embeds/resolver.py +865 -0
  246. solace_agent_mesh/common/utils/embeds/types.py +14 -0
  247. solace_agent_mesh/common/utils/in_memory_cache.py +108 -0
  248. solace_agent_mesh/common/utils/log_formatters.py +44 -0
  249. solace_agent_mesh/common/utils/mime_helpers.py +106 -0
  250. solace_agent_mesh/common/utils/push_notification_auth.py +134 -0
  251. solace_agent_mesh/common/utils/utils_llm.txt +67 -0
  252. solace_agent_mesh/config_portal/backend/common.py +66 -24
  253. solace_agent_mesh/config_portal/backend/plugin_catalog/constants.py +23 -0
  254. solace_agent_mesh/config_portal/backend/plugin_catalog/models.py +49 -0
  255. solace_agent_mesh/config_portal/backend/plugin_catalog/registry_manager.py +160 -0
  256. solace_agent_mesh/config_portal/backend/plugin_catalog/scraper.py +525 -0
  257. solace_agent_mesh/config_portal/backend/plugin_catalog_server.py +216 -0
  258. solace_agent_mesh/config_portal/backend/server.py +550 -181
  259. solace_agent_mesh/config_portal/frontend/static/client/assets/_index-DNxCwAGB.js +48 -0
  260. solace_agent_mesh/config_portal/frontend/static/client/assets/components-B7lKcHVY.js +140 -0
  261. solace_agent_mesh/config_portal/frontend/static/client/assets/{entry.client-DX1misIU.js → entry.client-CEumGClk.js} +3 -3
  262. solace_agent_mesh/config_portal/frontend/static/client/assets/index-DSo1AH_7.js +68 -0
  263. solace_agent_mesh/config_portal/frontend/static/client/assets/manifest-d2b54a97.js +1 -0
  264. solace_agent_mesh/config_portal/frontend/static/client/assets/{root-BApq5dPK.js → root-C4XmHinv.js} +2 -2
  265. solace_agent_mesh/config_portal/frontend/static/client/assets/root-DxRwaWiE.css +1 -0
  266. solace_agent_mesh/config_portal/frontend/static/client/index.html +3 -3
  267. solace_agent_mesh/core_a2a/__init__.py +1 -0
  268. solace_agent_mesh/core_a2a/core_a2a_llm.txt +88 -0
  269. solace_agent_mesh/core_a2a/service.py +331 -0
  270. solace_agent_mesh/evaluation/config_loader.py +657 -0
  271. solace_agent_mesh/evaluation/evaluator.py +667 -0
  272. solace_agent_mesh/evaluation/message_organizer.py +568 -0
  273. solace_agent_mesh/evaluation/report/benchmark_info.html +35 -0
  274. solace_agent_mesh/evaluation/report/chart_section.html +141 -0
  275. solace_agent_mesh/evaluation/report/detailed_breakdown.html +28 -0
  276. solace_agent_mesh/evaluation/report/modal.html +59 -0
  277. solace_agent_mesh/evaluation/report/modal_chart_functions.js +411 -0
  278. solace_agent_mesh/evaluation/report/modal_script.js +296 -0
  279. solace_agent_mesh/evaluation/report/modal_styles.css +340 -0
  280. solace_agent_mesh/evaluation/report/performance_metrics_styles.css +93 -0
  281. solace_agent_mesh/evaluation/report/templates/footer.html +2 -0
  282. solace_agent_mesh/evaluation/report/templates/header.html +340 -0
  283. solace_agent_mesh/evaluation/report_data_processor.py +972 -0
  284. solace_agent_mesh/evaluation/report_generator.py +613 -0
  285. solace_agent_mesh/evaluation/run.py +613 -0
  286. solace_agent_mesh/evaluation/subscriber.py +872 -0
  287. solace_agent_mesh/evaluation/summary_builder.py +775 -0
  288. solace_agent_mesh/evaluation/test_case_loader.py +714 -0
  289. solace_agent_mesh/gateway/base/__init__.py +1 -0
  290. solace_agent_mesh/gateway/base/app.py +266 -0
  291. solace_agent_mesh/gateway/base/base_llm.txt +119 -0
  292. solace_agent_mesh/gateway/base/component.py +1542 -0
  293. solace_agent_mesh/gateway/base/task_context.py +74 -0
  294. solace_agent_mesh/gateway/gateway_llm.txt +125 -0
  295. solace_agent_mesh/gateway/http_sse/app.py +190 -0
  296. solace_agent_mesh/gateway/http_sse/component.py +1602 -0
  297. solace_agent_mesh/gateway/http_sse/components/__init__.py +7 -0
  298. solace_agent_mesh/gateway/http_sse/components/components_llm.txt +65 -0
  299. solace_agent_mesh/gateway/http_sse/components/visualization_forwarder_component.py +108 -0
  300. solace_agent_mesh/gateway/http_sse/dependencies.py +316 -0
  301. solace_agent_mesh/gateway/http_sse/http_sse_llm.txt +63 -0
  302. solace_agent_mesh/gateway/http_sse/main.py +442 -0
  303. solace_agent_mesh/gateway/http_sse/routers/__init__.py +4 -0
  304. solace_agent_mesh/gateway/http_sse/routers/agents.py +41 -0
  305. solace_agent_mesh/gateway/http_sse/routers/artifacts.py +821 -0
  306. solace_agent_mesh/gateway/http_sse/routers/auth.py +212 -0
  307. solace_agent_mesh/gateway/http_sse/routers/config.py +55 -0
  308. solace_agent_mesh/gateway/http_sse/routers/people.py +69 -0
  309. solace_agent_mesh/gateway/http_sse/routers/routers_llm.txt +37 -0
  310. solace_agent_mesh/gateway/http_sse/routers/sessions.py +80 -0
  311. solace_agent_mesh/gateway/http_sse/routers/sse.py +138 -0
  312. solace_agent_mesh/gateway/http_sse/routers/tasks.py +294 -0
  313. solace_agent_mesh/gateway/http_sse/routers/users.py +59 -0
  314. solace_agent_mesh/gateway/http_sse/routers/visualization.py +1131 -0
  315. solace_agent_mesh/gateway/http_sse/services/__init__.py +4 -0
  316. solace_agent_mesh/gateway/http_sse/services/agent_service.py +69 -0
  317. solace_agent_mesh/gateway/http_sse/services/people_service.py +158 -0
  318. solace_agent_mesh/gateway/http_sse/services/services_llm.txt +179 -0
  319. solace_agent_mesh/gateway/http_sse/services/task_service.py +121 -0
  320. solace_agent_mesh/gateway/http_sse/session_manager.py +187 -0
  321. solace_agent_mesh/gateway/http_sse/sse_manager.py +328 -0
  322. solace_agent_mesh/llm.txt +228 -0
  323. solace_agent_mesh/llm_detail.txt +2835 -0
  324. solace_agent_mesh/templates/agent_template.yaml +53 -0
  325. solace_agent_mesh/templates/eval_backend_template.yaml +54 -0
  326. solace_agent_mesh/templates/gateway_app_template.py +73 -0
  327. solace_agent_mesh/templates/gateway_component_template.py +400 -0
  328. solace_agent_mesh/templates/gateway_config_template.yaml +43 -0
  329. solace_agent_mesh/templates/main_orchestrator.yaml +55 -0
  330. solace_agent_mesh/templates/plugin_agent_config_template.yaml +122 -0
  331. solace_agent_mesh/templates/plugin_custom_config_template.yaml +27 -0
  332. solace_agent_mesh/templates/plugin_custom_template.py +10 -0
  333. solace_agent_mesh/templates/plugin_gateway_config_template.yaml +63 -0
  334. solace_agent_mesh/templates/plugin_pyproject_template.toml +33 -0
  335. solace_agent_mesh/templates/plugin_readme_template.md +34 -0
  336. solace_agent_mesh/templates/plugin_tools_template.py +224 -0
  337. solace_agent_mesh/templates/shared_config.yaml +66 -0
  338. solace_agent_mesh/templates/templates_llm.txt +147 -0
  339. solace_agent_mesh/templates/webui.yaml +53 -0
  340. solace_agent_mesh-1.0.1.dist-info/METADATA +432 -0
  341. solace_agent_mesh-1.0.1.dist-info/RECORD +359 -0
  342. solace_agent_mesh-1.0.1.dist-info/entry_points.txt +3 -0
  343. {solace_agent_mesh-0.2.4.dist-info → solace_agent_mesh-1.0.1.dist-info}/licenses/LICENSE +1 -1
  344. solace_agent_mesh/agents/base_agent_component.py +0 -256
  345. solace_agent_mesh/agents/global/actions/agent_state_change.py +0 -54
  346. solace_agent_mesh/agents/global/actions/clear_history.py +0 -32
  347. solace_agent_mesh/agents/global/actions/convert_file_to_markdown.py +0 -160
  348. solace_agent_mesh/agents/global/actions/create_file.py +0 -70
  349. solace_agent_mesh/agents/global/actions/error_action.py +0 -45
  350. solace_agent_mesh/agents/global/actions/plantuml_diagram.py +0 -163
  351. solace_agent_mesh/agents/global/actions/plotly_graph.py +0 -152
  352. solace_agent_mesh/agents/global/actions/retrieve_file.py +0 -51
  353. solace_agent_mesh/agents/global/global_agent_component.py +0 -38
  354. solace_agent_mesh/agents/image_processing/actions/create_image.py +0 -75
  355. solace_agent_mesh/agents/image_processing/actions/describe_image.py +0 -115
  356. solace_agent_mesh/agents/image_processing/image_processing_agent_component.py +0 -23
  357. solace_agent_mesh/agents/slack/__init__.py +0 -1
  358. solace_agent_mesh/agents/slack/actions/__init__.py +0 -1
  359. solace_agent_mesh/agents/slack/actions/post_message.py +0 -177
  360. solace_agent_mesh/agents/slack/slack_agent_component.py +0 -59
  361. solace_agent_mesh/agents/web_request/actions/do_image_search.py +0 -84
  362. solace_agent_mesh/agents/web_request/actions/do_news_search.py +0 -47
  363. solace_agent_mesh/agents/web_request/actions/do_suggestion_search.py +0 -34
  364. solace_agent_mesh/agents/web_request/actions/do_web_request.py +0 -135
  365. solace_agent_mesh/agents/web_request/actions/download_file.py +0 -69
  366. solace_agent_mesh/agents/web_request/web_request_agent_component.py +0 -33
  367. solace_agent_mesh/assets/web-visualizer/assets/index-D0qORgkg.css +0 -1
  368. solace_agent_mesh/assets/web-visualizer/assets/index-DnDr1pnu.js +0 -109
  369. solace_agent_mesh/assets/web-visualizer/index.html +0 -14
  370. solace_agent_mesh/assets/web-visualizer/vite.svg +0 -1
  371. solace_agent_mesh/cli/commands/add/__init__.py +0 -3
  372. solace_agent_mesh/cli/commands/add/add.py +0 -88
  373. solace_agent_mesh/cli/commands/add/agent.py +0 -110
  374. solace_agent_mesh/cli/commands/add/copy_from_plugin.py +0 -92
  375. solace_agent_mesh/cli/commands/add/gateway.py +0 -374
  376. solace_agent_mesh/cli/commands/build.py +0 -670
  377. solace_agent_mesh/cli/commands/chat/__init__.py +0 -3
  378. solace_agent_mesh/cli/commands/chat/chat.py +0 -361
  379. solace_agent_mesh/cli/commands/config.py +0 -29
  380. solace_agent_mesh/cli/commands/init/__init__.py +0 -3
  381. solace_agent_mesh/cli/commands/init/ai_provider_step.py +0 -93
  382. solace_agent_mesh/cli/commands/init/broker_step.py +0 -99
  383. solace_agent_mesh/cli/commands/init/builtin_agent_step.py +0 -83
  384. solace_agent_mesh/cli/commands/init/check_if_already_done.py +0 -13
  385. solace_agent_mesh/cli/commands/init/create_config_file_step.py +0 -65
  386. solace_agent_mesh/cli/commands/init/create_other_project_files_step.py +0 -147
  387. solace_agent_mesh/cli/commands/init/file_service_step.py +0 -73
  388. solace_agent_mesh/cli/commands/init/init.py +0 -92
  389. solace_agent_mesh/cli/commands/init/project_structure_step.py +0 -16
  390. solace_agent_mesh/cli/commands/init/web_init_step.py +0 -32
  391. solace_agent_mesh/cli/commands/plugin/__init__.py +0 -3
  392. solace_agent_mesh/cli/commands/plugin/add.py +0 -100
  393. solace_agent_mesh/cli/commands/plugin/build.py +0 -268
  394. solace_agent_mesh/cli/commands/plugin/create.py +0 -117
  395. solace_agent_mesh/cli/commands/plugin/plugin.py +0 -124
  396. solace_agent_mesh/cli/commands/plugin/remove.py +0 -73
  397. solace_agent_mesh/cli/commands/run.py +0 -68
  398. solace_agent_mesh/cli/commands/visualizer.py +0 -138
  399. solace_agent_mesh/cli/config.py +0 -85
  400. solace_agent_mesh/common/action.py +0 -91
  401. solace_agent_mesh/common/action_list.py +0 -37
  402. solace_agent_mesh/common/action_response.py +0 -340
  403. solace_agent_mesh/common/mysql_database.py +0 -40
  404. solace_agent_mesh/common/postgres_database.py +0 -85
  405. solace_agent_mesh/common/prompt_templates.py +0 -28
  406. solace_agent_mesh/common/stimulus_utils.py +0 -152
  407. solace_agent_mesh/common/time.py +0 -24
  408. solace_agent_mesh/common/utils.py +0 -712
  409. solace_agent_mesh/config_portal/frontend/static/client/assets/_index-a-zJ6rLx.js +0 -46
  410. solace_agent_mesh/config_portal/frontend/static/client/assets/components-ZIfdTbrV.js +0 -191
  411. solace_agent_mesh/config_portal/frontend/static/client/assets/index-BJHAE5s4.js +0 -17
  412. solace_agent_mesh/config_portal/frontend/static/client/assets/manifest-44c41103.js +0 -1
  413. solace_agent_mesh/config_portal/frontend/static/client/assets/root-DX4gQ516.css +0 -1
  414. solace_agent_mesh/configs/agent_global.yaml +0 -74
  415. solace_agent_mesh/configs/agent_image_processing.yaml +0 -82
  416. solace_agent_mesh/configs/agent_slack.yaml +0 -64
  417. solace_agent_mesh/configs/agent_web_request.yaml +0 -75
  418. solace_agent_mesh/configs/conversation_to_file.yaml +0 -56
  419. solace_agent_mesh/configs/error_catcher.yaml +0 -56
  420. solace_agent_mesh/configs/monitor.yaml +0 -0
  421. solace_agent_mesh/configs/monitor_stim_and_errors_to_slack.yaml +0 -109
  422. solace_agent_mesh/configs/monitor_user_feedback.yaml +0 -58
  423. solace_agent_mesh/configs/orchestrator.yaml +0 -241
  424. solace_agent_mesh/configs/service_embedding.yaml +0 -81
  425. solace_agent_mesh/configs/service_llm.yaml +0 -265
  426. solace_agent_mesh/configs/visualize_websocket.yaml +0 -55
  427. solace_agent_mesh/gateway/components/gateway_base.py +0 -47
  428. solace_agent_mesh/gateway/components/gateway_input.py +0 -278
  429. solace_agent_mesh/gateway/components/gateway_output.py +0 -298
  430. solace_agent_mesh/gateway/identity/bamboohr_identity.py +0 -18
  431. solace_agent_mesh/gateway/identity/identity_base.py +0 -10
  432. solace_agent_mesh/gateway/identity/identity_provider.py +0 -60
  433. solace_agent_mesh/gateway/identity/no_identity.py +0 -9
  434. solace_agent_mesh/gateway/identity/passthru_identity.py +0 -9
  435. solace_agent_mesh/monitors/base_monitor_component.py +0 -26
  436. solace_agent_mesh/monitors/feedback/user_feedback_monitor.py +0 -75
  437. solace_agent_mesh/monitors/stim_and_errors/stim_and_error_monitor.py +0 -560
  438. solace_agent_mesh/orchestrator/__init__.py +0 -0
  439. solace_agent_mesh/orchestrator/action_manager.py +0 -237
  440. solace_agent_mesh/orchestrator/components/__init__.py +0 -0
  441. solace_agent_mesh/orchestrator/components/orchestrator_action_manager_timeout_component.py +0 -58
  442. solace_agent_mesh/orchestrator/components/orchestrator_action_response_component.py +0 -179
  443. solace_agent_mesh/orchestrator/components/orchestrator_register_component.py +0 -107
  444. solace_agent_mesh/orchestrator/components/orchestrator_stimulus_processor_component.py +0 -527
  445. solace_agent_mesh/orchestrator/components/orchestrator_streaming_output_component.py +0 -260
  446. solace_agent_mesh/orchestrator/orchestrator_main.py +0 -172
  447. solace_agent_mesh/orchestrator/orchestrator_prompt.py +0 -539
  448. solace_agent_mesh/services/__init__.py +0 -0
  449. solace_agent_mesh/services/authorization/providers/base_authorization_provider.py +0 -56
  450. solace_agent_mesh/services/bamboo_hr_service/__init__.py +0 -3
  451. solace_agent_mesh/services/bamboo_hr_service/bamboo_hr.py +0 -182
  452. solace_agent_mesh/services/common/__init__.py +0 -4
  453. solace_agent_mesh/services/common/auto_expiry.py +0 -45
  454. solace_agent_mesh/services/common/singleton.py +0 -18
  455. solace_agent_mesh/services/file_service/__init__.py +0 -14
  456. solace_agent_mesh/services/file_service/file_manager/__init__.py +0 -0
  457. solace_agent_mesh/services/file_service/file_manager/bucket_file_manager.py +0 -149
  458. solace_agent_mesh/services/file_service/file_manager/file_manager_base.py +0 -162
  459. solace_agent_mesh/services/file_service/file_manager/memory_file_manager.py +0 -64
  460. solace_agent_mesh/services/file_service/file_manager/volume_file_manager.py +0 -106
  461. solace_agent_mesh/services/file_service/file_service.py +0 -437
  462. solace_agent_mesh/services/file_service/file_service_constants.py +0 -54
  463. solace_agent_mesh/services/file_service/file_transformations.py +0 -141
  464. solace_agent_mesh/services/file_service/file_utils.py +0 -324
  465. solace_agent_mesh/services/file_service/transformers/__init__.py +0 -5
  466. solace_agent_mesh/services/history_service/__init__.py +0 -3
  467. solace_agent_mesh/services/history_service/history_providers/__init__.py +0 -0
  468. solace_agent_mesh/services/history_service/history_providers/base_history_provider.py +0 -54
  469. solace_agent_mesh/services/history_service/history_providers/file_history_provider.py +0 -74
  470. solace_agent_mesh/services/history_service/history_providers/index.py +0 -40
  471. solace_agent_mesh/services/history_service/history_providers/memory_history_provider.py +0 -33
  472. solace_agent_mesh/services/history_service/history_providers/mongodb_history_provider.py +0 -66
  473. solace_agent_mesh/services/history_service/history_providers/redis_history_provider.py +0 -66
  474. solace_agent_mesh/services/history_service/history_providers/sql_history_provider.py +0 -93
  475. solace_agent_mesh/services/history_service/history_service.py +0 -413
  476. solace_agent_mesh/services/history_service/long_term_memory/__init__.py +0 -0
  477. solace_agent_mesh/services/history_service/long_term_memory/long_term_memory.py +0 -399
  478. solace_agent_mesh/services/llm_service/components/llm_request_component.py +0 -340
  479. solace_agent_mesh/services/llm_service/components/llm_service_component_base.py +0 -152
  480. solace_agent_mesh/services/middleware_service/__init__.py +0 -0
  481. solace_agent_mesh/services/middleware_service/middleware_service.py +0 -20
  482. solace_agent_mesh/templates/action.py +0 -38
  483. solace_agent_mesh/templates/agent.py +0 -29
  484. solace_agent_mesh/templates/agent.yaml +0 -70
  485. solace_agent_mesh/templates/gateway-config-template.yaml +0 -6
  486. solace_agent_mesh/templates/gateway-default-config.yaml +0 -28
  487. solace_agent_mesh/templates/gateway-flows.yaml +0 -78
  488. solace_agent_mesh/templates/gateway-header.yaml +0 -16
  489. solace_agent_mesh/templates/gateway_base.py +0 -15
  490. solace_agent_mesh/templates/gateway_input.py +0 -98
  491. solace_agent_mesh/templates/gateway_output.py +0 -71
  492. solace_agent_mesh/templates/plugin-gateway-default-config.yaml +0 -29
  493. solace_agent_mesh/templates/plugin-pyproject.toml +0 -30
  494. solace_agent_mesh/templates/rest-api-default-config.yaml +0 -31
  495. solace_agent_mesh/templates/rest-api-flows.yaml +0 -81
  496. solace_agent_mesh/templates/slack-default-config.yaml +0 -16
  497. solace_agent_mesh/templates/slack-flows.yaml +0 -81
  498. solace_agent_mesh/templates/solace-agent-mesh-default.yaml +0 -86
  499. solace_agent_mesh/templates/solace-agent-mesh-plugin-default.yaml +0 -8
  500. solace_agent_mesh/templates/web-default-config.yaml +0 -10
  501. solace_agent_mesh/templates/web-flows.yaml +0 -76
  502. solace_agent_mesh/tools/__init__.py +0 -0
  503. solace_agent_mesh/tools/components/__init__.py +0 -0
  504. solace_agent_mesh/tools/components/conversation_formatter.py +0 -111
  505. solace_agent_mesh/tools/components/file_resolver_component.py +0 -58
  506. solace_agent_mesh/tools/config/runtime_config.py +0 -26
  507. solace_agent_mesh-0.2.4.dist-info/METADATA +0 -176
  508. solace_agent_mesh-0.2.4.dist-info/RECORD +0 -193
  509. solace_agent_mesh-0.2.4.dist-info/entry_points.txt +0 -3
  510. /solace_agent_mesh/{agents → agent}/__init__.py +0 -0
  511. /solace_agent_mesh/{agents/global → agent/adk}/__init__.py +0 -0
  512. /solace_agent_mesh/{agents/global/actions → agent/protocol}/__init__.py +0 -0
  513. /solace_agent_mesh/{agents/image_processing → agent/sac}/__init__.py +0 -0
  514. /solace_agent_mesh/{agents/image_processing/actions → agent/utils}/__init__.py +0 -0
  515. /solace_agent_mesh/{agents/web_request → config_portal/backend/plugin_catalog}/__init__.py +0 -0
  516. /solace_agent_mesh/{agents/web_request/actions → evaluation}/__init__.py +0 -0
  517. /solace_agent_mesh/gateway/{components → http_sse}/__init__.py +0 -0
  518. {solace_agent_mesh-0.2.4.dist-info → solace_agent_mesh-1.0.1.dist-info}/WHEEL +0 -0
@@ -0,0 +1,659 @@
1
+ import click
2
+ from pathlib import Path
3
+ import yaml
4
+ import json
5
+ from config_portal.backend.common import (
6
+ AGENT_DEFAULTS,
7
+ USE_DEFAULT_SHARED_ARTIFACT,
8
+ USE_DEFAULT_SHARED_SESSION,
9
+ )
10
+ from .web_add_agent_step import launch_add_agent_web_portal
11
+ from ...utils import (
12
+ ask_if_not_provided,
13
+ get_formatted_names,
14
+ load_template,
15
+ indent_multiline_string,
16
+ )
17
+
18
+
19
+ def _write_agent_yaml_from_data(
20
+ agent_name_input: str, config_options: dict, project_root: Path
21
+ ) -> tuple[bool, str, str]:
22
+ """
23
+ Writes the agent YAML file based on provided configuration options.
24
+ """
25
+ agents_config_dir = project_root / "configs" / "agents"
26
+ agents_config_dir.mkdir(parents=True, exist_ok=True)
27
+
28
+ formatted_names = get_formatted_names(agent_name_input)
29
+ agent_name_camel = config_options.get(
30
+ "agent_name", formatted_names["PASCAL_CASE_NAME"]
31
+ )
32
+ file_name_snake = formatted_names["SNAKE_CASE_NAME"]
33
+
34
+ agent_config_file_path = agents_config_dir / f"{file_name_snake}_agent.yaml"
35
+
36
+ try:
37
+ modified_content = load_template("agent_template.yaml")
38
+ session_service_type_opt = config_options.get("session_service_type")
39
+ if (
40
+ session_service_type_opt
41
+ and session_service_type_opt != USE_DEFAULT_SHARED_SESSION
42
+ ):
43
+ type_val = session_service_type_opt
44
+ behavior_val = config_options.get(
45
+ "session_service_behavior", AGENT_DEFAULTS["session_service_behavior"]
46
+ )
47
+ session_service_block = (
48
+ f'\n type: "{type_val}"\n'
49
+ f' default_behavior: "{behavior_val}"'
50
+ )
51
+ else:
52
+ session_service_block = "*default_session_service"
53
+ artifact_service_type_opt = config_options.get("artifact_service_type")
54
+ if (
55
+ artifact_service_type_opt
56
+ and artifact_service_type_opt != USE_DEFAULT_SHARED_ARTIFACT
57
+ ):
58
+ type_val = artifact_service_type_opt
59
+ scope_val = config_options.get(
60
+ "artifact_service_scope", AGENT_DEFAULTS["artifact_service_scope"]
61
+ )
62
+ custom_artifact_lines = [f'type: "{type_val}"']
63
+ if type_val == "filesystem":
64
+ base_path_val = config_options.get(
65
+ "artifact_service_base_path",
66
+ AGENT_DEFAULTS["artifact_service_base_path"],
67
+ )
68
+ custom_artifact_lines.append(f'base_path: "{base_path_val}"')
69
+ custom_artifact_lines.append(f"artifact_scope: {scope_val}")
70
+ artifact_service_block = "\n" + "\n".join(
71
+ [f" {line}" for line in custom_artifact_lines]
72
+ )
73
+ else:
74
+ artifact_service_block = "*default_artifact_service"
75
+
76
+ tools_data = config_options.get("tools")
77
+ actual_tools_list = []
78
+ if isinstance(tools_data, str):
79
+ try:
80
+ actual_tools_list = json.loads(tools_data)
81
+ if not isinstance(actual_tools_list, list):
82
+ click.echo(
83
+ click.style(
84
+ f"Warning: Tools data was a string but not a valid JSON list. Defaulting to empty tools list.",
85
+ fg="yellow",
86
+ ),
87
+ err=True,
88
+ )
89
+ actual_tools_list = []
90
+ except json.JSONDecodeError:
91
+ click.echo(
92
+ click.style(
93
+ f"Warning: Could not parse tools JSON string: {tools_data}. Defaulting to empty tools list.",
94
+ fg="yellow",
95
+ ),
96
+ err=True,
97
+ )
98
+ actual_tools_list = []
99
+ elif isinstance(tools_data, list):
100
+ actual_tools_list = tools_data
101
+
102
+ for tool in actual_tools_list:
103
+ if (
104
+ tool.get("tool_type") == "mcp"
105
+ and "connection_params" in tool
106
+ and "timeout" not in tool["connection_params"]
107
+ ):
108
+ tool["connection_params"]["timeout"] = 30
109
+
110
+ tools_replacement_value = yaml.dump(
111
+ actual_tools_list,
112
+ Dumper=yaml.SafeDumper,
113
+ default_flow_style=False,
114
+ indent=2,
115
+ ).strip()
116
+
117
+ if "\n" in tools_replacement_value:
118
+ tools_replacement_value = indent_multiline_string(
119
+ tools_replacement_value, 8, True
120
+ )
121
+
122
+ actual_skills_list = []
123
+ skills_from_gui = config_options.get("agent_card_skills")
124
+ skills_from_cli_str = config_options.get("agent_card_skills_str")
125
+
126
+ if isinstance(skills_from_gui, list):
127
+ actual_skills_list = skills_from_gui
128
+ elif isinstance(skills_from_cli_str, str):
129
+ try:
130
+ parsed_skills = json.loads(skills_from_cli_str)
131
+ if isinstance(parsed_skills, list):
132
+ actual_skills_list = parsed_skills
133
+ else:
134
+ click.echo(
135
+ click.style(
136
+ f"Warning: Skills string '{skills_from_cli_str}' was not a valid JSON list. Defaulting to empty skills list.",
137
+ fg="yellow",
138
+ ),
139
+ err=True,
140
+ )
141
+ except json.JSONDecodeError:
142
+ click.echo(
143
+ click.style(
144
+ f"Warning: Could not parse skills JSON string: {skills_from_cli_str}. Defaulting to empty skills list.",
145
+ fg="yellow",
146
+ ),
147
+ err=True,
148
+ )
149
+
150
+ skills_replacement_value = "[]"
151
+ if actual_skills_list:
152
+ skills_dump = yaml.dump(
153
+ actual_skills_list,
154
+ Dumper=yaml.SafeDumper,
155
+ default_flow_style=False,
156
+ indent=2,
157
+ ).strip()
158
+
159
+ skills_replacement_value = indent_multiline_string(skills_dump, 10, True)
160
+
161
+ instructions = config_options.get("instruction", AGENT_DEFAULTS["instruction"])
162
+ instructions = instructions.replace("__AGENT_NAME__", agent_name_camel)
163
+ instructions = indent_multiline_string(instructions, 8)
164
+
165
+ replacements = {
166
+ "__AGENT_NAME__": agent_name_camel,
167
+ "__NAMESPACE__": config_options.get(
168
+ "namespace", AGENT_DEFAULTS["namespace"]
169
+ ),
170
+ "__SUPPORTS_STREAMING__": str(
171
+ config_options.get(
172
+ "supports_streaming", AGENT_DEFAULTS["supports_streaming"]
173
+ )
174
+ ).lower(),
175
+ "__MODEL_ALIAS__": f'*{config_options.get("model_type", AGENT_DEFAULTS["model_type"])}_model',
176
+ "__INSTRUCTION__": instructions,
177
+ "__TOOLS_CONFIG__": tools_replacement_value,
178
+ "__SESSION_SERVICE__": session_service_block,
179
+ "__ARTIFACT_SERVICE__": artifact_service_block,
180
+ "__ARTIFACT_HANDLING_MODE__": config_options.get(
181
+ "artifact_handling_mode", AGENT_DEFAULTS["artifact_handling_mode"]
182
+ ),
183
+ "__ENABLE_EMBED_RESOLUTION__": str(
184
+ config_options.get(
185
+ "enable_embed_resolution", AGENT_DEFAULTS["enable_embed_resolution"]
186
+ )
187
+ ).lower(),
188
+ "__ENABLE_ARTIFACT_CONTENT_INSTRUCTION__": str(
189
+ config_options.get(
190
+ "enable_artifact_content_instruction",
191
+ AGENT_DEFAULTS["enable_artifact_content_instruction"],
192
+ )
193
+ ).lower(),
194
+ "__AGENT_CARD_DESCRIPTION__": indent_multiline_string(
195
+ config_options.get(
196
+ "agent_card_description", AGENT_DEFAULTS["agent_card_description"]
197
+ ),
198
+ 10,
199
+ ),
200
+ "__DEFAULT_INPUT_MODES__": yaml.dump(
201
+ config_options.get(
202
+ "agent_card_default_input_modes",
203
+ AGENT_DEFAULTS["agent_card_default_input_modes"],
204
+ ),
205
+ Dumper=yaml.SafeDumper,
206
+ default_flow_style=True,
207
+ )
208
+ .strip()
209
+ .replace("'", '"'),
210
+ "__DEFAULT_OUTPUT_MODES__": yaml.dump(
211
+ config_options.get(
212
+ "agent_card_default_output_modes",
213
+ AGENT_DEFAULTS["agent_card_default_output_modes"],
214
+ ),
215
+ Dumper=yaml.SafeDumper,
216
+ default_flow_style=True,
217
+ )
218
+ .strip()
219
+ .replace("'", '"'),
220
+ "__AGENT_CARD_SKILLS__": skills_replacement_value,
221
+ "__AGENT_CARD_PUBLISHING_INTERVAL__": str(
222
+ config_options.get(
223
+ "agent_card_publishing_interval",
224
+ AGENT_DEFAULTS["agent_card_publishing_interval"],
225
+ )
226
+ ),
227
+ "__AGENT_DISCOVERY_ENABLED__": str(
228
+ config_options.get(
229
+ "agent_discovery_enabled", AGENT_DEFAULTS["agent_discovery_enabled"]
230
+ )
231
+ ).lower(),
232
+ "__INTER_AGENT_COMMUNICATION_ALLOW_LIST__": yaml.dump(
233
+ config_options.get(
234
+ "inter_agent_communication_allow_list",
235
+ AGENT_DEFAULTS["inter_agent_communication_allow_list"],
236
+ ),
237
+ Dumper=yaml.SafeDumper,
238
+ default_flow_style=True,
239
+ )
240
+ .strip()
241
+ .replace("'", '"'),
242
+ "__INTER_AGENT_COMMUNICATION_DENY_LIST__": yaml.dump(
243
+ config_options.get(
244
+ "inter_agent_communication_deny_list",
245
+ AGENT_DEFAULTS["inter_agent_communication_deny_list"],
246
+ ),
247
+ Dumper=yaml.SafeDumper,
248
+ default_flow_style=True,
249
+ )
250
+ .strip()
251
+ .replace("'", '"'),
252
+ "__INTER_AGENT_COMMUNICATION_TIMEOUT__": str(
253
+ config_options.get(
254
+ "inter_agent_communication_timeout",
255
+ AGENT_DEFAULTS["inter_agent_communication_timeout"],
256
+ )
257
+ ),
258
+ }
259
+
260
+ for placeholder, value in replacements.items():
261
+ modified_content = modified_content.replace(placeholder, str(value))
262
+
263
+ with open(agent_config_file_path, "w", encoding="utf-8") as f:
264
+ f.write(modified_content)
265
+
266
+ relative_file_path = str(agent_config_file_path.relative_to(project_root))
267
+ return (
268
+ True,
269
+ f"Agent configuration created: {relative_file_path}",
270
+ relative_file_path,
271
+ )
272
+ except Exception as e:
273
+ import traceback
274
+
275
+ click.echo(
276
+ f"DEBUG: Error in _write_agent_yaml_from_data: {e}\n{traceback.format_exc()}",
277
+ err=True,
278
+ )
279
+ return (
280
+ False,
281
+ f"Error creating agent configuration file {agent_config_file_path}: {e}",
282
+ "",
283
+ )
284
+
285
+
286
+ def create_agent_config(
287
+ agent_name_input: str, cli_provided_options: dict, skip_interactive: bool
288
+ ) -> bool:
289
+ """
290
+ Collects options (interactively or from CLI) and creates a new agent configuration file.
291
+ This is the main function called by the CLI for non-GUI agent creation.
292
+ """
293
+ click.echo(f"Configuring agent '{agent_name_input}' via CLI...")
294
+
295
+ project_root = Path.cwd()
296
+ collected_options = cli_provided_options.copy()
297
+
298
+ formatted_names = get_formatted_names(agent_name_input)
299
+ agent_name_camel_case = formatted_names["PASCAL_CASE_NAME"]
300
+ collected_options["agent_name"] = agent_name_camel_case
301
+
302
+ collected_options["namespace"] = ask_if_not_provided(
303
+ collected_options,
304
+ "namespace",
305
+ "Enter A2A namespace (e.g., myorg/dev, or leave for ${NAMESPACE})",
306
+ AGENT_DEFAULTS["namespace"],
307
+ skip_interactive,
308
+ )
309
+ collected_options["supports_streaming"] = ask_if_not_provided(
310
+ collected_options,
311
+ "supports_streaming",
312
+ "Enable streaming support?",
313
+ AGENT_DEFAULTS["supports_streaming"],
314
+ skip_interactive,
315
+ is_bool=True,
316
+ )
317
+ collected_options["model_type"] = ask_if_not_provided(
318
+ collected_options,
319
+ "model_type",
320
+ "Enter model type",
321
+ AGENT_DEFAULTS["model_type"],
322
+ skip_interactive,
323
+ choices=[
324
+ "planning",
325
+ "general",
326
+ "image_gen",
327
+ "report_gen",
328
+ "multimodal",
329
+ "gemini_pro",
330
+ ],
331
+ )
332
+ default_instruction = AGENT_DEFAULTS["instruction"].replace(
333
+ "__AGENT_NAME__", agent_name_camel_case
334
+ )
335
+ collected_options["instruction"] = ask_if_not_provided(
336
+ collected_options,
337
+ "instruction",
338
+ "Enter agent instruction",
339
+ default_instruction,
340
+ skip_interactive,
341
+ )
342
+
343
+ collected_options["session_service_type"] = ask_if_not_provided(
344
+ collected_options,
345
+ "session_service_type",
346
+ "Session service type",
347
+ AGENT_DEFAULTS["session_service_type"],
348
+ skip_interactive,
349
+ choices=[USE_DEFAULT_SHARED_SESSION, "memory", "vertex_rag"],
350
+ )
351
+ if collected_options["session_service_type"] != USE_DEFAULT_SHARED_SESSION:
352
+ collected_options["session_service_behavior"] = ask_if_not_provided(
353
+ collected_options,
354
+ "session_service_behavior",
355
+ "Session service behavior",
356
+ AGENT_DEFAULTS["session_service_behavior"],
357
+ skip_interactive,
358
+ choices=["PERSISTENT", "RUN_BASED"],
359
+ )
360
+
361
+ collected_options["artifact_service_type"] = ask_if_not_provided(
362
+ collected_options,
363
+ "artifact_service_type",
364
+ "Artifact service type",
365
+ AGENT_DEFAULTS["artifact_service_type"],
366
+ skip_interactive,
367
+ choices=[USE_DEFAULT_SHARED_ARTIFACT, "memory", "filesystem", "gcs"],
368
+ )
369
+ if collected_options["artifact_service_type"] != USE_DEFAULT_SHARED_ARTIFACT:
370
+ if collected_options.get("artifact_service_type") == "filesystem":
371
+ collected_options["artifact_service_base_path"] = ask_if_not_provided(
372
+ collected_options,
373
+ "artifact_service_base_path",
374
+ "Artifact service base path",
375
+ AGENT_DEFAULTS["artifact_service_base_path"],
376
+ skip_interactive,
377
+ )
378
+ collected_options["artifact_service_scope"] = ask_if_not_provided(
379
+ collected_options,
380
+ "artifact_service_scope",
381
+ "Artifact service scope",
382
+ AGENT_DEFAULTS["artifact_service_scope"],
383
+ skip_interactive,
384
+ choices=["namespace", "app", "custom"],
385
+ )
386
+
387
+ collected_options["artifact_handling_mode"] = ask_if_not_provided(
388
+ collected_options,
389
+ "artifact_handling_mode",
390
+ "Artifact handling mode",
391
+ AGENT_DEFAULTS["artifact_handling_mode"],
392
+ skip_interactive,
393
+ choices=["ignore", "embed", "reference"],
394
+ )
395
+ collected_options["enable_embed_resolution"] = ask_if_not_provided(
396
+ collected_options,
397
+ "enable_embed_resolution",
398
+ "Enable embed resolution?",
399
+ AGENT_DEFAULTS["enable_embed_resolution"],
400
+ skip_interactive,
401
+ is_bool=True,
402
+ )
403
+ collected_options["enable_artifact_content_instruction"] = ask_if_not_provided(
404
+ collected_options,
405
+ "enable_artifact_content_instruction",
406
+ "Enable artifact content instruction?",
407
+ AGENT_DEFAULTS["enable_artifact_content_instruction"],
408
+ skip_interactive,
409
+ is_bool=True,
410
+ )
411
+ collected_options["agent_card_description"] = ask_if_not_provided(
412
+ collected_options,
413
+ "agent_card_description",
414
+ "Agent card description",
415
+ AGENT_DEFAULTS["agent_card_description"],
416
+ skip_interactive,
417
+ )
418
+ default_input_modes_str = ask_if_not_provided(
419
+ collected_options,
420
+ "agent_card_default_input_modes_str",
421
+ "Agent card default input modes (comma-separated)",
422
+ ",".join(AGENT_DEFAULTS["agent_card_default_input_modes"]),
423
+ skip_interactive,
424
+ )
425
+ collected_options["agent_card_default_input_modes"] = [
426
+ mode.strip() for mode in default_input_modes_str.split(",") if mode.strip()
427
+ ]
428
+
429
+ default_output_modes_str = ask_if_not_provided(
430
+ collected_options,
431
+ "agent_card_default_output_modes_str",
432
+ "Agent card default output modes (comma-separated)",
433
+ ",".join(AGENT_DEFAULTS["agent_card_default_output_modes"]),
434
+ skip_interactive,
435
+ )
436
+ collected_options["agent_card_default_output_modes"] = [
437
+ mode.strip() for mode in default_output_modes_str.split(",") if mode.strip()
438
+ ]
439
+
440
+ collected_options["agent_card_skills_str"] = ask_if_not_provided(
441
+ collected_options,
442
+ "agent_card_skills_str",
443
+ "Agent card skills (JSON array string)",
444
+ AGENT_DEFAULTS.get("agent_card_skills_str", "[]"),
445
+ skip_interactive,
446
+ )
447
+
448
+ collected_options["agent_discovery_enabled"] = ask_if_not_provided(
449
+ collected_options,
450
+ "agent_discovery_enabled",
451
+ "Enable agent discovery?",
452
+ AGENT_DEFAULTS["agent_discovery_enabled"],
453
+ skip_interactive,
454
+ is_bool=True,
455
+ )
456
+ collected_options["agent_card_publishing_interval"] = ask_if_not_provided(
457
+ collected_options,
458
+ "agent_card_publishing_interval",
459
+ "Agent card publishing interval (seconds)",
460
+ AGENT_DEFAULTS["agent_card_publishing_interval"],
461
+ skip_interactive,
462
+ type=int,
463
+ )
464
+ allow_list_str = ask_if_not_provided(
465
+ collected_options,
466
+ "inter_agent_communication_allow_list_str",
467
+ "Inter-agent allow list (comma-separated)",
468
+ ",".join(AGENT_DEFAULTS["inter_agent_communication_allow_list"]),
469
+ skip_interactive,
470
+ )
471
+ collected_options["inter_agent_communication_allow_list"] = [
472
+ item.strip() for item in allow_list_str.split(",") if item.strip()
473
+ ]
474
+
475
+ deny_list_str = ask_if_not_provided(
476
+ collected_options,
477
+ "inter_agent_communication_deny_list_str",
478
+ "Inter-agent deny list (comma-separated)",
479
+ ",".join(AGENT_DEFAULTS["inter_agent_communication_deny_list"]),
480
+ skip_interactive,
481
+ )
482
+ collected_options["inter_agent_communication_deny_list"] = [
483
+ item.strip() for item in deny_list_str.split(",") if item.strip()
484
+ ]
485
+
486
+ collected_options["inter_agent_communication_timeout"] = ask_if_not_provided(
487
+ collected_options,
488
+ "inter_agent_communication_timeout",
489
+ "Inter-agent timeout (seconds)",
490
+ AGENT_DEFAULTS["inter_agent_communication_timeout"],
491
+ skip_interactive,
492
+ type=int,
493
+ )
494
+
495
+ tools_json_str = ask_if_not_provided(
496
+ collected_options,
497
+ "tools",
498
+ "Tools configuration (JSON string of list)",
499
+ AGENT_DEFAULTS.get("tools", "[]"),
500
+ skip_interactive,
501
+ )
502
+ try:
503
+ tools_list = json.loads(tools_json_str)
504
+ if not isinstance(tools_list, list):
505
+ tools_list = []
506
+ if not skip_interactive:
507
+ click.echo(
508
+ "Warning: Tools input was not a valid JSON list. Defaulting to empty.",
509
+ err=True,
510
+ )
511
+ collected_options["tools"] = tools_list
512
+ except json.JSONDecodeError:
513
+ collected_options["tools"] = []
514
+ if not skip_interactive:
515
+ click.echo(
516
+ f"Warning: Invalid JSON for tools: {tools_json_str}. Defaulting to empty.",
517
+ err=True,
518
+ )
519
+
520
+ success, message, _ = _write_agent_yaml_from_data(
521
+ agent_name_input, collected_options, project_root
522
+ )
523
+
524
+ if success:
525
+ click.echo(click.style(message, fg="green"))
526
+ return True
527
+ else:
528
+ click.echo(click.style(message, fg="red"), err=True)
529
+ return False
530
+
531
+
532
+ @click.command(name="agent")
533
+ @click.argument("name", required=False)
534
+ @click.option("--gui", is_flag=True, help="Launch the web UI to configure the agent.")
535
+ @click.option(
536
+ "--skip",
537
+ is_flag=True,
538
+ help="Skip interactive prompts and use defaults (CLI mode only).",
539
+ )
540
+ @click.option("--namespace", help="A2A namespace (e.g., myorg/dev).")
541
+ @click.option("--supports-streaming", type=bool, help="Enable streaming support.")
542
+ @click.option(
543
+ "--model-type",
544
+ type=click.Choice(
545
+ ["planning", "general", "image_gen", "report_gen", "multimodal", "gemini_pro"]
546
+ ),
547
+ help="Model type for the agent.",
548
+ )
549
+ @click.option("--instruction", help="Custom instruction for the agent.")
550
+ @click.option(
551
+ "--session-service-type",
552
+ type=click.Choice(["memory", "vertex_rag"]),
553
+ help="Session service type.",
554
+ )
555
+ @click.option(
556
+ "--session-service-behavior",
557
+ type=click.Choice(["PERSISTENT", "RUN_BASED"]),
558
+ help="Session service behavior.",
559
+ )
560
+ @click.option(
561
+ "--artifact-service-type",
562
+ type=click.Choice(["memory", "filesystem", "gcs"]),
563
+ help="Artifact service type.",
564
+ )
565
+ @click.option(
566
+ "--artifact-service-base-path", help="Base path for filesystem artifact service."
567
+ )
568
+ @click.option(
569
+ "--artifact-service-scope",
570
+ type=click.Choice(["namespace", "app", "custom"]),
571
+ help="Artifact service scope.",
572
+ )
573
+ @click.option(
574
+ "--artifact-handling-mode",
575
+ type=click.Choice(["ignore", "embed", "reference"]),
576
+ help="Artifact handling mode.",
577
+ )
578
+ @click.option("--enable-embed-resolution", type=bool, help="Enable embed resolution.")
579
+ @click.option(
580
+ "--enable-artifact-content-instruction",
581
+ type=bool,
582
+ help="Enable artifact content instruction.",
583
+ )
584
+ @click.option(
585
+ "--enable-builtin-artifact-tools", type=bool, help="Enable built-in artifact tools."
586
+ )
587
+ @click.option(
588
+ "--enable-builtin-data-tools", type=bool, help="Enable built-in data tools."
589
+ )
590
+ @click.option("--agent-card-description", help="Description for the agent card.")
591
+ @click.option(
592
+ "--agent-card-default-input-modes-str",
593
+ help="Comma-separated default input modes for agent card.",
594
+ )
595
+ @click.option(
596
+ "--agent-card-default-output-modes-str",
597
+ help="Comma-separated default output modes for agent card.",
598
+ )
599
+ @click.option(
600
+ "--agent-card-publishing-interval",
601
+ type=int,
602
+ help="Agent card publishing interval in seconds.",
603
+ )
604
+ @click.option("--agent-discovery-enabled", type=bool, help="Enable agent discovery.")
605
+ @click.option(
606
+ "--inter-agent-communication-allow-list-str",
607
+ help="Comma-separated allow list for inter-agent communication.",
608
+ )
609
+ @click.option(
610
+ "--inter-agent-communication-deny-list-str",
611
+ help="Comma-separated deny list for inter-agent communication.",
612
+ )
613
+ @click.option(
614
+ "--inter-agent-communication-timeout",
615
+ type=int,
616
+ help="Timeout in seconds for inter-agent communication.",
617
+ )
618
+ def add_agent(name: str, gui: bool = False, **kwargs):
619
+ """
620
+ Creates a new agent configuration via CLI or Web UI.
621
+
622
+ NAME: Name of the agent component to create (e.g., my-new-agent).
623
+ """
624
+ if not gui and not name:
625
+ click.echo(
626
+ click.style(
627
+ "Error: You must provide an agent name when not using the --gui option.",
628
+ fg="red",
629
+ ),
630
+ err=True,
631
+ )
632
+ return
633
+ if gui:
634
+ click.echo(f"Launching Add Agent GUI for '{name}'...")
635
+ cli_options_for_gui = {"name": name}
636
+ agent_name, agent_options, project_root = launch_add_agent_web_portal(
637
+ cli_options_for_gui
638
+ )
639
+ success, message, _ = _write_agent_yaml_from_data(
640
+ agent_name, agent_options, project_root
641
+ )
642
+
643
+ if success:
644
+ click.echo(click.style(message, fg="green"))
645
+ else:
646
+ click.echo(click.style(message, fg="red"), err=True)
647
+
648
+ else:
649
+ cli_options = {k: v for k, v in kwargs.items() if v is not None}
650
+ skip_interactive = kwargs.get("skip", False)
651
+
652
+ if not create_agent_config(name, cli_options, skip_interactive):
653
+ click.echo(
654
+ click.style(
655
+ f"Failed to create agent configuration for '{name}' using CLI.",
656
+ fg="red",
657
+ ),
658
+ err=True,
659
+ )