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
@@ -1,141 +0,0 @@
1
- import re
2
- import json
3
- import base64
4
- import zipfile
5
- import gzip
6
- import io
7
-
8
- from solace_ai_connector.common.log import log
9
- from .transformers import TRANSFORMERS
10
-
11
- QUERY_OPTIONS = {
12
- "encoding": ["zip", "gzip", "base64", "datauri"],
13
- }
14
-
15
- for tr in TRANSFORMERS:
16
- for key, value in tr.queries.items():
17
- QUERY_OPTIONS[key] = value.get("type")
18
-
19
- LLM_QUERY_OPTIONS = {
20
- **QUERY_OPTIONS,
21
- "resolve": "bool",
22
- }
23
-
24
-
25
- def encode_file(file: bytes, encoding: str, mime_type: str, file_name=str) -> bytes:
26
- """
27
- Encode a file using the specified encoding.
28
-
29
- Parameters:
30
- - file (bytes): The file content as bytes.
31
- - encoding (str): The encoding to use ('zip', 'gzip', 'base64', 'datauri').
32
-
33
- Returns:
34
- - bytes: The encoded file content.
35
- """
36
- try:
37
- if encoding == "zip":
38
- # Create a BytesIO buffer to hold the zip file
39
- zip_buffer = io.BytesIO()
40
- # Create a zip file in the buffer
41
- with zipfile.ZipFile(zip_buffer, "w", zipfile.ZIP_DEFLATED) as zip_file:
42
- # Add the file to the ZIP archive
43
- zip_file.writestr(file_name, file)
44
- # Get the byte buffer of the zip file
45
- zip_buffer.seek(0) # Move to the beginning of the buffer
46
- return zip_buffer.read()
47
-
48
- elif encoding == "gzip":
49
- # Create a BytesIO buffer to hold the gzip file
50
- gzip_buffer = io.BytesIO()
51
- # Create a gzip file in the buffer
52
- with gzip.GzipFile(fileobj=gzip_buffer, mode="wb") as gzip_file:
53
- # Write the file content to the gzip archive
54
- gzip_file.write(file)
55
- return gzip_buffer.getvalue()
56
-
57
- elif encoding == "base64":
58
- return base64.b64encode(file).decode("utf-8")
59
-
60
- elif encoding == "datauri":
61
- return f"data:{mime_type};base64,{base64.b64encode(file).decode('utf-8')}"
62
-
63
- except Exception as e:
64
- log.error("Failed to encode file: %s", e)
65
- return file
66
-
67
- return file
68
-
69
-
70
- def apply_file_transformations(
71
- file: bytes, metadata: dict, transformations: dict = {}
72
- ) -> bytes | str:
73
- """
74
- Apply transformations to a file.
75
-
76
- Parameters:
77
- - file (bytes): The file content as bytes.
78
- - metadata (dict): The file metadata.
79
- - transformations (dict): The transformations to apply.
80
- """
81
- if not transformations:
82
- return file
83
- text_mime_type_regex = r"text/.*|.*csv|.*json|.*xml|.*yaml|.*x-yaml|.*txt"
84
- mime_type = metadata.get("mime_type", "")
85
- if mime_type is None:
86
- mime_type = ""
87
- name = metadata.get("name", "unknown")
88
- other = {
89
- "mime_type": mime_type,
90
- "name": name,
91
- }
92
- data = file
93
- if not re.match(text_mime_type_regex, mime_type):
94
- for transformer in TRANSFORMERS:
95
- if transformer.is_binary_transformer:
96
- data = transformer.transform(file, data, transformations, other)
97
-
98
- # Should be last transformation
99
- if transformations.get("encoding"):
100
- try:
101
- byte_data = data if isinstance(data, bytes) else data.encode("utf-8")
102
- return encode_file(
103
- byte_data, transformations.get("encoding"), mime_type, name
104
- )
105
- except Exception as e:
106
- log.error("Failed to encode to base64: %s", e)
107
- return file
108
- return data
109
- else:
110
- # File is text-based
111
- # Convert bytes to string if of type bytes
112
- decoded_data = file.decode("utf-8") if isinstance(file, bytes) else file
113
- data = decoded_data
114
-
115
- for transformer in TRANSFORMERS:
116
- if transformer.is_text_transformer:
117
- data = transformer.transform(file, data, transformations, other)
118
-
119
- # Should be last transformation
120
- if transformations.get("encoding"):
121
- try:
122
- byte_data = data if isinstance(data, bytes) else data.encode("utf-8")
123
- return encode_file(
124
- byte_data, transformations["encoding"], mime_type, name
125
- )
126
- except Exception as e:
127
- log.error("Failed to encode to base64: %s", e)
128
- return file
129
-
130
- if not isinstance(data, str):
131
- # Convert bytes to string
132
- if isinstance(data, bytes):
133
- try:
134
- data = data.decode("utf-8")
135
- except UnicodeDecodeError:
136
- data = base64.b64encode(data).decode("utf-8")
137
- data = f"data:{mime_type};base64,{data}"
138
- else:
139
- data = json.dumps(data)
140
-
141
- return data
@@ -1,324 +0,0 @@
1
- # Add utility functions for upload CSV that automatically creates the number of row and data types
2
- import csv
3
- from typing import Tuple, Union
4
- import json
5
-
6
- from .file_service_constants import FS_PROTOCOL, INDENT_SIZE
7
-
8
-
9
- class Types:
10
- """
11
- Type constants definition to be used when representing the schema.
12
- """
13
-
14
- INT = "int"
15
- FLOAT = "float"
16
- BOOL = "bool"
17
- STR = "str"
18
- ARRAY = "array"
19
- OBJECT = "object"
20
- NULL = "null"
21
-
22
- @property
23
- def PRIMITIVES():
24
- return [Types.INT, Types.FLOAT, Types.BOOL, Types.STR]
25
-
26
-
27
- def get_str_type(value: str) -> str:
28
- """
29
- Get the type of a string value.
30
-
31
- Parameters:
32
- - value (str): The string value.
33
-
34
- Returns:
35
- - str: The type of the value.
36
- """
37
- if not value:
38
- return Types.NULL
39
- if value.isdigit():
40
- return Types.INT
41
- elif value.replace(".", "", 1).isdigit():
42
- return Types.FLOAT
43
- else:
44
- return Types.STR
45
-
46
-
47
- def convert_dict_to_yaml(schema: dict, indent_size=INDENT_SIZE, _level=0) -> str:
48
- """
49
- Convert a dictionary schema to a YAML string.
50
-
51
- Parameters:
52
- - schema (dict): The dictionary schema.
53
-
54
- Returns:
55
- - str: The YAML string.
56
- """
57
- yaml_str = ""
58
- indent = indent_size * _level
59
-
60
- for key, value in schema.items():
61
- if isinstance(value, dict):
62
- value_str = convert_dict_to_yaml(value, indent_size, _level + 1)
63
- yaml_str += f"{space(indent)}{key}:\n{value_str}\n"
64
- else:
65
- yaml_str += f"{space(indent)}{key}: {value}\n"
66
- return yaml_str.rstrip()
67
-
68
-
69
- def space(size=INDENT_SIZE):
70
- """
71
- Get a string of spaces.
72
- """
73
- if size == 0:
74
- return ""
75
- return " " * size
76
-
77
-
78
- def extract_csv_schema_and_shape(csv_file: Union[str, bytes]) -> Tuple[dict, Tuple[int, int]]:
79
- """
80
- Get the schema and shape of a CSV file.
81
-
82
- Parameters:
83
- - csv_file (str): The CSV file content.
84
- - header_row (str): The header row of the CSV file.
85
-
86
- Returns:
87
- - str: The schema of the CSV file.
88
- - st: The shape of the CSV file.
89
- """
90
- if type(csv_file) == bytes:
91
- csv_file = csv_file.decode("utf-8")
92
-
93
- # Parse the CSV string
94
- csv_lines = csv_file.splitlines()
95
- csv_reader = csv.DictReader(csv_lines)
96
- columns = csv_reader.fieldnames
97
- listed_csv = list(csv_reader)
98
- shape = (len(listed_csv), len(columns))
99
- schema = {}
100
- for col in columns:
101
- # deriving type from the top 10 rows
102
- col_type = None
103
- for i, row in enumerate(listed_csv):
104
- if i >= 10:
105
- break
106
- curr_type = get_str_type(row[col])
107
- if col_type is None:
108
- col_type = curr_type
109
- elif col_type != curr_type:
110
- # multiple types, set as str
111
- col_type = Types.STR
112
- break
113
- schema[col] = {"type": col_type}
114
-
115
- return schema, shape
116
-
117
-
118
- def dict_to_schema(input_dict: dict) -> dict:
119
- """
120
- Convert a dictionary to a JSON schema.
121
-
122
- Parameters:
123
- - input_dict (dict): The input dictionary.
124
-
125
- Returns:
126
- - dict: The JSON schema.
127
- """
128
-
129
- def infer_type(value):
130
- if isinstance(value, str):
131
- return Types.STR
132
- elif isinstance(value, int):
133
- return Types.INT
134
- elif isinstance(value, float):
135
- return Types.FLOAT
136
- elif isinstance(value, bool):
137
- return Types.BOOL
138
- elif isinstance(value, list):
139
- if len(value) > 0:
140
- return {"type": Types.ARRAY, "items": infer_type(value[0])}
141
- else:
142
- return {"type": Types.ARRAY, "items": {}}
143
- elif isinstance(value, dict):
144
- return {"type": Types.OBJECT, "properties": infer_properties(value)}
145
- else:
146
- return Types.NULL
147
-
148
- def infer_properties(input_dict):
149
- return {
150
- key: (
151
- {"type": infer_type(value)}
152
- if isinstance(infer_type(value), str)
153
- else infer_type(value)
154
- )
155
- for key, value in input_dict.items()
156
- }
157
-
158
- if type(input_dict) is list:
159
- input_dict = input_dict[0]
160
- json_schema = {
161
- "type": Types.ARRAY,
162
- "items": {"type": Types.OBJECT, "properties": infer_properties(input_dict)},
163
- }
164
- else:
165
- json_schema = {"type": Types.OBJECT, "properties": infer_properties(input_dict)}
166
-
167
- return json_schema
168
-
169
-
170
- def get_dict_array_shape(
171
- data: Union[dict, list], max_level=2, _path="", _result=None, _level=0
172
- ):
173
- """
174
- Get the count of each array in a dictionary schema.
175
- """
176
- if _result is None:
177
- _result = []
178
-
179
- # If it's a list, record its length and traverse each element
180
- if isinstance(data, list):
181
- if _path:
182
- _result.append([_path, len(data)])
183
- else:
184
- _result.append(["top level", len(data)])
185
- if _level < max_level:
186
- get_dict_array_shape(data[0], max_level, f"{_path}[*]", _result, _level + 1)
187
-
188
- # If it's a dictionary, traverse each key-value pair
189
- elif isinstance(data, dict):
190
- for key, value in data.items():
191
- new_path = f"{_path}.{key}" if _path else key
192
- if _level < max_level:
193
- get_dict_array_shape(value, max_level, new_path, _result, _level + 1)
194
-
195
- return _result
196
-
197
-
198
- def get_csv_schema_and_shape(schema: dict, shape: Tuple[int, int]) -> Tuple[str, str]:
199
- """
200
- Get the formatted schema and shape of a CSV file.
201
-
202
- Parameters:
203
- - schema (dict): The schema of the CSV file.
204
- - shape (Tuple[int, int]): The shape of the CSV file.
205
-
206
- Returns:
207
- - str: The formatted schema of the CSV file.
208
- - Tuple[int, int]: The shape of the CSV file.
209
- """
210
- shape_str = f"{shape[0]} rows x {shape[1]} columns"
211
- schema_dict = {
212
- "type": Types.ARRAY,
213
- "items": {"type": Types.OBJECT, "properties": schema},
214
- }
215
- schema_str = convert_dict_to_yaml(schema_dict)
216
- return schema_str, shape_str
217
-
218
-
219
- def get_json_schema_and_shape(file: Union[bytes, str]) -> Tuple[str, str]:
220
- try:
221
- if type(file) == bytes:
222
- file = file.decode("utf-8")
223
- json_data = json.loads(file)
224
- schema = dict_to_schema(json_data)
225
- schema_str = convert_dict_to_yaml(schema)
226
- shape_str = None
227
-
228
- def get_row_text(count):
229
- return f"{count} elements" if count > 1 else f"{count} element"
230
-
231
- array_lengths = get_dict_array_shape(json_data)
232
- if array_lengths:
233
- shape_str = "\n".join(
234
- [f"{key}: {get_row_text(val)}" for key, val in array_lengths]
235
- )
236
- return schema_str, shape_str
237
- except Exception as e:
238
- return None, None
239
-
240
-
241
- def get_file_schema_and_shape(file: bytes, metadata: dict) -> Tuple[str, str]:
242
- """
243
- Get the schema and shape of a file.
244
-
245
- Parameters:
246
- - file (bytes): The file content as bytes.
247
- - metadata (dict): The file metadata.
248
-
249
- Returns:
250
- - str: The schema of the file. None if cannot be determined.
251
- - str: The shape of the file. None if cannot be determined.
252
- """
253
- if metadata.get("mime_type") == "text/csv":
254
- schema, shape = extract_csv_schema_and_shape(file)
255
- schema_str, shape_str = get_csv_schema_and_shape(schema, shape)
256
- return schema_str, shape_str
257
- elif metadata.get("mime_type") == "application/json":
258
- schema, shape = get_json_schema_and_shape(file)
259
- return schema, shape
260
- else:
261
- return None, None
262
-
263
-
264
- def recursive_file_resolver(
265
- obj: Union[dict, str, list],
266
- resolver: callable,
267
- session_id: str,
268
- force_resolve: bool = False,
269
- ):
270
- """
271
- Recursively resolve all the file URLs in the input data.
272
-
273
- Parameters:
274
- - obj (dict|str|list): The input data.
275
- - resolver (callable): The resolver function.
276
- - session_id (str): The session ID.
277
- - force_resolve (bool): Resolve all the URLs regardless of the 'resolve' query parameter.
278
-
279
- Returns:
280
- - dict|str|list: The object with resolved URLs.
281
- """
282
- if type(obj) == str:
283
- return resolver(obj, session_id, force_resolve)
284
-
285
- keys = []
286
- if type(obj) == list:
287
- keys = range(len(obj))
288
- elif type(obj) == dict:
289
- keys = obj.keys()
290
-
291
- for key in keys:
292
- if isinstance(obj[key], dict):
293
- obj[key] = recursive_file_resolver(
294
- obj[key], resolver, session_id, force_resolve
295
- )
296
- elif isinstance(obj[key], list):
297
- obj[key] = [
298
- (
299
- recursive_file_resolver(item, resolver, session_id, force_resolve)
300
- if isinstance(item, dict)
301
- else item
302
- )
303
- for item in obj[key]
304
- ]
305
- elif isinstance(obj[key], str):
306
- obj[key] = resolver(obj[key], session_id, force_resolve)
307
- return obj
308
-
309
-
310
- def starts_with_fs_url(url: str) -> bool:
311
- """
312
- Check if the URL starts with the file service protocol.
313
-
314
- Parameters:
315
- - url (str): The URL.
316
-
317
- Returns:
318
- - bool: True if the URL starts with the file service protocol.
319
- """
320
- return (
321
- url.startswith(f"{FS_PROTOCOL}://")
322
- or url.startswith(f"<url>{FS_PROTOCOL}://")
323
- or url.startswith(f"<url> {FS_PROTOCOL}://")
324
- )
@@ -1,5 +0,0 @@
1
- TRANSFORMERS = []
2
-
3
- __all__ = [
4
- "TRANSFORMERS"
5
- ]
@@ -1,3 +0,0 @@
1
- from .history_service import HistoryService
2
-
3
- __all__ = ["HistoryService"]
@@ -1,54 +0,0 @@
1
- from abc import ABC, abstractmethod
2
-
3
- class BaseHistoryProvider(ABC):
4
-
5
- def __init__(self, config=None):
6
- self.config = config or {}
7
-
8
- @abstractmethod
9
- def get_all_sessions(self) -> list[str]:
10
- """
11
- Retrieve all session identifiers.
12
- """
13
- raise NotImplementedError("Method not implemented")
14
-
15
- @abstractmethod
16
- def get_session(self, session_id: str)->dict:
17
- """
18
- Retrieve the session .
19
-
20
- :param session_id: The session identifier.
21
- :return: The session metadata.
22
- """
23
- raise NotImplementedError("Method not implemented")
24
-
25
- @abstractmethod
26
- def delete_session(self, session_id: str):
27
- """
28
- Delete the session.
29
-
30
- :param session_id: The session identifier.
31
- """
32
- raise NotImplementedError("Method not implemented")
33
-
34
- @abstractmethod
35
- def store_session(self, session_id: str, data: dict):
36
- """
37
- Store the session metadata.
38
-
39
- :param session_id: The session identifier.
40
- :param data: The session data to be stored.
41
- """
42
- raise NotImplementedError("Method not implemented")
43
-
44
-
45
- def update_session(self, session_id: str, data: dict):
46
- """
47
- Update data in the store using the partial data provided.
48
-
49
- :param key: The key to update the data under.
50
- :param data: The data to update.
51
- """
52
- history = self.get_session(session_id).copy()
53
- history.update(data)
54
- self.store_session(session_id, history)
@@ -1,74 +0,0 @@
1
- import json
2
- import os
3
- from .base_history_provider import BaseHistoryProvider
4
-
5
- class FileHistoryProvider(BaseHistoryProvider):
6
- """
7
- A simple file-based history provider for storing session data.
8
- """
9
- def __init__(self, config=None):
10
- super().__init__(config)
11
-
12
- if not self.config.get("path"):
13
- raise ValueError("Missing required configuration for FileHistoryProvider, Missing 'path' in configs.")
14
-
15
- self.path = self.config.get("path")
16
-
17
- if not self._exists(self.path):
18
- os.makedirs(self.path, exist_ok=True)
19
-
20
- def _get_key(self, session_id):
21
- """
22
- Generate a file path for a session.
23
-
24
- :param session_id: The session identifier.
25
- :return: A formatted file path.
26
- """
27
- return os.path.join(self.path, f"sessions_{session_id}_history.json")
28
-
29
- def store_session(self, session_id: str, data: dict):
30
- """
31
- Store the session metadata.
32
-
33
- :param session_id: The session identifier.
34
- :param data: The session data to be stored.
35
- """
36
- file_path = self._get_key(session_id)
37
- with open(file_path, "w", encoding="utf-8") as f:
38
- f.write(json.dumps(data))
39
-
40
- def get_session(self, session_id: str)->dict:
41
- """
42
- Retrieve the session.
43
-
44
- :param session_id: The session identifier.
45
- :return: The session metadata as a dictionary.
46
- """
47
- file_path = self._get_key(session_id)
48
- if not self._exists(file_path):
49
- return {}
50
-
51
- try:
52
- with open(file_path, "r", encoding="utf-8") as f:
53
- return json.load(f)
54
- except json.JSONDecodeError:
55
- return {}
56
-
57
- def get_all_sessions(self) -> list[str]:
58
- """
59
- Retrieve all session identifiers.
60
- """
61
- return [f[9:-13] for f in os.listdir(self.path) if f.startswith("sessions_") and f.endswith("_history.json")]
62
-
63
- def delete_session(self, session_id: str):
64
- """
65
- Delete the session.
66
-
67
- :param session_id: The session identifier.
68
- """
69
- file_path = self._get_key(session_id)
70
- if self._exists(file_path):
71
- os.remove(file_path)
72
-
73
- def _exists(self, path: str):
74
- return os.path.exists(path)
@@ -1,40 +0,0 @@
1
-
2
-
3
- class HistoryProviderFactory:
4
- """
5
- Factory class for creating history provider instances.
6
- """
7
- HISTORY_PROVIDERS = ["redis", "memory", "file", "mongodb", "sql"]
8
-
9
- @staticmethod
10
- def has_provider(class_name):
11
- """
12
- Check if the history provider is supported.
13
- """
14
- return class_name in HistoryProviderFactory.HISTORY_PROVIDERS
15
-
16
- @staticmethod
17
- def get_provider_class(class_name):
18
- """
19
- Get the history provider class based on the class name.
20
- """
21
- if class_name not in HistoryProviderFactory.HISTORY_PROVIDERS:
22
- raise ValueError(f"Unsupported history provider: {class_name}")
23
- if class_name == "redis":
24
- from .redis_history_provider import RedisHistoryProvider
25
- return RedisHistoryProvider
26
- elif class_name == "memory":
27
- from .memory_history_provider import MemoryHistoryProvider
28
- return MemoryHistoryProvider
29
- elif class_name == "file":
30
- from .file_history_provider import FileHistoryProvider
31
- return FileHistoryProvider
32
- elif class_name == "mongodb":
33
- from .mongodb_history_provider import MongoDBHistoryProvider
34
- return MongoDBHistoryProvider
35
- elif class_name == "sql":
36
- from .sql_history_provider import SQLHistoryProvider
37
- return SQLHistoryProvider
38
- else:
39
- raise ValueError(f"Unsupported history provider: {class_name}")
40
-
@@ -1,33 +0,0 @@
1
- """
2
- Memory history provider
3
- """
4
-
5
- from .base_history_provider import BaseHistoryProvider
6
-
7
-
8
- class MemoryHistoryProvider(BaseHistoryProvider):
9
- """
10
- A history provider that stores history in memory.
11
- """
12
-
13
- def __init__(self, config=None):
14
- super().__init__(config)
15
- self.history = {}
16
-
17
- def store_session(self, session_id, data):
18
- if session_id not in self.history:
19
- self.history[session_id] = {}
20
-
21
- self.history[session_id].update(data)
22
-
23
- def get_session(self, session_id):
24
- if session_id not in self.history:
25
- return {}
26
- return self.history[session_id]
27
-
28
- def get_all_sessions(self) -> list[str]:
29
- return list(self.history.keys())
30
-
31
- def delete_session(self, session_id):
32
- if session_id in self.history:
33
- del self.history[session_id]