solace-agent-mesh 1.11.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (624) hide show
  1. solace_agent_mesh/__init__.py +0 -0
  2. solace_agent_mesh/agent/__init__.py +0 -0
  3. solace_agent_mesh/agent/adk/__init__.py +0 -0
  4. solace_agent_mesh/agent/adk/adk_llm.txt +226 -0
  5. solace_agent_mesh/agent/adk/adk_llm_detail.txt +566 -0
  6. solace_agent_mesh/agent/adk/alembic/README +74 -0
  7. solace_agent_mesh/agent/adk/alembic/env.py +77 -0
  8. solace_agent_mesh/agent/adk/alembic/script.py.mako +28 -0
  9. solace_agent_mesh/agent/adk/alembic/versions/e2902798564d_adk_session_db_upgrade.py +52 -0
  10. solace_agent_mesh/agent/adk/alembic.ini +112 -0
  11. solace_agent_mesh/agent/adk/app_llm_agent.py +52 -0
  12. solace_agent_mesh/agent/adk/artifacts/__init__.py +1 -0
  13. solace_agent_mesh/agent/adk/artifacts/artifacts_llm.txt +171 -0
  14. solace_agent_mesh/agent/adk/artifacts/filesystem_artifact_service.py +545 -0
  15. solace_agent_mesh/agent/adk/artifacts/s3_artifact_service.py +609 -0
  16. solace_agent_mesh/agent/adk/callbacks.py +2318 -0
  17. solace_agent_mesh/agent/adk/embed_resolving_mcp_toolset.py +406 -0
  18. solace_agent_mesh/agent/adk/intelligent_mcp_callbacks.py +415 -0
  19. solace_agent_mesh/agent/adk/mcp_content_processor.py +666 -0
  20. solace_agent_mesh/agent/adk/models/lite_llm.py +1026 -0
  21. solace_agent_mesh/agent/adk/models/models_llm.txt +189 -0
  22. solace_agent_mesh/agent/adk/models/oauth2_token_manager.py +132 -0
  23. solace_agent_mesh/agent/adk/runner.py +390 -0
  24. solace_agent_mesh/agent/adk/schema_migration.py +88 -0
  25. solace_agent_mesh/agent/adk/services.py +468 -0
  26. solace_agent_mesh/agent/adk/setup.py +1325 -0
  27. solace_agent_mesh/agent/adk/stream_parser.py +415 -0
  28. solace_agent_mesh/agent/adk/tool_wrapper.py +165 -0
  29. solace_agent_mesh/agent/agent_llm.txt +369 -0
  30. solace_agent_mesh/agent/agent_llm_detail.txt +1702 -0
  31. solace_agent_mesh/agent/protocol/__init__.py +0 -0
  32. solace_agent_mesh/agent/protocol/event_handlers.py +2041 -0
  33. solace_agent_mesh/agent/protocol/protocol_llm.txt +81 -0
  34. solace_agent_mesh/agent/protocol/protocol_llm_detail.txt +92 -0
  35. solace_agent_mesh/agent/proxies/__init__.py +0 -0
  36. solace_agent_mesh/agent/proxies/a2a/__init__.py +3 -0
  37. solace_agent_mesh/agent/proxies/a2a/a2a_llm.txt +190 -0
  38. solace_agent_mesh/agent/proxies/a2a/app.py +56 -0
  39. solace_agent_mesh/agent/proxies/a2a/component.py +1585 -0
  40. solace_agent_mesh/agent/proxies/a2a/config.py +216 -0
  41. solace_agent_mesh/agent/proxies/a2a/oauth_token_cache.py +104 -0
  42. solace_agent_mesh/agent/proxies/base/__init__.py +3 -0
  43. solace_agent_mesh/agent/proxies/base/app.py +100 -0
  44. solace_agent_mesh/agent/proxies/base/base_llm.txt +148 -0
  45. solace_agent_mesh/agent/proxies/base/component.py +816 -0
  46. solace_agent_mesh/agent/proxies/base/config.py +85 -0
  47. solace_agent_mesh/agent/proxies/base/proxy_task_context.py +19 -0
  48. solace_agent_mesh/agent/proxies/proxies_llm.txt +283 -0
  49. solace_agent_mesh/agent/sac/__init__.py +0 -0
  50. solace_agent_mesh/agent/sac/app.py +595 -0
  51. solace_agent_mesh/agent/sac/component.py +3668 -0
  52. solace_agent_mesh/agent/sac/patch_adk.py +103 -0
  53. solace_agent_mesh/agent/sac/sac_llm.txt +189 -0
  54. solace_agent_mesh/agent/sac/sac_llm_detail.txt +200 -0
  55. solace_agent_mesh/agent/sac/task_execution_context.py +415 -0
  56. solace_agent_mesh/agent/testing/__init__.py +3 -0
  57. solace_agent_mesh/agent/testing/debug_utils.py +135 -0
  58. solace_agent_mesh/agent/testing/testing_llm.txt +58 -0
  59. solace_agent_mesh/agent/testing/testing_llm_detail.txt +68 -0
  60. solace_agent_mesh/agent/tools/__init__.py +16 -0
  61. solace_agent_mesh/agent/tools/audio_tools.py +1740 -0
  62. solace_agent_mesh/agent/tools/builtin_artifact_tools.py +2500 -0
  63. solace_agent_mesh/agent/tools/builtin_data_analysis_tools.py +244 -0
  64. solace_agent_mesh/agent/tools/dynamic_tool.py +396 -0
  65. solace_agent_mesh/agent/tools/general_agent_tools.py +572 -0
  66. solace_agent_mesh/agent/tools/image_tools.py +1185 -0
  67. solace_agent_mesh/agent/tools/peer_agent_tool.py +363 -0
  68. solace_agent_mesh/agent/tools/registry.py +38 -0
  69. solace_agent_mesh/agent/tools/test_tools.py +136 -0
  70. solace_agent_mesh/agent/tools/time_tools.py +126 -0
  71. solace_agent_mesh/agent/tools/tool_config_types.py +93 -0
  72. solace_agent_mesh/agent/tools/tool_definition.py +53 -0
  73. solace_agent_mesh/agent/tools/tools_llm.txt +276 -0
  74. solace_agent_mesh/agent/tools/tools_llm_detail.txt +275 -0
  75. solace_agent_mesh/agent/tools/web_tools.py +392 -0
  76. solace_agent_mesh/agent/utils/__init__.py +0 -0
  77. solace_agent_mesh/agent/utils/artifact_helpers.py +1353 -0
  78. solace_agent_mesh/agent/utils/config_parser.py +49 -0
  79. solace_agent_mesh/agent/utils/context_helpers.py +77 -0
  80. solace_agent_mesh/agent/utils/utils_llm.txt +152 -0
  81. solace_agent_mesh/agent/utils/utils_llm_detail.txt +149 -0
  82. solace_agent_mesh/assets/docs/404.html +16 -0
  83. solace_agent_mesh/assets/docs/assets/css/styles.8162edfb.css +1 -0
  84. solace_agent_mesh/assets/docs/assets/images/Solace_AI_Framework_With_Broker-85f0a306a9bcdd20b390b7a949f6d862.png +0 -0
  85. solace_agent_mesh/assets/docs/assets/images/sam-enterprise-credentials-b269f095349473118b2b33bdfcc40122.png +0 -0
  86. solace_agent_mesh/assets/docs/assets/js/032c2d61.f3d37824.js +1 -0
  87. solace_agent_mesh/assets/docs/assets/js/05749d90.19ac4f35.js +1 -0
  88. solace_agent_mesh/assets/docs/assets/js/0bcf40b7.c019ad46.js +1 -0
  89. solace_agent_mesh/assets/docs/assets/js/1001.0182a8bd.js +1 -0
  90. solace_agent_mesh/assets/docs/assets/js/1039.0bd46aa1.js +1 -0
  91. solace_agent_mesh/assets/docs/assets/js/149.b797a808.js +1 -0
  92. solace_agent_mesh/assets/docs/assets/js/15ba94aa.92fea363.js +1 -0
  93. solace_agent_mesh/assets/docs/assets/js/15e40e79.434bb30f.js +1 -0
  94. solace_agent_mesh/assets/docs/assets/js/165.6a39807d.js +2 -0
  95. solace_agent_mesh/assets/docs/assets/js/165.6a39807d.js.LICENSE.txt +9 -0
  96. solace_agent_mesh/assets/docs/assets/js/17896441.e612dfb4.js +1 -0
  97. solace_agent_mesh/assets/docs/assets/js/2130.ab9fd314.js +1 -0
  98. solace_agent_mesh/assets/docs/assets/js/2131ec11.5c7a1f6e.js +1 -0
  99. solace_agent_mesh/assets/docs/assets/js/2237.5e477fc6.js +1 -0
  100. solace_agent_mesh/assets/docs/assets/js/2279.550aa580.js +2 -0
  101. solace_agent_mesh/assets/docs/assets/js/2279.550aa580.js.LICENSE.txt +13 -0
  102. solace_agent_mesh/assets/docs/assets/js/2334.1cf50a20.js +1 -0
  103. solace_agent_mesh/assets/docs/assets/js/240a0364.9ad94d1b.js +1 -0
  104. solace_agent_mesh/assets/docs/assets/js/2987107d.a80604f9.js +1 -0
  105. solace_agent_mesh/assets/docs/assets/js/2e32b5e0.33f5d75b.js +1 -0
  106. solace_agent_mesh/assets/docs/assets/js/3219.adc1d663.js +1 -0
  107. solace_agent_mesh/assets/docs/assets/js/341393d4.0fac2613.js +1 -0
  108. solace_agent_mesh/assets/docs/assets/js/3624.0eaa1fd0.js +1 -0
  109. solace_agent_mesh/assets/docs/assets/js/375.708d48db.js +1 -0
  110. solace_agent_mesh/assets/docs/assets/js/3834.b6cd790e.js +1 -0
  111. solace_agent_mesh/assets/docs/assets/js/3a6c6137.f5940cfa.js +1 -0
  112. solace_agent_mesh/assets/docs/assets/js/3ac1795d.28b7c67b.js +1 -0
  113. solace_agent_mesh/assets/docs/assets/js/3ff0015d.2ddc75c0.js +1 -0
  114. solace_agent_mesh/assets/docs/assets/js/41adc471.48b12a4e.js +1 -0
  115. solace_agent_mesh/assets/docs/assets/js/4250.95455b28.js +1 -0
  116. solace_agent_mesh/assets/docs/assets/js/4356.d169ab5b.js +1 -0
  117. solace_agent_mesh/assets/docs/assets/js/4458.518e66fa.js +1 -0
  118. solace_agent_mesh/assets/docs/assets/js/4488.c7cc3442.js +1 -0
  119. solace_agent_mesh/assets/docs/assets/js/4494.6ee23046.js +1 -0
  120. solace_agent_mesh/assets/docs/assets/js/4855.fc4444b6.js +1 -0
  121. solace_agent_mesh/assets/docs/assets/js/4866.22daefc0.js +1 -0
  122. solace_agent_mesh/assets/docs/assets/js/4950.ca4caeda.js +1 -0
  123. solace_agent_mesh/assets/docs/assets/js/509e993c.a1fbf45a.js +1 -0
  124. solace_agent_mesh/assets/docs/assets/js/5388.7a136447.js +1 -0
  125. solace_agent_mesh/assets/docs/assets/js/547e15cc.2f7790c1.js +1 -0
  126. solace_agent_mesh/assets/docs/assets/js/55b7b518.29d6e75d.js +1 -0
  127. solace_agent_mesh/assets/docs/assets/js/5607.081356f8.js +1 -0
  128. solace_agent_mesh/assets/docs/assets/js/5864.b0d0e9de.js +1 -0
  129. solace_agent_mesh/assets/docs/assets/js/5c2bd65f.90a87880.js +1 -0
  130. solace_agent_mesh/assets/docs/assets/js/5e95c892.558d5167.js +1 -0
  131. solace_agent_mesh/assets/docs/assets/js/6063ff4c.ef84f702.js +1 -0
  132. solace_agent_mesh/assets/docs/assets/js/60702c0e.a8bdd79b.js +1 -0
  133. solace_agent_mesh/assets/docs/assets/js/6143.0a1464c9.js +1 -0
  134. solace_agent_mesh/assets/docs/assets/js/631738c7.fa471607.js +1 -0
  135. solace_agent_mesh/assets/docs/assets/js/6395.e9c73649.js +1 -0
  136. solace_agent_mesh/assets/docs/assets/js/64195356.c498c4d0.js +1 -0
  137. solace_agent_mesh/assets/docs/assets/js/66d4869e.b77431fc.js +1 -0
  138. solace_agent_mesh/assets/docs/assets/js/6796.51d2c9b7.js +1 -0
  139. solace_agent_mesh/assets/docs/assets/js/6976.379be23b.js +1 -0
  140. solace_agent_mesh/assets/docs/assets/js/6978.ee0b945c.js +1 -0
  141. solace_agent_mesh/assets/docs/assets/js/6a520c9d.b6e3f2ce.js +1 -0
  142. solace_agent_mesh/assets/docs/assets/js/6aaedf65.7253541d.js +1 -0
  143. solace_agent_mesh/assets/docs/assets/js/6ad8f0bd.a5b36a60.js +1 -0
  144. solace_agent_mesh/assets/docs/assets/js/6d84eae0.fd23ba4a.js +1 -0
  145. solace_agent_mesh/assets/docs/assets/js/6fdfefc7.99de744e.js +1 -0
  146. solace_agent_mesh/assets/docs/assets/js/7040.cb436723.js +1 -0
  147. solace_agent_mesh/assets/docs/assets/js/7195.412f418a.js +1 -0
  148. solace_agent_mesh/assets/docs/assets/js/71da7b71.374b9d54.js +1 -0
  149. solace_agent_mesh/assets/docs/assets/js/722f809d.965da774.js +1 -0
  150. solace_agent_mesh/assets/docs/assets/js/7280.3fb73bdb.js +1 -0
  151. solace_agent_mesh/assets/docs/assets/js/742f027b.46c07808.js +1 -0
  152. solace_agent_mesh/assets/docs/assets/js/77cf947d.48cb18a2.js +1 -0
  153. solace_agent_mesh/assets/docs/assets/js/7845.e33e7c4c.js +1 -0
  154. solace_agent_mesh/assets/docs/assets/js/7900.69516146.js +1 -0
  155. solace_agent_mesh/assets/docs/assets/js/8024126c.fa0e7186.js +1 -0
  156. solace_agent_mesh/assets/docs/assets/js/81a99df0.2484b8d9.js +1 -0
  157. solace_agent_mesh/assets/docs/assets/js/82fbfb93.161823a5.js +1 -0
  158. solace_agent_mesh/assets/docs/assets/js/8356.8a379c04.js +1 -0
  159. solace_agent_mesh/assets/docs/assets/js/8567.4732c6b7.js +1 -0
  160. solace_agent_mesh/assets/docs/assets/js/8573.cb04eda5.js +1 -0
  161. solace_agent_mesh/assets/docs/assets/js/8577.1d54e766.js +1 -0
  162. solace_agent_mesh/assets/docs/assets/js/8591.5d015485.js +2 -0
  163. solace_agent_mesh/assets/docs/assets/js/8591.5d015485.js.LICENSE.txt +61 -0
  164. solace_agent_mesh/assets/docs/assets/js/8709.7ecd4047.js +1 -0
  165. solace_agent_mesh/assets/docs/assets/js/8731.6c1dbf0c.js +1 -0
  166. solace_agent_mesh/assets/docs/assets/js/8908.f9d1b506.js +1 -0
  167. solace_agent_mesh/assets/docs/assets/js/8b032486.91a91afc.js +1 -0
  168. solace_agent_mesh/assets/docs/assets/js/9157.b4093d07.js +1 -0
  169. solace_agent_mesh/assets/docs/assets/js/924ffdeb.975e428a.js +1 -0
  170. solace_agent_mesh/assets/docs/assets/js/9278.a4fd875d.js +1 -0
  171. solace_agent_mesh/assets/docs/assets/js/945fb41e.6f4cdffd.js +1 -0
  172. solace_agent_mesh/assets/docs/assets/js/94e8668d.16083b3f.js +1 -0
  173. solace_agent_mesh/assets/docs/assets/js/9616.b75c2f6d.js +1 -0
  174. solace_agent_mesh/assets/docs/assets/js/9793.c6d16376.js +1 -0
  175. solace_agent_mesh/assets/docs/assets/js/9bb13469.b2333011.js +1 -0
  176. solace_agent_mesh/assets/docs/assets/js/9e9d0a82.570c057b.js +1 -0
  177. solace_agent_mesh/assets/docs/assets/js/a7bd4aaa.2204d2f7.js +1 -0
  178. solace_agent_mesh/assets/docs/assets/js/a94703ab.3e5fbcb3.js +1 -0
  179. solace_agent_mesh/assets/docs/assets/js/ab9708a8.245ae0ef.js +1 -0
  180. solace_agent_mesh/assets/docs/assets/js/aba21aa0.c42a534c.js +1 -0
  181. solace_agent_mesh/assets/docs/assets/js/ad71b5ed.af3ecfd1.js +1 -0
  182. solace_agent_mesh/assets/docs/assets/js/ad87452a.9d73dad6.js +1 -0
  183. solace_agent_mesh/assets/docs/assets/js/c198a0dc.8f31f867.js +1 -0
  184. solace_agent_mesh/assets/docs/assets/js/c93cbaa0.0e0d8baf.js +1 -0
  185. solace_agent_mesh/assets/docs/assets/js/cab03b5b.6a073091.js +1 -0
  186. solace_agent_mesh/assets/docs/assets/js/cbe2e9ea.07e170dd.js +1 -0
  187. solace_agent_mesh/assets/docs/assets/js/ceb2a7a6.5d92d7d0.js +1 -0
  188. solace_agent_mesh/assets/docs/assets/js/da0b5bad.b62f7b08.js +1 -0
  189. solace_agent_mesh/assets/docs/assets/js/db5d6442.3daf1696.js +1 -0
  190. solace_agent_mesh/assets/docs/assets/js/db924877.e98d12a1.js +1 -0
  191. solace_agent_mesh/assets/docs/assets/js/dd817ffc.c37a755e.js +1 -0
  192. solace_agent_mesh/assets/docs/assets/js/dd81e2b8.b682e9c2.js +1 -0
  193. solace_agent_mesh/assets/docs/assets/js/de5f4c65.e8241890.js +1 -0
  194. solace_agent_mesh/assets/docs/assets/js/de915948.44a432bc.js +1 -0
  195. solace_agent_mesh/assets/docs/assets/js/e04b235d.52cb25ed.js +1 -0
  196. solace_agent_mesh/assets/docs/assets/js/e1b6eeb4.b1068f9b.js +1 -0
  197. solace_agent_mesh/assets/docs/assets/js/e3d9abda.1476f570.js +1 -0
  198. solace_agent_mesh/assets/docs/assets/js/e6f9706b.4488e34c.js +1 -0
  199. solace_agent_mesh/assets/docs/assets/js/e92d0134.3bda61dd.js +1 -0
  200. solace_agent_mesh/assets/docs/assets/js/f284c35a.250993bf.js +1 -0
  201. solace_agent_mesh/assets/docs/assets/js/ff4d71f2.74710fc1.js +1 -0
  202. solace_agent_mesh/assets/docs/assets/js/main.7acf7ace.js +2 -0
  203. solace_agent_mesh/assets/docs/assets/js/main.7acf7ace.js.LICENSE.txt +81 -0
  204. solace_agent_mesh/assets/docs/assets/js/runtime~main.9e0813a2.js +1 -0
  205. solace_agent_mesh/assets/docs/docs/documentation/components/agents/index.html +154 -0
  206. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/artifact-management/index.html +99 -0
  207. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/audio-tools/index.html +90 -0
  208. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/data-analysis-tools/index.html +107 -0
  209. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/embeds/index.html +166 -0
  210. solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/index.html +101 -0
  211. solace_agent_mesh/assets/docs/docs/documentation/components/cli/index.html +219 -0
  212. solace_agent_mesh/assets/docs/docs/documentation/components/gateways/index.html +92 -0
  213. solace_agent_mesh/assets/docs/docs/documentation/components/index.html +29 -0
  214. solace_agent_mesh/assets/docs/docs/documentation/components/orchestrator/index.html +55 -0
  215. solace_agent_mesh/assets/docs/docs/documentation/components/plugins/index.html +110 -0
  216. solace_agent_mesh/assets/docs/docs/documentation/components/projects/index.html +182 -0
  217. solace_agent_mesh/assets/docs/docs/documentation/components/prompts/index.html +147 -0
  218. solace_agent_mesh/assets/docs/docs/documentation/components/proxies/index.html +345 -0
  219. solace_agent_mesh/assets/docs/docs/documentation/components/speech/index.html +52 -0
  220. solace_agent_mesh/assets/docs/docs/documentation/deploying/debugging/index.html +83 -0
  221. solace_agent_mesh/assets/docs/docs/documentation/deploying/deployment-options/index.html +84 -0
  222. solace_agent_mesh/assets/docs/docs/documentation/deploying/index.html +25 -0
  223. solace_agent_mesh/assets/docs/docs/documentation/deploying/kubernetes-deployment/index.html +47 -0
  224. solace_agent_mesh/assets/docs/docs/documentation/deploying/logging/index.html +85 -0
  225. solace_agent_mesh/assets/docs/docs/documentation/deploying/observability/index.html +60 -0
  226. solace_agent_mesh/assets/docs/docs/documentation/deploying/proxy_configuration/index.html +49 -0
  227. solace_agent_mesh/assets/docs/docs/documentation/developing/create-agents/index.html +144 -0
  228. solace_agent_mesh/assets/docs/docs/documentation/developing/create-gateways/index.html +191 -0
  229. solace_agent_mesh/assets/docs/docs/documentation/developing/creating-python-tools/index.html +128 -0
  230. solace_agent_mesh/assets/docs/docs/documentation/developing/creating-service-providers/index.html +54 -0
  231. solace_agent_mesh/assets/docs/docs/documentation/developing/evaluations/index.html +135 -0
  232. solace_agent_mesh/assets/docs/docs/documentation/developing/index.html +34 -0
  233. solace_agent_mesh/assets/docs/docs/documentation/developing/structure/index.html +55 -0
  234. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/bedrock-agents/index.html +267 -0
  235. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/custom-agent/index.html +142 -0
  236. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/event-mesh-gateway/index.html +116 -0
  237. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/mcp-integration/index.html +86 -0
  238. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/mongodb-integration/index.html +164 -0
  239. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/rag-integration/index.html +140 -0
  240. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/rest-gateway/index.html +57 -0
  241. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/slack-integration/index.html +72 -0
  242. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/sql-database/index.html +102 -0
  243. solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/teams-integration/index.html +115 -0
  244. solace_agent_mesh/assets/docs/docs/documentation/enterprise/agent-builder/index.html +86 -0
  245. solace_agent_mesh/assets/docs/docs/documentation/enterprise/connectors/index.html +67 -0
  246. solace_agent_mesh/assets/docs/docs/documentation/enterprise/index.html +37 -0
  247. solace_agent_mesh/assets/docs/docs/documentation/enterprise/installation/index.html +86 -0
  248. solace_agent_mesh/assets/docs/docs/documentation/enterprise/openapi-tools/index.html +324 -0
  249. solace_agent_mesh/assets/docs/docs/documentation/enterprise/rbac-setup-guide/index.html +247 -0
  250. solace_agent_mesh/assets/docs/docs/documentation/enterprise/secure-user-delegated-access/index.html +440 -0
  251. solace_agent_mesh/assets/docs/docs/documentation/enterprise/single-sign-on/index.html +184 -0
  252. solace_agent_mesh/assets/docs/docs/documentation/enterprise/wheel-installation/index.html +62 -0
  253. solace_agent_mesh/assets/docs/docs/documentation/getting-started/architecture/index.html +75 -0
  254. solace_agent_mesh/assets/docs/docs/documentation/getting-started/index.html +54 -0
  255. solace_agent_mesh/assets/docs/docs/documentation/getting-started/introduction/index.html +85 -0
  256. solace_agent_mesh/assets/docs/docs/documentation/getting-started/try-agent-mesh/index.html +41 -0
  257. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/artifact-storage/index.html +290 -0
  258. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/configurations/index.html +78 -0
  259. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/index.html +25 -0
  260. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/installation/index.html +78 -0
  261. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/large_language_models/index.html +160 -0
  262. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/run-project/index.html +142 -0
  263. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/session-storage/index.html +251 -0
  264. solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/user-feedback/index.html +88 -0
  265. solace_agent_mesh/assets/docs/docs/documentation/migrations/a2a-upgrade/a2a-gateway-upgrade-to-0.3.0/index.html +100 -0
  266. solace_agent_mesh/assets/docs/docs/documentation/migrations/a2a-upgrade/a2a-technical-migration-map/index.html +52 -0
  267. solace_agent_mesh/assets/docs/img/Solace_AI_Framework_With_Broker.png +0 -0
  268. solace_agent_mesh/assets/docs/img/logo.png +0 -0
  269. solace_agent_mesh/assets/docs/img/sac-flows.png +0 -0
  270. solace_agent_mesh/assets/docs/img/sac_parts_of_a_component.png +0 -0
  271. solace_agent_mesh/assets/docs/img/sam-enterprise-credentials.png +0 -0
  272. solace_agent_mesh/assets/docs/img/solace-logo-text.svg +18 -0
  273. solace_agent_mesh/assets/docs/img/solace-logo.png +0 -0
  274. solace_agent_mesh/assets/docs/lunr-index-1765810064709.json +1 -0
  275. solace_agent_mesh/assets/docs/lunr-index.json +1 -0
  276. solace_agent_mesh/assets/docs/search-doc-1765810064709.json +1 -0
  277. solace_agent_mesh/assets/docs/search-doc.json +1 -0
  278. solace_agent_mesh/assets/docs/sitemap.xml +1 -0
  279. solace_agent_mesh/cli/__init__.py +1 -0
  280. solace_agent_mesh/cli/commands/__init__.py +0 -0
  281. solace_agent_mesh/cli/commands/add_cmd/__init__.py +15 -0
  282. solace_agent_mesh/cli/commands/add_cmd/add_cmd_llm.txt +250 -0
  283. solace_agent_mesh/cli/commands/add_cmd/agent_cmd.py +729 -0
  284. solace_agent_mesh/cli/commands/add_cmd/gateway_cmd.py +322 -0
  285. solace_agent_mesh/cli/commands/add_cmd/web_add_agent_step.py +102 -0
  286. solace_agent_mesh/cli/commands/add_cmd/web_add_gateway_step.py +114 -0
  287. solace_agent_mesh/cli/commands/docs_cmd.py +60 -0
  288. solace_agent_mesh/cli/commands/eval_cmd.py +46 -0
  289. solace_agent_mesh/cli/commands/init_cmd/__init__.py +439 -0
  290. solace_agent_mesh/cli/commands/init_cmd/broker_step.py +201 -0
  291. solace_agent_mesh/cli/commands/init_cmd/database_step.py +91 -0
  292. solace_agent_mesh/cli/commands/init_cmd/directory_step.py +28 -0
  293. solace_agent_mesh/cli/commands/init_cmd/env_step.py +238 -0
  294. solace_agent_mesh/cli/commands/init_cmd/init_cmd_llm.txt +365 -0
  295. solace_agent_mesh/cli/commands/init_cmd/orchestrator_step.py +464 -0
  296. solace_agent_mesh/cli/commands/init_cmd/project_files_step.py +38 -0
  297. solace_agent_mesh/cli/commands/init_cmd/web_init_step.py +119 -0
  298. solace_agent_mesh/cli/commands/init_cmd/webui_gateway_step.py +215 -0
  299. solace_agent_mesh/cli/commands/plugin_cmd/__init__.py +20 -0
  300. solace_agent_mesh/cli/commands/plugin_cmd/add_cmd.py +137 -0
  301. solace_agent_mesh/cli/commands/plugin_cmd/build_cmd.py +86 -0
  302. solace_agent_mesh/cli/commands/plugin_cmd/catalog_cmd.py +144 -0
  303. solace_agent_mesh/cli/commands/plugin_cmd/create_cmd.py +306 -0
  304. solace_agent_mesh/cli/commands/plugin_cmd/install_cmd.py +283 -0
  305. solace_agent_mesh/cli/commands/plugin_cmd/official_registry.py +175 -0
  306. solace_agent_mesh/cli/commands/plugin_cmd/plugin_cmd_llm.txt +305 -0
  307. solace_agent_mesh/cli/commands/run_cmd.py +215 -0
  308. solace_agent_mesh/cli/main.py +52 -0
  309. solace_agent_mesh/cli/utils.py +262 -0
  310. solace_agent_mesh/client/webui/frontend/static/assets/authCallback-Dj3JtK42.js +1 -0
  311. solace_agent_mesh/client/webui/frontend/static/assets/client-ZKk9kEJ5.js +25 -0
  312. solace_agent_mesh/client/webui/frontend/static/assets/favicon-BLgzUch9.ico +0 -0
  313. solace_agent_mesh/client/webui/frontend/static/assets/main-BcUaNZ-Q.css +1 -0
  314. solace_agent_mesh/client/webui/frontend/static/assets/main-vjch4RYc.js +435 -0
  315. solace_agent_mesh/client/webui/frontend/static/assets/vendor-BNV4kZN0.js +535 -0
  316. solace_agent_mesh/client/webui/frontend/static/auth-callback.html +15 -0
  317. solace_agent_mesh/client/webui/frontend/static/index.html +16 -0
  318. solace_agent_mesh/client/webui/frontend/static/mockServiceWorker.js +336 -0
  319. solace_agent_mesh/client/webui/frontend/static/ui-version.json +6 -0
  320. solace_agent_mesh/common/__init__.py +1 -0
  321. solace_agent_mesh/common/a2a/__init__.py +241 -0
  322. solace_agent_mesh/common/a2a/a2a_llm.txt +175 -0
  323. solace_agent_mesh/common/a2a/a2a_llm_detail.txt +193 -0
  324. solace_agent_mesh/common/a2a/artifact.py +368 -0
  325. solace_agent_mesh/common/a2a/events.py +213 -0
  326. solace_agent_mesh/common/a2a/message.py +375 -0
  327. solace_agent_mesh/common/a2a/protocol.py +689 -0
  328. solace_agent_mesh/common/a2a/task.py +127 -0
  329. solace_agent_mesh/common/a2a/translation.py +655 -0
  330. solace_agent_mesh/common/a2a/types.py +55 -0
  331. solace_agent_mesh/common/a2a_spec/a2a.json +2576 -0
  332. solace_agent_mesh/common/a2a_spec/a2a_spec_llm.txt +445 -0
  333. solace_agent_mesh/common/a2a_spec/a2a_spec_llm_detail.txt +736 -0
  334. solace_agent_mesh/common/a2a_spec/schemas/agent_progress_update.json +18 -0
  335. solace_agent_mesh/common/a2a_spec/schemas/artifact_creation_progress.json +48 -0
  336. solace_agent_mesh/common/a2a_spec/schemas/feedback_event.json +51 -0
  337. solace_agent_mesh/common/a2a_spec/schemas/llm_invocation.json +41 -0
  338. solace_agent_mesh/common/a2a_spec/schemas/schemas_llm.txt +330 -0
  339. solace_agent_mesh/common/a2a_spec/schemas/tool_invocation_start.json +26 -0
  340. solace_agent_mesh/common/a2a_spec/schemas/tool_result.json +48 -0
  341. solace_agent_mesh/common/agent_registry.py +122 -0
  342. solace_agent_mesh/common/common_llm.txt +230 -0
  343. solace_agent_mesh/common/common_llm_detail.txt +2562 -0
  344. solace_agent_mesh/common/constants.py +6 -0
  345. solace_agent_mesh/common/data_parts.py +150 -0
  346. solace_agent_mesh/common/exceptions.py +49 -0
  347. solace_agent_mesh/common/middleware/__init__.py +12 -0
  348. solace_agent_mesh/common/middleware/config_resolver.py +132 -0
  349. solace_agent_mesh/common/middleware/middleware_llm.txt +174 -0
  350. solace_agent_mesh/common/middleware/middleware_llm_detail.txt +185 -0
  351. solace_agent_mesh/common/middleware/registry.py +127 -0
  352. solace_agent_mesh/common/oauth/__init__.py +17 -0
  353. solace_agent_mesh/common/oauth/oauth_client.py +408 -0
  354. solace_agent_mesh/common/oauth/utils.py +50 -0
  355. solace_agent_mesh/common/sac/__init__.py +0 -0
  356. solace_agent_mesh/common/sac/sac_llm.txt +71 -0
  357. solace_agent_mesh/common/sac/sac_llm_detail.txt +82 -0
  358. solace_agent_mesh/common/sac/sam_component_base.py +730 -0
  359. solace_agent_mesh/common/sam_events/__init__.py +9 -0
  360. solace_agent_mesh/common/sam_events/event_service.py +208 -0
  361. solace_agent_mesh/common/sam_events/sam_events_llm.txt +104 -0
  362. solace_agent_mesh/common/sam_events/sam_events_llm_detail.txt +115 -0
  363. solace_agent_mesh/common/services/__init__.py +4 -0
  364. solace_agent_mesh/common/services/employee_service.py +164 -0
  365. solace_agent_mesh/common/services/identity_service.py +134 -0
  366. solace_agent_mesh/common/services/providers/__init__.py +4 -0
  367. solace_agent_mesh/common/services/providers/local_file_identity_service.py +151 -0
  368. solace_agent_mesh/common/services/providers/providers_llm.txt +81 -0
  369. solace_agent_mesh/common/services/services_llm.txt +368 -0
  370. solace_agent_mesh/common/services/services_llm_detail.txt +459 -0
  371. solace_agent_mesh/common/utils/__init__.py +7 -0
  372. solace_agent_mesh/common/utils/artifact_utils.py +31 -0
  373. solace_agent_mesh/common/utils/asyncio_macos_fix.py +88 -0
  374. solace_agent_mesh/common/utils/embeds/__init__.py +33 -0
  375. solace_agent_mesh/common/utils/embeds/constants.py +56 -0
  376. solace_agent_mesh/common/utils/embeds/converter.py +447 -0
  377. solace_agent_mesh/common/utils/embeds/embeds_llm.txt +220 -0
  378. solace_agent_mesh/common/utils/embeds/evaluators.py +395 -0
  379. solace_agent_mesh/common/utils/embeds/modifiers.py +793 -0
  380. solace_agent_mesh/common/utils/embeds/resolver.py +967 -0
  381. solace_agent_mesh/common/utils/embeds/types.py +23 -0
  382. solace_agent_mesh/common/utils/in_memory_cache.py +108 -0
  383. solace_agent_mesh/common/utils/initializer.py +52 -0
  384. solace_agent_mesh/common/utils/log_formatters.py +64 -0
  385. solace_agent_mesh/common/utils/message_utils.py +80 -0
  386. solace_agent_mesh/common/utils/mime_helpers.py +172 -0
  387. solace_agent_mesh/common/utils/push_notification_auth.py +135 -0
  388. solace_agent_mesh/common/utils/pydantic_utils.py +159 -0
  389. solace_agent_mesh/common/utils/rbac_utils.py +69 -0
  390. solace_agent_mesh/common/utils/templates/__init__.py +8 -0
  391. solace_agent_mesh/common/utils/templates/liquid_renderer.py +210 -0
  392. solace_agent_mesh/common/utils/templates/template_resolver.py +161 -0
  393. solace_agent_mesh/common/utils/type_utils.py +28 -0
  394. solace_agent_mesh/common/utils/utils_llm.txt +335 -0
  395. solace_agent_mesh/common/utils/utils_llm_detail.txt +572 -0
  396. solace_agent_mesh/config_portal/__init__.py +0 -0
  397. solace_agent_mesh/config_portal/backend/__init__.py +0 -0
  398. solace_agent_mesh/config_portal/backend/common.py +77 -0
  399. solace_agent_mesh/config_portal/backend/plugin_catalog/__init__.py +0 -0
  400. solace_agent_mesh/config_portal/backend/plugin_catalog/constants.py +24 -0
  401. solace_agent_mesh/config_portal/backend/plugin_catalog/models.py +49 -0
  402. solace_agent_mesh/config_portal/backend/plugin_catalog/registry_manager.py +166 -0
  403. solace_agent_mesh/config_portal/backend/plugin_catalog/scraper.py +521 -0
  404. solace_agent_mesh/config_portal/backend/plugin_catalog_server.py +217 -0
  405. solace_agent_mesh/config_portal/backend/server.py +644 -0
  406. solace_agent_mesh/config_portal/frontend/static/client/Solace_community_logo.png +0 -0
  407. solace_agent_mesh/config_portal/frontend/static/client/assets/_index-DiOiAjzL.js +103 -0
  408. solace_agent_mesh/config_portal/frontend/static/client/assets/components-Rk0n-9cK.js +140 -0
  409. solace_agent_mesh/config_portal/frontend/static/client/assets/entry.client-mvZjNKiz.js +19 -0
  410. solace_agent_mesh/config_portal/frontend/static/client/assets/index-DzNKzXrc.js +68 -0
  411. solace_agent_mesh/config_portal/frontend/static/client/assets/manifest-ba77705e.js +1 -0
  412. solace_agent_mesh/config_portal/frontend/static/client/assets/root-B17tZKK7.css +1 -0
  413. solace_agent_mesh/config_portal/frontend/static/client/assets/root-V2BeTIUc.js +10 -0
  414. solace_agent_mesh/config_portal/frontend/static/client/favicon.ico +0 -0
  415. solace_agent_mesh/config_portal/frontend/static/client/index.html +7 -0
  416. solace_agent_mesh/core_a2a/__init__.py +1 -0
  417. solace_agent_mesh/core_a2a/core_a2a_llm.txt +90 -0
  418. solace_agent_mesh/core_a2a/core_a2a_llm_detail.txt +101 -0
  419. solace_agent_mesh/core_a2a/service.py +307 -0
  420. solace_agent_mesh/evaluation/__init__.py +0 -0
  421. solace_agent_mesh/evaluation/evaluator.py +691 -0
  422. solace_agent_mesh/evaluation/message_organizer.py +553 -0
  423. solace_agent_mesh/evaluation/report/benchmark_info.html +35 -0
  424. solace_agent_mesh/evaluation/report/chart_section.html +141 -0
  425. solace_agent_mesh/evaluation/report/detailed_breakdown.html +28 -0
  426. solace_agent_mesh/evaluation/report/modal.html +59 -0
  427. solace_agent_mesh/evaluation/report/modal_chart_functions.js +411 -0
  428. solace_agent_mesh/evaluation/report/modal_script.js +296 -0
  429. solace_agent_mesh/evaluation/report/modal_styles.css +340 -0
  430. solace_agent_mesh/evaluation/report/performance_metrics_styles.css +93 -0
  431. solace_agent_mesh/evaluation/report/templates/footer.html +2 -0
  432. solace_agent_mesh/evaluation/report/templates/header.html +340 -0
  433. solace_agent_mesh/evaluation/report_data_processor.py +970 -0
  434. solace_agent_mesh/evaluation/report_generator.py +607 -0
  435. solace_agent_mesh/evaluation/run.py +954 -0
  436. solace_agent_mesh/evaluation/shared/__init__.py +92 -0
  437. solace_agent_mesh/evaluation/shared/constants.py +47 -0
  438. solace_agent_mesh/evaluation/shared/exceptions.py +50 -0
  439. solace_agent_mesh/evaluation/shared/helpers.py +35 -0
  440. solace_agent_mesh/evaluation/shared/test_case_loader.py +167 -0
  441. solace_agent_mesh/evaluation/shared/test_suite_loader.py +280 -0
  442. solace_agent_mesh/evaluation/subscriber.py +776 -0
  443. solace_agent_mesh/evaluation/summary_builder.py +880 -0
  444. solace_agent_mesh/gateway/__init__.py +0 -0
  445. solace_agent_mesh/gateway/adapter/__init__.py +1 -0
  446. solace_agent_mesh/gateway/adapter/base.py +143 -0
  447. solace_agent_mesh/gateway/adapter/types.py +221 -0
  448. solace_agent_mesh/gateway/base/__init__.py +1 -0
  449. solace_agent_mesh/gateway/base/app.py +345 -0
  450. solace_agent_mesh/gateway/base/base_llm.txt +226 -0
  451. solace_agent_mesh/gateway/base/base_llm_detail.txt +235 -0
  452. solace_agent_mesh/gateway/base/component.py +2030 -0
  453. solace_agent_mesh/gateway/base/task_context.py +75 -0
  454. solace_agent_mesh/gateway/gateway_llm.txt +369 -0
  455. solace_agent_mesh/gateway/gateway_llm_detail.txt +3885 -0
  456. solace_agent_mesh/gateway/generic/__init__.py +1 -0
  457. solace_agent_mesh/gateway/generic/app.py +50 -0
  458. solace_agent_mesh/gateway/generic/component.py +727 -0
  459. solace_agent_mesh/gateway/http_sse/__init__.py +0 -0
  460. solace_agent_mesh/gateway/http_sse/alembic/alembic_llm.txt +345 -0
  461. solace_agent_mesh/gateway/http_sse/alembic/env.py +87 -0
  462. solace_agent_mesh/gateway/http_sse/alembic/script.py.mako +28 -0
  463. solace_agent_mesh/gateway/http_sse/alembic/versions/20250910_d5b3f8f2e9a0_create_initial_database.py +58 -0
  464. solace_agent_mesh/gateway/http_sse/alembic/versions/20250911_b1c2d3e4f5g6_add_database_indexes.py +83 -0
  465. solace_agent_mesh/gateway/http_sse/alembic/versions/20250916_f6e7d8c9b0a1_convert_timestamps_to_epoch_and_align_columns.py +412 -0
  466. solace_agent_mesh/gateway/http_sse/alembic/versions/20251006_98882922fa59_add_tasks_events_feedback_chat_tasks.py +190 -0
  467. solace_agent_mesh/gateway/http_sse/alembic/versions/20251015_add_session_performance_indexes.py +70 -0
  468. solace_agent_mesh/gateway/http_sse/alembic/versions/20251023_add_project_users_table.py +72 -0
  469. solace_agent_mesh/gateway/http_sse/alembic/versions/20251023_add_soft_delete_and_search.py +109 -0
  470. solace_agent_mesh/gateway/http_sse/alembic/versions/20251024_add_default_agent_to_projects.py +26 -0
  471. solace_agent_mesh/gateway/http_sse/alembic/versions/20251024_add_projects_table.py +135 -0
  472. solace_agent_mesh/gateway/http_sse/alembic/versions/20251108_create_prompt_tables_with_sharing.py +154 -0
  473. solace_agent_mesh/gateway/http_sse/alembic/versions/20251115_add_parent_task_id.py +32 -0
  474. solace_agent_mesh/gateway/http_sse/alembic/versions/20251126_add_background_task_fields.py +47 -0
  475. solace_agent_mesh/gateway/http_sse/alembic/versions/20251202_add_versioned_fields_to_prompts.py +52 -0
  476. solace_agent_mesh/gateway/http_sse/alembic/versions/versions_llm.txt +161 -0
  477. solace_agent_mesh/gateway/http_sse/alembic.ini +109 -0
  478. solace_agent_mesh/gateway/http_sse/app.py +351 -0
  479. solace_agent_mesh/gateway/http_sse/component.py +2360 -0
  480. solace_agent_mesh/gateway/http_sse/components/__init__.py +7 -0
  481. solace_agent_mesh/gateway/http_sse/components/components_llm.txt +105 -0
  482. solace_agent_mesh/gateway/http_sse/components/task_logger_forwarder.py +109 -0
  483. solace_agent_mesh/gateway/http_sse/components/visualization_forwarder_component.py +110 -0
  484. solace_agent_mesh/gateway/http_sse/dependencies.py +653 -0
  485. solace_agent_mesh/gateway/http_sse/http_sse_llm.txt +299 -0
  486. solace_agent_mesh/gateway/http_sse/http_sse_llm_detail.txt +3278 -0
  487. solace_agent_mesh/gateway/http_sse/main.py +789 -0
  488. solace_agent_mesh/gateway/http_sse/repository/__init__.py +46 -0
  489. solace_agent_mesh/gateway/http_sse/repository/chat_task_repository.py +102 -0
  490. solace_agent_mesh/gateway/http_sse/repository/entities/__init__.py +11 -0
  491. solace_agent_mesh/gateway/http_sse/repository/entities/chat_task.py +75 -0
  492. solace_agent_mesh/gateway/http_sse/repository/entities/entities_llm.txt +221 -0
  493. solace_agent_mesh/gateway/http_sse/repository/entities/feedback.py +20 -0
  494. solace_agent_mesh/gateway/http_sse/repository/entities/project.py +81 -0
  495. solace_agent_mesh/gateway/http_sse/repository/entities/project_user.py +47 -0
  496. solace_agent_mesh/gateway/http_sse/repository/entities/session.py +66 -0
  497. solace_agent_mesh/gateway/http_sse/repository/entities/session_history.py +0 -0
  498. solace_agent_mesh/gateway/http_sse/repository/entities/task.py +32 -0
  499. solace_agent_mesh/gateway/http_sse/repository/entities/task_event.py +21 -0
  500. solace_agent_mesh/gateway/http_sse/repository/feedback_repository.py +125 -0
  501. solace_agent_mesh/gateway/http_sse/repository/interfaces.py +239 -0
  502. solace_agent_mesh/gateway/http_sse/repository/models/__init__.py +34 -0
  503. solace_agent_mesh/gateway/http_sse/repository/models/base.py +7 -0
  504. solace_agent_mesh/gateway/http_sse/repository/models/chat_task_model.py +31 -0
  505. solace_agent_mesh/gateway/http_sse/repository/models/feedback_model.py +21 -0
  506. solace_agent_mesh/gateway/http_sse/repository/models/models_llm.txt +257 -0
  507. solace_agent_mesh/gateway/http_sse/repository/models/project_model.py +51 -0
  508. solace_agent_mesh/gateway/http_sse/repository/models/project_user_model.py +75 -0
  509. solace_agent_mesh/gateway/http_sse/repository/models/prompt_model.py +159 -0
  510. solace_agent_mesh/gateway/http_sse/repository/models/session_model.py +53 -0
  511. solace_agent_mesh/gateway/http_sse/repository/models/task_event_model.py +25 -0
  512. solace_agent_mesh/gateway/http_sse/repository/models/task_model.py +39 -0
  513. solace_agent_mesh/gateway/http_sse/repository/project_repository.py +172 -0
  514. solace_agent_mesh/gateway/http_sse/repository/project_user_repository.py +186 -0
  515. solace_agent_mesh/gateway/http_sse/repository/repository_llm.txt +308 -0
  516. solace_agent_mesh/gateway/http_sse/repository/session_repository.py +268 -0
  517. solace_agent_mesh/gateway/http_sse/repository/task_repository.py +248 -0
  518. solace_agent_mesh/gateway/http_sse/routers/__init__.py +4 -0
  519. solace_agent_mesh/gateway/http_sse/routers/agent_cards.py +74 -0
  520. solace_agent_mesh/gateway/http_sse/routers/artifacts.py +1137 -0
  521. solace_agent_mesh/gateway/http_sse/routers/auth.py +311 -0
  522. solace_agent_mesh/gateway/http_sse/routers/config.py +371 -0
  523. solace_agent_mesh/gateway/http_sse/routers/dto/__init__.py +10 -0
  524. solace_agent_mesh/gateway/http_sse/routers/dto/dto_llm.txt +450 -0
  525. solace_agent_mesh/gateway/http_sse/routers/dto/project_dto.py +69 -0
  526. solace_agent_mesh/gateway/http_sse/routers/dto/prompt_dto.py +255 -0
  527. solace_agent_mesh/gateway/http_sse/routers/dto/requests/__init__.py +15 -0
  528. solace_agent_mesh/gateway/http_sse/routers/dto/requests/project_requests.py +48 -0
  529. solace_agent_mesh/gateway/http_sse/routers/dto/requests/requests_llm.txt +133 -0
  530. solace_agent_mesh/gateway/http_sse/routers/dto/requests/session_requests.py +33 -0
  531. solace_agent_mesh/gateway/http_sse/routers/dto/requests/task_requests.py +58 -0
  532. solace_agent_mesh/gateway/http_sse/routers/dto/responses/__init__.py +18 -0
  533. solace_agent_mesh/gateway/http_sse/routers/dto/responses/base_responses.py +42 -0
  534. solace_agent_mesh/gateway/http_sse/routers/dto/responses/project_responses.py +31 -0
  535. solace_agent_mesh/gateway/http_sse/routers/dto/responses/responses_llm.txt +123 -0
  536. solace_agent_mesh/gateway/http_sse/routers/dto/responses/session_responses.py +33 -0
  537. solace_agent_mesh/gateway/http_sse/routers/dto/responses/task_responses.py +30 -0
  538. solace_agent_mesh/gateway/http_sse/routers/dto/responses/version_responses.py +31 -0
  539. solace_agent_mesh/gateway/http_sse/routers/feedback.py +168 -0
  540. solace_agent_mesh/gateway/http_sse/routers/people.py +38 -0
  541. solace_agent_mesh/gateway/http_sse/routers/projects.py +767 -0
  542. solace_agent_mesh/gateway/http_sse/routers/prompts.py +1415 -0
  543. solace_agent_mesh/gateway/http_sse/routers/routers_llm.txt +312 -0
  544. solace_agent_mesh/gateway/http_sse/routers/sessions.py +634 -0
  545. solace_agent_mesh/gateway/http_sse/routers/speech.py +355 -0
  546. solace_agent_mesh/gateway/http_sse/routers/sse.py +230 -0
  547. solace_agent_mesh/gateway/http_sse/routers/tasks.py +1089 -0
  548. solace_agent_mesh/gateway/http_sse/routers/users.py +83 -0
  549. solace_agent_mesh/gateway/http_sse/routers/version.py +343 -0
  550. solace_agent_mesh/gateway/http_sse/routers/visualization.py +1220 -0
  551. solace_agent_mesh/gateway/http_sse/services/__init__.py +4 -0
  552. solace_agent_mesh/gateway/http_sse/services/agent_card_service.py +71 -0
  553. solace_agent_mesh/gateway/http_sse/services/audio_service.py +1227 -0
  554. solace_agent_mesh/gateway/http_sse/services/background_task_monitor.py +186 -0
  555. solace_agent_mesh/gateway/http_sse/services/data_retention_service.py +273 -0
  556. solace_agent_mesh/gateway/http_sse/services/feedback_service.py +250 -0
  557. solace_agent_mesh/gateway/http_sse/services/people_service.py +78 -0
  558. solace_agent_mesh/gateway/http_sse/services/project_service.py +930 -0
  559. solace_agent_mesh/gateway/http_sse/services/prompt_builder_assistant.py +303 -0
  560. solace_agent_mesh/gateway/http_sse/services/services_llm.txt +303 -0
  561. solace_agent_mesh/gateway/http_sse/services/session_service.py +702 -0
  562. solace_agent_mesh/gateway/http_sse/services/task_logger_service.py +593 -0
  563. solace_agent_mesh/gateway/http_sse/services/task_service.py +119 -0
  564. solace_agent_mesh/gateway/http_sse/session_manager.py +219 -0
  565. solace_agent_mesh/gateway/http_sse/shared/__init__.py +146 -0
  566. solace_agent_mesh/gateway/http_sse/shared/auth_utils.py +29 -0
  567. solace_agent_mesh/gateway/http_sse/shared/base_repository.py +252 -0
  568. solace_agent_mesh/gateway/http_sse/shared/database_exceptions.py +274 -0
  569. solace_agent_mesh/gateway/http_sse/shared/database_helpers.py +43 -0
  570. solace_agent_mesh/gateway/http_sse/shared/enums.py +40 -0
  571. solace_agent_mesh/gateway/http_sse/shared/error_dto.py +107 -0
  572. solace_agent_mesh/gateway/http_sse/shared/exception_handlers.py +217 -0
  573. solace_agent_mesh/gateway/http_sse/shared/exceptions.py +192 -0
  574. solace_agent_mesh/gateway/http_sse/shared/pagination.py +138 -0
  575. solace_agent_mesh/gateway/http_sse/shared/response_utils.py +134 -0
  576. solace_agent_mesh/gateway/http_sse/shared/shared_llm.txt +319 -0
  577. solace_agent_mesh/gateway/http_sse/shared/timestamp_utils.py +97 -0
  578. solace_agent_mesh/gateway/http_sse/shared/types.py +50 -0
  579. solace_agent_mesh/gateway/http_sse/shared/utils.py +22 -0
  580. solace_agent_mesh/gateway/http_sse/sse_event_buffer.py +88 -0
  581. solace_agent_mesh/gateway/http_sse/sse_manager.py +491 -0
  582. solace_agent_mesh/gateway/http_sse/utils/__init__.py +1 -0
  583. solace_agent_mesh/gateway/http_sse/utils/artifact_copy_utils.py +370 -0
  584. solace_agent_mesh/gateway/http_sse/utils/stim_utils.py +72 -0
  585. solace_agent_mesh/gateway/http_sse/utils/utils_llm.txt +47 -0
  586. solace_agent_mesh/llm.txt +228 -0
  587. solace_agent_mesh/llm_detail.txt +2835 -0
  588. solace_agent_mesh/services/__init__.py +0 -0
  589. solace_agent_mesh/services/platform/__init__.py +18 -0
  590. solace_agent_mesh/services/platform/alembic/env.py +85 -0
  591. solace_agent_mesh/services/platform/alembic/script.py.mako +28 -0
  592. solace_agent_mesh/services/platform/alembic.ini +109 -0
  593. solace_agent_mesh/services/platform/api/__init__.py +3 -0
  594. solace_agent_mesh/services/platform/api/dependencies.py +147 -0
  595. solace_agent_mesh/services/platform/api/main.py +280 -0
  596. solace_agent_mesh/services/platform/api/middleware.py +51 -0
  597. solace_agent_mesh/services/platform/api/routers/__init__.py +24 -0
  598. solace_agent_mesh/services/platform/app.py +114 -0
  599. solace_agent_mesh/services/platform/component.py +235 -0
  600. solace_agent_mesh/solace_agent_mesh_llm.txt +362 -0
  601. solace_agent_mesh/solace_agent_mesh_llm_detail.txt +8599 -0
  602. solace_agent_mesh/templates/agent_template.yaml +53 -0
  603. solace_agent_mesh/templates/eval_backend_template.yaml +54 -0
  604. solace_agent_mesh/templates/gateway_app_template.py +75 -0
  605. solace_agent_mesh/templates/gateway_component_template.py +484 -0
  606. solace_agent_mesh/templates/gateway_config_template.yaml +38 -0
  607. solace_agent_mesh/templates/logging_config_template.yaml +48 -0
  608. solace_agent_mesh/templates/main_orchestrator.yaml +66 -0
  609. solace_agent_mesh/templates/plugin_agent_config_template.yaml +122 -0
  610. solace_agent_mesh/templates/plugin_custom_config_template.yaml +27 -0
  611. solace_agent_mesh/templates/plugin_custom_template.py +10 -0
  612. solace_agent_mesh/templates/plugin_gateway_config_template.yaml +60 -0
  613. solace_agent_mesh/templates/plugin_pyproject_template.toml +32 -0
  614. solace_agent_mesh/templates/plugin_readme_template.md +12 -0
  615. solace_agent_mesh/templates/plugin_tool_config_template.yaml +109 -0
  616. solace_agent_mesh/templates/plugin_tools_template.py +224 -0
  617. solace_agent_mesh/templates/shared_config.yaml +112 -0
  618. solace_agent_mesh/templates/templates_llm.txt +147 -0
  619. solace_agent_mesh/templates/webui.yaml +177 -0
  620. solace_agent_mesh-1.11.2.dist-info/METADATA +504 -0
  621. solace_agent_mesh-1.11.2.dist-info/RECORD +624 -0
  622. solace_agent_mesh-1.11.2.dist-info/WHEEL +4 -0
  623. solace_agent_mesh-1.11.2.dist-info/entry_points.txt +3 -0
  624. solace_agent_mesh-1.11.2.dist-info/licenses/LICENSE +201 -0
@@ -0,0 +1,257 @@
1
+ ## Quick Summary
2
+ This directory contains SQLAlchemy ORM models and Pydantic schemas for database persistence in the HTTP SSE gateway. It provides models for managing chat sessions, tasks, task events, and user feedback with proper relationships and database schema definitions.
3
+
4
+ ## Files Overview
5
+ - `__init__.py` - Package initialization exposing all SQLAlchemy and Pydantic models
6
+ - `base.py` - SQLAlchemy declarative base configuration
7
+ - `chat_task_model.py` - ChatTaskModel for storing chat tasks with session relationships
8
+ - `feedback_model.py` - FeedbackModel for storing user feedback on tasks
9
+ - `session_model.py` - SessionModel and Pydantic schemas for managing chat sessions
10
+ - `task_event_model.py` - TaskEventModel for storing A2A task events with task relationships
11
+ - `task_model.py` - TaskModel for managing tasks with event relationships and token usage tracking
12
+
13
+ ## Developer API Reference
14
+
15
+ ### __init__.py
16
+ **Purpose:** Package entry point that exposes all SQLAlchemy models and Pydantic schemas
17
+ **Import:** `from solace_agent_mesh.gateway.http_sse.repository.models import Base, ChatTaskModel, FeedbackModel, SessionModel, CreateSessionModel, UpdateSessionModel, TaskEventModel, TaskModel`
18
+
19
+ **Constants/Variables:**
20
+ - `__all__: List[str]` - Public API exports including all models and schemas
21
+
22
+ ### base.py
23
+ **Purpose:** Provides the SQLAlchemy declarative base for all models
24
+ **Import:** `from solace_agent_mesh.gateway.http_sse.repository.models.base import Base`
25
+
26
+ **Constants/Variables:**
27
+ - `Base: DeclarativeMeta` - SQLAlchemy declarative base class for all models
28
+
29
+ **Usage Examples:**
30
+ ```python
31
+ from solace_agent_mesh.gateway.http_sse.repository.models.base import Base
32
+ from sqlalchemy import create_engine
33
+
34
+ # Create all tables
35
+ engine = create_engine("sqlite:///example.db")
36
+ Base.metadata.create_all(engine)
37
+ ```
38
+
39
+ ### chat_task_model.py
40
+ **Purpose:** SQLAlchemy model for storing chat tasks with session relationships
41
+ **Import:** `from solace_agent_mesh.gateway.http_sse.repository.models.chat_task_model import ChatTaskModel`
42
+
43
+ **Classes:**
44
+ - `ChatTaskModel(Base)` - SQLAlchemy model for chat tasks
45
+ - `id: Column[String]` - Primary key task identifier
46
+ - `session_id: Column[String]` - Foreign key to sessions table with CASCADE delete (indexed)
47
+ - `user_id: Column[String]` - User identifier (indexed)
48
+ - `user_message: Column[Text]` - Optional user message content
49
+ - `message_bubbles: Column[Text]` - Required message bubbles data
50
+ - `task_metadata: Column[Text]` - Optional task metadata
51
+ - `created_time: Column[BigInteger]` - Creation timestamp in epoch milliseconds (indexed)
52
+ - `updated_time: Column[BigInteger]` - Optional update timestamp
53
+ - `session: relationship` - SQLAlchemy relationship to SessionModel
54
+
55
+ **Usage Examples:**
56
+ ```python
57
+ from solace_agent_mesh.gateway.http_sse.repository.models.chat_task_model import ChatTaskModel
58
+ from sqlalchemy.orm import sessionmaker
59
+
60
+ # Create a chat task
61
+ chat_task = ChatTaskModel(
62
+ id="task_123",
63
+ session_id="session_456",
64
+ user_id="user_789",
65
+ user_message="Hello, how can you help me?",
66
+ message_bubbles='[{"type": "user", "content": "Hello"}]',
67
+ task_metadata='{"priority": "high"}',
68
+ created_time=1640995200000,
69
+ updated_time=1640995260000
70
+ )
71
+
72
+ # Add to database
73
+ Session = sessionmaker(bind=engine)
74
+ db_session = Session()
75
+ db_session.add(chat_task)
76
+ db_session.commit()
77
+
78
+ # Access related session
79
+ session = chat_task.session
80
+ ```
81
+
82
+ ### feedback_model.py
83
+ **Purpose:** SQLAlchemy model for storing user feedback on tasks
84
+ **Import:** `from solace_agent_mesh.gateway.http_sse.repository.models.feedback_model import FeedbackModel`
85
+
86
+ **Classes:**
87
+ - `FeedbackModel(Base)` - SQLAlchemy model for user feedback
88
+ - `id: Column[String]` - Primary key feedback identifier
89
+ - `session_id: Column[String]` - Session identifier
90
+ - `task_id: Column[String]` - Task identifier (indexed)
91
+ - `user_id: Column[String]` - User identifier (indexed)
92
+ - `rating: Column[String]` - Feedback rating (e.g., 'up', 'down')
93
+ - `comment: Column[Text]` - Optional feedback comment
94
+ - `created_time: Column[BigInteger]` - Creation timestamp in epoch milliseconds
95
+
96
+ **Usage Examples:**
97
+ ```python
98
+ from solace_agent_mesh.gateway.http_sse.repository.models.feedback_model import FeedbackModel
99
+ from sqlalchemy.orm import sessionmaker
100
+
101
+ # Create feedback
102
+ feedback = FeedbackModel(
103
+ id="feedback_123",
104
+ session_id="session_456",
105
+ task_id="task_789",
106
+ user_id="user_123",
107
+ rating="up",
108
+ comment="Great response!",
109
+ created_time=1640995200000
110
+ )
111
+
112
+ # Add to database
113
+ Session = sessionmaker(bind=engine)
114
+ db_session = Session()
115
+ db_session.add(feedback)
116
+ db_session.commit()
117
+ ```
118
+
119
+ ### session_model.py
120
+ **Purpose:** SQLAlchemy model and Pydantic schemas for managing chat sessions with chat task relationships
121
+ **Import:** `from solace_agent_mesh.gateway.http_sse.repository.models.session_model import SessionModel, CreateSessionModel, UpdateSessionModel`
122
+
123
+ **Classes:**
124
+ - `SessionModel(Base)` - SQLAlchemy model for chat sessions
125
+ - `id: Column[String]` - Primary key session identifier
126
+ - `name: Column[String]` - Optional session name
127
+ - `user_id: Column[String]` - Required user identifier
128
+ - `agent_id: Column[String]` - Optional agent identifier
129
+ - `created_time: Column[BigInteger]` - Creation timestamp (auto-generated)
130
+ - `updated_time: Column[BigInteger]` - Last update timestamp (auto-updated)
131
+ - `chat_tasks: relationship` - SQLAlchemy relationship to ChatTaskModel with cascade delete
132
+
133
+ - `CreateSessionModel(BaseModel)` - Pydantic model for creating sessions
134
+ - `id: str` - Session identifier
135
+ - `name: str | None` - Optional session name
136
+ - `user_id: str` - User identifier
137
+ - `agent_id: str | None` - Optional agent identifier
138
+ - `created_time: int` - Creation timestamp
139
+ - `updated_time: int` - Update timestamp
140
+
141
+ - `UpdateSessionModel(BaseModel)` - Pydantic model for updating sessions
142
+ - `name: str | None` - Optional updated session name
143
+ - `agent_id: str | None` - Optional updated agent identifier
144
+ - `updated_time: int` - Update timestamp
145
+
146
+ **Usage Examples:**
147
+ ```python
148
+ from solace_agent_mesh.gateway.http_sse.repository.models.session_model import SessionModel, CreateSessionModel
149
+ from sqlalchemy.orm import sessionmaker
150
+
151
+ # Create using SQLAlchemy model
152
+ session = SessionModel(
153
+ id="session_123",
154
+ name="My Chat Session",
155
+ user_id="user_456",
156
+ agent_id="agent_789"
157
+ )
158
+
159
+ # Create using Pydantic model
160
+ create_data = CreateSessionModel(
161
+ id="session_124",
162
+ name="Another Session",
163
+ user_id="user_456",
164
+ agent_id="agent_789",
165
+ created_time=1640995200000,
166
+ updated_time=1640995200000
167
+ )
168
+
169
+ # Access related chat tasks
170
+ chat_tasks = session.chat_tasks # Returns list of ChatTaskModel instances
171
+ ```
172
+
173
+ ### task_event_model.py
174
+ **Purpose:** SQLAlchemy model for storing A2A task events with task relationships
175
+ **Import:** `from solace_agent_mesh.gateway.http_sse.repository.models.task_event_model import TaskEventModel`
176
+
177
+ **Classes:**
178
+ - `TaskEventModel(Base)` - SQLAlchemy model for A2A task events
179
+ - `id: Column[String]` - Primary key event identifier
180
+ - `task_id: Column[String]` - Foreign key to tasks table with CASCADE delete (indexed)
181
+ - `user_id: Column[String]` - Optional user identifier (indexed)
182
+ - `created_time: Column[BigInteger]` - Creation timestamp in epoch milliseconds
183
+ - `topic: Column[Text]` - Event topic
184
+ - `direction: Column[String]` - Event direction (max 50 chars)
185
+ - `payload: Column[JSON]` - Event payload as JSON
186
+ - `task: relationship` - SQLAlchemy relationship to TaskModel
187
+
188
+ **Usage Examples:**
189
+ ```python
190
+ from solace_agent_mesh.gateway.http_sse.repository.models.task_event_model import TaskEventModel
191
+ from sqlalchemy.orm import sessionmaker
192
+
193
+ # Create a task event
194
+ event = TaskEventModel(
195
+ id="event_123",
196
+ task_id="task_456",
197
+ user_id="user_789",
198
+ created_time=1640995200000,
199
+ topic="agent/response",
200
+ direction="inbound",
201
+ payload={"message": "Task completed", "status": "success"}
202
+ )
203
+
204
+ # Add to database
205
+ Session = sessionmaker(bind=engine)
206
+ db_session = Session()
207
+ db_session.add(event)
208
+ db_session.commit()
209
+ ```
210
+
211
+ ### task_model.py
212
+ **Purpose:** SQLAlchemy model for managing tasks with event relationships and token usage tracking
213
+ **Import:** `from solace_agent_mesh.gateway.http_sse.repository.models.task_model import TaskModel`
214
+
215
+ **Classes:**
216
+ - `TaskModel(Base)` - SQLAlchemy model for tasks
217
+ - `id: Column[String]` - Primary key task identifier
218
+ - `user_id: Column[String]` - User identifier (indexed)
219
+ - `start_time: Column[BigInteger]` - Task start timestamp in epoch milliseconds
220
+ - `end_time: Column[BigInteger]` - Optional task end timestamp
221
+ - `status: Column[String]` - Optional task status
222
+ - `initial_request_text: Column[Text]` - Optional initial request text (indexed)
223
+ - `total_input_tokens: Column[Integer]` - Optional total input tokens used
224
+ - `total_output_tokens: Column[Integer]` - Optional total output tokens used
225
+ - `total_cached_input_tokens: Column[Integer]` - Optional total cached input tokens
226
+ - `token_usage_details: Column[JSON]` - Optional detailed token usage information
227
+ - `events: relationship` - SQLAlchemy relationship to TaskEventModel with cascade delete
228
+
229
+ **Usage Examples:**
230
+ ```python
231
+ from solace_agent_mesh.gateway.http_sse.repository.models.task_model import TaskModel
232
+ from sqlalchemy.orm import sessionmaker
233
+
234
+ # Create a new task with token tracking
235
+ task = TaskModel(
236
+ id="task_123",
237
+ user_id="user_456",
238
+ start_time=1640995200000,
239
+ status="in_progress",
240
+ initial_request_text="Please help me with this task",
241
+ total_input_tokens=150,
242
+ total_output_tokens=300,
243
+ total_cached_input_tokens=50,
244
+ token_usage_details={"model": "gpt-4", "breakdown": {"reasoning": 200, "response": 100}}
245
+ )
246
+
247
+ # Add to database
248
+ Session = sessionmaker(bind=engine)
249
+ db_session = Session()
250
+ db_session.add(task)
251
+ db_session.commit()
252
+
253
+ # Access related events
254
+ events = task.events # Returns list of TaskEventModel instances
255
+ ```
256
+
257
+ # content_hash: 65d43bc49dd561efb9955aae2fc39945567e4302c406eea9718ce797d083646c
@@ -0,0 +1,51 @@
1
+ """
2
+ SQLAlchemy model for project data.
3
+ """
4
+
5
+ from sqlalchemy import Column, String, Boolean, BigInteger, Text
6
+ from sqlalchemy.orm import relationship
7
+ from pydantic import BaseModel
8
+
9
+ from .base import Base
10
+
11
+
12
+ class ProjectModel(Base):
13
+ """SQLAlchemy model for projects."""
14
+
15
+ __tablename__ = "projects"
16
+
17
+ id = Column(String, primary_key=True)
18
+ name = Column(String, nullable=False)
19
+ user_id = Column(String, nullable=False)
20
+ description = Column(Text, nullable=True)
21
+ system_prompt = Column(Text, nullable=True)
22
+ default_agent_id = Column(String, nullable=True)
23
+ created_at = Column(BigInteger, nullable=False)
24
+ updated_at = Column(BigInteger, nullable=True)
25
+ deleted_at = Column(BigInteger, nullable=True)
26
+ deleted_by = Column(String, nullable=True)
27
+
28
+ # Relationships
29
+ sessions = relationship("SessionModel", back_populates="project")
30
+ project_users = relationship("ProjectUserModel", back_populates="project", cascade="all, delete-orphan")
31
+
32
+
33
+ class CreateProjectModel(BaseModel):
34
+ """Pydantic model for creating a project."""
35
+ id: str
36
+ name: str
37
+ user_id: str | None = None
38
+ description: str | None = None
39
+ system_prompt: str | None = None
40
+ default_agent_id: str | None = None
41
+ created_at: int
42
+ updated_at: int | None = None
43
+
44
+
45
+ class UpdateProjectModel(BaseModel):
46
+ """Pydantic model for updating a project."""
47
+ name: str | None = None
48
+ description: str | None = None
49
+ system_prompt: str | None = None
50
+ default_agent_id: str | None = None
51
+ updated_at: int
@@ -0,0 +1,75 @@
1
+ """
2
+ SQLAlchemy model for project user access (junction table).
3
+ """
4
+
5
+ from enum import Enum
6
+ from sqlalchemy import Column, String, BigInteger, ForeignKey, UniqueConstraint, Enum as SQLEnum
7
+ from sqlalchemy.orm import relationship
8
+ from pydantic import BaseModel, field_validator
9
+ from typing import Literal
10
+
11
+ from .base import Base
12
+
13
+
14
+ class ProjectRole(str, Enum):
15
+ """Valid roles for project users."""
16
+ OWNER = "owner"
17
+ EDITOR = "editor"
18
+ VIEWER = "viewer"
19
+
20
+
21
+ class ProjectUserModel(Base):
22
+ """
23
+ SQLAlchemy model for project user access.
24
+
25
+ This junction table tracks which users have access to which projects,
26
+ enabling multi-user collaboration on projects.
27
+ """
28
+
29
+ __tablename__ = "project_users"
30
+
31
+ id = Column(String, primary_key=True)
32
+ project_id = Column(String, ForeignKey("projects.id", ondelete="CASCADE"), nullable=False)
33
+ user_id = Column(String, nullable=False)
34
+ role = Column(SQLEnum(ProjectRole), nullable=False, default=ProjectRole.VIEWER)
35
+ added_at = Column(BigInteger, nullable=False) # Epoch timestamp in milliseconds
36
+ added_by_user_id = Column(String, nullable=False) # User who granted access
37
+
38
+ # Ensure a user can only be added once per project
39
+ __table_args__ = (
40
+ UniqueConstraint('project_id', 'user_id', name='uq_project_user'),
41
+ )
42
+
43
+ # Relationships
44
+ project = relationship("ProjectModel", back_populates="project_users")
45
+
46
+
47
+ class CreateProjectUserModel(BaseModel):
48
+ """Pydantic model for creating a project user access record."""
49
+ id: str
50
+ project_id: str
51
+ user_id: str
52
+ role: Literal["owner", "editor", "viewer"] = "viewer"
53
+ added_at: int
54
+ added_by_user_id: str
55
+
56
+ @field_validator('role')
57
+ @classmethod
58
+ def validate_role(cls, v: str) -> str:
59
+ """Validate that role is one of the allowed values."""
60
+ if v not in [role.value for role in ProjectRole]:
61
+ raise ValueError(f"Role must be one of: {', '.join([role.value for role in ProjectRole])}")
62
+ return v
63
+
64
+
65
+ class UpdateProjectUserModel(BaseModel):
66
+ """Pydantic model for updating a project user access record."""
67
+ role: Literal["owner", "editor", "viewer"] | None = None
68
+
69
+ @field_validator('role')
70
+ @classmethod
71
+ def validate_role(cls, v: str | None) -> str | None:
72
+ """Validate that role is one of the allowed values."""
73
+ if v is not None and v not in [role.value for role in ProjectRole]:
74
+ raise ValueError(f"Role must be one of: {', '.join([role.value for role in ProjectRole])}")
75
+ return v
@@ -0,0 +1,159 @@
1
+ """
2
+ Prompt SQLAlchemy models for prompt library feature.
3
+ """
4
+
5
+ from enum import Enum
6
+ from sqlalchemy import BigInteger, Column, String, Text, Integer, Boolean, ForeignKey, UniqueConstraint, Enum as SQLEnum
7
+ from sqlalchemy.orm import relationship
8
+
9
+ from ...shared import now_epoch_ms
10
+ from .base import Base
11
+
12
+
13
+ class PromptGroupRole(str, Enum):
14
+ """Valid roles for prompt group users."""
15
+ OWNER = "owner"
16
+ EDITOR = "editor"
17
+ VIEWER = "viewer"
18
+
19
+
20
+ class PromptGroupModel(Base):
21
+ """SQLAlchemy model for prompt groups"""
22
+
23
+ __tablename__ = "prompt_groups"
24
+
25
+ # Primary key - String type (not UUID)
26
+ id = Column(String, primary_key=True)
27
+
28
+ # Core fields
29
+ name = Column(String(255), nullable=False, index=True)
30
+ description = Column(Text, nullable=True)
31
+ category = Column(String(100), nullable=True, index=True)
32
+ command = Column(String(50), nullable=True, unique=True, index=True)
33
+
34
+ # Ownership
35
+ user_id = Column(String, nullable=False, index=True)
36
+ author_name = Column(String(255), nullable=True)
37
+
38
+ # Production prompt reference
39
+ production_prompt_id = Column(
40
+ String,
41
+ ForeignKey("prompts.id", ondelete="SET NULL"),
42
+ nullable=True
43
+ )
44
+
45
+ # Sharing (optional - for future enhancement)
46
+ is_shared = Column(Boolean, default=False, nullable=False)
47
+
48
+ # User preferences
49
+ is_pinned = Column(Boolean, default=False, nullable=False, index=True)
50
+
51
+ # Timestamps - BigInteger (epoch milliseconds) to match SAM convention
52
+ created_at = Column(BigInteger, nullable=False, default=now_epoch_ms)
53
+ updated_at = Column(
54
+ BigInteger,
55
+ nullable=False,
56
+ default=now_epoch_ms,
57
+ onupdate=now_epoch_ms
58
+ )
59
+
60
+ # Relationships
61
+ prompts = relationship(
62
+ "PromptModel",
63
+ back_populates="group",
64
+ foreign_keys="PromptModel.group_id",
65
+ cascade="all, delete-orphan"
66
+ )
67
+ production_prompt = relationship(
68
+ "PromptModel",
69
+ foreign_keys=[production_prompt_id],
70
+ post_update=True
71
+ )
72
+ prompt_group_users = relationship(
73
+ "PromptGroupUserModel",
74
+ back_populates="prompt_group",
75
+ cascade="all, delete-orphan"
76
+ )
77
+
78
+ def __repr__(self):
79
+ return f"<PromptGroupModel(id={self.id}, name={self.name}, command={self.command})>"
80
+
81
+
82
+ class PromptModel(Base):
83
+ """SQLAlchemy model for individual prompt versions"""
84
+
85
+ __tablename__ = "prompts"
86
+
87
+ # Primary key - String type (not UUID)
88
+ id = Column(String, primary_key=True)
89
+
90
+ # Content
91
+ prompt_text = Column(Text, nullable=False)
92
+
93
+ # Versioned metadata fields (copied from group at version creation time)
94
+ name = Column(String(255), nullable=True)
95
+ description = Column(Text, nullable=True)
96
+ category = Column(String(100), nullable=True)
97
+ command = Column(String(50), nullable=True)
98
+
99
+ # Group relationship
100
+ group_id = Column(
101
+ String,
102
+ ForeignKey("prompt_groups.id", ondelete="CASCADE"),
103
+ nullable=False,
104
+ index=True
105
+ )
106
+
107
+ # Ownership
108
+ user_id = Column(String, nullable=False, index=True)
109
+
110
+ # Versioning
111
+ version = Column(Integer, default=1, nullable=False)
112
+
113
+ # Timestamps - BigInteger (epoch milliseconds)
114
+ created_at = Column(BigInteger, nullable=False, default=now_epoch_ms)
115
+ updated_at = Column(
116
+ BigInteger,
117
+ nullable=False,
118
+ default=now_epoch_ms,
119
+ onupdate=now_epoch_ms
120
+ )
121
+
122
+ # Relationships
123
+ group = relationship(
124
+ "PromptGroupModel",
125
+ back_populates="prompts",
126
+ foreign_keys=[group_id]
127
+ )
128
+
129
+ def __repr__(self):
130
+ return f"<PromptModel(id={self.id}, group_id={self.group_id}, version={self.version})>"
131
+
132
+
133
+ class PromptGroupUserModel(Base):
134
+ """
135
+ SQLAlchemy model for prompt group user access.
136
+
137
+ This junction table tracks which users have access to which prompt groups,
138
+ enabling multi-user collaboration on prompts with role-based permissions.
139
+ """
140
+
141
+ __tablename__ = "prompt_group_users"
142
+
143
+ id = Column(String, primary_key=True)
144
+ prompt_group_id = Column(String, ForeignKey("prompt_groups.id", ondelete="CASCADE"), nullable=False)
145
+ user_id = Column(String, nullable=False)
146
+ role = Column(SQLEnum(PromptGroupRole), nullable=False, default=PromptGroupRole.VIEWER)
147
+ added_at = Column(BigInteger, nullable=False) # Epoch timestamp in milliseconds
148
+ added_by_user_id = Column(String, nullable=False) # User who granted access
149
+
150
+ # Ensure a user can only be added once per prompt group
151
+ __table_args__ = (
152
+ UniqueConstraint('prompt_group_id', 'user_id', name='uq_prompt_group_user'),
153
+ )
154
+
155
+ # Relationships
156
+ prompt_group = relationship("PromptGroupModel", back_populates="prompt_group_users")
157
+
158
+ def __repr__(self):
159
+ return f"<PromptGroupUserModel(id={self.id}, prompt_group_id={self.prompt_group_id}, user_id={self.user_id}, role={self.role})>"
@@ -0,0 +1,53 @@
1
+ """
2
+ Session SQLAlchemy model and Pydantic models for strongly-typed operations.
3
+ """
4
+
5
+ from sqlalchemy import BigInteger, Column, String, ForeignKey
6
+ from pydantic import BaseModel
7
+ from sqlalchemy.orm import relationship
8
+
9
+ from ...shared import now_epoch_ms
10
+ from .base import Base
11
+
12
+
13
+ class SessionModel(Base):
14
+ """SQLAlchemy model for sessions."""
15
+
16
+ __tablename__ = "sessions"
17
+
18
+ id = Column(String, primary_key=True)
19
+ name = Column(String, nullable=True)
20
+ user_id = Column(String, nullable=False)
21
+ agent_id = Column(String, nullable=True)
22
+ project_id = Column(String, ForeignKey("projects.id"), nullable=True)
23
+ created_time = Column(BigInteger, nullable=False, default=now_epoch_ms)
24
+ updated_time = Column(
25
+ BigInteger, nullable=False, default=now_epoch_ms, onupdate=now_epoch_ms
26
+ )
27
+ deleted_at = Column(BigInteger, nullable=True)
28
+ deleted_by = Column(String, nullable=True)
29
+
30
+ # Relationship to chat tasks
31
+ chat_tasks = relationship(
32
+ "ChatTaskModel", back_populates="session", cascade="all, delete-orphan"
33
+ )
34
+ project = relationship("ProjectModel", back_populates="sessions")
35
+
36
+
37
+ class CreateSessionModel(BaseModel):
38
+ """Pydantic model for creating a session."""
39
+ id: str
40
+ name: str | None
41
+ user_id: str
42
+ agent_id: str | None
43
+ project_id: str | None = None
44
+ created_time: int
45
+ updated_time: int
46
+
47
+
48
+ class UpdateSessionModel(BaseModel):
49
+ """Pydantic model for updating a session."""
50
+ name: str | None = None
51
+ agent_id: str | None = None
52
+ project_id: str | None = None
53
+ updated_time: int
@@ -0,0 +1,25 @@
1
+ """
2
+ Task Event SQLAlchemy model.
3
+ """
4
+
5
+ from sqlalchemy import JSON, BigInteger, Column, ForeignKey, String, Text
6
+ from sqlalchemy.orm import relationship
7
+
8
+ from .base import Base
9
+
10
+
11
+ class TaskEventModel(Base):
12
+ """SQLAlchemy model for A2A task events."""
13
+
14
+ __tablename__ = "task_events"
15
+
16
+ id = Column(String, primary_key=True)
17
+ task_id = Column(String, ForeignKey("tasks.id", ondelete="CASCADE"), index=True)
18
+ user_id = Column(String, nullable=True, index=True)
19
+ created_time = Column(BigInteger, nullable=False)
20
+ topic = Column(Text, nullable=False)
21
+ direction = Column(String(50), nullable=False)
22
+ payload = Column(JSON, nullable=False)
23
+
24
+ # Relationship to task
25
+ task = relationship("TaskModel", back_populates="events")
@@ -0,0 +1,39 @@
1
+ """
2
+ Task SQLAlchemy model.
3
+ """
4
+
5
+ from sqlalchemy import BigInteger, Boolean, Column, Integer, JSON, String, Text
6
+ from sqlalchemy.orm import relationship
7
+
8
+ from .base import Base
9
+
10
+
11
+ class TaskModel(Base):
12
+ """SQLAlchemy model for tasks."""
13
+
14
+ __tablename__ = "tasks"
15
+
16
+ id = Column(String, primary_key=True)
17
+ user_id = Column(String, nullable=False, index=True)
18
+ parent_task_id = Column(String, nullable=True, index=True)
19
+ start_time = Column(BigInteger, nullable=False)
20
+ end_time = Column(BigInteger, nullable=True)
21
+ status = Column(String, nullable=True)
22
+ initial_request_text = Column(Text, nullable=True, index=True)
23
+
24
+ # Token usage columns
25
+ total_input_tokens = Column(Integer, nullable=True)
26
+ total_output_tokens = Column(Integer, nullable=True)
27
+ total_cached_input_tokens = Column(Integer, nullable=True)
28
+ token_usage_details = Column(JSON, nullable=True)
29
+
30
+ # Background task execution columns
31
+ execution_mode = Column(String(20), nullable=True, default="foreground", index=True)
32
+ last_activity_time = Column(BigInteger, nullable=True, index=True)
33
+ background_execution_enabled = Column(Boolean, nullable=True, default=False)
34
+ max_execution_time_ms = Column(BigInteger, nullable=True)
35
+
36
+ # Relationship to events
37
+ events = relationship(
38
+ "TaskEventModel", back_populates="task", cascade="all, delete-orphan"
39
+ )