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,345 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Base App class for Gateway implementations in the Solace AI Connector.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
import logging
|
|
6
|
+
import uuid
|
|
7
|
+
from abc import abstractmethod
|
|
8
|
+
from typing import Any, Dict, List, Type
|
|
9
|
+
|
|
10
|
+
from solace_ai_connector.common.utils import deep_merge
|
|
11
|
+
from solace_ai_connector.flow.app import App
|
|
12
|
+
from solace_ai_connector.components.component_base import ComponentBase
|
|
13
|
+
|
|
14
|
+
from ...common.a2a import (
|
|
15
|
+
get_discovery_topic,
|
|
16
|
+
get_gateway_response_subscription_topic,
|
|
17
|
+
get_gateway_status_subscription_topic,
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
log = logging.getLogger(__name__)
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class BaseGatewayComponent(ComponentBase):
|
|
24
|
+
pass
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
BASE_GATEWAY_APP_SCHEMA: Dict[str, List[Dict[str, Any]]] = {
|
|
28
|
+
"config_parameters": [
|
|
29
|
+
{
|
|
30
|
+
"name": "namespace",
|
|
31
|
+
"required": True,
|
|
32
|
+
"type": "string",
|
|
33
|
+
"description": "Absolute topic prefix for A2A communication (e.g., 'myorg/dev').",
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"name": "gateway_id",
|
|
37
|
+
"required": False,
|
|
38
|
+
"type": "string",
|
|
39
|
+
"default": None,
|
|
40
|
+
"description": "Unique ID for this gateway instance. Auto-generated if omitted.",
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"name": "default_agent_name",
|
|
44
|
+
"required": False,
|
|
45
|
+
"type": "string",
|
|
46
|
+
"default": None,
|
|
47
|
+
"description": "Default agent to route messages to if not specified by the platform or user.",
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"name": "system_purpose",
|
|
51
|
+
"required": False,
|
|
52
|
+
"type": "string",
|
|
53
|
+
"default": "",
|
|
54
|
+
"description": "Detailed description of the system's overall purpose, to be optionally used by agents.",
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"name": "response_format",
|
|
58
|
+
"required": False,
|
|
59
|
+
"type": "string",
|
|
60
|
+
"default": "",
|
|
61
|
+
"description": "General guidelines on how agent responses should be structured, to be optionally used by agents.",
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"name": "artifact_service",
|
|
65
|
+
"required": True,
|
|
66
|
+
"type": "object",
|
|
67
|
+
"description": "Configuration for the SHARED ADK Artifact Service.",
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"name": "enable_embed_resolution",
|
|
71
|
+
"required": False,
|
|
72
|
+
"type": "boolean",
|
|
73
|
+
"default": True,
|
|
74
|
+
"description": "Enable late-stage 'artifact_content' embed resolution in the gateway.",
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"name": "gateway_max_artifact_resolve_size_bytes",
|
|
78
|
+
"required": False,
|
|
79
|
+
"type": "integer",
|
|
80
|
+
"default": 104857600, # 100MB
|
|
81
|
+
"description": "Maximum size of an individual artifact's raw content for 'artifact_content' embeds and max total accumulated size for a parent artifact after internal recursive resolution.",
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"name": "gateway_recursive_embed_depth",
|
|
85
|
+
"required": False,
|
|
86
|
+
"type": "integer",
|
|
87
|
+
"default": 12,
|
|
88
|
+
"description": "Maximum depth for recursively resolving 'artifact_content' embeds within files.",
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"name": "artifact_handling_mode",
|
|
92
|
+
"required": False,
|
|
93
|
+
"type": "string",
|
|
94
|
+
"default": "reference",
|
|
95
|
+
"description": (
|
|
96
|
+
"How the gateway handles file parts from clients. "
|
|
97
|
+
"'reference': Save inline file bytes to the artifact store and replace with a URI. "
|
|
98
|
+
"'embed': Resolve file URIs and embed content as bytes. "
|
|
99
|
+
"'passthrough': Send file parts to the agent as-is."
|
|
100
|
+
),
|
|
101
|
+
"enum": ["reference", "embed", "passthrough"],
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"name": "gateway_max_message_size_bytes",
|
|
105
|
+
"required": False,
|
|
106
|
+
"type": "integer",
|
|
107
|
+
"default": 10_000_000, # 10MB
|
|
108
|
+
"description": "Maximum allowed message size in bytes for messages published by the gateway.",
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"name": "gateway_max_upload_size_bytes",
|
|
112
|
+
"required": False,
|
|
113
|
+
"type": "integer",
|
|
114
|
+
"default": 52428800, # 50MB
|
|
115
|
+
"description": "Maximum file upload size in bytes. Validated before reading file content to prevent memory exhaustion.",
|
|
116
|
+
},
|
|
117
|
+
# --- Default User Identity Configuration ---
|
|
118
|
+
{
|
|
119
|
+
"name": "default_user_identity",
|
|
120
|
+
"required": False,
|
|
121
|
+
"type": "string",
|
|
122
|
+
"description": "Default user identity to use when no user authentication is provided. WARNING: Only use in development environments with trusted access!",
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
"name": "force_user_identity",
|
|
126
|
+
"required": False,
|
|
127
|
+
"type": "string",
|
|
128
|
+
"description": "Override any provided user identity with this value. WARNING: Development only! This completely replaces authentication.",
|
|
129
|
+
},
|
|
130
|
+
# --- Identity Service Configuration ---
|
|
131
|
+
{
|
|
132
|
+
"name": "identity_service",
|
|
133
|
+
"required": False,
|
|
134
|
+
"type": "object",
|
|
135
|
+
"default": None,
|
|
136
|
+
"description": "Configuration for the pluggable Identity Service provider.",
|
|
137
|
+
},
|
|
138
|
+
]
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
class BaseGatewayApp(App):
|
|
143
|
+
"""
|
|
144
|
+
Base class for Gateway applications.
|
|
145
|
+
|
|
146
|
+
Handles common configuration, Solace broker setup, and instantiation
|
|
147
|
+
of the gateway-specific component. It also automatically merges its
|
|
148
|
+
base schema with specific schema parameters defined by subclasses.
|
|
149
|
+
"""
|
|
150
|
+
|
|
151
|
+
app_schema: Dict[str, List[Dict[str, Any]]] = BASE_GATEWAY_APP_SCHEMA
|
|
152
|
+
SPECIFIC_APP_SCHEMA_PARAMS_ATTRIBUTE_NAME = "SPECIFIC_APP_SCHEMA_PARAMS"
|
|
153
|
+
|
|
154
|
+
def __init_subclass__(cls, **kwargs):
|
|
155
|
+
"""
|
|
156
|
+
Automatically merges the base gateway schema with specific schema
|
|
157
|
+
parameters defined in any subclass.
|
|
158
|
+
"""
|
|
159
|
+
super().__init_subclass__(**kwargs)
|
|
160
|
+
|
|
161
|
+
specific_params = getattr(
|
|
162
|
+
cls, cls.SPECIFIC_APP_SCHEMA_PARAMS_ATTRIBUTE_NAME, []
|
|
163
|
+
)
|
|
164
|
+
|
|
165
|
+
if not isinstance(specific_params, list):
|
|
166
|
+
log.warning(
|
|
167
|
+
"Class attribute '%s' in %s is not a list. Schema merging might be incorrect.",
|
|
168
|
+
cls.SPECIFIC_APP_SCHEMA_PARAMS_ATTRIBUTE_NAME,
|
|
169
|
+
cls.__name__,
|
|
170
|
+
)
|
|
171
|
+
specific_params = []
|
|
172
|
+
|
|
173
|
+
base_params = BaseGatewayApp.app_schema.get("config_parameters", [])
|
|
174
|
+
|
|
175
|
+
# Start with the child's parameters to give them precedence.
|
|
176
|
+
merged_config_parameters = list(specific_params)
|
|
177
|
+
specific_param_names = {p["name"] for p in specific_params}
|
|
178
|
+
|
|
179
|
+
# Add base parameters only if they are not already defined in the child.
|
|
180
|
+
for base_param in base_params:
|
|
181
|
+
if base_param["name"] not in specific_param_names:
|
|
182
|
+
merged_config_parameters.append(base_param)
|
|
183
|
+
|
|
184
|
+
cls.app_schema = {"config_parameters": merged_config_parameters}
|
|
185
|
+
log.debug(
|
|
186
|
+
"BaseGatewayApp.__init_subclass__ created merged app_schema for %s with %d params.",
|
|
187
|
+
cls.__name__,
|
|
188
|
+
len(merged_config_parameters),
|
|
189
|
+
)
|
|
190
|
+
|
|
191
|
+
def __init__(self, app_info: Dict[str, Any], **kwargs):
|
|
192
|
+
"""
|
|
193
|
+
Initializes the BaseGatewayApp.
|
|
194
|
+
|
|
195
|
+
Args:
|
|
196
|
+
app_info: Configuration dictionary for the app, typically from YAML.
|
|
197
|
+
**kwargs: Additional arguments for the parent App class.
|
|
198
|
+
"""
|
|
199
|
+
log.debug(
|
|
200
|
+
"Initializing BaseGatewayApp with app_info: %s",
|
|
201
|
+
app_info.get("name", "Unnamed App"),
|
|
202
|
+
)
|
|
203
|
+
|
|
204
|
+
code_config_app_block = getattr(self.__class__, "app_config", {}).get(
|
|
205
|
+
"app_config", {}
|
|
206
|
+
)
|
|
207
|
+
yaml_app_config_block = app_info.get("app_config", {})
|
|
208
|
+
resolved_app_config_block = deep_merge(
|
|
209
|
+
code_config_app_block, yaml_app_config_block
|
|
210
|
+
)
|
|
211
|
+
|
|
212
|
+
self.namespace: str = resolved_app_config_block.get("namespace")
|
|
213
|
+
if not self.namespace:
|
|
214
|
+
raise ValueError(
|
|
215
|
+
"Namespace is required in app_config for BaseGatewayApp or its derivatives."
|
|
216
|
+
)
|
|
217
|
+
|
|
218
|
+
self.gateway_id: str = resolved_app_config_block.get("gateway_id")
|
|
219
|
+
if not self.gateway_id:
|
|
220
|
+
self.gateway_id = f"gdk-gateway-{uuid.uuid4().hex[:8]}"
|
|
221
|
+
resolved_app_config_block["gateway_id"] = self.gateway_id
|
|
222
|
+
log.info("Generated unique gateway_id: %s", self.gateway_id)
|
|
223
|
+
|
|
224
|
+
self.artifact_service_config: Dict = resolved_app_config_block.get(
|
|
225
|
+
"artifact_service", {}
|
|
226
|
+
)
|
|
227
|
+
self.enable_embed_resolution: bool = resolved_app_config_block.get(
|
|
228
|
+
"enable_embed_resolution", True
|
|
229
|
+
)
|
|
230
|
+
|
|
231
|
+
new_size_limit_key = "gateway_max_artifact_resolve_size_bytes"
|
|
232
|
+
default_new_size_limit = 104857600
|
|
233
|
+
old_size_limit_key = "gateway_artifact_content_limit_bytes"
|
|
234
|
+
|
|
235
|
+
new_value = resolved_app_config_block.get(new_size_limit_key)
|
|
236
|
+
old_value = resolved_app_config_block.get(old_size_limit_key)
|
|
237
|
+
|
|
238
|
+
app_name_for_log = app_info.get("name", "BaseGatewayApp")
|
|
239
|
+
|
|
240
|
+
if new_value is not None:
|
|
241
|
+
self.gateway_max_artifact_resolve_size_bytes = new_value
|
|
242
|
+
if old_value is not None and new_value != old_value:
|
|
243
|
+
log.warning(
|
|
244
|
+
f"[{app_name_for_log}] Both '{new_size_limit_key}' (value: {new_value}) and deprecated '{old_size_limit_key}' (value: {old_value}) are present. "
|
|
245
|
+
f"Using value from '{new_size_limit_key}'."
|
|
246
|
+
)
|
|
247
|
+
elif old_value is not None:
|
|
248
|
+
self.gateway_max_artifact_resolve_size_bytes = old_value
|
|
249
|
+
log.warning(
|
|
250
|
+
f"[{app_name_for_log}] Configuration key '{old_size_limit_key}' (value: {old_value}) is deprecated. "
|
|
251
|
+
f"Please use '{new_size_limit_key}'. Using value from old key."
|
|
252
|
+
)
|
|
253
|
+
else:
|
|
254
|
+
self.gateway_max_artifact_resolve_size_bytes = default_new_size_limit
|
|
255
|
+
|
|
256
|
+
self.gateway_recursive_embed_depth: int = resolved_app_config_block.get(
|
|
257
|
+
"gateway_recursive_embed_depth", 12
|
|
258
|
+
)
|
|
259
|
+
self.artifact_handling_mode: str = resolved_app_config_block.get(
|
|
260
|
+
"artifact_handling_mode", "reference"
|
|
261
|
+
)
|
|
262
|
+
self.gateway_max_message_size_bytes: int = resolved_app_config_block.get(
|
|
263
|
+
"gateway_max_message_size_bytes", 10_000_000
|
|
264
|
+
)
|
|
265
|
+
self.gateway_max_upload_size_bytes: int = resolved_app_config_block.get(
|
|
266
|
+
"gateway_max_upload_size_bytes", 52428800
|
|
267
|
+
)
|
|
268
|
+
|
|
269
|
+
modified_app_info = app_info.copy()
|
|
270
|
+
modified_app_info["app_config"] = resolved_app_config_block
|
|
271
|
+
|
|
272
|
+
subscriptions = [
|
|
273
|
+
{"topic": get_discovery_topic(self.namespace)},
|
|
274
|
+
{
|
|
275
|
+
"topic": get_gateway_response_subscription_topic(
|
|
276
|
+
self.namespace, self.gateway_id
|
|
277
|
+
)
|
|
278
|
+
},
|
|
279
|
+
{
|
|
280
|
+
"topic": get_gateway_status_subscription_topic(
|
|
281
|
+
self.namespace, self.gateway_id
|
|
282
|
+
)
|
|
283
|
+
},
|
|
284
|
+
]
|
|
285
|
+
|
|
286
|
+
# Add trust card subscription if trust manager is enabled
|
|
287
|
+
trust_config = resolved_app_config_block.get("trust_manager")
|
|
288
|
+
if trust_config and trust_config.get("enabled", False):
|
|
289
|
+
from ...common.a2a.protocol import get_trust_card_subscription_topic
|
|
290
|
+
|
|
291
|
+
trust_card_topic = get_trust_card_subscription_topic(self.namespace)
|
|
292
|
+
subscriptions.append({"topic": trust_card_topic})
|
|
293
|
+
log.info(
|
|
294
|
+
"Trust Manager enabled for gateway '%s', added trust card subscription: %s",
|
|
295
|
+
self.gateway_id,
|
|
296
|
+
trust_card_topic,
|
|
297
|
+
)
|
|
298
|
+
|
|
299
|
+
log.info(
|
|
300
|
+
"Generated Solace subscriptions for gateway '%s': %s",
|
|
301
|
+
self.gateway_id,
|
|
302
|
+
subscriptions,
|
|
303
|
+
)
|
|
304
|
+
|
|
305
|
+
gateway_component_class = self._get_gateway_component_class()
|
|
306
|
+
if not gateway_component_class or not issubclass(
|
|
307
|
+
gateway_component_class, ComponentBase
|
|
308
|
+
):
|
|
309
|
+
raise TypeError(
|
|
310
|
+
f"_get_gateway_component_class in {self.__class__.__name__} must return a valid ComponentBase subclass."
|
|
311
|
+
)
|
|
312
|
+
|
|
313
|
+
component_definition = {
|
|
314
|
+
"name": f"{self.gateway_id}_component",
|
|
315
|
+
"component_class": gateway_component_class,
|
|
316
|
+
"component_config": {"app_config": resolved_app_config_block},
|
|
317
|
+
"subscriptions": subscriptions,
|
|
318
|
+
}
|
|
319
|
+
modified_app_info["components"] = [component_definition]
|
|
320
|
+
|
|
321
|
+
broker_config = modified_app_info.setdefault("broker", {})
|
|
322
|
+
broker_config["input_enabled"] = True
|
|
323
|
+
broker_config["output_enabled"] = True
|
|
324
|
+
broker_config["queue_name"] = (
|
|
325
|
+
f"{self.namespace.strip('/')}/q/gdk/gateway/{self.gateway_id}"
|
|
326
|
+
)
|
|
327
|
+
broker_config["temporary_queue"] = modified_app_info.get("broker", {}).get("temporary_queue", True)
|
|
328
|
+
log.debug(
|
|
329
|
+
"Injected broker settings for gateway '%s': %s",
|
|
330
|
+
self.gateway_id,
|
|
331
|
+
broker_config,
|
|
332
|
+
)
|
|
333
|
+
|
|
334
|
+
super().__init__(app_info=modified_app_info, **kwargs)
|
|
335
|
+
log.info("BaseGatewayApp '%s' initialized successfully.", self.name)
|
|
336
|
+
|
|
337
|
+
@abstractmethod
|
|
338
|
+
def _get_gateway_component_class(self) -> Type[BaseGatewayComponent]:
|
|
339
|
+
"""
|
|
340
|
+
Abstract method to be implemented by derived gateway applications.
|
|
341
|
+
|
|
342
|
+
Returns:
|
|
343
|
+
The specific gateway component class (e.g., WebUIBackendComponent).
|
|
344
|
+
"""
|
|
345
|
+
pass
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
# DEVELOPER GUIDE: base
|
|
2
|
+
|
|
3
|
+
## Quick Summary
|
|
4
|
+
The `base` directory provides foundational abstract classes for building Gateway implementations within the Solace AI Connector. It establishes a framework for handling common gateway tasks such as application configuration, Solace broker integration, A2A (Agent-to-Agent) message protocol handling, and managing the lifecycle of requests from external platforms. Developers should subclass `BaseGatewayApp` and `BaseGatewayComponent` to create new gateways.
|
|
5
|
+
|
|
6
|
+
## Files Overview
|
|
7
|
+
- `__init__.py` - Marks the directory as a Python package
|
|
8
|
+
- `app.py` - Contains the base application class that handles configuration, schema merging, and broker setup
|
|
9
|
+
- `component.py` - Contains the core logic class for processing A2A messages and integrating with external platforms
|
|
10
|
+
- `task_context.py` - Provides a thread-safe manager for mapping A2A task IDs to their original request context
|
|
11
|
+
|
|
12
|
+
## Developer API Reference
|
|
13
|
+
|
|
14
|
+
### __init__.py
|
|
15
|
+
**Purpose:** Initializes the `gateway.base` Python package
|
|
16
|
+
**Import:** `from solace_agent_mesh.gateway.base import ...`
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
### app.py
|
|
21
|
+
**Purpose:** Provides the base application class for gateway implementations with automated configuration schema merging, Solace broker setup, and component instantiation
|
|
22
|
+
**Import:** `from solace_agent_mesh.gateway.base.app import BaseGatewayApp, BaseGatewayComponent`
|
|
23
|
+
|
|
24
|
+
**Classes:**
|
|
25
|
+
- `BaseGatewayComponent(ComponentBase)` - Base marker class for gateway components
|
|
26
|
+
- `BaseGatewayApp(app_info: Dict[str, Any], **kwargs)` - Main application class to be subclassed for new gateways
|
|
27
|
+
- `_get_gateway_component_class(self) -> Type[BaseGatewayComponent]` - **[Abstract Method]** Must return the specific gateway component class
|
|
28
|
+
- `namespace: str` - Absolute topic prefix for A2A communication (e.g., 'myorg/dev')
|
|
29
|
+
- `gateway_id: str` - Unique ID for this gateway instance (auto-generated if not provided)
|
|
30
|
+
- `artifact_service_config: Dict` - Configuration for the shared ADK Artifact Service
|
|
31
|
+
- `enable_embed_resolution: bool` - Flag to enable/disable late-stage 'artifact_content' embed resolution
|
|
32
|
+
- `gateway_max_artifact_resolve_size_bytes: int` - Maximum size for resolving artifacts (default: 104857600)
|
|
33
|
+
- `gateway_recursive_embed_depth: int` - Maximum depth for recursive embed resolution (default: 12)
|
|
34
|
+
- `artifact_handling_mode: str` - How gateway handles file parts: "reference", "embed", or "passthrough"
|
|
35
|
+
- `gateway_max_message_size_bytes: int` - Maximum message size in bytes (default: 10MB)
|
|
36
|
+
|
|
37
|
+
**Constants/Variables:**
|
|
38
|
+
- `BASE_GATEWAY_APP_SCHEMA: Dict[str, List[Dict[str, Any]]]` - Base configuration schema automatically merged with subclass parameters
|
|
39
|
+
- `SPECIFIC_APP_SCHEMA_PARAMS_ATTRIBUTE_NAME: str` - Class attribute name ("SPECIFIC_APP_SCHEMA_PARAMS") for subclass-specific config parameters
|
|
40
|
+
|
|
41
|
+
**Usage Examples:**
|
|
42
|
+
```python
|
|
43
|
+
from typing import Type, List, Dict, Any
|
|
44
|
+
from solace_agent_mesh.gateway.base.app import BaseGatewayApp, BaseGatewayComponent
|
|
45
|
+
|
|
46
|
+
class MyGatewayComponent(BaseGatewayComponent):
|
|
47
|
+
# Implementation details...
|
|
48
|
+
pass
|
|
49
|
+
|
|
50
|
+
class MyGatewayApp(BaseGatewayApp):
|
|
51
|
+
"""Custom gateway application for My Platform."""
|
|
52
|
+
|
|
53
|
+
# Define additional configuration parameters
|
|
54
|
+
SPECIFIC_APP_SCHEMA_PARAMS: List[Dict[str, Any]] = [
|
|
55
|
+
{
|
|
56
|
+
"name": "my_platform_api_key",
|
|
57
|
+
"required": True,
|
|
58
|
+
"type": "string",
|
|
59
|
+
"description": "API key for connecting to My Platform."
|
|
60
|
+
}
|
|
61
|
+
]
|
|
62
|
+
|
|
63
|
+
def _get_gateway_component_class(self) -> Type[BaseGatewayComponent]:
|
|
64
|
+
return MyGatewayComponent
|
|
65
|
+
|
|
66
|
+
# Usage in YAML config:
|
|
67
|
+
# app_config:
|
|
68
|
+
# namespace: "myorg/prod"
|
|
69
|
+
# gateway_id: "my-gateway-instance-01"
|
|
70
|
+
# artifact_service:
|
|
71
|
+
# type: "local_file"
|
|
72
|
+
# base_path: "/data/artifacts"
|
|
73
|
+
# my_platform_api_key: "secret-key-here"
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
### component.py
|
|
79
|
+
**Purpose:** Provides the abstract base class for gateway components containing core A2A protocol logic, service management, and external platform integration interface
|
|
80
|
+
**Import:** `from solace_agent_mesh.gateway.base.component import BaseGatewayComponent`
|
|
81
|
+
|
|
82
|
+
**Classes:**
|
|
83
|
+
- `BaseGatewayComponent(resolve_artifact_uris_in_gateway: bool = True, **kwargs: Any)` - Abstract base class for gateway components
|
|
84
|
+
- **Public Methods:**
|
|
85
|
+
- `get_config(self, key: str, default: Any = None) -> Any` - Retrieves configuration from nested app_config or component_config
|
|
86
|
+
- `authenticate_and_enrich_user(self, external_event_data: Any) -> Optional[Dict[str, Any]]` - Orchestrates user authentication and identity enrichment
|
|
87
|
+
- `submit_a2a_task(self, target_agent_name: str, a2a_parts: List[ContentPart], external_request_context: Dict[str, Any], user_identity: Any, is_streaming: bool = True, api_version: str = "v2") -> str` - Submits task to target agent, returns task_id
|
|
88
|
+
- **Abstract Methods (Must be Implemented):**
|
|
89
|
+
- `_extract_initial_claims(self, external_event_data: Any) -> Optional[Dict[str, Any]]` - Extract identity claims from platform event (must return dict with 'id' key)
|
|
90
|
+
- `_start_listener(self) -> None` - Start external platform listener (e.g., web server, WebSocket)
|
|
91
|
+
- `_stop_listener(self) -> None` - Stop external platform listener
|
|
92
|
+
- `_translate_external_input(self, external_event: Any) -> Tuple[str, List[ContentPart], Dict[str, Any]]` - Convert external event to A2A format: (target_agent_name, a2a_parts, context)
|
|
93
|
+
- `_send_update_to_external(self, external_request_context: Dict[str, Any], event_data: Union[TaskStatusUpdateEvent, TaskArtifactUpdateEvent], is_final_chunk_of_update: bool) -> None` - Send streaming update to external platform
|
|
94
|
+
- `_send_final_response_to_external(self, external_request_context: Dict[str, Any], task_data: Task) -> None` - Send final response to external platform
|
|
95
|
+
- `_send_error_to_external(self, external_request_context: Dict[str, Any], error_data: JSONRPCError) -> None` - Send error to external platform
|
|
96
|
+
- **Properties:**
|
|
97
|
+
- `namespace: str` - A2A communication namespace
|
|
98
|
+
- `gateway_id: str` - Unique gateway instance ID
|
|
99
|
+
- `agent_registry: AgentRegistry` - Registry for discovered agents
|
|
100
|
+
- `core_a2a_service: CoreA2AService` - Core A2A protocol service
|
|
101
|
+
- `shared_artifact_service: Optional[BaseArtifactService]` - Artifact service instance
|
|
102
|
+
- `task_context_manager: TaskContextManager` - Thread-safe task context storage
|
|
103
|
+
- `identity_service: Optional[BaseIdentityService]` - Identity enrichment service
|
|
104
|
+
|
|
105
|
+
**Usage Examples:**
|
|
106
|
+
```python
|
|
107
|
+
from typing import Any, Dict, List, Optional, Tuple, Union
|
|
108
|
+
from solace_agent_mesh.gateway.base.component import BaseGatewayComponent
|
|
109
|
+
from solace_agent_mesh.common.a2a.types import ContentPart
|
|
110
|
+
from a2a.types import TextPart, Task, TaskStatusUpdateEvent, TaskArtifactUpdateEvent, JSONRPCError
|
|
111
|
+
|
|
112
|
+
class MyGatewayComponent(BaseGatewayComponent):
|
|
113
|
+
|
|
114
|
+
async def _extract_initial_claims(self, external_event_data: Any) -> Optional[Dict[str, Any]]:
|
|
115
|
+
"""Extract user identity from platform-specific event."""
|
|
116
|
+
# Example for HTTP request
|
|
117
|
+
if hasattr(external_event_data, 'headers'):
|
|
118
|
+
user_id = external_event_data.headers.get('X-User-ID')
|
|
119
|
+
if user_id:
|
|
120
|
+
return {"id": user_id, "source": "http_header"}
|
|
121
|
+
return None
|
|
122
|
+
|
|
123
|
+
def _start_listener(self) -> None:
|
|
124
|
+
"""Start your platform listener (web server, etc.)."""
|
|
125
|
+
# Example: Start FastAPI server, WebSocket connection, etc.
|
|
126
|
+
pass
|
|
127
|
+
|
|
128
|
+
def _stop_listener(self) -> None:
|
|
129
|
+
"""Stop your platform listener."""
|
|
130
|
+
pass
|
|
131
|
+
|
|
132
|
+
async def _translate_external_input(self, external_event: Any) -> Tuple[str, List[ContentPart], Dict[str, Any]]:
|
|
133
|
+
"""Convert external event to A2A format."""
|
|
134
|
+
# Example translation
|
|
135
|
+
target_agent = "my-agent"
|
|
136
|
+
message_text = getattr(external_event, 'message', 'Hello')
|
|
137
|
+
a2a_parts = [TextPart(text=message_text)]
|
|
138
|
+
context = {
|
|
139
|
+
"platform": "my_platform",
|
|
140
|
+
"user_id_for_artifacts": "user123",
|
|
141
|
+
"a2a_session_id": "session456"
|
|
142
|
+
}
|
|
143
|
+
return target_agent, a2a_parts, context
|
|
144
|
+
|
|
145
|
+
async def _send_update_to_external(self, external_request_context: Dict[str, Any],
|
|
146
|
+
event_data: Union[TaskStatusUpdateEvent, TaskArtifactUpdateEvent],
|
|
147
|
+
is_final_chunk_of_update: bool) -> None:
|
|
148
|
+
"""Send streaming update back to external platform."""
|
|
149
|
+
# Extract text from event and send to your platform
|
|
150
|
+
pass
|
|
151
|
+
|
|
152
|
+
async def _send_final_response_to_external(self, external_request_context: Dict[str, Any],
|
|
153
|
+
task_data: Task) -> None:
|
|
154
|
+
"""Send final response back to external platform."""
|
|
155
|
+
# Extract final result and send to your platform
|
|
156
|
+
pass
|
|
157
|
+
|
|
158
|
+
async def _send_error_to_external(self, external_request_context: Dict[str, Any],
|
|
159
|
+
error_data: JSONRPCError) -> None:
|
|
160
|
+
"""Send error back to external platform."""
|
|
161
|
+
# Send error message to your platform
|
|
162
|
+
pass
|
|
163
|
+
|
|
164
|
+
# Usage in your handler:
|
|
165
|
+
async def handle_external_request(request):
|
|
166
|
+
# Authenticate user
|
|
167
|
+
user_identity = await component.authenticate_and_enrich_user(request)
|
|
168
|
+
if not user_identity:
|
|
169
|
+
return "Authentication failed"
|
|
170
|
+
|
|
171
|
+
# Translate request
|
|
172
|
+
target_agent, a2a_parts, context = await component._translate_external_input(request)
|
|
173
|
+
|
|
174
|
+
# Submit to A2A system
|
|
175
|
+
task_id = await component.submit_a2a_task(
|
|
176
|
+
target_agent_name=target_agent,
|
|
177
|
+
a2a_parts=a2a_parts,
|
|
178
|
+
external_request_context=context,
|
|
179
|
+
user_identity=user_identity,
|
|
180
|
+
is_streaming=True
|
|
181
|
+
)
|
|
182
|
+
|
|
183
|
+
return f"Task submitted: {task_id}"
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
### task_context.py
|
|
189
|
+
**Purpose:** Provides thread-safe storage for mapping A2A task IDs to their original external request context
|
|
190
|
+
**Import:** `from solace_agent_mesh.gateway.base.task_context import TaskContextManager`
|
|
191
|
+
|
|
192
|
+
**Classes:**
|
|
193
|
+
- `TaskContextManager()` - Thread-safe context storage manager
|
|
194
|
+
- `store_context(self, task_id: str, context_data: Dict[str, Any]) -> None` - Store context for a task ID
|
|
195
|
+
- `get_context(self, task_id: str) -> Optional[Dict[str, Any]]` - Retrieve context for a task ID
|
|
196
|
+
- `remove_context(self, task_id: str) -> Optional[Dict[str, Any]]` - Remove and return context for a task ID
|
|
197
|
+
- `clear_all_contexts_for_testing(self) -> None` - Clear all contexts (testing only)
|
|
198
|
+
|
|
199
|
+
**Usage Examples:**
|
|
200
|
+
```python
|
|
201
|
+
from solace_agent_mesh.gateway.base.task_context import TaskContextManager
|
|
202
|
+
|
|
203
|
+
# Initialize manager
|
|
204
|
+
context_manager = TaskContextManager()
|
|
205
|
+
|
|
206
|
+
# Store context when submitting task
|
|
207
|
+
task_id = "gdk-task-abc123"
|
|
208
|
+
context = {
|
|
209
|
+
"platform": "slack",
|
|
210
|
+
"channel_id": "C1234567890",
|
|
211
|
+
"thread_ts": "1234567890.123456",
|
|
212
|
+
"user_identity": {"id": "user123", "name": "John Doe"}
|
|
213
|
+
}
|
|
214
|
+
context_manager.store_context(task_id, context)
|
|
215
|
+
|
|
216
|
+
# Retrieve context when processing response
|
|
217
|
+
retrieved_context = context_manager.get_context(task_id)
|
|
218
|
+
if retrieved_context:
|
|
219
|
+
channel_id = retrieved_context["channel_id"]
|
|
220
|
+
# Send response back to Slack channel
|
|
221
|
+
|
|
222
|
+
# Clean up when task is complete
|
|
223
|
+
context_manager.remove_context(task_id)
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
# content_hash: 74574cc0c8234142d9ecddd116cc306b5420f938289ab4eab77feaa225adae7a
|