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.
- solace_agent_mesh/__init__.py +0 -0
- solace_agent_mesh/agent/__init__.py +0 -0
- solace_agent_mesh/agent/adk/__init__.py +0 -0
- solace_agent_mesh/agent/adk/adk_llm.txt +226 -0
- solace_agent_mesh/agent/adk/adk_llm_detail.txt +566 -0
- solace_agent_mesh/agent/adk/alembic/README +74 -0
- solace_agent_mesh/agent/adk/alembic/env.py +77 -0
- solace_agent_mesh/agent/adk/alembic/script.py.mako +28 -0
- solace_agent_mesh/agent/adk/alembic/versions/e2902798564d_adk_session_db_upgrade.py +52 -0
- solace_agent_mesh/agent/adk/alembic.ini +112 -0
- solace_agent_mesh/agent/adk/app_llm_agent.py +52 -0
- solace_agent_mesh/agent/adk/artifacts/__init__.py +1 -0
- solace_agent_mesh/agent/adk/artifacts/artifacts_llm.txt +171 -0
- solace_agent_mesh/agent/adk/artifacts/filesystem_artifact_service.py +545 -0
- solace_agent_mesh/agent/adk/artifacts/s3_artifact_service.py +609 -0
- solace_agent_mesh/agent/adk/callbacks.py +2318 -0
- solace_agent_mesh/agent/adk/embed_resolving_mcp_toolset.py +406 -0
- solace_agent_mesh/agent/adk/intelligent_mcp_callbacks.py +415 -0
- solace_agent_mesh/agent/adk/mcp_content_processor.py +666 -0
- solace_agent_mesh/agent/adk/models/lite_llm.py +1026 -0
- solace_agent_mesh/agent/adk/models/models_llm.txt +189 -0
- solace_agent_mesh/agent/adk/models/oauth2_token_manager.py +132 -0
- solace_agent_mesh/agent/adk/runner.py +390 -0
- solace_agent_mesh/agent/adk/schema_migration.py +88 -0
- solace_agent_mesh/agent/adk/services.py +468 -0
- solace_agent_mesh/agent/adk/setup.py +1325 -0
- solace_agent_mesh/agent/adk/stream_parser.py +415 -0
- solace_agent_mesh/agent/adk/tool_wrapper.py +165 -0
- solace_agent_mesh/agent/agent_llm.txt +369 -0
- solace_agent_mesh/agent/agent_llm_detail.txt +1702 -0
- solace_agent_mesh/agent/protocol/__init__.py +0 -0
- solace_agent_mesh/agent/protocol/event_handlers.py +2041 -0
- solace_agent_mesh/agent/protocol/protocol_llm.txt +81 -0
- solace_agent_mesh/agent/protocol/protocol_llm_detail.txt +92 -0
- solace_agent_mesh/agent/proxies/__init__.py +0 -0
- solace_agent_mesh/agent/proxies/a2a/__init__.py +3 -0
- solace_agent_mesh/agent/proxies/a2a/a2a_llm.txt +190 -0
- solace_agent_mesh/agent/proxies/a2a/app.py +56 -0
- solace_agent_mesh/agent/proxies/a2a/component.py +1585 -0
- solace_agent_mesh/agent/proxies/a2a/config.py +216 -0
- solace_agent_mesh/agent/proxies/a2a/oauth_token_cache.py +104 -0
- solace_agent_mesh/agent/proxies/base/__init__.py +3 -0
- solace_agent_mesh/agent/proxies/base/app.py +100 -0
- solace_agent_mesh/agent/proxies/base/base_llm.txt +148 -0
- solace_agent_mesh/agent/proxies/base/component.py +816 -0
- solace_agent_mesh/agent/proxies/base/config.py +85 -0
- solace_agent_mesh/agent/proxies/base/proxy_task_context.py +19 -0
- solace_agent_mesh/agent/proxies/proxies_llm.txt +283 -0
- solace_agent_mesh/agent/sac/__init__.py +0 -0
- solace_agent_mesh/agent/sac/app.py +595 -0
- solace_agent_mesh/agent/sac/component.py +3668 -0
- solace_agent_mesh/agent/sac/patch_adk.py +103 -0
- solace_agent_mesh/agent/sac/sac_llm.txt +189 -0
- solace_agent_mesh/agent/sac/sac_llm_detail.txt +200 -0
- solace_agent_mesh/agent/sac/task_execution_context.py +415 -0
- solace_agent_mesh/agent/testing/__init__.py +3 -0
- solace_agent_mesh/agent/testing/debug_utils.py +135 -0
- solace_agent_mesh/agent/testing/testing_llm.txt +58 -0
- solace_agent_mesh/agent/testing/testing_llm_detail.txt +68 -0
- solace_agent_mesh/agent/tools/__init__.py +16 -0
- solace_agent_mesh/agent/tools/audio_tools.py +1740 -0
- solace_agent_mesh/agent/tools/builtin_artifact_tools.py +2500 -0
- solace_agent_mesh/agent/tools/builtin_data_analysis_tools.py +244 -0
- solace_agent_mesh/agent/tools/dynamic_tool.py +396 -0
- solace_agent_mesh/agent/tools/general_agent_tools.py +572 -0
- solace_agent_mesh/agent/tools/image_tools.py +1185 -0
- solace_agent_mesh/agent/tools/peer_agent_tool.py +363 -0
- solace_agent_mesh/agent/tools/registry.py +38 -0
- solace_agent_mesh/agent/tools/test_tools.py +136 -0
- solace_agent_mesh/agent/tools/time_tools.py +126 -0
- solace_agent_mesh/agent/tools/tool_config_types.py +93 -0
- solace_agent_mesh/agent/tools/tool_definition.py +53 -0
- solace_agent_mesh/agent/tools/tools_llm.txt +276 -0
- solace_agent_mesh/agent/tools/tools_llm_detail.txt +275 -0
- solace_agent_mesh/agent/tools/web_tools.py +392 -0
- solace_agent_mesh/agent/utils/__init__.py +0 -0
- solace_agent_mesh/agent/utils/artifact_helpers.py +1353 -0
- solace_agent_mesh/agent/utils/config_parser.py +49 -0
- solace_agent_mesh/agent/utils/context_helpers.py +77 -0
- solace_agent_mesh/agent/utils/utils_llm.txt +152 -0
- solace_agent_mesh/agent/utils/utils_llm_detail.txt +149 -0
- solace_agent_mesh/assets/docs/404.html +16 -0
- solace_agent_mesh/assets/docs/assets/css/styles.8162edfb.css +1 -0
- solace_agent_mesh/assets/docs/assets/images/Solace_AI_Framework_With_Broker-85f0a306a9bcdd20b390b7a949f6d862.png +0 -0
- solace_agent_mesh/assets/docs/assets/images/sam-enterprise-credentials-b269f095349473118b2b33bdfcc40122.png +0 -0
- solace_agent_mesh/assets/docs/assets/js/032c2d61.f3d37824.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/05749d90.19ac4f35.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/0bcf40b7.c019ad46.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/1001.0182a8bd.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/1039.0bd46aa1.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/149.b797a808.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/15ba94aa.92fea363.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/15e40e79.434bb30f.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/165.6a39807d.js +2 -0
- solace_agent_mesh/assets/docs/assets/js/165.6a39807d.js.LICENSE.txt +9 -0
- solace_agent_mesh/assets/docs/assets/js/17896441.e612dfb4.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/2130.ab9fd314.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/2131ec11.5c7a1f6e.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/2237.5e477fc6.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/2279.550aa580.js +2 -0
- solace_agent_mesh/assets/docs/assets/js/2279.550aa580.js.LICENSE.txt +13 -0
- solace_agent_mesh/assets/docs/assets/js/2334.1cf50a20.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/240a0364.9ad94d1b.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/2987107d.a80604f9.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/2e32b5e0.33f5d75b.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/3219.adc1d663.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/341393d4.0fac2613.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/3624.0eaa1fd0.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/375.708d48db.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/3834.b6cd790e.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/3a6c6137.f5940cfa.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/3ac1795d.28b7c67b.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/3ff0015d.2ddc75c0.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/41adc471.48b12a4e.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/4250.95455b28.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/4356.d169ab5b.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/4458.518e66fa.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/4488.c7cc3442.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/4494.6ee23046.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/4855.fc4444b6.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/4866.22daefc0.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/4950.ca4caeda.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/509e993c.a1fbf45a.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/5388.7a136447.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/547e15cc.2f7790c1.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/55b7b518.29d6e75d.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/5607.081356f8.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/5864.b0d0e9de.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/5c2bd65f.90a87880.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/5e95c892.558d5167.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6063ff4c.ef84f702.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/60702c0e.a8bdd79b.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6143.0a1464c9.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/631738c7.fa471607.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6395.e9c73649.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/64195356.c498c4d0.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/66d4869e.b77431fc.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6796.51d2c9b7.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6976.379be23b.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6978.ee0b945c.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6a520c9d.b6e3f2ce.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6aaedf65.7253541d.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6ad8f0bd.a5b36a60.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6d84eae0.fd23ba4a.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6fdfefc7.99de744e.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/7040.cb436723.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/7195.412f418a.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/71da7b71.374b9d54.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/722f809d.965da774.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/7280.3fb73bdb.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/742f027b.46c07808.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/77cf947d.48cb18a2.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/7845.e33e7c4c.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/7900.69516146.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/8024126c.fa0e7186.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/81a99df0.2484b8d9.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/82fbfb93.161823a5.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/8356.8a379c04.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/8567.4732c6b7.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/8573.cb04eda5.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/8577.1d54e766.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/8591.5d015485.js +2 -0
- solace_agent_mesh/assets/docs/assets/js/8591.5d015485.js.LICENSE.txt +61 -0
- solace_agent_mesh/assets/docs/assets/js/8709.7ecd4047.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/8731.6c1dbf0c.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/8908.f9d1b506.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/8b032486.91a91afc.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/9157.b4093d07.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/924ffdeb.975e428a.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/9278.a4fd875d.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/945fb41e.6f4cdffd.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/94e8668d.16083b3f.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/9616.b75c2f6d.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/9793.c6d16376.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/9bb13469.b2333011.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/9e9d0a82.570c057b.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/a7bd4aaa.2204d2f7.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/a94703ab.3e5fbcb3.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/ab9708a8.245ae0ef.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/aba21aa0.c42a534c.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/ad71b5ed.af3ecfd1.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/ad87452a.9d73dad6.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/c198a0dc.8f31f867.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/c93cbaa0.0e0d8baf.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/cab03b5b.6a073091.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/cbe2e9ea.07e170dd.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/ceb2a7a6.5d92d7d0.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/da0b5bad.b62f7b08.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/db5d6442.3daf1696.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/db924877.e98d12a1.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/dd817ffc.c37a755e.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/dd81e2b8.b682e9c2.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/de5f4c65.e8241890.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/de915948.44a432bc.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/e04b235d.52cb25ed.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/e1b6eeb4.b1068f9b.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/e3d9abda.1476f570.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/e6f9706b.4488e34c.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/e92d0134.3bda61dd.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/f284c35a.250993bf.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/ff4d71f2.74710fc1.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/main.7acf7ace.js +2 -0
- solace_agent_mesh/assets/docs/assets/js/main.7acf7ace.js.LICENSE.txt +81 -0
- solace_agent_mesh/assets/docs/assets/js/runtime~main.9e0813a2.js +1 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/agents/index.html +154 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/artifact-management/index.html +99 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/audio-tools/index.html +90 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/data-analysis-tools/index.html +107 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/embeds/index.html +166 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/index.html +101 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/cli/index.html +219 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/gateways/index.html +92 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/index.html +29 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/orchestrator/index.html +55 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/plugins/index.html +110 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/projects/index.html +182 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/prompts/index.html +147 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/proxies/index.html +345 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/speech/index.html +52 -0
- solace_agent_mesh/assets/docs/docs/documentation/deploying/debugging/index.html +83 -0
- solace_agent_mesh/assets/docs/docs/documentation/deploying/deployment-options/index.html +84 -0
- solace_agent_mesh/assets/docs/docs/documentation/deploying/index.html +25 -0
- solace_agent_mesh/assets/docs/docs/documentation/deploying/kubernetes-deployment/index.html +47 -0
- solace_agent_mesh/assets/docs/docs/documentation/deploying/logging/index.html +85 -0
- solace_agent_mesh/assets/docs/docs/documentation/deploying/observability/index.html +60 -0
- solace_agent_mesh/assets/docs/docs/documentation/deploying/proxy_configuration/index.html +49 -0
- solace_agent_mesh/assets/docs/docs/documentation/developing/create-agents/index.html +144 -0
- solace_agent_mesh/assets/docs/docs/documentation/developing/create-gateways/index.html +191 -0
- solace_agent_mesh/assets/docs/docs/documentation/developing/creating-python-tools/index.html +128 -0
- solace_agent_mesh/assets/docs/docs/documentation/developing/creating-service-providers/index.html +54 -0
- solace_agent_mesh/assets/docs/docs/documentation/developing/evaluations/index.html +135 -0
- solace_agent_mesh/assets/docs/docs/documentation/developing/index.html +34 -0
- solace_agent_mesh/assets/docs/docs/documentation/developing/structure/index.html +55 -0
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/bedrock-agents/index.html +267 -0
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/custom-agent/index.html +142 -0
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/event-mesh-gateway/index.html +116 -0
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/mcp-integration/index.html +86 -0
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/mongodb-integration/index.html +164 -0
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/rag-integration/index.html +140 -0
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/rest-gateway/index.html +57 -0
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/slack-integration/index.html +72 -0
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/sql-database/index.html +102 -0
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/teams-integration/index.html +115 -0
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/agent-builder/index.html +86 -0
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/connectors/index.html +67 -0
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/index.html +37 -0
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/installation/index.html +86 -0
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/openapi-tools/index.html +324 -0
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/rbac-setup-guide/index.html +247 -0
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/secure-user-delegated-access/index.html +440 -0
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/single-sign-on/index.html +184 -0
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/wheel-installation/index.html +62 -0
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/architecture/index.html +75 -0
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/index.html +54 -0
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/introduction/index.html +85 -0
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/try-agent-mesh/index.html +41 -0
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/artifact-storage/index.html +290 -0
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/configurations/index.html +78 -0
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/index.html +25 -0
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/installation/index.html +78 -0
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/large_language_models/index.html +160 -0
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/run-project/index.html +142 -0
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/session-storage/index.html +251 -0
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/user-feedback/index.html +88 -0
- solace_agent_mesh/assets/docs/docs/documentation/migrations/a2a-upgrade/a2a-gateway-upgrade-to-0.3.0/index.html +100 -0
- solace_agent_mesh/assets/docs/docs/documentation/migrations/a2a-upgrade/a2a-technical-migration-map/index.html +52 -0
- solace_agent_mesh/assets/docs/img/Solace_AI_Framework_With_Broker.png +0 -0
- solace_agent_mesh/assets/docs/img/logo.png +0 -0
- solace_agent_mesh/assets/docs/img/sac-flows.png +0 -0
- solace_agent_mesh/assets/docs/img/sac_parts_of_a_component.png +0 -0
- solace_agent_mesh/assets/docs/img/sam-enterprise-credentials.png +0 -0
- solace_agent_mesh/assets/docs/img/solace-logo-text.svg +18 -0
- solace_agent_mesh/assets/docs/img/solace-logo.png +0 -0
- solace_agent_mesh/assets/docs/lunr-index-1765810064709.json +1 -0
- solace_agent_mesh/assets/docs/lunr-index.json +1 -0
- solace_agent_mesh/assets/docs/search-doc-1765810064709.json +1 -0
- solace_agent_mesh/assets/docs/search-doc.json +1 -0
- solace_agent_mesh/assets/docs/sitemap.xml +1 -0
- solace_agent_mesh/cli/__init__.py +1 -0
- solace_agent_mesh/cli/commands/__init__.py +0 -0
- solace_agent_mesh/cli/commands/add_cmd/__init__.py +15 -0
- solace_agent_mesh/cli/commands/add_cmd/add_cmd_llm.txt +250 -0
- solace_agent_mesh/cli/commands/add_cmd/agent_cmd.py +729 -0
- solace_agent_mesh/cli/commands/add_cmd/gateway_cmd.py +322 -0
- solace_agent_mesh/cli/commands/add_cmd/web_add_agent_step.py +102 -0
- solace_agent_mesh/cli/commands/add_cmd/web_add_gateway_step.py +114 -0
- solace_agent_mesh/cli/commands/docs_cmd.py +60 -0
- solace_agent_mesh/cli/commands/eval_cmd.py +46 -0
- solace_agent_mesh/cli/commands/init_cmd/__init__.py +439 -0
- solace_agent_mesh/cli/commands/init_cmd/broker_step.py +201 -0
- solace_agent_mesh/cli/commands/init_cmd/database_step.py +91 -0
- solace_agent_mesh/cli/commands/init_cmd/directory_step.py +28 -0
- solace_agent_mesh/cli/commands/init_cmd/env_step.py +238 -0
- solace_agent_mesh/cli/commands/init_cmd/init_cmd_llm.txt +365 -0
- solace_agent_mesh/cli/commands/init_cmd/orchestrator_step.py +464 -0
- solace_agent_mesh/cli/commands/init_cmd/project_files_step.py +38 -0
- solace_agent_mesh/cli/commands/init_cmd/web_init_step.py +119 -0
- solace_agent_mesh/cli/commands/init_cmd/webui_gateway_step.py +215 -0
- solace_agent_mesh/cli/commands/plugin_cmd/__init__.py +20 -0
- solace_agent_mesh/cli/commands/plugin_cmd/add_cmd.py +137 -0
- solace_agent_mesh/cli/commands/plugin_cmd/build_cmd.py +86 -0
- solace_agent_mesh/cli/commands/plugin_cmd/catalog_cmd.py +144 -0
- solace_agent_mesh/cli/commands/plugin_cmd/create_cmd.py +306 -0
- solace_agent_mesh/cli/commands/plugin_cmd/install_cmd.py +283 -0
- solace_agent_mesh/cli/commands/plugin_cmd/official_registry.py +175 -0
- solace_agent_mesh/cli/commands/plugin_cmd/plugin_cmd_llm.txt +305 -0
- solace_agent_mesh/cli/commands/run_cmd.py +215 -0
- solace_agent_mesh/cli/main.py +52 -0
- solace_agent_mesh/cli/utils.py +262 -0
- solace_agent_mesh/client/webui/frontend/static/assets/authCallback-Dj3JtK42.js +1 -0
- solace_agent_mesh/client/webui/frontend/static/assets/client-ZKk9kEJ5.js +25 -0
- solace_agent_mesh/client/webui/frontend/static/assets/favicon-BLgzUch9.ico +0 -0
- solace_agent_mesh/client/webui/frontend/static/assets/main-BcUaNZ-Q.css +1 -0
- solace_agent_mesh/client/webui/frontend/static/assets/main-vjch4RYc.js +435 -0
- solace_agent_mesh/client/webui/frontend/static/assets/vendor-BNV4kZN0.js +535 -0
- solace_agent_mesh/client/webui/frontend/static/auth-callback.html +15 -0
- solace_agent_mesh/client/webui/frontend/static/index.html +16 -0
- solace_agent_mesh/client/webui/frontend/static/mockServiceWorker.js +336 -0
- solace_agent_mesh/client/webui/frontend/static/ui-version.json +6 -0
- solace_agent_mesh/common/__init__.py +1 -0
- solace_agent_mesh/common/a2a/__init__.py +241 -0
- solace_agent_mesh/common/a2a/a2a_llm.txt +175 -0
- solace_agent_mesh/common/a2a/a2a_llm_detail.txt +193 -0
- solace_agent_mesh/common/a2a/artifact.py +368 -0
- solace_agent_mesh/common/a2a/events.py +213 -0
- solace_agent_mesh/common/a2a/message.py +375 -0
- solace_agent_mesh/common/a2a/protocol.py +689 -0
- solace_agent_mesh/common/a2a/task.py +127 -0
- solace_agent_mesh/common/a2a/translation.py +655 -0
- solace_agent_mesh/common/a2a/types.py +55 -0
- solace_agent_mesh/common/a2a_spec/a2a.json +2576 -0
- solace_agent_mesh/common/a2a_spec/a2a_spec_llm.txt +445 -0
- solace_agent_mesh/common/a2a_spec/a2a_spec_llm_detail.txt +736 -0
- solace_agent_mesh/common/a2a_spec/schemas/agent_progress_update.json +18 -0
- solace_agent_mesh/common/a2a_spec/schemas/artifact_creation_progress.json +48 -0
- solace_agent_mesh/common/a2a_spec/schemas/feedback_event.json +51 -0
- solace_agent_mesh/common/a2a_spec/schemas/llm_invocation.json +41 -0
- solace_agent_mesh/common/a2a_spec/schemas/schemas_llm.txt +330 -0
- solace_agent_mesh/common/a2a_spec/schemas/tool_invocation_start.json +26 -0
- solace_agent_mesh/common/a2a_spec/schemas/tool_result.json +48 -0
- solace_agent_mesh/common/agent_registry.py +122 -0
- solace_agent_mesh/common/common_llm.txt +230 -0
- solace_agent_mesh/common/common_llm_detail.txt +2562 -0
- solace_agent_mesh/common/constants.py +6 -0
- solace_agent_mesh/common/data_parts.py +150 -0
- solace_agent_mesh/common/exceptions.py +49 -0
- solace_agent_mesh/common/middleware/__init__.py +12 -0
- solace_agent_mesh/common/middleware/config_resolver.py +132 -0
- solace_agent_mesh/common/middleware/middleware_llm.txt +174 -0
- solace_agent_mesh/common/middleware/middleware_llm_detail.txt +185 -0
- solace_agent_mesh/common/middleware/registry.py +127 -0
- solace_agent_mesh/common/oauth/__init__.py +17 -0
- solace_agent_mesh/common/oauth/oauth_client.py +408 -0
- solace_agent_mesh/common/oauth/utils.py +50 -0
- solace_agent_mesh/common/sac/__init__.py +0 -0
- solace_agent_mesh/common/sac/sac_llm.txt +71 -0
- solace_agent_mesh/common/sac/sac_llm_detail.txt +82 -0
- solace_agent_mesh/common/sac/sam_component_base.py +730 -0
- solace_agent_mesh/common/sam_events/__init__.py +9 -0
- solace_agent_mesh/common/sam_events/event_service.py +208 -0
- solace_agent_mesh/common/sam_events/sam_events_llm.txt +104 -0
- solace_agent_mesh/common/sam_events/sam_events_llm_detail.txt +115 -0
- solace_agent_mesh/common/services/__init__.py +4 -0
- solace_agent_mesh/common/services/employee_service.py +164 -0
- solace_agent_mesh/common/services/identity_service.py +134 -0
- solace_agent_mesh/common/services/providers/__init__.py +4 -0
- solace_agent_mesh/common/services/providers/local_file_identity_service.py +151 -0
- solace_agent_mesh/common/services/providers/providers_llm.txt +81 -0
- solace_agent_mesh/common/services/services_llm.txt +368 -0
- solace_agent_mesh/common/services/services_llm_detail.txt +459 -0
- solace_agent_mesh/common/utils/__init__.py +7 -0
- solace_agent_mesh/common/utils/artifact_utils.py +31 -0
- solace_agent_mesh/common/utils/asyncio_macos_fix.py +88 -0
- solace_agent_mesh/common/utils/embeds/__init__.py +33 -0
- solace_agent_mesh/common/utils/embeds/constants.py +56 -0
- solace_agent_mesh/common/utils/embeds/converter.py +447 -0
- solace_agent_mesh/common/utils/embeds/embeds_llm.txt +220 -0
- solace_agent_mesh/common/utils/embeds/evaluators.py +395 -0
- solace_agent_mesh/common/utils/embeds/modifiers.py +793 -0
- solace_agent_mesh/common/utils/embeds/resolver.py +967 -0
- solace_agent_mesh/common/utils/embeds/types.py +23 -0
- solace_agent_mesh/common/utils/in_memory_cache.py +108 -0
- solace_agent_mesh/common/utils/initializer.py +52 -0
- solace_agent_mesh/common/utils/log_formatters.py +64 -0
- solace_agent_mesh/common/utils/message_utils.py +80 -0
- solace_agent_mesh/common/utils/mime_helpers.py +172 -0
- solace_agent_mesh/common/utils/push_notification_auth.py +135 -0
- solace_agent_mesh/common/utils/pydantic_utils.py +159 -0
- solace_agent_mesh/common/utils/rbac_utils.py +69 -0
- solace_agent_mesh/common/utils/templates/__init__.py +8 -0
- solace_agent_mesh/common/utils/templates/liquid_renderer.py +210 -0
- solace_agent_mesh/common/utils/templates/template_resolver.py +161 -0
- solace_agent_mesh/common/utils/type_utils.py +28 -0
- solace_agent_mesh/common/utils/utils_llm.txt +335 -0
- solace_agent_mesh/common/utils/utils_llm_detail.txt +572 -0
- solace_agent_mesh/config_portal/__init__.py +0 -0
- solace_agent_mesh/config_portal/backend/__init__.py +0 -0
- solace_agent_mesh/config_portal/backend/common.py +77 -0
- solace_agent_mesh/config_portal/backend/plugin_catalog/__init__.py +0 -0
- solace_agent_mesh/config_portal/backend/plugin_catalog/constants.py +24 -0
- solace_agent_mesh/config_portal/backend/plugin_catalog/models.py +49 -0
- solace_agent_mesh/config_portal/backend/plugin_catalog/registry_manager.py +166 -0
- solace_agent_mesh/config_portal/backend/plugin_catalog/scraper.py +521 -0
- solace_agent_mesh/config_portal/backend/plugin_catalog_server.py +217 -0
- solace_agent_mesh/config_portal/backend/server.py +644 -0
- solace_agent_mesh/config_portal/frontend/static/client/Solace_community_logo.png +0 -0
- solace_agent_mesh/config_portal/frontend/static/client/assets/_index-DiOiAjzL.js +103 -0
- solace_agent_mesh/config_portal/frontend/static/client/assets/components-Rk0n-9cK.js +140 -0
- solace_agent_mesh/config_portal/frontend/static/client/assets/entry.client-mvZjNKiz.js +19 -0
- solace_agent_mesh/config_portal/frontend/static/client/assets/index-DzNKzXrc.js +68 -0
- solace_agent_mesh/config_portal/frontend/static/client/assets/manifest-ba77705e.js +1 -0
- solace_agent_mesh/config_portal/frontend/static/client/assets/root-B17tZKK7.css +1 -0
- solace_agent_mesh/config_portal/frontend/static/client/assets/root-V2BeTIUc.js +10 -0
- solace_agent_mesh/config_portal/frontend/static/client/favicon.ico +0 -0
- solace_agent_mesh/config_portal/frontend/static/client/index.html +7 -0
- solace_agent_mesh/core_a2a/__init__.py +1 -0
- solace_agent_mesh/core_a2a/core_a2a_llm.txt +90 -0
- solace_agent_mesh/core_a2a/core_a2a_llm_detail.txt +101 -0
- solace_agent_mesh/core_a2a/service.py +307 -0
- solace_agent_mesh/evaluation/__init__.py +0 -0
- solace_agent_mesh/evaluation/evaluator.py +691 -0
- solace_agent_mesh/evaluation/message_organizer.py +553 -0
- solace_agent_mesh/evaluation/report/benchmark_info.html +35 -0
- solace_agent_mesh/evaluation/report/chart_section.html +141 -0
- solace_agent_mesh/evaluation/report/detailed_breakdown.html +28 -0
- solace_agent_mesh/evaluation/report/modal.html +59 -0
- solace_agent_mesh/evaluation/report/modal_chart_functions.js +411 -0
- solace_agent_mesh/evaluation/report/modal_script.js +296 -0
- solace_agent_mesh/evaluation/report/modal_styles.css +340 -0
- solace_agent_mesh/evaluation/report/performance_metrics_styles.css +93 -0
- solace_agent_mesh/evaluation/report/templates/footer.html +2 -0
- solace_agent_mesh/evaluation/report/templates/header.html +340 -0
- solace_agent_mesh/evaluation/report_data_processor.py +970 -0
- solace_agent_mesh/evaluation/report_generator.py +607 -0
- solace_agent_mesh/evaluation/run.py +954 -0
- solace_agent_mesh/evaluation/shared/__init__.py +92 -0
- solace_agent_mesh/evaluation/shared/constants.py +47 -0
- solace_agent_mesh/evaluation/shared/exceptions.py +50 -0
- solace_agent_mesh/evaluation/shared/helpers.py +35 -0
- solace_agent_mesh/evaluation/shared/test_case_loader.py +167 -0
- solace_agent_mesh/evaluation/shared/test_suite_loader.py +280 -0
- solace_agent_mesh/evaluation/subscriber.py +776 -0
- solace_agent_mesh/evaluation/summary_builder.py +880 -0
- solace_agent_mesh/gateway/__init__.py +0 -0
- solace_agent_mesh/gateway/adapter/__init__.py +1 -0
- solace_agent_mesh/gateway/adapter/base.py +143 -0
- solace_agent_mesh/gateway/adapter/types.py +221 -0
- solace_agent_mesh/gateway/base/__init__.py +1 -0
- solace_agent_mesh/gateway/base/app.py +345 -0
- solace_agent_mesh/gateway/base/base_llm.txt +226 -0
- solace_agent_mesh/gateway/base/base_llm_detail.txt +235 -0
- solace_agent_mesh/gateway/base/component.py +2030 -0
- solace_agent_mesh/gateway/base/task_context.py +75 -0
- solace_agent_mesh/gateway/gateway_llm.txt +369 -0
- solace_agent_mesh/gateway/gateway_llm_detail.txt +3885 -0
- solace_agent_mesh/gateway/generic/__init__.py +1 -0
- solace_agent_mesh/gateway/generic/app.py +50 -0
- solace_agent_mesh/gateway/generic/component.py +727 -0
- solace_agent_mesh/gateway/http_sse/__init__.py +0 -0
- solace_agent_mesh/gateway/http_sse/alembic/alembic_llm.txt +345 -0
- solace_agent_mesh/gateway/http_sse/alembic/env.py +87 -0
- solace_agent_mesh/gateway/http_sse/alembic/script.py.mako +28 -0
- solace_agent_mesh/gateway/http_sse/alembic/versions/20250910_d5b3f8f2e9a0_create_initial_database.py +58 -0
- solace_agent_mesh/gateway/http_sse/alembic/versions/20250911_b1c2d3e4f5g6_add_database_indexes.py +83 -0
- solace_agent_mesh/gateway/http_sse/alembic/versions/20250916_f6e7d8c9b0a1_convert_timestamps_to_epoch_and_align_columns.py +412 -0
- solace_agent_mesh/gateway/http_sse/alembic/versions/20251006_98882922fa59_add_tasks_events_feedback_chat_tasks.py +190 -0
- solace_agent_mesh/gateway/http_sse/alembic/versions/20251015_add_session_performance_indexes.py +70 -0
- solace_agent_mesh/gateway/http_sse/alembic/versions/20251023_add_project_users_table.py +72 -0
- solace_agent_mesh/gateway/http_sse/alembic/versions/20251023_add_soft_delete_and_search.py +109 -0
- solace_agent_mesh/gateway/http_sse/alembic/versions/20251024_add_default_agent_to_projects.py +26 -0
- solace_agent_mesh/gateway/http_sse/alembic/versions/20251024_add_projects_table.py +135 -0
- solace_agent_mesh/gateway/http_sse/alembic/versions/20251108_create_prompt_tables_with_sharing.py +154 -0
- solace_agent_mesh/gateway/http_sse/alembic/versions/20251115_add_parent_task_id.py +32 -0
- solace_agent_mesh/gateway/http_sse/alembic/versions/20251126_add_background_task_fields.py +47 -0
- solace_agent_mesh/gateway/http_sse/alembic/versions/20251202_add_versioned_fields_to_prompts.py +52 -0
- solace_agent_mesh/gateway/http_sse/alembic/versions/versions_llm.txt +161 -0
- solace_agent_mesh/gateway/http_sse/alembic.ini +109 -0
- solace_agent_mesh/gateway/http_sse/app.py +351 -0
- solace_agent_mesh/gateway/http_sse/component.py +2360 -0
- solace_agent_mesh/gateway/http_sse/components/__init__.py +7 -0
- solace_agent_mesh/gateway/http_sse/components/components_llm.txt +105 -0
- solace_agent_mesh/gateway/http_sse/components/task_logger_forwarder.py +109 -0
- solace_agent_mesh/gateway/http_sse/components/visualization_forwarder_component.py +110 -0
- solace_agent_mesh/gateway/http_sse/dependencies.py +653 -0
- solace_agent_mesh/gateway/http_sse/http_sse_llm.txt +299 -0
- solace_agent_mesh/gateway/http_sse/http_sse_llm_detail.txt +3278 -0
- solace_agent_mesh/gateway/http_sse/main.py +789 -0
- solace_agent_mesh/gateway/http_sse/repository/__init__.py +46 -0
- solace_agent_mesh/gateway/http_sse/repository/chat_task_repository.py +102 -0
- solace_agent_mesh/gateway/http_sse/repository/entities/__init__.py +11 -0
- solace_agent_mesh/gateway/http_sse/repository/entities/chat_task.py +75 -0
- solace_agent_mesh/gateway/http_sse/repository/entities/entities_llm.txt +221 -0
- solace_agent_mesh/gateway/http_sse/repository/entities/feedback.py +20 -0
- solace_agent_mesh/gateway/http_sse/repository/entities/project.py +81 -0
- solace_agent_mesh/gateway/http_sse/repository/entities/project_user.py +47 -0
- solace_agent_mesh/gateway/http_sse/repository/entities/session.py +66 -0
- solace_agent_mesh/gateway/http_sse/repository/entities/session_history.py +0 -0
- solace_agent_mesh/gateway/http_sse/repository/entities/task.py +32 -0
- solace_agent_mesh/gateway/http_sse/repository/entities/task_event.py +21 -0
- solace_agent_mesh/gateway/http_sse/repository/feedback_repository.py +125 -0
- solace_agent_mesh/gateway/http_sse/repository/interfaces.py +239 -0
- solace_agent_mesh/gateway/http_sse/repository/models/__init__.py +34 -0
- solace_agent_mesh/gateway/http_sse/repository/models/base.py +7 -0
- solace_agent_mesh/gateway/http_sse/repository/models/chat_task_model.py +31 -0
- solace_agent_mesh/gateway/http_sse/repository/models/feedback_model.py +21 -0
- solace_agent_mesh/gateway/http_sse/repository/models/models_llm.txt +257 -0
- solace_agent_mesh/gateway/http_sse/repository/models/project_model.py +51 -0
- solace_agent_mesh/gateway/http_sse/repository/models/project_user_model.py +75 -0
- solace_agent_mesh/gateway/http_sse/repository/models/prompt_model.py +159 -0
- solace_agent_mesh/gateway/http_sse/repository/models/session_model.py +53 -0
- solace_agent_mesh/gateway/http_sse/repository/models/task_event_model.py +25 -0
- solace_agent_mesh/gateway/http_sse/repository/models/task_model.py +39 -0
- solace_agent_mesh/gateway/http_sse/repository/project_repository.py +172 -0
- solace_agent_mesh/gateway/http_sse/repository/project_user_repository.py +186 -0
- solace_agent_mesh/gateway/http_sse/repository/repository_llm.txt +308 -0
- solace_agent_mesh/gateway/http_sse/repository/session_repository.py +268 -0
- solace_agent_mesh/gateway/http_sse/repository/task_repository.py +248 -0
- solace_agent_mesh/gateway/http_sse/routers/__init__.py +4 -0
- solace_agent_mesh/gateway/http_sse/routers/agent_cards.py +74 -0
- solace_agent_mesh/gateway/http_sse/routers/artifacts.py +1137 -0
- solace_agent_mesh/gateway/http_sse/routers/auth.py +311 -0
- solace_agent_mesh/gateway/http_sse/routers/config.py +371 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/__init__.py +10 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/dto_llm.txt +450 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/project_dto.py +69 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/prompt_dto.py +255 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/requests/__init__.py +15 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/requests/project_requests.py +48 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/requests/requests_llm.txt +133 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/requests/session_requests.py +33 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/requests/task_requests.py +58 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/responses/__init__.py +18 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/responses/base_responses.py +42 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/responses/project_responses.py +31 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/responses/responses_llm.txt +123 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/responses/session_responses.py +33 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/responses/task_responses.py +30 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/responses/version_responses.py +31 -0
- solace_agent_mesh/gateway/http_sse/routers/feedback.py +168 -0
- solace_agent_mesh/gateway/http_sse/routers/people.py +38 -0
- solace_agent_mesh/gateway/http_sse/routers/projects.py +767 -0
- solace_agent_mesh/gateway/http_sse/routers/prompts.py +1415 -0
- solace_agent_mesh/gateway/http_sse/routers/routers_llm.txt +312 -0
- solace_agent_mesh/gateway/http_sse/routers/sessions.py +634 -0
- solace_agent_mesh/gateway/http_sse/routers/speech.py +355 -0
- solace_agent_mesh/gateway/http_sse/routers/sse.py +230 -0
- solace_agent_mesh/gateway/http_sse/routers/tasks.py +1089 -0
- solace_agent_mesh/gateway/http_sse/routers/users.py +83 -0
- solace_agent_mesh/gateway/http_sse/routers/version.py +343 -0
- solace_agent_mesh/gateway/http_sse/routers/visualization.py +1220 -0
- solace_agent_mesh/gateway/http_sse/services/__init__.py +4 -0
- solace_agent_mesh/gateway/http_sse/services/agent_card_service.py +71 -0
- solace_agent_mesh/gateway/http_sse/services/audio_service.py +1227 -0
- solace_agent_mesh/gateway/http_sse/services/background_task_monitor.py +186 -0
- solace_agent_mesh/gateway/http_sse/services/data_retention_service.py +273 -0
- solace_agent_mesh/gateway/http_sse/services/feedback_service.py +250 -0
- solace_agent_mesh/gateway/http_sse/services/people_service.py +78 -0
- solace_agent_mesh/gateway/http_sse/services/project_service.py +930 -0
- solace_agent_mesh/gateway/http_sse/services/prompt_builder_assistant.py +303 -0
- solace_agent_mesh/gateway/http_sse/services/services_llm.txt +303 -0
- solace_agent_mesh/gateway/http_sse/services/session_service.py +702 -0
- solace_agent_mesh/gateway/http_sse/services/task_logger_service.py +593 -0
- solace_agent_mesh/gateway/http_sse/services/task_service.py +119 -0
- solace_agent_mesh/gateway/http_sse/session_manager.py +219 -0
- solace_agent_mesh/gateway/http_sse/shared/__init__.py +146 -0
- solace_agent_mesh/gateway/http_sse/shared/auth_utils.py +29 -0
- solace_agent_mesh/gateway/http_sse/shared/base_repository.py +252 -0
- solace_agent_mesh/gateway/http_sse/shared/database_exceptions.py +274 -0
- solace_agent_mesh/gateway/http_sse/shared/database_helpers.py +43 -0
- solace_agent_mesh/gateway/http_sse/shared/enums.py +40 -0
- solace_agent_mesh/gateway/http_sse/shared/error_dto.py +107 -0
- solace_agent_mesh/gateway/http_sse/shared/exception_handlers.py +217 -0
- solace_agent_mesh/gateway/http_sse/shared/exceptions.py +192 -0
- solace_agent_mesh/gateway/http_sse/shared/pagination.py +138 -0
- solace_agent_mesh/gateway/http_sse/shared/response_utils.py +134 -0
- solace_agent_mesh/gateway/http_sse/shared/shared_llm.txt +319 -0
- solace_agent_mesh/gateway/http_sse/shared/timestamp_utils.py +97 -0
- solace_agent_mesh/gateway/http_sse/shared/types.py +50 -0
- solace_agent_mesh/gateway/http_sse/shared/utils.py +22 -0
- solace_agent_mesh/gateway/http_sse/sse_event_buffer.py +88 -0
- solace_agent_mesh/gateway/http_sse/sse_manager.py +491 -0
- solace_agent_mesh/gateway/http_sse/utils/__init__.py +1 -0
- solace_agent_mesh/gateway/http_sse/utils/artifact_copy_utils.py +370 -0
- solace_agent_mesh/gateway/http_sse/utils/stim_utils.py +72 -0
- solace_agent_mesh/gateway/http_sse/utils/utils_llm.txt +47 -0
- solace_agent_mesh/llm.txt +228 -0
- solace_agent_mesh/llm_detail.txt +2835 -0
- solace_agent_mesh/services/__init__.py +0 -0
- solace_agent_mesh/services/platform/__init__.py +18 -0
- solace_agent_mesh/services/platform/alembic/env.py +85 -0
- solace_agent_mesh/services/platform/alembic/script.py.mako +28 -0
- solace_agent_mesh/services/platform/alembic.ini +109 -0
- solace_agent_mesh/services/platform/api/__init__.py +3 -0
- solace_agent_mesh/services/platform/api/dependencies.py +147 -0
- solace_agent_mesh/services/platform/api/main.py +280 -0
- solace_agent_mesh/services/platform/api/middleware.py +51 -0
- solace_agent_mesh/services/platform/api/routers/__init__.py +24 -0
- solace_agent_mesh/services/platform/app.py +114 -0
- solace_agent_mesh/services/platform/component.py +235 -0
- solace_agent_mesh/solace_agent_mesh_llm.txt +362 -0
- solace_agent_mesh/solace_agent_mesh_llm_detail.txt +8599 -0
- solace_agent_mesh/templates/agent_template.yaml +53 -0
- solace_agent_mesh/templates/eval_backend_template.yaml +54 -0
- solace_agent_mesh/templates/gateway_app_template.py +75 -0
- solace_agent_mesh/templates/gateway_component_template.py +484 -0
- solace_agent_mesh/templates/gateway_config_template.yaml +38 -0
- solace_agent_mesh/templates/logging_config_template.yaml +48 -0
- solace_agent_mesh/templates/main_orchestrator.yaml +66 -0
- solace_agent_mesh/templates/plugin_agent_config_template.yaml +122 -0
- solace_agent_mesh/templates/plugin_custom_config_template.yaml +27 -0
- solace_agent_mesh/templates/plugin_custom_template.py +10 -0
- solace_agent_mesh/templates/plugin_gateway_config_template.yaml +60 -0
- solace_agent_mesh/templates/plugin_pyproject_template.toml +32 -0
- solace_agent_mesh/templates/plugin_readme_template.md +12 -0
- solace_agent_mesh/templates/plugin_tool_config_template.yaml +109 -0
- solace_agent_mesh/templates/plugin_tools_template.py +224 -0
- solace_agent_mesh/templates/shared_config.yaml +112 -0
- solace_agent_mesh/templates/templates_llm.txt +147 -0
- solace_agent_mesh/templates/webui.yaml +177 -0
- solace_agent_mesh-1.11.2.dist-info/METADATA +504 -0
- solace_agent_mesh-1.11.2.dist-info/RECORD +624 -0
- solace_agent_mesh-1.11.2.dist-info/WHEEL +4 -0
- solace_agent_mesh-1.11.2.dist-info/entry_points.txt +3 -0
- solace_agent_mesh-1.11.2.dist-info/licenses/LICENSE +201 -0
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
import asyncio
|
|
3
|
+
from datetime import datetime, timezone
|
|
4
|
+
from typing import Any, Dict, Optional
|
|
5
|
+
|
|
6
|
+
from google.adk.tools import ToolContext
|
|
7
|
+
from solace_agent_mesh.agent.utils.artifact_helpers import (
|
|
8
|
+
save_artifact_with_metadata,
|
|
9
|
+
DEFAULT_SCHEMA_MAX_KEYS,
|
|
10
|
+
)
|
|
11
|
+
from solace_agent_mesh.agent.utils.context_helpers import get_original_session_id
|
|
12
|
+
|
|
13
|
+
log = logging.getLogger(__name__)
|
|
14
|
+
|
|
15
|
+
async def example_text_processor_tool(
|
|
16
|
+
text_input: str,
|
|
17
|
+
uppercase: bool = False, # Example of a boolean parameter
|
|
18
|
+
tool_context: Optional[ToolContext] = None,
|
|
19
|
+
tool_config: Optional[Dict[str, Any]] = None,
|
|
20
|
+
) -> Dict[str, Any]:
|
|
21
|
+
"""
|
|
22
|
+
An example tool that processes input text, optionally converts it to uppercase,
|
|
23
|
+
and adds a prefix from tool_config.
|
|
24
|
+
"""
|
|
25
|
+
plugin_name = "__PLUGIN_SPACED_NAME__"
|
|
26
|
+
log_identifier = f"[{plugin_name}:example_text_processor_tool]"
|
|
27
|
+
log.info(f"{log_identifier} Received text: '{text_input}', uppercase: {uppercase}")
|
|
28
|
+
|
|
29
|
+
current_tool_config = tool_config if tool_config is not None else {}
|
|
30
|
+
prefix = current_tool_config.get("prefix", "Processed: ")
|
|
31
|
+
|
|
32
|
+
processed_text = text_input
|
|
33
|
+
if uppercase:
|
|
34
|
+
processed_text = processed_text.upper()
|
|
35
|
+
|
|
36
|
+
final_text = f"{prefix}{processed_text}"
|
|
37
|
+
|
|
38
|
+
log.info(f"{log_identifier} Processed text: '{final_text}'")
|
|
39
|
+
return {
|
|
40
|
+
"status": "success",
|
|
41
|
+
"message": "Text processed successfully by example_text_processor_tool.",
|
|
42
|
+
"original_input": text_input,
|
|
43
|
+
"processed_text": final_text,
|
|
44
|
+
"was_uppercased": uppercase,
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
async def example_text_file_creator_tool(
|
|
49
|
+
filename: str,
|
|
50
|
+
content: str,
|
|
51
|
+
tool_context: Optional[ToolContext] = None,
|
|
52
|
+
tool_config: Optional[Dict[str, Any]] = None,
|
|
53
|
+
) -> Dict[str, Any]:
|
|
54
|
+
"""
|
|
55
|
+
An example tool that creates a text file and saves it as an artifact
|
|
56
|
+
using the Solace Agent Mesh artifact service.
|
|
57
|
+
"""
|
|
58
|
+
plugin_name = "__PLUGIN_SPACED_NAME__"
|
|
59
|
+
log_identifier = f"[{plugin_name}:example_text_file_creator_tool]"
|
|
60
|
+
log.info(
|
|
61
|
+
f"{log_identifier} Received request to create file: '{filename}' with content starting: '{content[:50]}...'"
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
if not tool_context or not tool_context._invocation_context:
|
|
65
|
+
log.error(
|
|
66
|
+
f"{log_identifier} ToolContext or InvocationContext is missing. Cannot save artifact."
|
|
67
|
+
)
|
|
68
|
+
return {
|
|
69
|
+
"status": "error",
|
|
70
|
+
"message": "ToolContext or InvocationContext is missing.",
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
inv_context = tool_context._invocation_context
|
|
74
|
+
app_name = getattr(inv_context, "app_name", None)
|
|
75
|
+
user_id = getattr(inv_context, "user_id", None)
|
|
76
|
+
session_id = get_original_session_id(inv_context)
|
|
77
|
+
artifact_service = getattr(inv_context, "artifact_service", None)
|
|
78
|
+
|
|
79
|
+
if not all([app_name, user_id, session_id, artifact_service]):
|
|
80
|
+
missing_parts = [
|
|
81
|
+
part
|
|
82
|
+
for part, val in [
|
|
83
|
+
("app_name", app_name),
|
|
84
|
+
("user_id", user_id),
|
|
85
|
+
("session_id", session_id),
|
|
86
|
+
("artifact_service", artifact_service),
|
|
87
|
+
]
|
|
88
|
+
if not val
|
|
89
|
+
]
|
|
90
|
+
log.error(
|
|
91
|
+
f"{log_identifier} Missing required context parts for artifact saving: {', '.join(missing_parts)}"
|
|
92
|
+
)
|
|
93
|
+
return {
|
|
94
|
+
"status": "error",
|
|
95
|
+
"message": f"Missing required context parts for artifact saving: {', '.join(missing_parts)}",
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
output_filename = filename
|
|
99
|
+
if not output_filename.lower().endswith(".txt"):
|
|
100
|
+
output_filename += ".txt"
|
|
101
|
+
|
|
102
|
+
content_bytes = content.encode("utf-8")
|
|
103
|
+
mime_type = "text/plain"
|
|
104
|
+
timestamp = datetime.now(timezone.utc)
|
|
105
|
+
|
|
106
|
+
metadata_dict = {
|
|
107
|
+
"description": f"Text file created by {plugin_name}'s example_text_file_creator_tool.",
|
|
108
|
+
"source_tool": "example_text_file_creator_tool",
|
|
109
|
+
"original_requested_filename": filename,
|
|
110
|
+
"creation_timestamp_iso": timestamp.isoformat(),
|
|
111
|
+
"content_character_count": len(content),
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
log.info(
|
|
115
|
+
f"{log_identifier} Attempting to save artifact '{output_filename}' via artifact_service."
|
|
116
|
+
)
|
|
117
|
+
try:
|
|
118
|
+
save_result = await save_artifact_with_metadata(
|
|
119
|
+
artifact_service=artifact_service,
|
|
120
|
+
app_name=app_name,
|
|
121
|
+
user_id=user_id,
|
|
122
|
+
session_id=session_id,
|
|
123
|
+
filename=output_filename,
|
|
124
|
+
content_bytes=content_bytes,
|
|
125
|
+
mime_type=mime_type,
|
|
126
|
+
metadata_dict=metadata_dict,
|
|
127
|
+
timestamp=timestamp,
|
|
128
|
+
schema_max_keys=DEFAULT_SCHEMA_MAX_KEYS,
|
|
129
|
+
tool_context=tool_context,
|
|
130
|
+
)
|
|
131
|
+
if save_result.get("status") == "error":
|
|
132
|
+
log.error(
|
|
133
|
+
f"{log_identifier} Failed to save artifact: {save_result.get('message')}"
|
|
134
|
+
)
|
|
135
|
+
return {
|
|
136
|
+
"status": "error",
|
|
137
|
+
"message": f"Failed to save artifact: {save_result.get('message')}",
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
log.info(
|
|
141
|
+
f"{log_identifier} Artifact '{output_filename}' v{save_result['data_version']} saved successfully."
|
|
142
|
+
)
|
|
143
|
+
return {
|
|
144
|
+
"status": "success",
|
|
145
|
+
"message": f"File '{output_filename}' created and saved as artifact v{save_result['data_version']}.",
|
|
146
|
+
"output_filename": output_filename,
|
|
147
|
+
"output_version": save_result["data_version"],
|
|
148
|
+
}
|
|
149
|
+
except Exception as e:
|
|
150
|
+
log.exception(f"{log_identifier} Unexpected error during artifact saving: {e}")
|
|
151
|
+
return {
|
|
152
|
+
"status": "error",
|
|
153
|
+
"message": f"An unexpected error occurred during artifact saving: {e}",
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
# Example of how these might be tested or run if this file was executed directly.
|
|
158
|
+
# This assumes the script is run in an environment where solace_agent_mesh is importable,
|
|
159
|
+
# or the imports at the top will fail.
|
|
160
|
+
if __name__ == "__main__":
|
|
161
|
+
|
|
162
|
+
async def run_tests():
|
|
163
|
+
print("--- Testing example_text_processor_tool ---")
|
|
164
|
+
# For standalone testing, ToolContext might be minimal or None if ADK is not fully available.
|
|
165
|
+
# The tool should handle tool_context=None gracefully if it's designed to be testable standalone.
|
|
166
|
+
|
|
167
|
+
# A more complete mock for standalone testing if needed:
|
|
168
|
+
class MockArtifactService:
|
|
169
|
+
async def save_artifact(
|
|
170
|
+
self, **kwargs
|
|
171
|
+
): # Match expected signature elements
|
|
172
|
+
log.info(
|
|
173
|
+
f"MockArtifactService.save_artifact called with filename: {kwargs.get('filename')}"
|
|
174
|
+
)
|
|
175
|
+
return {
|
|
176
|
+
"uri": f"mock://{kwargs.get('filename')}",
|
|
177
|
+
"version": 1,
|
|
178
|
+
} # Simulate ADK response
|
|
179
|
+
|
|
180
|
+
async def save_artifact_metadata(self, **kwargs):
|
|
181
|
+
log.info(
|
|
182
|
+
f"MockArtifactService.save_artifact_metadata called for: {kwargs.get('filename')}"
|
|
183
|
+
)
|
|
184
|
+
return {
|
|
185
|
+
"uri": f"mock://{kwargs.get('filename')}.metadata",
|
|
186
|
+
"version": 1,
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
class MockInvocationContext:
|
|
190
|
+
def __init__(self):
|
|
191
|
+
self.app_name = "test_app"
|
|
192
|
+
self.user_id = "test_user"
|
|
193
|
+
self.session_id = "test_session_123"
|
|
194
|
+
self.artifact_service = MockArtifactService()
|
|
195
|
+
# Add other attributes if your tool or helpers expect them
|
|
196
|
+
|
|
197
|
+
class MockToolContext:
|
|
198
|
+
def __init__(self):
|
|
199
|
+
self._invocation_context = MockInvocationContext()
|
|
200
|
+
|
|
201
|
+
mock_context = MockToolContext()
|
|
202
|
+
|
|
203
|
+
text_result1 = await example_text_processor_tool(
|
|
204
|
+
"hello world",
|
|
205
|
+
uppercase=True,
|
|
206
|
+
tool_context=mock_context,
|
|
207
|
+
tool_config={"prefix": "TestPrefix: "},
|
|
208
|
+
)
|
|
209
|
+
print(f"Text tool result 1: {text_result1}")
|
|
210
|
+
|
|
211
|
+
text_result2 = await example_text_processor_tool(
|
|
212
|
+
"another test", tool_context=mock_context
|
|
213
|
+
)
|
|
214
|
+
print(f"Text tool result 2: {text_result2}")
|
|
215
|
+
|
|
216
|
+
print("\n--- Testing example_text_file_creator_tool ---")
|
|
217
|
+
file_result = await example_text_file_creator_tool(
|
|
218
|
+
"my_example_file.txt",
|
|
219
|
+
"This is the content of the example file created by the plugin template.",
|
|
220
|
+
tool_context=mock_context, # Using the mock context with a mock artifact service
|
|
221
|
+
)
|
|
222
|
+
print(f"File tool result: {file_result}")
|
|
223
|
+
|
|
224
|
+
asyncio.run(run_tests())
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
shared_config:
|
|
2
|
+
- broker_connection: &broker_connection
|
|
3
|
+
dev_mode: ${SOLACE_DEV_MODE, false}
|
|
4
|
+
broker_url: ${SOLACE_BROKER_URL, ws://localhost:8008}
|
|
5
|
+
broker_username: ${SOLACE_BROKER_USERNAME, default}
|
|
6
|
+
broker_password: ${SOLACE_BROKER_PASSWORD, default}
|
|
7
|
+
broker_vpn: ${SOLACE_BROKER_VPN, default}
|
|
8
|
+
temporary_queue: ${USE_TEMPORARY_QUEUES, true}
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
- models:
|
|
12
|
+
planning: &planning_model
|
|
13
|
+
# This dictionary structure tells ADK to use the LiteLlm wrapper.
|
|
14
|
+
# 'model' uses the specific model identifier your endpoint expects.
|
|
15
|
+
model: ${LLM_SERVICE_PLANNING_MODEL_NAME} # Use env var for model name
|
|
16
|
+
# 'api_base' tells LiteLLM where to send the request.
|
|
17
|
+
api_base: ${LLM_SERVICE_ENDPOINT} # Use env var for endpoint URL
|
|
18
|
+
# 'api_key' provides authentication.
|
|
19
|
+
api_key: ${LLM_SERVICE_API_KEY} # Use env var for API key
|
|
20
|
+
# Enable parallel tool calls for planning model
|
|
21
|
+
parallel_tool_calls: true
|
|
22
|
+
# Prompt Caching Strategy
|
|
23
|
+
cache_strategy: "5m" # none, 5m, 1h
|
|
24
|
+
|
|
25
|
+
# max_tokens: ${MAX_TOKENS, 16000} # Set a reasonable max token limit for planning
|
|
26
|
+
# temperature: 0.1 # Lower temperature for more deterministic planning
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
general: &general_model
|
|
30
|
+
# This dictionary structure tells ADK to use the LiteLlm wrapper.
|
|
31
|
+
# 'model' uses the specific model identifier your endpoint expects.
|
|
32
|
+
model: ${LLM_SERVICE_GENERAL_MODEL_NAME} # Use env var for model name
|
|
33
|
+
# 'api_base' tells LiteLLM where to send the request.
|
|
34
|
+
api_base: ${LLM_SERVICE_ENDPOINT} # Use env var for endpoint URL
|
|
35
|
+
# 'api_key' provides authentication.
|
|
36
|
+
api_key: ${LLM_SERVICE_API_KEY} # Use env var for API key
|
|
37
|
+
# Prompt Caching Strategy
|
|
38
|
+
cache_strategy: "5m" # none, 5m, 1h
|
|
39
|
+
|
|
40
|
+
image_gen: &image_generation_model
|
|
41
|
+
# This dictionary structure tells ADK to use the LiteLlm wrapper.
|
|
42
|
+
# 'model' uses the specific model identifier your endpoint expects.
|
|
43
|
+
model: ${IMAGE_MODEL_NAME} # Use env var for model name
|
|
44
|
+
# 'api_base' tells LiteLLM where to send the request.
|
|
45
|
+
api_base: ${IMAGE_SERVICE_ENDPOINT} # Use env var for endpoint URL
|
|
46
|
+
# 'api_key' provides authentication.
|
|
47
|
+
api_key: ${IMAGE_SERVICE_API_KEY} # Use env var for API key
|
|
48
|
+
|
|
49
|
+
report_gen: &report_generation_model
|
|
50
|
+
# This dictionary structure tells ADK to use the LiteLlm wrapper.
|
|
51
|
+
# 'model' uses the specific model identifier your endpoint expects.
|
|
52
|
+
model: ${LLM_REPORT_MODEL_NAME} # Use env var for model name
|
|
53
|
+
# 'api_base' tells LiteLLM where to send the request.
|
|
54
|
+
api_base: ${LLM_SERVICE_ENDPOINT} # Use env var for endpoint URL
|
|
55
|
+
# 'api_key' provides authentication.
|
|
56
|
+
api_key: ${LLM_SERVICE_API_KEY} # Use env var for API key
|
|
57
|
+
|
|
58
|
+
multimodal: &multimodal_model "gemini-2.5-flash-preview-04-17"
|
|
59
|
+
|
|
60
|
+
# OAuth 2.0 Client Credentials authentication example
|
|
61
|
+
oauth_planning: &oauth_planning_model
|
|
62
|
+
# This dictionary structure tells ADK to use the LiteLlm wrapper with OAuth authentication.
|
|
63
|
+
# 'model' uses the specific model identifier your endpoint expects.
|
|
64
|
+
model: ${LLM_SERVICE_OAUTH_PLANNING_MODEL_NAME} # Use env var for model name
|
|
65
|
+
# 'api_base' tells LiteLLM where to send the request.
|
|
66
|
+
api_base: ${LLM_SERVICE_OAUTH_ENDPOINT} # Use env var for endpoint URL
|
|
67
|
+
|
|
68
|
+
# OAuth 2.0 Client Credentials configuration
|
|
69
|
+
oauth_token_url: ${LLM_SERVICE_OAUTH_TOKEN_URL} # OAuth token endpoint URL
|
|
70
|
+
oauth_client_id: ${LLM_SERVICE_OAUTH_CLIENT_ID} # OAuth client identifier
|
|
71
|
+
oauth_client_secret: ${LLM_SERVICE_OAUTH_CLIENT_SECRET} # OAuth client secret
|
|
72
|
+
oauth_scope: ${LLM_SERVICE_OAUTH_SCOPE} # Optional: OAuth scope (space-separated)
|
|
73
|
+
# oauth_ca_cert: ${LLM_SERVICE_OAUTH_CA_CERT_PATH} # Optional: Custom CA certificate path
|
|
74
|
+
oauth_token_refresh_buffer_seconds: ${LLM_SERVICE_OAUTH_TOKEN_REFRESH_BUFFER_SECONDS, 300} # Refresh buffer
|
|
75
|
+
|
|
76
|
+
# Enable parallel tool calls for planning model
|
|
77
|
+
parallel_tool_calls: true
|
|
78
|
+
# max_tokens: ${MAX_TOKENS, 16000} # Set a reasonable max token limit for planning
|
|
79
|
+
# temperature: 0.1 # Lower temperature for more deterministic planning
|
|
80
|
+
|
|
81
|
+
oauth_general: &oauth_general_model
|
|
82
|
+
# This dictionary structure tells ADK to use the LiteLlm wrapper with OAuth authentication.
|
|
83
|
+
# 'model' uses the specific model identifier your endpoint expects.
|
|
84
|
+
model: ${LLM_SERVICE_OAUTH_GENERAL_MODEL_NAME} # Use env var for model name
|
|
85
|
+
# 'api_base' tells LiteLLM where to send the request.
|
|
86
|
+
api_base: ${LLM_SERVICE_OAUTH_ENDPOINT} # Use env var for endpoint URL
|
|
87
|
+
|
|
88
|
+
# OAuth 2.0 Client Credentials configuration
|
|
89
|
+
oauth_token_url: ${LLM_SERVICE_OAUTH_TOKEN_URL} # OAuth token endpoint URL
|
|
90
|
+
oauth_client_id: ${LLM_SERVICE_OAUTH_CLIENT_ID} # OAuth client identifier
|
|
91
|
+
oauth_client_secret: ${LLM_SERVICE_OAUTH_CLIENT_SECRET} # OAuth client secret
|
|
92
|
+
oauth_scope: ${LLM_SERVICE_OAUTH_SCOPE} # Optional: OAuth scope (space-separated)
|
|
93
|
+
# oauth_ca_cert: ${LLM_SERVICE_OAUTH_CA_CERT_PATH} # Optional: Custom CA certificate path
|
|
94
|
+
oauth_token_refresh_buffer_seconds: ${LLM_SERVICE_OAUTH_TOKEN_REFRESH_BUFFER_SECONDS, 300} # Refresh buffer
|
|
95
|
+
|
|
96
|
+
- services:
|
|
97
|
+
# Default session service configuration
|
|
98
|
+
session_service: &default_session_service
|
|
99
|
+
type: "memory"
|
|
100
|
+
default_behavior: "PERSISTENT"
|
|
101
|
+
|
|
102
|
+
# Default artifact service configuration
|
|
103
|
+
artifact_service: &default_artifact_service
|
|
104
|
+
type: "__DEFAULT_ARTIFACT_SERVICE_TYPE__"
|
|
105
|
+
# __DEFAULT_ARTIFACT_SERVICE_BASE_PATH_LINE__
|
|
106
|
+
artifact_scope: __DEFAULT_ARTIFACT_SERVICE_SCOPE__
|
|
107
|
+
|
|
108
|
+
# Default data tools configuration
|
|
109
|
+
data_tools_config: &default_data_tools_config
|
|
110
|
+
sqlite_memory_threshold_mb: 100
|
|
111
|
+
max_result_preview_rows: 50
|
|
112
|
+
max_result_preview_bytes: 4096
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
Here is the DEVELOPER GUIDE for the `templates` directory.
|
|
2
|
+
|
|
3
|
+
## Quick Summary
|
|
4
|
+
|
|
5
|
+
The `templates` directory contains boilerplate files for creating various components within the Solace Agent Mesh (SAM) ecosystem. These templates are used by the `sam` command-line interface (CLI) and developers to bootstrap new agents, gateways, and plugins. They provide a standardized starting point, ensuring new components adhere to the required structure and include necessary configurations.
|
|
6
|
+
|
|
7
|
+
## Files Overview
|
|
8
|
+
|
|
9
|
+
* `agent_template.yaml`: A template for a standard agent configuration file.
|
|
10
|
+
* `eval_backend_template.yaml`: Configuration template for the A2A Evaluation Backend service.
|
|
11
|
+
* `gateway_app_template.py`: Python template for a custom gateway's main `App` class, which handles configuration.
|
|
12
|
+
* `gateway_component_template.py`: Python template for a custom gateway's `Component` class, which implements the core logic.
|
|
13
|
+
* `gateway_config_template.yaml`: YAML configuration template for a custom gateway.
|
|
14
|
+
* `main_orchestrator.yaml`: Configuration template for the primary Orchestrator agent.
|
|
15
|
+
* `plugin_agent_config_template.yaml`: Template for an agent configuration generated from a plugin.
|
|
16
|
+
* `plugin_custom_config_template.yaml`: Template for a custom configuration file generated from a plugin.
|
|
17
|
+
* `plugin_custom_template.py`: Python template for a custom class within a plugin.
|
|
18
|
+
* `plugin_gateway_config_template.yaml`: Template for a gateway configuration generated from a plugin.
|
|
19
|
+
* `plugin_pyproject_template.toml`: Template for a plugin's `pyproject.toml` file, defining its packaging and dependencies.
|
|
20
|
+
* `plugin_readme_template.md`: Template for a plugin's `README.md` file.
|
|
21
|
+
* `plugin_tools_template.py`: Python template demonstrating how to create custom tools for a plugin.
|
|
22
|
+
* `shared_config.yaml`: A template for shared configuration settings (e.g., broker, models, services) used across multiple components.
|
|
23
|
+
* `webui.yaml`: Configuration template for the WebUI Gateway.
|
|
24
|
+
|
|
25
|
+
## Developer API Reference
|
|
26
|
+
|
|
27
|
+
### agent_template.yaml
|
|
28
|
+
|
|
29
|
+
**Purpose:** A generic template for creating a new agent configuration. It includes placeholders that are typically filled in by a developer or a script to define a new agent's behavior, model, tools, and communication settings.
|
|
30
|
+
|
|
31
|
+
**Key Placeholders:**
|
|
32
|
+
* `__AGENT_NAME__`: The unique name of the agent.
|
|
33
|
+
* `__NAMESPACE__`: The namespace the agent operates in.
|
|
34
|
+
* `__SUPPORTS_STREAMING__`: `true` or `false` to indicate if the agent supports streaming responses.
|
|
35
|
+
* `__MODEL_ALIAS__`: The alias of the language model to use (e.g., `*planning_model`).
|
|
36
|
+
* `__INSTRUCTION__`: The system prompt or instruction for the agent.
|
|
37
|
+
* `__TOOLS_CONFIG__`: A YAML list defining the tools available to the agent.
|
|
38
|
+
* `__SESSION_SERVICE__`, `__ARTIFACT_SERVICE__`: Configuration for session and artifact services.
|
|
39
|
+
* `__AGENT_CARD_...__`: Fields defining the agent's metadata for discovery.
|
|
40
|
+
* `__INTER_AGENT_COMMUNICATION_...__`: Rules for how this agent can communicate with other agents.
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
### eval_backend_template.yaml
|
|
44
|
+
|
|
45
|
+
**Purpose:** A configuration template for the evaluation backend, a specialized REST gateway used for testing and evaluation purposes. It defines the broker connection, API settings, and system prompts.
|
|
46
|
+
|
|
47
|
+
**Key Configuration:**
|
|
48
|
+
* `app_module`: Set to `solace_agent_mesh.gateway.rest.app` to use the standard REST gateway implementation.
|
|
49
|
+
* `namespace`: The operational namespace, often set via an environment variable `${NAMESPACE}`.
|
|
50
|
+
* `fastapi_host`, `fastapi_port`: The host and port for the backend's REST API.
|
|
51
|
+
* `cors_allowed_origins`: A list of origins allowed to make cross-origin requests to the API.
|
|
52
|
+
* `system_purpose`, `response_format`: Default prompts for the gateway.
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
### gateway_app_template.py
|
|
56
|
+
|
|
57
|
+
**Purpose:** This template defines the main application class for a custom gateway. Its primary role is to extend `BaseGatewayApp` and define the gateway-specific configuration schema.
|
|
58
|
+
|
|
59
|
+
**Import:** `from my_gateway.app import MyGatewayApp` (where `__GATEWAY_NAME_PASCAL_CASE__` is replaced, e.g., `MyGatewayApp`)
|
|
60
|
+
|
|
61
|
+
**Classes:**
|
|
62
|
+
- `__GATEWAY_NAME_PASCAL_CASE__GatewayApp(BaseGatewayApp)` - The main app class for the custom gateway.
|
|
63
|
+
- `SPECIFIC_APP_SCHEMA_PARAMS: List[Dict[str, Any]]` - A class attribute where you define the custom configuration parameters for your gateway. Each dictionary in the list defines a parameter's name, type, requirement, and description.
|
|
64
|
+
- `_get_gateway_component_class() -> Type[BaseGatewayComponent]` - An abstract method that must be implemented to return the type of your custom gateway component class.
|
|
65
|
+
|
|
66
|
+
**Usage Examples:**
|
|
67
|
+
```python
|
|
68
|
+
# In your gateway's app.py (e.g., src/my_slack_gateway/app.py)
|
|
69
|
+
|
|
70
|
+
from typing import Any, Dict, List, Type
|
|
71
|
+
|
|
72
|
+
from solace_agent_mesh.gateway.base.app import BaseGatewayApp
|
|
73
|
+
from solace_agent_mesh.gateway.base.component import BaseGatewayComponent
|
|
74
|
+
|
|
75
|
+
# Import your component class
|
|
76
|
+
from .component import MySlackGatewayComponent
|
|
77
|
+
|
|
78
|
+
class MySlackGatewayApp(BaseGatewayApp):
|
|
79
|
+
"""
|
|
80
|
+
App class for the My Slack Gateway.
|
|
81
|
+
"""
|
|
82
|
+
|
|
83
|
+
# Define custom configuration parameters that will be available
|
|
84
|
+
# in the gateway's YAML config file.
|
|
85
|
+
SPECIFIC_APP_SCHEMA_PARAMS: List[Dict[str, Any]] = [
|
|
86
|
+
{
|
|
87
|
+
"name": "slack_bot_token",
|
|
88
|
+
"required": True,
|
|
89
|
+
"type": "string",
|
|
90
|
+
"description": "The Slack Bot User OAuth Token (starts with xoxb-).",
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"name": "slack_app_token",
|
|
94
|
+
"required": True,
|
|
95
|
+
"type": "string",
|
|
96
|
+
"description": "The Slack App-Level Token for Socket Mode (starts with xapp-).",
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"name": "default_target_agent",
|
|
100
|
+
"required": False,
|
|
101
|
+
"type": "string",
|
|
102
|
+
"default": "OrchestratorAgent",
|
|
103
|
+
"description": "The default agent to send messages to.",
|
|
104
|
+
},
|
|
105
|
+
]
|
|
106
|
+
|
|
107
|
+
def _get_gateway_component_class(self) -> Type[BaseGatewayComponent]:
|
|
108
|
+
"""
|
|
109
|
+
Returns the specific gateway component class for this app.
|
|
110
|
+
"""
|
|
111
|
+
return MySlackGatewayComponent
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
### gateway_component_template.py
|
|
116
|
+
|
|
117
|
+
**Purpose:** This template implements the core logic of a custom gateway. It handles the lifecycle of the gateway, communication with the external system, and translation between the external system's data format and the A2A (Agent-to-Agent) protocol.
|
|
118
|
+
|
|
119
|
+
**Import:** `from my_gateway.component import MyGatewayComponent` (where `__GATEWAY_NAME_PASCAL_CASE__` is replaced)
|
|
120
|
+
|
|
121
|
+
**Classes:**
|
|
122
|
+
- `__GATEWAY_NAME_PASCAL_CASE__GatewayComponent(BaseGatewayComponent)` - The main component class implementing the gateway's logic.
|
|
123
|
+
- `_start_listener() -> None` - **GDK Hook:** Implement this to start listening for events from the external system (e.g., start a polling loop, connect a client). Called by the framework.
|
|
124
|
+
- `_stop_listener() -> None` - **GDK Hook:** Implement this to stop listening and clean up connections to the external system. Called by the framework.
|
|
125
|
+
- `_authenticate_external_user(external_event_data: Any) -> Optional[str]` - **GDK Hook:** Implement this to authenticate an incoming request from the external system. Return a unique user ID string on success, `None` on failure.
|
|
126
|
+
- `_translate_external_input(external_event_data: Any, authenticated_user_identity: str) -> Tuple[Optional[str], List[A2APart], Dict[str, Any]]` - **GDK Hook:** Implement this to convert an event from the external system into an A2A task. Returns the target agent name, a list of A2A parts (Text, File, etc.), and a context dictionary to be used for sending the response back.
|
|
127
|
+
- `_send_final_response_to_external(external_request_context: Dict[str, Any], task_data: Task) -> None` - **GDK Hook:** Implement this to send the final result of an A2A task back to the external system.
|
|
128
|
+
- `_send_error_to_external(external_request_context: Dict[str, Any], error_data: JSONRPCError) -> None` - **GDK Hook:** Implement this to send an error notification back to the external system.
|
|
129
|
+
- `_send_update_to_external(external_request_context: Dict[str, Any], event_data: Union[TaskStatusUpdateEvent, TaskArtifactUpdateEvent], is_final_chunk_of_update: bool) -> None` - **GDK Hook:** (Optional) Implement this to handle streaming intermediate updates (e.g., "Agent is thinking...") back to the external system.
|
|
130
|
+
- `cleanup() -> None` - **GDK Hook:** Perform any final cleanup before the component is destroyed. Always call `super().cleanup()`.
|
|
131
|
+
|
|
132
|
+
**Usage Examples:**
|
|
133
|
+
```python
|
|
134
|
+
# In your gateway's component.py (e.g., src/my_slack_gateway/component.py)
|
|
135
|
+
# This is a conceptual example of the implementation flow.
|
|
136
|
+
|
|
137
|
+
from typing import Any, Dict, List, Optional, Tuple
|
|
138
|
+
from solace_agent_mesh.gateway.base.component import BaseGatewayComponent
|
|
139
|
+
from solace_agent_mesh.common.types import Part as A2APart, TextPart, Task
|
|
140
|
+
|
|
141
|
+
class MySlackGatewayComponent(BaseGatewayComponent):
|
|
142
|
+
def __init__(self, **kwargs: Any):
|
|
143
|
+
super().__init__(**kwargs)
|
|
144
|
+
# Retrieve config defined in the App class
|
|
145
|
+
self.slack_token = self.get_config("slack_bot_token")
|
|
146
|
+
self.default_agent = self.get_config("default_target_agent")
|
|
147
|
+
# self.slack_client = SlackClient(token=self.slack_token)
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
log:
|
|
4
|
+
stdout_log_level: INFO
|
|
5
|
+
log_file_level: DEBUG
|
|
6
|
+
log_file: webui_app.log
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
!include ../shared_config.yaml
|
|
10
|
+
|
|
11
|
+
apps:
|
|
12
|
+
- name: a2a_webui_app
|
|
13
|
+
app_base_path: .
|
|
14
|
+
app_module: solace_agent_mesh.gateway.http_sse.app
|
|
15
|
+
|
|
16
|
+
broker:
|
|
17
|
+
<<: *broker_connection
|
|
18
|
+
|
|
19
|
+
app_config:
|
|
20
|
+
namespace: ${NAMESPACE}
|
|
21
|
+
session_secret_key: "${SESSION_SECRET_KEY}"
|
|
22
|
+
|
|
23
|
+
model: *general_model
|
|
24
|
+
artifact_service: *default_artifact_service
|
|
25
|
+
session_service: __SESSION_SERVICE__
|
|
26
|
+
gateway_id: ${WEBUI_GATEWAY_ID}
|
|
27
|
+
fastapi_host: ${FASTAPI_HOST}
|
|
28
|
+
fastapi_port: ${FASTAPI_PORT}
|
|
29
|
+
cors_allowed_origins:
|
|
30
|
+
- "http://localhost:3000"
|
|
31
|
+
- "http://127.0.0.1:3000"
|
|
32
|
+
|
|
33
|
+
enable_embed_resolution: ${ENABLE_EMBED_RESOLUTION} # Enable late-stage resolution
|
|
34
|
+
gateway_artifact_content_limit_bytes: ${GATEWAY_ARTIFACT_LIMIT_BYTES, 10000000} # Max size for late-stage embeds
|
|
35
|
+
sse_max_queue_size: ${SSE_MAX_QUEUE_SIZE, 200} # Max size of SSE connection queues
|
|
36
|
+
|
|
37
|
+
system_purpose: >
|
|
38
|
+
The system is an AI Chatbot with agentic capabilities.
|
|
39
|
+
It will use the agents available to provide information,
|
|
40
|
+
reasoning and general assistance for the users in this system.
|
|
41
|
+
**Always return useful artifacts and files that you create to the user.**
|
|
42
|
+
Provide a status update before each tool call.
|
|
43
|
+
Your external name is Agent Mesh.
|
|
44
|
+
|
|
45
|
+
response_format: >
|
|
46
|
+
Responses should be clear, concise, and professionally toned.
|
|
47
|
+
Format responses to the user in Markdown using appropriate formatting.
|
|
48
|
+
|
|
49
|
+
# --- Frontend Config Passthrough ---
|
|
50
|
+
frontend_welcome_message: __FRONTEND_WELCOME_MESSAGE__
|
|
51
|
+
frontend_bot_name: __FRONTEND_BOT_NAME__
|
|
52
|
+
frontend_collect_feedback: __FRONTEND_COLLECT_FEEDBACK__
|
|
53
|
+
frontend_logo_url: __FRONTEND_LOGO_URL__
|
|
54
|
+
|
|
55
|
+
# --- Frontend Feature Flags ---
|
|
56
|
+
# Uncomment to control speech features in the UI
|
|
57
|
+
frontend_feature_enablement:
|
|
58
|
+
# speechToText: true # Set to false to hide Speech-to-Text settings & microphone
|
|
59
|
+
# textToSpeech: true # Set to false to hide Text-to-Speech settings & speaker button
|
|
60
|
+
# projects: true
|
|
61
|
+
# promptLibrary: true
|
|
62
|
+
background_tasks: true # Enable background task execution
|
|
63
|
+
|
|
64
|
+
# --- Background Tasks Configuration ---
|
|
65
|
+
background_tasks:
|
|
66
|
+
default_timeout_ms: 3600000 # Default: 1 hour (3600000ms)
|
|
67
|
+
|
|
68
|
+
# --- Speech Configuration (STT/TTS) ---
|
|
69
|
+
speech:
|
|
70
|
+
# stt:
|
|
71
|
+
# provider: openai
|
|
72
|
+
# url: "https://api.openai.com/v1/audio/transcriptions"
|
|
73
|
+
# api_key: "${OPENAI_API_KEY}"
|
|
74
|
+
# model: "whisper-1"
|
|
75
|
+
stt:
|
|
76
|
+
provider: azure
|
|
77
|
+
azure:
|
|
78
|
+
api_key: "${AZURE_SPEECH_KEY}"
|
|
79
|
+
region: "${AZURE_SPEECH_REGION}"
|
|
80
|
+
language: en-US
|
|
81
|
+
|
|
82
|
+
# Text-to-Speech Configuration
|
|
83
|
+
tts:
|
|
84
|
+
provider: ${TTS_PROVIDER, gemini} # "gemini", "azure", or "polly" (can be overridden by UI)
|
|
85
|
+
|
|
86
|
+
# Azure Neural Voices Configuration
|
|
87
|
+
azure:
|
|
88
|
+
api_key: "${AZURE_SPEECH_KEY}"
|
|
89
|
+
region: "${AZURE_SPEECH_REGION}"
|
|
90
|
+
default_voice: "en-US-Andrew:DragonHDLatestNeural"
|
|
91
|
+
voices:
|
|
92
|
+
# DragonHD Latest Neural Voices (Highest Quality)
|
|
93
|
+
- "en-US-Ava:DragonHDLatestNeural"
|
|
94
|
+
- "en-US-Ava3:DragonHDLatestNeural"
|
|
95
|
+
- "en-US-Adam:DragonHDLatestNeural"
|
|
96
|
+
- "en-US-Alloy:DragonHDLatestNeural"
|
|
97
|
+
- "en-US-Andrew:DragonHDLatestNeural"
|
|
98
|
+
- "en-US-Andrew2:DragonHDLatestNeural"
|
|
99
|
+
- "en-US-Andrew3:DragonHDLatestNeural"
|
|
100
|
+
- "en-US-Aria:DragonHDLatestNeural"
|
|
101
|
+
- "en-US-Brian:DragonHDLatestNeural"
|
|
102
|
+
- "en-US-Davis:DragonHDLatestNeural"
|
|
103
|
+
- "en-US-Emma:DragonHDLatestNeural"
|
|
104
|
+
- "en-US-Emma2:DragonHDLatestNeural"
|
|
105
|
+
- "en-US-Jenny:DragonHDLatestNeural"
|
|
106
|
+
- "en-US-MultiTalker-Ava-Andrew:DragonHDLatestNeural"
|
|
107
|
+
- "en-US-Nova:DragonHDLatestNeural"
|
|
108
|
+
- "en-US-Phoebe:DragonHDLatestNeural"
|
|
109
|
+
- "en-US-Serena:DragonHDLatestNeural"
|
|
110
|
+
- "en-US-Steffan:DragonHDLatestNeural"
|
|
111
|
+
# Standard Neural Voices
|
|
112
|
+
- "en-US-JennyNeural"
|
|
113
|
+
- "en-US-GuyNeural"
|
|
114
|
+
- "en-US-AriaNeural"
|
|
115
|
+
- "en-US-DavisNeural"
|
|
116
|
+
- "en-US-JaneNeural"
|
|
117
|
+
- "en-US-JasonNeural"
|
|
118
|
+
- "en-US-NancyNeural"
|
|
119
|
+
- "en-US-TonyNeural"
|
|
120
|
+
- "en-GB-LibbyNeural"
|
|
121
|
+
- "en-GB-RyanNeural"
|
|
122
|
+
- "en-GB-SoniaNeural"
|
|
123
|
+
- "en-AU-NatashaNeural"
|
|
124
|
+
- "en-AU-WilliamNeural"
|
|
125
|
+
|
|
126
|
+
# Google Gemini Configuration
|
|
127
|
+
gemini:
|
|
128
|
+
api_key: "${GEMINI_API_KEY}"
|
|
129
|
+
model: "gemini-2.5-flash-preview-tts"
|
|
130
|
+
default_voice: "Kore"
|
|
131
|
+
language: "en-US"
|
|
132
|
+
voices:
|
|
133
|
+
- "Kore"
|
|
134
|
+
- "Puck"
|
|
135
|
+
- "Zephyr"
|
|
136
|
+
- "Charon"
|
|
137
|
+
- "Fenrir"
|
|
138
|
+
- "Leda"
|
|
139
|
+
- "Aoede"
|
|
140
|
+
- "Callirhoe"
|
|
141
|
+
- "Umbriel"
|
|
142
|
+
- "Enceladus"
|
|
143
|
+
- "Iapetus"
|
|
144
|
+
- "Erinome"
|
|
145
|
+
- "Algieba"
|
|
146
|
+
- "Despina"
|
|
147
|
+
- "Algenib"
|
|
148
|
+
- "Achernar"
|
|
149
|
+
- "Schedar"
|
|
150
|
+
- "Gacrux"
|
|
151
|
+
- "Pulcherrima"
|
|
152
|
+
- "Achird"
|
|
153
|
+
- "Zubenelgenubi"
|
|
154
|
+
- "Vindemiatrix"
|
|
155
|
+
- "Sadachbia"
|
|
156
|
+
- "Sadaltager"
|
|
157
|
+
- "Sulafat"
|
|
158
|
+
- "Autonoe"
|
|
159
|
+
- "Laomedeia"
|
|
160
|
+
- "Orus"
|
|
161
|
+
- "Rasalgethi"
|
|
162
|
+
- "Alnilam"
|
|
163
|
+
|
|
164
|
+
# Frontend Speech Tab Default Settings (optional)
|
|
165
|
+
speechTab:
|
|
166
|
+
advancedMode: false
|
|
167
|
+
speechToText:
|
|
168
|
+
speechToText: true
|
|
169
|
+
engineSTT: "external" # Use external for better quality
|
|
170
|
+
languageSTT: "en-US"
|
|
171
|
+
textToSpeech:
|
|
172
|
+
textToSpeech: true
|
|
173
|
+
engineTTS: "external" # Use external for better quality
|
|
174
|
+
voice: "Kore"
|
|
175
|
+
playbackRate: 1.0
|
|
176
|
+
cacheTTS: true
|
|
177
|
+
|