solace-agent-mesh 0.2.3__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 -140
  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.3.dist-info → solace_agent_mesh-1.0.1.dist-info}/licenses/LICENSE +1 -1
  344. solace_agent_mesh/agents/base_agent_component.py +0 -226
  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-DMmCawWe.js +0 -42
  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-dd988f05.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.3.dist-info/METADATA +0 -172
  508. solace_agent_mesh-0.2.3.dist-info/RECORD +0 -193
  509. solace_agent_mesh-0.2.3.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.3.dist-info → solace_agent_mesh-1.0.1.dist-info}/WHEEL +0 -0
@@ -1,670 +0,0 @@
1
- import os
2
- import sys
3
- import click
4
- import shutil
5
- import re
6
- from functools import partial
7
-
8
- from cli.commands.init import init_command
9
- from cli.commands.plugin.build import get_all_plugin_gateway_interfaces, build_plugins
10
- from cli.config import Config
11
- from cli.utils import (
12
- literal_format_template,
13
- load_template,
14
- get_cli_root_dir,
15
- extract_yaml_env_variables,
16
- get_display_path,
17
- log_error,
18
- apply_document_parsers,
19
- normalize_and_reindent_yaml
20
- )
21
-
22
-
23
- def abort_cleanup(build_dir):
24
- """Abort the build and cleanup the build directory."""
25
- log_error("Build aborted.")
26
- click.echo("Cleaning up build directory.")
27
- os.system(f"rm -rf {build_dir}")
28
- sys.exit(1)
29
-
30
-
31
- def write_env_variables(env_variables, output_file, default_env_vars):
32
- """Extract environment variables to a file."""
33
-
34
- try:
35
- env_variables = list(sorted(env_variables))
36
- # Check if directory exists
37
- if not os.path.exists(output_file):
38
- dir_name = os.path.dirname(output_file)
39
- if dir_name:
40
- os.makedirs(dir_name, exist_ok=True)
41
-
42
- existing_env_variables = []
43
- # Check if the file exists
44
- if os.path.exists(output_file):
45
- # Read existing env variables
46
- with open(output_file, "r", encoding="utf-8") as f:
47
- lines = f.read().splitlines()
48
- existing_env_variables = [
49
- line.split("=")[0].strip() for line in lines if "=" in line
50
- ]
51
-
52
- # Remove existing env variables
53
- env_variables = [
54
- env_var
55
- for env_var in env_variables
56
- if env_var not in existing_env_variables
57
- ]
58
-
59
- # Create env file content
60
- env_file_content = ""
61
- for env_var in env_variables:
62
- env_file_content += f"{env_var}=\n"
63
-
64
- # Add default env variables
65
- for key, value in default_env_vars.items():
66
- if key not in existing_env_variables:
67
- env_file_content += f"{key}={value}\n"
68
-
69
- # Append to the file
70
- with open(output_file, "a", encoding="utf-8") as f:
71
- f.write(env_file_content)
72
- click.echo(
73
- f"Environment variables extracted to {get_display_path(output_file)}"
74
- )
75
- except Exception as e:
76
- click.echo(f"Something went wrong in extract environment variables to a file")
77
-
78
-
79
- def resolve_relative_import_path_hof(module_name):
80
- """Replaces all src.path imports with the the provided module name
81
- Only paths that are in the packages artifact are replaced
82
- """
83
- root_dir = get_cli_root_dir()
84
- # All directories in the root directory
85
- directories = [
86
- d for d in os.listdir(root_dir) if os.path.isdir(os.path.join(root_dir, d))
87
- ]
88
- # Acceptable relative directories
89
- relative_directories_pair = [
90
- (f" src.{dir}", f" {module_name}.{dir}") for dir in directories
91
- ]
92
-
93
- def resolve_relative_import_path(file_content, meta):
94
- if "skip_relative_import_path" in meta and meta["skip_relative_import_path"]:
95
- return file_content
96
- for relative_dir, module_dir in relative_directories_pair:
97
- file_content = file_content.replace(relative_dir, module_dir)
98
- return file_content
99
-
100
- return resolve_relative_import_path
101
-
102
-
103
- def build_agents(config, build_config_dir, abort, parsers):
104
- configs_path = config["config_directory"]
105
- agent_config_path = os.path.join(configs_path, "agents")
106
- # Check if the agents directory exists
107
- if not os.path.exists(agent_config_path):
108
- click.echo(
109
- f"No user defined agents were found at '{get_display_path(agent_config_path)}'."
110
- )
111
- else:
112
- click.echo("Building agents.")
113
- # Get all agent configuration files
114
- agent_configs = [
115
- f for f in os.listdir(agent_config_path) if f.endswith(".yaml")
116
- ]
117
- for agent_config in agent_configs:
118
- try:
119
- # Read agent configuration file
120
- agent_config_file = os.path.join(agent_config_path, agent_config)
121
- with open(agent_config_file, "r", encoding="utf-8") as f:
122
- agent_config_content = f.read()
123
- # Apply document parsers
124
- meta = {"skip_relative_import_path": True}
125
- agent_config_content = apply_document_parsers(
126
- agent_config_content, parsers, meta
127
- )
128
- # Write agent configuration to build directory
129
- agent_build_path = os.path.join(
130
- build_config_dir, "agent_" + agent_config
131
- )
132
- with open(agent_build_path, "w", encoding="utf-8") as f:
133
- f.write(agent_config_content)
134
- except IOError as e:
135
- log_error(
136
- f'Error reading agent configuration file for "{agent_config}": {e}'
137
- )
138
- abort()
139
- except Exception as e:
140
- log_error(
141
- f'Error building agent configuration for "{agent_config}": {e}'
142
- )
143
- abort()
144
-
145
-
146
- def build_gateways(config, build_config_dir, abort, parsers, plugin_gateway_interfaces):
147
- configs_path = config["config_directory"]
148
- gateways_config_path = os.path.join(configs_path, "gateways")
149
-
150
- # Check if the gateways directory exists
151
- if not os.path.exists(gateways_config_path):
152
- click.echo(
153
- f"No user defined gateways were found at '{get_display_path(gateways_config_path)}'."
154
- )
155
- else:
156
- click.echo("Building gateways.")
157
-
158
- # Loop over the subdirectories of gateways_config_path
159
- for subdir in os.listdir(gateways_config_path):
160
- build_specific_gateway(
161
- build_config_dir,
162
- abort,
163
- parsers,
164
- gateways_config_path,
165
- subdir,
166
- plugin_gateway_interfaces,
167
- )
168
-
169
-
170
- def build_specific_gateway(
171
- build_config_dir,
172
- abort,
173
- parsers,
174
- gateways_config_path,
175
- gateway_name,
176
- known_plugin_interfaces=[],
177
- ):
178
- subdir_path = os.path.join(gateways_config_path, gateway_name)
179
- if os.path.isdir(subdir_path):
180
- click.echo(f"Building gateway in subdirectory: {gateway_name}")
181
-
182
- try:
183
- click.echo("Building gateway template.")
184
- # Load common header and gateway config
185
- gateway_header_template = load_template("gateway-header.yaml")
186
- gateway_config_file = os.path.join(subdir_path, "gateway.yaml")
187
- with open(gateway_config_file, "r", encoding="utf-8") as g:
188
- gateway_config_content = g.read()
189
-
190
- # Define config aliases to check for so that if they are missing we can add defaults
191
- config_aliases = {
192
- "response_format_prompt": "- response_format_prompt: &response_format_prompt \"\""
193
- }
194
-
195
- # Check which aliases are already in the gateway config
196
- gateway_found_aliases = set()
197
- for alias in config_aliases:
198
- if f"&{alias}" in gateway_config_content:
199
- gateway_found_aliases.add(alias)
200
-
201
- click.echo("Getting interface types.")
202
- known_interfaces = ["slack", "web", "rest-api"]
203
- interface_files = []
204
-
205
- # Find the interface types by looking at the files in the subdirectory
206
- for file in os.listdir(subdir_path):
207
- if (
208
- file.endswith(".yaml")
209
- and file != "gateway.yaml"
210
- and not file.endswith("-flows.yaml")
211
- ):
212
- interface_files.append(file)
213
-
214
- # Process interfaces
215
- for interface_file in interface_files:
216
- interface_name = interface_file.split(".yaml")[0]
217
- if gateway_name == interface_name:
218
- interface_config = (
219
- f"gateway_{gateway_name}.yaml"
220
- )
221
- gateway_id = gateway_name
222
- else:
223
- interface_config = (
224
- f"gateway_{gateway_name}_{interface_name.replace('-', '_')}.yaml"
225
- )
226
- gateway_id = f"{gateway_name}_{interface_name}"
227
- interface_build_path = os.path.join(build_config_dir, interface_config)
228
-
229
- complete_interface_gateway = gateway_header_template
230
-
231
- reindented_gateway_config_content = normalize_and_reindent_yaml(complete_interface_gateway, gateway_config_content)
232
- complete_interface_gateway += reindented_gateway_config_content
233
-
234
- # interface specific config
235
- interface_config_file = os.path.join(subdir_path, interface_file)
236
- with open(interface_config_file, "r", encoding="utf-8") as g:
237
- file_content = g.read()
238
-
239
- # Check which aliases are in the interface config
240
- interface_found_aliases = set()
241
- for alias in config_aliases:
242
- if f"&{alias}" in file_content:
243
- interface_found_aliases.add(alias)
244
-
245
- reindented_file_content = normalize_and_reindent_yaml(complete_interface_gateway, file_content)
246
- complete_interface_gateway += reindented_file_content
247
-
248
- # Add any missing config aliases
249
- missing_aliases = set(config_aliases.keys()) - gateway_found_aliases - interface_found_aliases
250
- if missing_aliases:
251
- complete_interface_gateway += "\n# Default configurations\nshared_config_defaults:\n"
252
- for alias in missing_aliases:
253
- complete_interface_gateway += f"{config_aliases[alias]}\n"
254
-
255
- # Write interface specific flows
256
- complete_interface_gateway += "\nflows:\n"
257
-
258
- if interface_name in known_interfaces:
259
- custom_interface_flows_path = os.path.join(
260
- subdir_path, f"{interface_name}-flows.yaml"
261
- )
262
- # First check for custom flow file, fall back to template
263
- if os.path.exists(custom_interface_flows_path):
264
- with open(
265
- custom_interface_flows_path, "r", encoding="utf-8"
266
- ) as g:
267
- flow_content = g.read()
268
- else:
269
- flow_content = load_template(f"{interface_name}-flows.yaml")
270
- complete_interface_gateway += flow_content
271
- elif interface_name in known_plugin_interfaces:
272
- # Write interface specific flows
273
- interface_flows_path = os.path.join(
274
- known_plugin_interfaces[interface_name],
275
- f"{interface_name}-flows.yaml",
276
- )
277
- try:
278
- with open(interface_flows_path, "r", encoding="utf-8") as g:
279
- interface_flow_template_file = g.read()
280
- except IOError as e:
281
- log_error(
282
- f'Expected plugin flow file "{interface_name}-flows.yaml" is not present.'
283
- )
284
- abort()
285
- complete_interface_gateway += interface_flow_template_file
286
- else:
287
- # This is a custom interface. The related flows can be in
288
- # the same directory as the interface config and end with -flows.yaml
289
- # or it will use the default flows template
290
- custom_interface_flows_path = os.path.join(
291
- subdir_path, f"{interface_name}-flows.yaml"
292
- )
293
-
294
- if os.path.exists(custom_interface_flows_path):
295
- with open(
296
- custom_interface_flows_path, "r", encoding="utf-8"
297
- ) as g:
298
- interface_flow_template_file = g.read()
299
- else:
300
- interface_flow_template_file = load_template("gateway-flows.yaml")
301
-
302
- complete_interface_gateway += interface_flow_template_file
303
-
304
- # Apply parsers to gateway config for this interface
305
- meta = {
306
- "extra_literals": {
307
- "GATEWAY_ID": gateway_id,
308
- "SNAKE_CASE_NAME": gateway_id.replace("-", "_"),
309
- }
310
- }
311
-
312
- complete_interface_gateway = apply_document_parsers(
313
- complete_interface_gateway, parsers, meta
314
- )
315
- with open(interface_build_path, "w", encoding="utf-8") as f:
316
- f.write(complete_interface_gateway)
317
-
318
- except IOError as e:
319
- log_error(
320
- f'Error reading gateway configuration file for "{gateway_name}": {e}'
321
- )
322
- abort()
323
- except Exception as e:
324
- log_error(f'Error building gateway configuration for "{gateway_name}": {e}')
325
- abort()
326
-
327
-
328
- def build_built_in_agents(config, build_config_dir, abort, parsers):
329
- ### Built-in agents
330
- click.echo("Building built-in agents.")
331
- built_in_agents = config["built_in"]["agents"]
332
- filtered_agent_names = [
333
- f"agent_{agent.get('name')}.yaml"
334
- for agent in built_in_agents
335
- if agent.get("name") and agent.get("enabled")
336
- ]
337
- agents_config_source_path = os.path.join(get_cli_root_dir(), "configs")
338
-
339
- for agent in filtered_agent_names:
340
- # Check if agent exists
341
- agent_config_file = os.path.join(agents_config_source_path, agent)
342
- if not os.path.exists(agent_config_file):
343
- log_error(
344
- f"Error: Built-in agent configuration file for {agent} not found.",
345
- )
346
- abort()
347
- try:
348
- # Read agent configuration file
349
- with open(agent_config_file, "r", encoding="utf-8") as f:
350
- agent_config_content = f.read()
351
- # Apply document parsers
352
- agent_config_content = apply_document_parsers(agent_config_content, parsers)
353
- # Write agent configuration to build directory
354
- agent_build_path = os.path.join(build_config_dir, agent)
355
- with open(agent_build_path, "w", encoding="utf-8") as f:
356
- f.write(agent_config_content)
357
- except IOError as e:
358
- log_error(
359
- f"Error reading built-in agent configuration file for {agent}: {e}",
360
- )
361
- abort()
362
- except Exception as e:
363
- log_error(
364
- f"Error building built-in agent configuration for {agent}: {e}",
365
- )
366
- abort()
367
-
368
-
369
- def build_solace_agent_mesh(config, build_config_dir, abort, parsers):
370
- click.echo("Building configs required for Solace Agent Mesh.")
371
- configs_source_path = os.path.join(get_cli_root_dir(), "configs")
372
- # Prefixes to skip
373
- skip_prefixes = ["agent", "gateway", "_"]
374
- # Get all config file names
375
- config_files = [
376
- f
377
- for f in os.listdir(configs_source_path)
378
- if f.endswith(".yaml")
379
- and not any(f.startswith(prefix) for prefix in skip_prefixes)
380
- ]
381
-
382
- # Check if embedding service is enabled
383
- embedding_enabled = True # Default to True for backward compatibility
384
- built_in_services = config.get("built_in", {}).get("services", [])
385
- if built_in_services: # Only check if services section exists
386
- embedding_enabled = False
387
- for service in built_in_services:
388
- if service.get("name") == "embedding" and service.get("enabled"):
389
- embedding_enabled = True
390
- break
391
-
392
- for config_file in config_files:
393
- # Skip embedding service if not enabled
394
- if config_file == "service_embedding.yaml" and not embedding_enabled:
395
- click.echo(f"Skipping embedding service as it is disabled.")
396
- continue
397
- try:
398
- # Read config file
399
- config_file_path = os.path.join(configs_source_path, config_file)
400
- with open(config_file_path, "r", encoding="utf-8") as f:
401
- config_content = f.read()
402
- if not config_content.strip():
403
- continue
404
- # Apply document parsers
405
- config_content = apply_document_parsers(config_content, parsers)
406
- # Write config to build directory
407
- config_build_path = os.path.join(build_config_dir, config_file)
408
- with open(config_build_path, "w", encoding="utf-8") as f:
409
- f.write(config_content)
410
- except IOError as e:
411
- log_error(
412
- f'Error reading config file for "{config_file}": {e}',
413
- )
414
- abort()
415
- except Exception as e:
416
- log_error(
417
- f'Error building config file for "{config_file}": {e}',
418
- )
419
- abort()
420
-
421
-
422
- def build_runtime_config(config, build_config_dir, abort):
423
- runtime_config_path = os.path.join(build_config_dir, "config.yaml")
424
- runtime_config = config.get("runtime", {})
425
- try:
426
- Config.write_config(runtime_config, runtime_config_path)
427
- click.echo(f"Created runtime config at {get_display_path(runtime_config_path)}")
428
- except IOError as e:
429
- log_error(f"Error writing runtime config file: {e}")
430
- abort()
431
-
432
-
433
- def build_force_overwrite(config, build_config_dir, abort, parsers, overwrite_src_path):
434
- """
435
- Overwriting default system config files with user provide overwrite files
436
- """
437
- # Check if the overwrite directory exists
438
- if not os.path.exists(overwrite_src_path):
439
- return
440
- click.echo(
441
- f"Force overwriting default config files with provided files from '{get_display_path(overwrite_src_path)}'."
442
- )
443
- overwrite_files = [f for f in os.listdir(overwrite_src_path) if f.endswith(".yaml")]
444
- for overwrite_file in overwrite_files:
445
- try:
446
- # Read overwrite file
447
- overwrite_file_path = os.path.join(overwrite_src_path, overwrite_file)
448
- with open(overwrite_file_path, "r", encoding="utf-8") as f:
449
- overwrite_content = f.read()
450
- if not overwrite_content.strip():
451
- continue
452
- # Apply document parsers
453
- overwrite_content = apply_document_parsers(overwrite_content, parsers)
454
- # Write overwrite to build directory
455
- overwrite_build_path = os.path.join(build_config_dir, overwrite_file)
456
- with open(overwrite_build_path, "w", encoding="utf-8") as f:
457
- f.write(overwrite_content)
458
- except IOError as e:
459
- log_error(
460
- f'Error reading overwrite file for "{overwrite_file}": {e}',
461
- )
462
- abort()
463
- except Exception as e:
464
- log_error(
465
- f'Error building overwrite file for "{overwrite_file}": {e}',
466
- )
467
- abort()
468
-
469
-
470
- def build_command(skip_without_asking=False, no_init=False):
471
- """Build the Solace Agent Mesh application."""
472
- config_path = Config.user_config_file
473
- config = click.get_current_context().obj["solace_agent_mesh"]
474
-
475
- if not os.path.exists(config_path) and not no_init:
476
- init_command({"skip": skip_without_asking})
477
- config = Config.get_config(config_path).get("solace_agent_mesh")
478
-
479
- click.echo("Building Solace Agent Mesh application")
480
- configs_path = config["config_directory"]
481
- modules_path = config["modules_directory"]
482
- build_dir = config["build"]["build_directory"]
483
-
484
- build_config_dir = os.path.join(build_dir, "configs")
485
- abort = partial(abort_cleanup, build_dir)
486
-
487
- skip_user_configs = False
488
-
489
- # List of all required env variables
490
- env_variables = set()
491
-
492
- orchestrator_instance_count = str(config["build"].get("orchestrator_instance_count"))
493
- # check if it's a number
494
- if not orchestrator_instance_count.isdigit():
495
- log_error("Orchestrator instance count must be a number.")
496
- abort()
497
-
498
- # Format literals
499
- format_literals = {
500
- "MODULE_DIRECTORY": modules_path.replace("\\", ".").replace("/", "."),
501
- "ORCHESTRATOR_INSTANCE_COUNT": orchestrator_instance_count,
502
- }
503
-
504
- ####################
505
- # Document Parsers #
506
- ####################
507
- parsers = []
508
-
509
- ### ENV Parser
510
- def extract_env_var(content, _):
511
- # Extract environment variables from the config
512
- variables = extract_yaml_env_variables(content)
513
- for var in variables:
514
- env_variables.add(var)
515
- return content
516
-
517
- parsers.append(extract_env_var)
518
-
519
- ### Log level override
520
- log_level = config["build"].get("log_level_override")
521
-
522
- def log_level_override(content, _):
523
- if log_level:
524
- content = re.sub(
525
- r"log_file_level: \w+", f"log_file_level: {log_level}", content
526
- )
527
- content = re.sub(
528
- r"stdout_log_level: \w+", f"stdout_log_level: {log_level}", content
529
- )
530
- return content
531
-
532
- parsers.append(log_level_override)
533
- ### Relative import path resolver Parser
534
- resolve_relative_import_path = resolve_relative_import_path_hof("solace_agent_mesh")
535
- parsers.append(resolve_relative_import_path)
536
-
537
- ### Literal formatter Parser
538
- def format_literals_parser(content, meta):
539
- if "extra_literals" in meta and meta["extra_literals"]:
540
- return literal_format_template(
541
- content,
542
- {
543
- **format_literals,
544
- **meta["extra_literals"],
545
- },
546
- )
547
- return literal_format_template(content, format_literals)
548
-
549
- parsers.append(format_literals_parser)
550
-
551
- ########################
552
- # Handling Directories #
553
- ########################
554
-
555
- # Check if the config directory exists
556
- if not os.path.exists(configs_path):
557
- if skip_without_asking:
558
- click.echo(
559
- f"No user defined components were found at '{get_display_path(configs_path)}'."
560
- )
561
- skip_user_configs = True
562
- else:
563
- skip_user_configs = click.confirm(
564
- f"No user defined components were found at '{get_display_path(configs_path)}'. Do you want to continue the build?",
565
- default=False,
566
- )
567
- if not skip_user_configs:
568
- log_error("Build aborted.")
569
- return 1
570
-
571
- try:
572
- # Delete build directory if it exists
573
- if os.path.exists(build_dir):
574
- os.system(f"rm -rf {build_dir}")
575
- # Create recursive directories if they don't exist
576
- os.makedirs(build_config_dir, exist_ok=True)
577
- except IOError as e:
578
- log_error(f"Error creating build directory: {e}")
579
- abort()
580
-
581
- plugin_gateway_interfaces = get_all_plugin_gateway_interfaces(config, abort)
582
- ####################
583
- # Building Plugins #
584
- ####################
585
- if "plugins" in config and isinstance(config["plugins"], list):
586
- build_plugins(
587
- config,
588
- build_config_dir,
589
- abort,
590
- parsers,
591
- plugin_gateway_interfaces,
592
- build_specific_gateway,
593
- )
594
-
595
- ########################
596
- # User Defined Configs #
597
- ########################
598
- if skip_user_configs:
599
- click.echo("Skipping user defined components.")
600
- else:
601
- ####################
602
- # Building Modules #
603
- ####################
604
- try:
605
- if not os.path.exists(modules_path):
606
- click.echo(
607
- f"No user defined modules were found at '{get_display_path(modules_path)}'."
608
- )
609
- else:
610
- click.echo("Building modules.")
611
- os.system(f"cp -r {modules_path} {build_dir}")
612
- except IOError as e:
613
- log_error(f"Error copying modules directory: {e}")
614
- abort()
615
-
616
- ###################
617
- # Building Agents #
618
- ###################
619
- build_agents(config, build_config_dir, abort, parsers)
620
-
621
- #####################
622
- # Building Gateways #
623
- #####################
624
- build_gateways(
625
- config, build_config_dir, abort, parsers, plugin_gateway_interfaces
626
- )
627
-
628
- ############################
629
- # Building Built-in Agents #
630
- ############################
631
- build_built_in_agents(config, build_config_dir, abort, parsers)
632
-
633
- ###########################
634
- # Building Solace Agent Mesh #
635
- ###########################
636
- build_solace_agent_mesh(config, build_config_dir, abort, parsers)
637
-
638
- ###########################
639
- # Building Runtime Config #
640
- ###########################
641
- build_runtime_config(config, build_dir, abort)
642
-
643
- ############################
644
- # Building Force Overwrite #
645
- ############################
646
- overwrite_src_path = config.get("overwrite_directory")
647
- overwrite_plugins_path = os.path.join(build_dir, "overwrites")
648
- if os.path.exists(overwrite_plugins_path):
649
- build_force_overwrite(
650
- config, build_config_dir, abort, parsers, overwrite_plugins_path
651
- )
652
- # remove the overwrite directory
653
- shutil.rmtree(overwrite_plugins_path)
654
-
655
- build_force_overwrite(config, build_config_dir, abort, parsers, overwrite_src_path)
656
-
657
- ####################
658
- # Default ENV Vars #
659
- ####################
660
- default_env_vars = {
661
- "RUNTIME_CONFIG_PATH": os.path.join(build_dir, "config.yaml"),
662
- }
663
- # Handle environment variables
664
- if config["build"]["extract_env_vars"]:
665
- write_env_variables(env_variables, config["env_file"], default_env_vars)
666
-
667
- # Build completed
668
- click.echo(click.style("Build completed.", bold=True, fg="green"))
669
- click.echo(f"\tBuild directory: {get_display_path(build_dir)}")
670
- return 0
@@ -1,3 +0,0 @@
1
- from .chat import chat_command
2
-
3
- __all__ = ["chat_command"]