solace-agent-mesh 0.2.3__py3-none-any.whl → 1.0.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of solace-agent-mesh might be problematic. Click here for more details.
- solace_agent_mesh/agent/adk/adk_llm.txt +93 -0
- solace_agent_mesh/agent/adk/app_llm_agent.py +26 -0
- solace_agent_mesh/agent/adk/callbacks.py +1694 -0
- solace_agent_mesh/agent/adk/filesystem_artifact_service.py +381 -0
- solace_agent_mesh/agent/adk/invocation_monitor.py +295 -0
- solace_agent_mesh/agent/adk/models/lite_llm.py +872 -0
- solace_agent_mesh/agent/adk/models/models_llm.txt +94 -0
- solace_agent_mesh/agent/adk/runner.py +353 -0
- solace_agent_mesh/agent/adk/services.py +240 -0
- solace_agent_mesh/agent/adk/setup.py +751 -0
- solace_agent_mesh/agent/adk/stream_parser.py +214 -0
- solace_agent_mesh/agent/adk/tool_wrapper.py +139 -0
- solace_agent_mesh/agent/agent_llm.txt +41 -0
- solace_agent_mesh/agent/protocol/event_handlers.py +1469 -0
- solace_agent_mesh/agent/protocol/protocol_llm.txt +21 -0
- solace_agent_mesh/agent/sac/app.py +640 -0
- solace_agent_mesh/agent/sac/component.py +3388 -0
- solace_agent_mesh/agent/sac/patch_adk.py +111 -0
- solace_agent_mesh/agent/sac/sac_llm.txt +105 -0
- solace_agent_mesh/agent/sac/task_execution_context.py +176 -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 +90 -0
- solace_agent_mesh/agent/tools/__init__.py +14 -0
- solace_agent_mesh/agent/tools/audio_tools.py +1622 -0
- solace_agent_mesh/agent/tools/builtin_artifact_tools.py +1954 -0
- solace_agent_mesh/agent/tools/builtin_data_analysis_tools.py +238 -0
- solace_agent_mesh/agent/tools/general_agent_tools.py +569 -0
- solace_agent_mesh/agent/tools/image_tools.py +1184 -0
- solace_agent_mesh/agent/tools/peer_agent_tool.py +289 -0
- solace_agent_mesh/agent/tools/registry.py +36 -0
- solace_agent_mesh/agent/tools/test_tools.py +135 -0
- solace_agent_mesh/agent/tools/tool_definition.py +45 -0
- solace_agent_mesh/agent/tools/tools_llm.txt +104 -0
- solace_agent_mesh/agent/tools/web_tools.py +381 -0
- solace_agent_mesh/agent/utils/artifact_helpers.py +927 -0
- solace_agent_mesh/agent/utils/config_parser.py +47 -0
- solace_agent_mesh/agent/utils/context_helpers.py +60 -0
- solace_agent_mesh/agent/utils/utils_llm.txt +153 -0
- solace_agent_mesh/assets/docs/404.html +16 -0
- solace_agent_mesh/assets/docs/assets/css/styles.906a1503.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/sac-flows-80d5b603c6aafd33e87945680ce0abf3.png +0 -0
- solace_agent_mesh/assets/docs/assets/images/sac_parts_of_a_component-cb3d0424b1d0c17734c5435cca6b4082.png +0 -0
- solace_agent_mesh/assets/docs/assets/js/04989206.674a8007.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/0e682baa.79f0ab22.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/1001.0182a8bd.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/1023fc19.015679ca.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/1523c6b4.91c7bc01.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/166ab619.7d97ccaf.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/17896441.a5e82f9b.js +2 -0
- solace_agent_mesh/assets/docs/assets/js/17896441.a5e82f9b.js.LICENSE.txt +7 -0
- solace_agent_mesh/assets/docs/assets/js/1c6e87d2.23bccffb.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/2130.ab9fd314.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/21ceee5f.614fa8dd.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/2237.5e477fc6.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/2334.622a6395.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/2a9cab12.8909df92.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/3219.adc1d663.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/332e10b5.7a103f42.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/3624.b524e433.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/3d406171.f722eaf5.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/4250.95455b28.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/42b3f8d8.36090198.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/4356.d169ab5b.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/442a8107.5ba94b65.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/4c2787c2.66ee00e9.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/5388.7a136447.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/55f47984.c484bf96.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/5b4258a4.bda20761.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/5e95c892.558d5167.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6143.0a1464c9.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6395.e9c73649.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/7040.cb436723.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/7195.412f418a.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/7280.3fb73bdb.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/768e31b0.a12673db.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/8356.8a379c04.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/85387663.6bf41934.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.d7c16be6.js +2 -0
- solace_agent_mesh/assets/docs/assets/js/8591.d7c16be6.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.49e930c2.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/8908.f9d1b506.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/9157.b4093d07.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/9278.a4fd875d.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/945fb41e.74d728aa.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/9eff14a2.1bf8f61c.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/a3a92b25.26ca071f.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/a7bd4aaa.2204d2f7.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/a94703ab.0438dbc2.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/aba21aa0.c42a534c.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/aba87c2f.d3e2dcc3.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/ae4415af.8e279b5d.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/b7006a3a.40b10c9d.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/bac0be12.f50d9bac.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/bb2ef573.207e6990.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/c2c06897.63b76e9e.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/cc969b05.954186d4.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/cd3d4052.ca6eed8c.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/ced92a13.fb92e7ca.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/cee5d587.f5b73ca1.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/f284c35a.ecc3d195.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/f897a61a.2c2e152c.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/fbfa3e75.aca209c9.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/main.7ed3319f.js +2 -0
- solace_agent_mesh/assets/docs/assets/js/main.7ed3319f.js.LICENSE.txt +81 -0
- solace_agent_mesh/assets/docs/assets/js/runtime~main.d9520ae2.js +1 -0
- solace_agent_mesh/assets/docs/docs/documentation/concepts/agents/index.html +128 -0
- solace_agent_mesh/assets/docs/docs/documentation/concepts/architecture/index.html +91 -0
- solace_agent_mesh/assets/docs/docs/documentation/concepts/cli/index.html +201 -0
- solace_agent_mesh/assets/docs/docs/documentation/concepts/gateways/index.html +91 -0
- solace_agent_mesh/assets/docs/docs/documentation/concepts/orchestrator/index.html +55 -0
- solace_agent_mesh/assets/docs/docs/documentation/concepts/plugins/index.html +82 -0
- solace_agent_mesh/assets/docs/docs/documentation/deployment/debugging/index.html +60 -0
- solace_agent_mesh/assets/docs/docs/documentation/deployment/deploy/index.html +48 -0
- solace_agent_mesh/assets/docs/docs/documentation/deployment/observability/index.html +54 -0
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/index.html +17 -0
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/component-overview/index.html +45 -0
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/installation/index.html +76 -0
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/introduction/index.html +150 -0
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/quick-start/index.html +54 -0
- solace_agent_mesh/assets/docs/docs/documentation/tutorials/bedrock-agents/index.html +267 -0
- solace_agent_mesh/assets/docs/docs/documentation/tutorials/custom-agent/index.html +136 -0
- solace_agent_mesh/assets/docs/docs/documentation/tutorials/event-mesh-gateway/index.html +116 -0
- solace_agent_mesh/assets/docs/docs/documentation/tutorials/mcp-integration/index.html +80 -0
- solace_agent_mesh/assets/docs/docs/documentation/tutorials/mongodb-integration/index.html +164 -0
- solace_agent_mesh/assets/docs/docs/documentation/tutorials/rest-gateway/index.html +57 -0
- solace_agent_mesh/assets/docs/docs/documentation/tutorials/slack-integration/index.html +72 -0
- solace_agent_mesh/assets/docs/docs/documentation/tutorials/sql-database/index.html +102 -0
- solace_agent_mesh/assets/docs/docs/documentation/user-guide/builtin-tools/artifact-management/index.html +99 -0
- solace_agent_mesh/assets/docs/docs/documentation/user-guide/builtin-tools/audio-tools/index.html +90 -0
- solace_agent_mesh/assets/docs/docs/documentation/user-guide/builtin-tools/data-analysis-tools/index.html +107 -0
- solace_agent_mesh/assets/docs/docs/documentation/user-guide/builtin-tools/embeds/index.html +152 -0
- solace_agent_mesh/assets/docs/docs/documentation/user-guide/builtin-tools/index.html +103 -0
- solace_agent_mesh/assets/docs/docs/documentation/user-guide/create-agents/index.html +170 -0
- solace_agent_mesh/assets/docs/docs/documentation/user-guide/create-gateways/index.html +200 -0
- solace_agent_mesh/assets/docs/docs/documentation/user-guide/creating-service-providers/index.html +54 -0
- solace_agent_mesh/assets/docs/docs/documentation/user-guide/solace-ai-connector/index.html +69 -0
- solace_agent_mesh/assets/docs/docs/documentation/user-guide/structure/index.html +59 -0
- solace_agent_mesh/assets/docs/img/Solace_AI_Framework_README.png +0 -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/solace-logo.png +0 -0
- solace_agent_mesh/assets/docs/lunr-index-1753813536522.json +1 -0
- solace_agent_mesh/assets/docs/lunr-index.json +1 -0
- solace_agent_mesh/assets/docs/search-doc-1753813536522.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 -1
- 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 +659 -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 +93 -0
- solace_agent_mesh/cli/commands/add_cmd/web_add_gateway_step.py +118 -0
- solace_agent_mesh/cli/commands/docs_cmd.py +57 -0
- solace_agent_mesh/cli/commands/eval_cmd.py +64 -0
- solace_agent_mesh/cli/commands/init_cmd/__init__.py +404 -0
- solace_agent_mesh/cli/commands/init_cmd/broker_step.py +201 -0
- solace_agent_mesh/cli/commands/init_cmd/directory_step.py +28 -0
- solace_agent_mesh/cli/commands/init_cmd/env_step.py +197 -0
- solace_agent_mesh/cli/commands/init_cmd/init_cmd_llm.txt +365 -0
- solace_agent_mesh/cli/commands/init_cmd/orchestrator_step.py +387 -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 +110 -0
- solace_agent_mesh/cli/commands/init_cmd/webui_gateway_step.py +183 -0
- solace_agent_mesh/cli/commands/plugin_cmd/__init__.py +18 -0
- solace_agent_mesh/cli/commands/plugin_cmd/add_cmd.py +372 -0
- solace_agent_mesh/cli/commands/plugin_cmd/build_cmd.py +86 -0
- solace_agent_mesh/cli/commands/plugin_cmd/catalog_cmd.py +138 -0
- solace_agent_mesh/cli/commands/plugin_cmd/create_cmd.py +309 -0
- solace_agent_mesh/cli/commands/plugin_cmd/official_registry.py +174 -0
- solace_agent_mesh/cli/commands/plugin_cmd/plugin_cmd_llm.txt +305 -0
- solace_agent_mesh/cli/commands/run_cmd.py +158 -0
- solace_agent_mesh/cli/main.py +17 -294
- solace_agent_mesh/cli/utils.py +135 -204
- solace_agent_mesh/client/webui/frontend/static/assets/authCallback-DvlO62me.js +1 -0
- solace_agent_mesh/client/webui/frontend/static/assets/client-bp6u3qVZ.js +49 -0
- solace_agent_mesh/client/webui/frontend/static/assets/favicon-BLgzUch9.ico +0 -0
- solace_agent_mesh/client/webui/frontend/static/assets/main-An0a5j5k.js +663 -0
- solace_agent_mesh/client/webui/frontend/static/assets/main-Bu5-4Bac.css +1 -0
- solace_agent_mesh/client/webui/frontend/static/auth-callback.html +14 -0
- solace_agent_mesh/client/webui/frontend/static/index.html +15 -0
- solace_agent_mesh/common/__init__.py +1 -0
- solace_agent_mesh/common/a2a_protocol.py +564 -0
- solace_agent_mesh/common/agent_registry.py +42 -0
- solace_agent_mesh/common/client/__init__.py +4 -0
- solace_agent_mesh/common/client/card_resolver.py +21 -0
- solace_agent_mesh/common/client/client.py +85 -0
- solace_agent_mesh/common/client/client_llm.txt +133 -0
- solace_agent_mesh/common/common_llm.txt +144 -0
- solace_agent_mesh/common/constants.py +1 -14
- solace_agent_mesh/common/middleware/__init__.py +12 -0
- solace_agent_mesh/common/middleware/config_resolver.py +130 -0
- solace_agent_mesh/common/middleware/middleware_llm.txt +174 -0
- solace_agent_mesh/common/middleware/registry.py +125 -0
- solace_agent_mesh/common/server/__init__.py +4 -0
- solace_agent_mesh/common/server/server.py +122 -0
- solace_agent_mesh/common/server/server_llm.txt +169 -0
- solace_agent_mesh/common/server/task_manager.py +291 -0
- solace_agent_mesh/common/server/utils.py +28 -0
- solace_agent_mesh/common/services/__init__.py +4 -0
- solace_agent_mesh/common/services/employee_service.py +162 -0
- solace_agent_mesh/common/services/identity_service.py +129 -0
- solace_agent_mesh/common/services/providers/__init__.py +4 -0
- solace_agent_mesh/common/services/providers/local_file_identity_service.py +148 -0
- solace_agent_mesh/common/services/providers/providers_llm.txt +113 -0
- solace_agent_mesh/common/services/services_llm.txt +132 -0
- solace_agent_mesh/common/types.py +411 -0
- solace_agent_mesh/common/utils/__init__.py +7 -0
- solace_agent_mesh/common/utils/asyncio_macos_fix.py +86 -0
- solace_agent_mesh/common/utils/embeds/__init__.py +33 -0
- solace_agent_mesh/common/utils/embeds/constants.py +55 -0
- solace_agent_mesh/common/utils/embeds/converter.py +452 -0
- solace_agent_mesh/common/utils/embeds/embeds_llm.txt +124 -0
- solace_agent_mesh/common/utils/embeds/evaluators.py +394 -0
- solace_agent_mesh/common/utils/embeds/modifiers.py +816 -0
- solace_agent_mesh/common/utils/embeds/resolver.py +865 -0
- solace_agent_mesh/common/utils/embeds/types.py +14 -0
- solace_agent_mesh/common/utils/in_memory_cache.py +108 -0
- solace_agent_mesh/common/utils/log_formatters.py +44 -0
- solace_agent_mesh/common/utils/mime_helpers.py +106 -0
- solace_agent_mesh/common/utils/push_notification_auth.py +134 -0
- solace_agent_mesh/common/utils/utils_llm.txt +67 -0
- solace_agent_mesh/config_portal/backend/common.py +66 -24
- solace_agent_mesh/config_portal/backend/plugin_catalog/constants.py +23 -0
- solace_agent_mesh/config_portal/backend/plugin_catalog/models.py +49 -0
- solace_agent_mesh/config_portal/backend/plugin_catalog/registry_manager.py +160 -0
- solace_agent_mesh/config_portal/backend/plugin_catalog/scraper.py +525 -0
- solace_agent_mesh/config_portal/backend/plugin_catalog_server.py +216 -0
- solace_agent_mesh/config_portal/backend/server.py +550 -140
- solace_agent_mesh/config_portal/frontend/static/client/assets/_index-DNxCwAGB.js +48 -0
- solace_agent_mesh/config_portal/frontend/static/client/assets/components-B7lKcHVY.js +140 -0
- solace_agent_mesh/config_portal/frontend/static/client/assets/{entry.client-DX1misIU.js → entry.client-CEumGClk.js} +3 -3
- solace_agent_mesh/config_portal/frontend/static/client/assets/index-DSo1AH_7.js +68 -0
- solace_agent_mesh/config_portal/frontend/static/client/assets/manifest-d2b54a97.js +1 -0
- solace_agent_mesh/config_portal/frontend/static/client/assets/{root-BApq5dPK.js → root-C4XmHinv.js} +2 -2
- solace_agent_mesh/config_portal/frontend/static/client/assets/root-DxRwaWiE.css +1 -0
- solace_agent_mesh/config_portal/frontend/static/client/index.html +3 -3
- solace_agent_mesh/core_a2a/__init__.py +1 -0
- solace_agent_mesh/core_a2a/core_a2a_llm.txt +88 -0
- solace_agent_mesh/core_a2a/service.py +331 -0
- solace_agent_mesh/evaluation/config_loader.py +657 -0
- solace_agent_mesh/evaluation/evaluator.py +667 -0
- solace_agent_mesh/evaluation/message_organizer.py +568 -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 +972 -0
- solace_agent_mesh/evaluation/report_generator.py +613 -0
- solace_agent_mesh/evaluation/run.py +613 -0
- solace_agent_mesh/evaluation/subscriber.py +872 -0
- solace_agent_mesh/evaluation/summary_builder.py +775 -0
- solace_agent_mesh/evaluation/test_case_loader.py +714 -0
- solace_agent_mesh/gateway/base/__init__.py +1 -0
- solace_agent_mesh/gateway/base/app.py +266 -0
- solace_agent_mesh/gateway/base/base_llm.txt +119 -0
- solace_agent_mesh/gateway/base/component.py +1542 -0
- solace_agent_mesh/gateway/base/task_context.py +74 -0
- solace_agent_mesh/gateway/gateway_llm.txt +125 -0
- solace_agent_mesh/gateway/http_sse/app.py +190 -0
- solace_agent_mesh/gateway/http_sse/component.py +1602 -0
- solace_agent_mesh/gateway/http_sse/components/__init__.py +7 -0
- solace_agent_mesh/gateway/http_sse/components/components_llm.txt +65 -0
- solace_agent_mesh/gateway/http_sse/components/visualization_forwarder_component.py +108 -0
- solace_agent_mesh/gateway/http_sse/dependencies.py +316 -0
- solace_agent_mesh/gateway/http_sse/http_sse_llm.txt +63 -0
- solace_agent_mesh/gateway/http_sse/main.py +442 -0
- solace_agent_mesh/gateway/http_sse/routers/__init__.py +4 -0
- solace_agent_mesh/gateway/http_sse/routers/agents.py +41 -0
- solace_agent_mesh/gateway/http_sse/routers/artifacts.py +821 -0
- solace_agent_mesh/gateway/http_sse/routers/auth.py +212 -0
- solace_agent_mesh/gateway/http_sse/routers/config.py +55 -0
- solace_agent_mesh/gateway/http_sse/routers/people.py +69 -0
- solace_agent_mesh/gateway/http_sse/routers/routers_llm.txt +37 -0
- solace_agent_mesh/gateway/http_sse/routers/sessions.py +80 -0
- solace_agent_mesh/gateway/http_sse/routers/sse.py +138 -0
- solace_agent_mesh/gateway/http_sse/routers/tasks.py +294 -0
- solace_agent_mesh/gateway/http_sse/routers/users.py +59 -0
- solace_agent_mesh/gateway/http_sse/routers/visualization.py +1131 -0
- solace_agent_mesh/gateway/http_sse/services/__init__.py +4 -0
- solace_agent_mesh/gateway/http_sse/services/agent_service.py +69 -0
- solace_agent_mesh/gateway/http_sse/services/people_service.py +158 -0
- solace_agent_mesh/gateway/http_sse/services/services_llm.txt +179 -0
- solace_agent_mesh/gateway/http_sse/services/task_service.py +121 -0
- solace_agent_mesh/gateway/http_sse/session_manager.py +187 -0
- solace_agent_mesh/gateway/http_sse/sse_manager.py +328 -0
- solace_agent_mesh/llm.txt +228 -0
- solace_agent_mesh/llm_detail.txt +2835 -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 +73 -0
- solace_agent_mesh/templates/gateway_component_template.py +400 -0
- solace_agent_mesh/templates/gateway_config_template.yaml +43 -0
- solace_agent_mesh/templates/main_orchestrator.yaml +55 -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 +63 -0
- solace_agent_mesh/templates/plugin_pyproject_template.toml +33 -0
- solace_agent_mesh/templates/plugin_readme_template.md +34 -0
- solace_agent_mesh/templates/plugin_tools_template.py +224 -0
- solace_agent_mesh/templates/shared_config.yaml +66 -0
- solace_agent_mesh/templates/templates_llm.txt +147 -0
- solace_agent_mesh/templates/webui.yaml +53 -0
- solace_agent_mesh-1.0.1.dist-info/METADATA +432 -0
- solace_agent_mesh-1.0.1.dist-info/RECORD +359 -0
- solace_agent_mesh-1.0.1.dist-info/entry_points.txt +3 -0
- {solace_agent_mesh-0.2.3.dist-info → solace_agent_mesh-1.0.1.dist-info}/licenses/LICENSE +1 -1
- solace_agent_mesh/agents/base_agent_component.py +0 -226
- solace_agent_mesh/agents/global/actions/agent_state_change.py +0 -54
- solace_agent_mesh/agents/global/actions/clear_history.py +0 -32
- solace_agent_mesh/agents/global/actions/convert_file_to_markdown.py +0 -160
- solace_agent_mesh/agents/global/actions/create_file.py +0 -70
- solace_agent_mesh/agents/global/actions/error_action.py +0 -45
- solace_agent_mesh/agents/global/actions/plantuml_diagram.py +0 -163
- solace_agent_mesh/agents/global/actions/plotly_graph.py +0 -152
- solace_agent_mesh/agents/global/actions/retrieve_file.py +0 -51
- solace_agent_mesh/agents/global/global_agent_component.py +0 -38
- solace_agent_mesh/agents/image_processing/actions/create_image.py +0 -75
- solace_agent_mesh/agents/image_processing/actions/describe_image.py +0 -115
- solace_agent_mesh/agents/image_processing/image_processing_agent_component.py +0 -23
- solace_agent_mesh/agents/slack/__init__.py +0 -1
- solace_agent_mesh/agents/slack/actions/__init__.py +0 -1
- solace_agent_mesh/agents/slack/actions/post_message.py +0 -177
- solace_agent_mesh/agents/slack/slack_agent_component.py +0 -59
- solace_agent_mesh/agents/web_request/actions/do_image_search.py +0 -84
- solace_agent_mesh/agents/web_request/actions/do_news_search.py +0 -47
- solace_agent_mesh/agents/web_request/actions/do_suggestion_search.py +0 -34
- solace_agent_mesh/agents/web_request/actions/do_web_request.py +0 -135
- solace_agent_mesh/agents/web_request/actions/download_file.py +0 -69
- solace_agent_mesh/agents/web_request/web_request_agent_component.py +0 -33
- solace_agent_mesh/assets/web-visualizer/assets/index-D0qORgkg.css +0 -1
- solace_agent_mesh/assets/web-visualizer/assets/index-DnDr1pnu.js +0 -109
- solace_agent_mesh/assets/web-visualizer/index.html +0 -14
- solace_agent_mesh/assets/web-visualizer/vite.svg +0 -1
- solace_agent_mesh/cli/commands/add/__init__.py +0 -3
- solace_agent_mesh/cli/commands/add/add.py +0 -88
- solace_agent_mesh/cli/commands/add/agent.py +0 -110
- solace_agent_mesh/cli/commands/add/copy_from_plugin.py +0 -92
- solace_agent_mesh/cli/commands/add/gateway.py +0 -374
- solace_agent_mesh/cli/commands/build.py +0 -670
- solace_agent_mesh/cli/commands/chat/__init__.py +0 -3
- solace_agent_mesh/cli/commands/chat/chat.py +0 -361
- solace_agent_mesh/cli/commands/config.py +0 -29
- solace_agent_mesh/cli/commands/init/__init__.py +0 -3
- solace_agent_mesh/cli/commands/init/ai_provider_step.py +0 -93
- solace_agent_mesh/cli/commands/init/broker_step.py +0 -99
- solace_agent_mesh/cli/commands/init/builtin_agent_step.py +0 -83
- solace_agent_mesh/cli/commands/init/check_if_already_done.py +0 -13
- solace_agent_mesh/cli/commands/init/create_config_file_step.py +0 -65
- solace_agent_mesh/cli/commands/init/create_other_project_files_step.py +0 -147
- solace_agent_mesh/cli/commands/init/file_service_step.py +0 -73
- solace_agent_mesh/cli/commands/init/init.py +0 -92
- solace_agent_mesh/cli/commands/init/project_structure_step.py +0 -16
- solace_agent_mesh/cli/commands/init/web_init_step.py +0 -32
- solace_agent_mesh/cli/commands/plugin/__init__.py +0 -3
- solace_agent_mesh/cli/commands/plugin/add.py +0 -100
- solace_agent_mesh/cli/commands/plugin/build.py +0 -268
- solace_agent_mesh/cli/commands/plugin/create.py +0 -117
- solace_agent_mesh/cli/commands/plugin/plugin.py +0 -124
- solace_agent_mesh/cli/commands/plugin/remove.py +0 -73
- solace_agent_mesh/cli/commands/run.py +0 -68
- solace_agent_mesh/cli/commands/visualizer.py +0 -138
- solace_agent_mesh/cli/config.py +0 -85
- solace_agent_mesh/common/action.py +0 -91
- solace_agent_mesh/common/action_list.py +0 -37
- solace_agent_mesh/common/action_response.py +0 -340
- solace_agent_mesh/common/mysql_database.py +0 -40
- solace_agent_mesh/common/postgres_database.py +0 -85
- solace_agent_mesh/common/prompt_templates.py +0 -28
- solace_agent_mesh/common/stimulus_utils.py +0 -152
- solace_agent_mesh/common/time.py +0 -24
- solace_agent_mesh/common/utils.py +0 -712
- solace_agent_mesh/config_portal/frontend/static/client/assets/_index-DMmCawWe.js +0 -42
- solace_agent_mesh/config_portal/frontend/static/client/assets/components-ZIfdTbrV.js +0 -191
- solace_agent_mesh/config_portal/frontend/static/client/assets/index-BJHAE5s4.js +0 -17
- solace_agent_mesh/config_portal/frontend/static/client/assets/manifest-dd988f05.js +0 -1
- solace_agent_mesh/config_portal/frontend/static/client/assets/root-DX4gQ516.css +0 -1
- solace_agent_mesh/configs/agent_global.yaml +0 -74
- solace_agent_mesh/configs/agent_image_processing.yaml +0 -82
- solace_agent_mesh/configs/agent_slack.yaml +0 -64
- solace_agent_mesh/configs/agent_web_request.yaml +0 -75
- solace_agent_mesh/configs/conversation_to_file.yaml +0 -56
- solace_agent_mesh/configs/error_catcher.yaml +0 -56
- solace_agent_mesh/configs/monitor.yaml +0 -0
- solace_agent_mesh/configs/monitor_stim_and_errors_to_slack.yaml +0 -109
- solace_agent_mesh/configs/monitor_user_feedback.yaml +0 -58
- solace_agent_mesh/configs/orchestrator.yaml +0 -241
- solace_agent_mesh/configs/service_embedding.yaml +0 -81
- solace_agent_mesh/configs/service_llm.yaml +0 -265
- solace_agent_mesh/configs/visualize_websocket.yaml +0 -55
- solace_agent_mesh/gateway/components/gateway_base.py +0 -47
- solace_agent_mesh/gateway/components/gateway_input.py +0 -278
- solace_agent_mesh/gateway/components/gateway_output.py +0 -298
- solace_agent_mesh/gateway/identity/bamboohr_identity.py +0 -18
- solace_agent_mesh/gateway/identity/identity_base.py +0 -10
- solace_agent_mesh/gateway/identity/identity_provider.py +0 -60
- solace_agent_mesh/gateway/identity/no_identity.py +0 -9
- solace_agent_mesh/gateway/identity/passthru_identity.py +0 -9
- solace_agent_mesh/monitors/base_monitor_component.py +0 -26
- solace_agent_mesh/monitors/feedback/user_feedback_monitor.py +0 -75
- solace_agent_mesh/monitors/stim_and_errors/stim_and_error_monitor.py +0 -560
- solace_agent_mesh/orchestrator/__init__.py +0 -0
- solace_agent_mesh/orchestrator/action_manager.py +0 -237
- solace_agent_mesh/orchestrator/components/__init__.py +0 -0
- solace_agent_mesh/orchestrator/components/orchestrator_action_manager_timeout_component.py +0 -58
- solace_agent_mesh/orchestrator/components/orchestrator_action_response_component.py +0 -179
- solace_agent_mesh/orchestrator/components/orchestrator_register_component.py +0 -107
- solace_agent_mesh/orchestrator/components/orchestrator_stimulus_processor_component.py +0 -527
- solace_agent_mesh/orchestrator/components/orchestrator_streaming_output_component.py +0 -260
- solace_agent_mesh/orchestrator/orchestrator_main.py +0 -172
- solace_agent_mesh/orchestrator/orchestrator_prompt.py +0 -539
- solace_agent_mesh/services/__init__.py +0 -0
- solace_agent_mesh/services/authorization/providers/base_authorization_provider.py +0 -56
- solace_agent_mesh/services/bamboo_hr_service/__init__.py +0 -3
- solace_agent_mesh/services/bamboo_hr_service/bamboo_hr.py +0 -182
- solace_agent_mesh/services/common/__init__.py +0 -4
- solace_agent_mesh/services/common/auto_expiry.py +0 -45
- solace_agent_mesh/services/common/singleton.py +0 -18
- solace_agent_mesh/services/file_service/__init__.py +0 -14
- solace_agent_mesh/services/file_service/file_manager/__init__.py +0 -0
- solace_agent_mesh/services/file_service/file_manager/bucket_file_manager.py +0 -149
- solace_agent_mesh/services/file_service/file_manager/file_manager_base.py +0 -162
- solace_agent_mesh/services/file_service/file_manager/memory_file_manager.py +0 -64
- solace_agent_mesh/services/file_service/file_manager/volume_file_manager.py +0 -106
- solace_agent_mesh/services/file_service/file_service.py +0 -437
- solace_agent_mesh/services/file_service/file_service_constants.py +0 -54
- solace_agent_mesh/services/file_service/file_transformations.py +0 -141
- solace_agent_mesh/services/file_service/file_utils.py +0 -324
- solace_agent_mesh/services/file_service/transformers/__init__.py +0 -5
- solace_agent_mesh/services/history_service/__init__.py +0 -3
- solace_agent_mesh/services/history_service/history_providers/__init__.py +0 -0
- solace_agent_mesh/services/history_service/history_providers/base_history_provider.py +0 -54
- solace_agent_mesh/services/history_service/history_providers/file_history_provider.py +0 -74
- solace_agent_mesh/services/history_service/history_providers/index.py +0 -40
- solace_agent_mesh/services/history_service/history_providers/memory_history_provider.py +0 -33
- solace_agent_mesh/services/history_service/history_providers/mongodb_history_provider.py +0 -66
- solace_agent_mesh/services/history_service/history_providers/redis_history_provider.py +0 -66
- solace_agent_mesh/services/history_service/history_providers/sql_history_provider.py +0 -93
- solace_agent_mesh/services/history_service/history_service.py +0 -413
- solace_agent_mesh/services/history_service/long_term_memory/__init__.py +0 -0
- solace_agent_mesh/services/history_service/long_term_memory/long_term_memory.py +0 -399
- solace_agent_mesh/services/llm_service/components/llm_request_component.py +0 -340
- solace_agent_mesh/services/llm_service/components/llm_service_component_base.py +0 -152
- solace_agent_mesh/services/middleware_service/__init__.py +0 -0
- solace_agent_mesh/services/middleware_service/middleware_service.py +0 -20
- solace_agent_mesh/templates/action.py +0 -38
- solace_agent_mesh/templates/agent.py +0 -29
- solace_agent_mesh/templates/agent.yaml +0 -70
- solace_agent_mesh/templates/gateway-config-template.yaml +0 -6
- solace_agent_mesh/templates/gateway-default-config.yaml +0 -28
- solace_agent_mesh/templates/gateway-flows.yaml +0 -78
- solace_agent_mesh/templates/gateway-header.yaml +0 -16
- solace_agent_mesh/templates/gateway_base.py +0 -15
- solace_agent_mesh/templates/gateway_input.py +0 -98
- solace_agent_mesh/templates/gateway_output.py +0 -71
- solace_agent_mesh/templates/plugin-gateway-default-config.yaml +0 -29
- solace_agent_mesh/templates/plugin-pyproject.toml +0 -30
- solace_agent_mesh/templates/rest-api-default-config.yaml +0 -31
- solace_agent_mesh/templates/rest-api-flows.yaml +0 -81
- solace_agent_mesh/templates/slack-default-config.yaml +0 -16
- solace_agent_mesh/templates/slack-flows.yaml +0 -81
- solace_agent_mesh/templates/solace-agent-mesh-default.yaml +0 -86
- solace_agent_mesh/templates/solace-agent-mesh-plugin-default.yaml +0 -8
- solace_agent_mesh/templates/web-default-config.yaml +0 -10
- solace_agent_mesh/templates/web-flows.yaml +0 -76
- solace_agent_mesh/tools/__init__.py +0 -0
- solace_agent_mesh/tools/components/__init__.py +0 -0
- solace_agent_mesh/tools/components/conversation_formatter.py +0 -111
- solace_agent_mesh/tools/components/file_resolver_component.py +0 -58
- solace_agent_mesh/tools/config/runtime_config.py +0 -26
- solace_agent_mesh-0.2.3.dist-info/METADATA +0 -172
- solace_agent_mesh-0.2.3.dist-info/RECORD +0 -193
- solace_agent_mesh-0.2.3.dist-info/entry_points.txt +0 -3
- /solace_agent_mesh/{agents → agent}/__init__.py +0 -0
- /solace_agent_mesh/{agents/global → agent/adk}/__init__.py +0 -0
- /solace_agent_mesh/{agents/global/actions → agent/protocol}/__init__.py +0 -0
- /solace_agent_mesh/{agents/image_processing → agent/sac}/__init__.py +0 -0
- /solace_agent_mesh/{agents/image_processing/actions → agent/utils}/__init__.py +0 -0
- /solace_agent_mesh/{agents/web_request → config_portal/backend/plugin_catalog}/__init__.py +0 -0
- /solace_agent_mesh/{agents/web_request/actions → evaluation}/__init__.py +0 -0
- /solace_agent_mesh/gateway/{components → http_sse}/__init__.py +0 -0
- {solace_agent_mesh-0.2.3.dist-info → solace_agent_mesh-1.0.1.dist-info}/WHEEL +0 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
## Quick Summary
|
|
2
|
+
The `protocol` directory implements the core logic for Agent-to-Agent (A2A) communication. It handles receiving and processing requests, responses, and discovery messages (Agent Cards) over the Solace event mesh. It acts as the bridge between the A2A protocol and the underlying Google ADK execution environment.
|
|
3
|
+
|
|
4
|
+
## Files Overview
|
|
5
|
+
- `__init__.py` - An empty file that marks the directory as a Python package.
|
|
6
|
+
- `event_handlers.py` - Contains the primary logic for handling all A2A protocol events, including routing incoming messages to the correct processors, managing task execution, and handling agent discovery.
|
|
7
|
+
|
|
8
|
+
## Developer API Reference
|
|
9
|
+
|
|
10
|
+
### __init__.py
|
|
11
|
+
**Purpose:** Standard Python package initialization file.
|
|
12
|
+
**Import:** `from src.solace_agent_mesh.agent.protocol import *`
|
|
13
|
+
|
|
14
|
+
This is an empty package initialization file and has no public interfaces.
|
|
15
|
+
|
|
16
|
+
### event_handlers.py
|
|
17
|
+
**Purpose:** This file is the central hub for processing all events related to the A2A protocol. It receives events from the Solace AI Connector framework, determines their type (e.g., new task request, peer agent response, discovery message, timer), and routes them to the appropriate handler function. It manages the lifecycle of tasks, from initiation and cancellation to handling responses from peer agents.
|
|
18
|
+
**Import:** `from src.solace_agent_mesh.agent.protocol.event_handlers import process_event, handle_a2a_request, handle_agent_card_message, handle_a2a_response, publish_agent_card`
|
|
19
|
+
|
|
20
|
+
**Functions:**
|
|
21
|
+
- `process_event(component: "SamAgentComponent", event: Event
|
|
@@ -0,0 +1,640 @@
|
|
|
1
|
+
import sys
|
|
2
|
+
import os
|
|
3
|
+
|
|
4
|
+
sys.path.insert(
|
|
5
|
+
0, os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(__file__))))
|
|
6
|
+
)
|
|
7
|
+
|
|
8
|
+
from common.utils.asyncio_macos_fix import ensure_asyncio_compatibility
|
|
9
|
+
from .patch_adk import patch_adk
|
|
10
|
+
from solace_ai_connector.common.log import log
|
|
11
|
+
|
|
12
|
+
ensure_asyncio_compatibility()
|
|
13
|
+
patch_adk()
|
|
14
|
+
|
|
15
|
+
from typing import Any, Dict
|
|
16
|
+
from solace_ai_connector.flow.app import App
|
|
17
|
+
from solace_ai_connector.common.log import log
|
|
18
|
+
|
|
19
|
+
from ...common.a2a_protocol import (
|
|
20
|
+
get_agent_request_topic,
|
|
21
|
+
get_discovery_topic,
|
|
22
|
+
get_agent_response_subscription_topic,
|
|
23
|
+
get_agent_status_subscription_topic,
|
|
24
|
+
)
|
|
25
|
+
from ...common.constants import DEFAULT_COMMUNICATION_TIMEOUT
|
|
26
|
+
from ...agent.sac.component import SamAgentComponent
|
|
27
|
+
from ...agent.utils.artifact_helpers import DEFAULT_SCHEMA_MAX_KEYS
|
|
28
|
+
|
|
29
|
+
info = {
|
|
30
|
+
"class_name": "SamAgentApp",
|
|
31
|
+
"description": "Custom App class for SAM Agent Host with namespace prefixing and automatic subscription generation.",
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
class SamAgentApp(App):
|
|
36
|
+
"""
|
|
37
|
+
Custom App class for SAM Agent Host that automatically generates
|
|
38
|
+
the required Solace subscriptions based on namespace and agent name,
|
|
39
|
+
and programmatically defines the single SamAgentComponent instance.
|
|
40
|
+
It also defines the expected configuration structure via `app_schema`.
|
|
41
|
+
"""
|
|
42
|
+
|
|
43
|
+
app_schema = {
|
|
44
|
+
"config_parameters": [
|
|
45
|
+
# --- A2A Config (Flattened) ---
|
|
46
|
+
{
|
|
47
|
+
"name": "namespace",
|
|
48
|
+
"required": True,
|
|
49
|
+
"type": "string",
|
|
50
|
+
"description": "Absolute topic prefix for A2A communication (e.g., 'myorg/dev').",
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"name": "supports_streaming",
|
|
54
|
+
"required": False,
|
|
55
|
+
"type": "boolean",
|
|
56
|
+
"default": False,
|
|
57
|
+
"description": "Whether this host supports A2A streaming (tasks/sendSubscribe).",
|
|
58
|
+
},
|
|
59
|
+
# --- Core ADK Agent Definition ---
|
|
60
|
+
{
|
|
61
|
+
"name": "agent_name",
|
|
62
|
+
"required": True,
|
|
63
|
+
"type": "string",
|
|
64
|
+
"description": "Unique name for this ADK agent instance.",
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"name": "model",
|
|
68
|
+
"required": True,
|
|
69
|
+
"type": "any",
|
|
70
|
+
"description": "ADK model name (string) or BaseLlm config dict.",
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"name": "instruction",
|
|
74
|
+
"required": False,
|
|
75
|
+
"type": "any",
|
|
76
|
+
"default": "",
|
|
77
|
+
"description": "User-provided instructions for the ADK agent (string or invoke block).",
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"name": "global_instruction",
|
|
81
|
+
"required": False,
|
|
82
|
+
"type": "any",
|
|
83
|
+
"default": "",
|
|
84
|
+
"description": "User-provided global instructions for the agent tree (string or invoke block).",
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"name": "tools",
|
|
88
|
+
"required": False,
|
|
89
|
+
"type": "list",
|
|
90
|
+
"default": [],
|
|
91
|
+
"description": "List of tool configurations (python, mcp, built-in). Each tool can have 'required_scopes'.",
|
|
92
|
+
"items": { # Schema for each item in the tools list
|
|
93
|
+
"type": "object",
|
|
94
|
+
"properties": {
|
|
95
|
+
"tool_type": {
|
|
96
|
+
"type": "string",
|
|
97
|
+
"required": True,
|
|
98
|
+
"enum": ["python", "mcp", "builtin", "builtin-group"],
|
|
99
|
+
"description": "Type of the tool.",
|
|
100
|
+
},
|
|
101
|
+
"tool_name": {
|
|
102
|
+
"type": "string",
|
|
103
|
+
"required": False, # Required for mcp/builtin, optional for python
|
|
104
|
+
"description": "Name of the tool (e.g., ADK built-in name, specific MCP tool name). Overwrite function_name for python tools.",
|
|
105
|
+
},
|
|
106
|
+
"tool_description": {
|
|
107
|
+
"type": "string",
|
|
108
|
+
"required": False, # Optional, Only for python
|
|
109
|
+
"description": "Description of the tool to overwrite for python tools. Overwrite the python function description",
|
|
110
|
+
},
|
|
111
|
+
"component_module": { # For python tools
|
|
112
|
+
"type": "string",
|
|
113
|
+
"required": False,
|
|
114
|
+
"description": "Python module for 'python' tool type.",
|
|
115
|
+
},
|
|
116
|
+
"function_name": { # For python tools
|
|
117
|
+
"type": "string",
|
|
118
|
+
"required": False,
|
|
119
|
+
"description": "Function name within the module for 'python' tool type.",
|
|
120
|
+
},
|
|
121
|
+
"component_base_path": { # For python tools
|
|
122
|
+
"type": "string",
|
|
123
|
+
"required": False,
|
|
124
|
+
"description": "Base path for 'python' tool module resolution.",
|
|
125
|
+
},
|
|
126
|
+
"connection_params": { # For mcp tools
|
|
127
|
+
"type": "object",
|
|
128
|
+
"required": False,
|
|
129
|
+
"description": "Connection parameters for 'mcp' tool type.",
|
|
130
|
+
},
|
|
131
|
+
"environment_variables": { # For mcp tools (stdio)
|
|
132
|
+
"type": "object",
|
|
133
|
+
"required": False,
|
|
134
|
+
"description": "Environment variables for 'mcp' tool type with stdio connection.",
|
|
135
|
+
},
|
|
136
|
+
"required_scopes": {
|
|
137
|
+
"type": "list",
|
|
138
|
+
"required": False,
|
|
139
|
+
"default": [],
|
|
140
|
+
"description": "List of scope strings required to use this specific tool.",
|
|
141
|
+
"items": {"type": "string"},
|
|
142
|
+
},
|
|
143
|
+
"tool_config": {
|
|
144
|
+
"type": "object",
|
|
145
|
+
"required": False,
|
|
146
|
+
"default": {},
|
|
147
|
+
"description": "A dictionary holding specific configuration for this tool instance (e.g., API keys, model names for an image generation tool).",
|
|
148
|
+
"additionalProperties": True,
|
|
149
|
+
},
|
|
150
|
+
},
|
|
151
|
+
},
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
"name": "data_tools_config",
|
|
155
|
+
"required": False,
|
|
156
|
+
"type": "object",
|
|
157
|
+
"default": {},
|
|
158
|
+
"description": "Runtime configuration parameters for built-in data analysis tools.",
|
|
159
|
+
"properties": {
|
|
160
|
+
"sqlite_memory_threshold_mb": {
|
|
161
|
+
"type": "integer",
|
|
162
|
+
"required": False,
|
|
163
|
+
"default": 100,
|
|
164
|
+
"description": "Size threshold (MB) for using in-memory vs. temp file SQLite DB for CSV input.",
|
|
165
|
+
},
|
|
166
|
+
"max_result_preview_rows": {
|
|
167
|
+
"type": "integer",
|
|
168
|
+
"required": False,
|
|
169
|
+
"default": 50,
|
|
170
|
+
"description": "Max rows to return in preview for SQL/JQ results.",
|
|
171
|
+
},
|
|
172
|
+
"max_result_preview_bytes": {
|
|
173
|
+
"type": "integer",
|
|
174
|
+
"required": False,
|
|
175
|
+
"default": 4096,
|
|
176
|
+
"description": "Max bytes to return in preview for SQL/JQ results (if row limit not hit first).",
|
|
177
|
+
},
|
|
178
|
+
},
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
"name": "planner",
|
|
182
|
+
"required": False,
|
|
183
|
+
"type": "object",
|
|
184
|
+
"default": None,
|
|
185
|
+
"description": "Optional configuration for an ADK planner.",
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
"name": "code_executor",
|
|
189
|
+
"required": False,
|
|
190
|
+
"type": "object",
|
|
191
|
+
"default": None,
|
|
192
|
+
"description": "Optional configuration for an ADK code executor.",
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
"name": "inject_current_time",
|
|
196
|
+
"required": False,
|
|
197
|
+
"type": "boolean",
|
|
198
|
+
"default": True,
|
|
199
|
+
"description": "Whether to inject the current time into the agent's instruction.",
|
|
200
|
+
},
|
|
201
|
+
# --- ADK Services Configuration ---
|
|
202
|
+
{
|
|
203
|
+
"name": "session_service",
|
|
204
|
+
"required": True,
|
|
205
|
+
"type": "object",
|
|
206
|
+
"description": "Configuration for ADK Session Service (e.g., { type: 'memory' }).",
|
|
207
|
+
"default": {"type": "memory", "default_behavior": "PERSISTENT"},
|
|
208
|
+
"properties": {
|
|
209
|
+
"type": {
|
|
210
|
+
"type": "string",
|
|
211
|
+
"required": True,
|
|
212
|
+
"description": "Service type (e.g., 'memory', 'vertex_rag').",
|
|
213
|
+
},
|
|
214
|
+
"default_behavior": {
|
|
215
|
+
"type": "string",
|
|
216
|
+
"required": False,
|
|
217
|
+
"default": "PERSISTENT",
|
|
218
|
+
"enum": ["PERSISTENT", "RUN_BASED"],
|
|
219
|
+
"description": "Default behavior for session service: 'PERSISTENT' (default) or 'RUN_BASED' for how long to keep the session history.",
|
|
220
|
+
},
|
|
221
|
+
},
|
|
222
|
+
},
|
|
223
|
+
{
|
|
224
|
+
"name": "artifact_service",
|
|
225
|
+
"required": False,
|
|
226
|
+
"type": "object",
|
|
227
|
+
"default": {"type": "memory"},
|
|
228
|
+
"description": "Configuration for ADK Artifact Service (defaults to memory).",
|
|
229
|
+
"properties": {
|
|
230
|
+
"type": {
|
|
231
|
+
"type": "string",
|
|
232
|
+
"required": True,
|
|
233
|
+
"description": "Service type (e.g., 'memory', 'gcs', 'filesystem').",
|
|
234
|
+
},
|
|
235
|
+
"base_path": {
|
|
236
|
+
"type": "string",
|
|
237
|
+
"required": False, # Required only if type is filesystem
|
|
238
|
+
"description": "Base directory path (required for type 'filesystem').",
|
|
239
|
+
},
|
|
240
|
+
"bucket_name": {
|
|
241
|
+
"type": "string",
|
|
242
|
+
"required": False, # Required only if type is gcs
|
|
243
|
+
"description": "GCS bucket name (required for type 'gcs').",
|
|
244
|
+
},
|
|
245
|
+
"artifact_scope": {
|
|
246
|
+
"type": "string",
|
|
247
|
+
"required": False,
|
|
248
|
+
"default": "namespace",
|
|
249
|
+
"enum": ["namespace", "app", "custom"],
|
|
250
|
+
"description": "Scope for filesystem artifacts: 'namespace' (default, shared by namespace), 'app' (isolated by app name), 'custom' (use artifact_scope_value).",
|
|
251
|
+
},
|
|
252
|
+
"artifact_scope_value": {
|
|
253
|
+
"type": "string",
|
|
254
|
+
"required": False,
|
|
255
|
+
"default": None,
|
|
256
|
+
"description": "Custom identifier for artifact scope (required if artifact_scope is 'custom').",
|
|
257
|
+
},
|
|
258
|
+
},
|
|
259
|
+
},
|
|
260
|
+
{
|
|
261
|
+
"name": "memory_service",
|
|
262
|
+
"required": False,
|
|
263
|
+
"type": "object",
|
|
264
|
+
"default": {"type": "memory"},
|
|
265
|
+
"description": "Configuration for ADK Memory Service (defaults to memory).",
|
|
266
|
+
},
|
|
267
|
+
# --- Tool Output Handling (Generalized) ---
|
|
268
|
+
{
|
|
269
|
+
"name": "tool_output_save_threshold_bytes",
|
|
270
|
+
"required": False,
|
|
271
|
+
"type": "integer",
|
|
272
|
+
"default": 2048, # 2KB
|
|
273
|
+
"description": "If any tool's processed output (e.g., extracted content from an artifact, MCP response) exceeds this size (bytes), its full content is saved as a new ADK artifact. This threshold should generally be less than or equal to tool_output_llm_return_max_bytes.",
|
|
274
|
+
},
|
|
275
|
+
{
|
|
276
|
+
"name": "tool_output_llm_return_max_bytes",
|
|
277
|
+
"required": False,
|
|
278
|
+
"type": "integer",
|
|
279
|
+
"default": 4096, # 4KB
|
|
280
|
+
"description": "Maximum size (bytes) of any tool's (potentially summarized or original) output content returned directly to the LLM. If exceeded, the content will be truncated, and the full original output will be saved as an artifact if not already.",
|
|
281
|
+
},
|
|
282
|
+
# --- LLM-Powered Artifact Extraction Tool Config ---
|
|
283
|
+
{
|
|
284
|
+
"name": "extract_content_from_artifact_config",
|
|
285
|
+
"required": False,
|
|
286
|
+
"type": "object",
|
|
287
|
+
"default": {},
|
|
288
|
+
"description": "Configuration for the LLM-powered artifact extraction tool.",
|
|
289
|
+
"properties": {
|
|
290
|
+
"supported_binary_mime_types": {
|
|
291
|
+
"type": "list",
|
|
292
|
+
"required": False,
|
|
293
|
+
"default": [],
|
|
294
|
+
"items": {"type": "string"},
|
|
295
|
+
"description": "List of binary MIME type patterns (e.g., 'image/png', 'image/*', 'video/mp4') that the tool should attempt to process using its internal LLM.",
|
|
296
|
+
},
|
|
297
|
+
"model": {
|
|
298
|
+
"type": "any", # Union[str, Dict[str, Any]]
|
|
299
|
+
"required": False,
|
|
300
|
+
"default": None,
|
|
301
|
+
"description": "Specifies the LLM for extraction. String (ADK LLMRegistry name) or dict (LiteLlm config). Defaults to agent's LLM.",
|
|
302
|
+
},
|
|
303
|
+
},
|
|
304
|
+
},
|
|
305
|
+
# --- Artifact Handling ---
|
|
306
|
+
{
|
|
307
|
+
"name": "artifact_handling_mode",
|
|
308
|
+
"required": False,
|
|
309
|
+
"type": "string",
|
|
310
|
+
"default": "ignore",
|
|
311
|
+
"description": "How to represent created artifacts in A2A messages: 'ignore' (default), 'embed' (include base64 data), 'reference' (include fetch URI).",
|
|
312
|
+
},
|
|
313
|
+
# --- Schema Inference Config ---
|
|
314
|
+
{
|
|
315
|
+
"name": "schema_max_keys",
|
|
316
|
+
"required": False,
|
|
317
|
+
"type": "integer",
|
|
318
|
+
"default": DEFAULT_SCHEMA_MAX_KEYS,
|
|
319
|
+
"description": "Maximum number of dictionary keys to inspect during schema inference.",
|
|
320
|
+
},
|
|
321
|
+
# --- Embed Resolution Config ---
|
|
322
|
+
{
|
|
323
|
+
"name": "enable_embed_resolution",
|
|
324
|
+
"required": False,
|
|
325
|
+
"type": "boolean",
|
|
326
|
+
"default": True,
|
|
327
|
+
"description": "Enable early-stage processing (state, math, etc.) of dynamic embeds and inject related instructions.",
|
|
328
|
+
},
|
|
329
|
+
{
|
|
330
|
+
"name": "enable_auto_continuation",
|
|
331
|
+
"required": False,
|
|
332
|
+
"type": "boolean",
|
|
333
|
+
"default": True,
|
|
334
|
+
"description": "If true, automatically attempts to continue LLM generation if it is interrupted by a token limit.",
|
|
335
|
+
},
|
|
336
|
+
{
|
|
337
|
+
"name": "stream_batching_threshold_bytes",
|
|
338
|
+
"required": False,
|
|
339
|
+
"type": "integer",
|
|
340
|
+
"default": 0,
|
|
341
|
+
"description": "Minimum size in bytes for accumulated text from LLM stream before sending a status update. If 0 or less, batching is disabled and updates are sent per chunk. Final LLM chunks are always sent regardless of this threshold.",
|
|
342
|
+
},
|
|
343
|
+
{
|
|
344
|
+
"name": "enable_artifact_content_instruction",
|
|
345
|
+
"required": False,
|
|
346
|
+
"type": "boolean",
|
|
347
|
+
"default": True,
|
|
348
|
+
"description": "Inject instructions about the 'artifact_content' embed type (resolved late-stage, typically by a gateway).",
|
|
349
|
+
},
|
|
350
|
+
# --- Agent Card Definition (Simplified) ---
|
|
351
|
+
{
|
|
352
|
+
"name": "agent_card",
|
|
353
|
+
"required": True,
|
|
354
|
+
"type": "object",
|
|
355
|
+
"description": "Static definition of this agent's capabilities for discovery.",
|
|
356
|
+
"properties": {
|
|
357
|
+
"description": {
|
|
358
|
+
"type": "string",
|
|
359
|
+
"required": False,
|
|
360
|
+
"default": "",
|
|
361
|
+
"description": "Concise agent description for discovery.",
|
|
362
|
+
},
|
|
363
|
+
"defaultInputModes": {
|
|
364
|
+
"type": "list",
|
|
365
|
+
"required": False,
|
|
366
|
+
"default": ["text"],
|
|
367
|
+
"description": "Supported input content types.",
|
|
368
|
+
},
|
|
369
|
+
"defaultOutputModes": {
|
|
370
|
+
"type": "list",
|
|
371
|
+
"required": False,
|
|
372
|
+
"default": ["text"],
|
|
373
|
+
"description": "Supported output content types.",
|
|
374
|
+
},
|
|
375
|
+
"skills": {
|
|
376
|
+
"type": "list",
|
|
377
|
+
"required": False,
|
|
378
|
+
"default": [],
|
|
379
|
+
"description": "List of advertised agent skills (A2A AgentSkill structure).",
|
|
380
|
+
},
|
|
381
|
+
"documentationUrl": {
|
|
382
|
+
"type": "string",
|
|
383
|
+
"required": False,
|
|
384
|
+
"default": None,
|
|
385
|
+
"description": "Optional URL for agent documentation.",
|
|
386
|
+
},
|
|
387
|
+
"provider": {
|
|
388
|
+
"type": "object",
|
|
389
|
+
"required": False,
|
|
390
|
+
"default": None,
|
|
391
|
+
"description": "Optional provider information (A2A AgentProvider structure).",
|
|
392
|
+
"properties": {
|
|
393
|
+
"organization": {"type": "string", "required": True},
|
|
394
|
+
"url": {"type": "string", "required": False},
|
|
395
|
+
},
|
|
396
|
+
},
|
|
397
|
+
},
|
|
398
|
+
},
|
|
399
|
+
# --- Agent Discovery & Communication ---
|
|
400
|
+
{
|
|
401
|
+
"name": "agent_card_publishing",
|
|
402
|
+
"required": True,
|
|
403
|
+
"type": "object",
|
|
404
|
+
"description": "Settings for publishing the agent card.",
|
|
405
|
+
"properties": {
|
|
406
|
+
"interval_seconds": {
|
|
407
|
+
"type": "integer",
|
|
408
|
+
"required": True,
|
|
409
|
+
"description": "Publish interval (seconds). <= 0 disables periodic publish.",
|
|
410
|
+
}
|
|
411
|
+
},
|
|
412
|
+
},
|
|
413
|
+
{
|
|
414
|
+
"name": "agent_discovery",
|
|
415
|
+
"required": True,
|
|
416
|
+
"type": "object",
|
|
417
|
+
"description": "Settings for discovering other agents and injecting related instructions.",
|
|
418
|
+
"properties": {
|
|
419
|
+
"enabled": {
|
|
420
|
+
"type": "boolean",
|
|
421
|
+
"required": False,
|
|
422
|
+
"default": True,
|
|
423
|
+
"description": "Enable discovery and instruction injection.",
|
|
424
|
+
}
|
|
425
|
+
},
|
|
426
|
+
},
|
|
427
|
+
{
|
|
428
|
+
"name": "inter_agent_communication",
|
|
429
|
+
"required": True,
|
|
430
|
+
"type": "object",
|
|
431
|
+
"description": "Configuration for interacting with peer agents.",
|
|
432
|
+
"properties": {
|
|
433
|
+
"allow_list": {
|
|
434
|
+
"type": "list",
|
|
435
|
+
"required": False,
|
|
436
|
+
"default": ["*"],
|
|
437
|
+
"description": "Agent name patterns to allow delegation to.",
|
|
438
|
+
},
|
|
439
|
+
"deny_list": {
|
|
440
|
+
"type": "list",
|
|
441
|
+
"required": False,
|
|
442
|
+
"default": [],
|
|
443
|
+
"description": "Agent name patterns to deny delegation to.",
|
|
444
|
+
},
|
|
445
|
+
"request_timeout_seconds": {
|
|
446
|
+
"type": "integer",
|
|
447
|
+
"required": False,
|
|
448
|
+
"default": DEFAULT_COMMUNICATION_TIMEOUT,
|
|
449
|
+
"description": "Timeout for peer requests (seconds).",
|
|
450
|
+
},
|
|
451
|
+
},
|
|
452
|
+
},
|
|
453
|
+
{
|
|
454
|
+
"name": "inject_system_purpose",
|
|
455
|
+
"required": False,
|
|
456
|
+
"type": "boolean",
|
|
457
|
+
"default": False,
|
|
458
|
+
"description": "If true, injects the system_purpose received from the gateway (via task metadata) into the agent's prompt.",
|
|
459
|
+
},
|
|
460
|
+
{
|
|
461
|
+
"name": "inject_response_format",
|
|
462
|
+
"required": False,
|
|
463
|
+
"type": "boolean",
|
|
464
|
+
"default": False,
|
|
465
|
+
"description": "If true, injects the response_format received from the gateway (via task metadata) into the agent's prompt.",
|
|
466
|
+
},
|
|
467
|
+
{
|
|
468
|
+
"name": "inject_user_profile",
|
|
469
|
+
"required": False,
|
|
470
|
+
"type": "boolean",
|
|
471
|
+
"default": False,
|
|
472
|
+
"description": "If true, injects the user_profile received from the gateway (via task metadata) into the agent's prompt.",
|
|
473
|
+
},
|
|
474
|
+
# --- Configurable Agent Initialization ---
|
|
475
|
+
{
|
|
476
|
+
"name": "agent_init_function",
|
|
477
|
+
"required": False,
|
|
478
|
+
"type": "object",
|
|
479
|
+
"description": "Configuration for the agent's custom initialization function.",
|
|
480
|
+
"properties": {
|
|
481
|
+
"module": {
|
|
482
|
+
"type": "string",
|
|
483
|
+
"required": True,
|
|
484
|
+
"description": "Python module path for the init function (e.g., 'my_plugin.initializers').",
|
|
485
|
+
},
|
|
486
|
+
"name": {
|
|
487
|
+
"type": "string",
|
|
488
|
+
"required": True,
|
|
489
|
+
"description": "Name of the init function within the module.",
|
|
490
|
+
},
|
|
491
|
+
"base_path": {
|
|
492
|
+
"type": "string",
|
|
493
|
+
"required": False,
|
|
494
|
+
"description": "Optional base path for module resolution if not in PYTHONPATH.",
|
|
495
|
+
},
|
|
496
|
+
"config": {
|
|
497
|
+
"type": "object",
|
|
498
|
+
"required": False,
|
|
499
|
+
"default": {},
|
|
500
|
+
"additionalProperties": True,
|
|
501
|
+
"description": "Configuration dictionary for the init function, validated by its Pydantic model.",
|
|
502
|
+
},
|
|
503
|
+
},
|
|
504
|
+
},
|
|
505
|
+
# --- Configurable Agent Cleanup ---
|
|
506
|
+
{
|
|
507
|
+
"name": "agent_cleanup_function",
|
|
508
|
+
"required": False,
|
|
509
|
+
"type": "object",
|
|
510
|
+
"description": "Configuration for the agent's custom cleanup function.",
|
|
511
|
+
"properties": {
|
|
512
|
+
"module": {
|
|
513
|
+
"type": "string",
|
|
514
|
+
"required": True,
|
|
515
|
+
"description": "Python module path for the cleanup function.",
|
|
516
|
+
},
|
|
517
|
+
"name": {
|
|
518
|
+
"type": "string",
|
|
519
|
+
"required": True,
|
|
520
|
+
"description": "Name of the cleanup function within the module.",
|
|
521
|
+
},
|
|
522
|
+
"base_path": {
|
|
523
|
+
"type": "string",
|
|
524
|
+
"required": False,
|
|
525
|
+
"description": "Optional base path for module resolution.",
|
|
526
|
+
},
|
|
527
|
+
},
|
|
528
|
+
},
|
|
529
|
+
{
|
|
530
|
+
"name": "text_artifact_content_max_length",
|
|
531
|
+
"required": False,
|
|
532
|
+
"type": "integer",
|
|
533
|
+
"default": 1000,
|
|
534
|
+
"minimum": 100,
|
|
535
|
+
"maximum": 100000,
|
|
536
|
+
"description": "Maximum character length for text-based artifact content (100-100000 characters). Binary artifacts are unaffected.",
|
|
537
|
+
},
|
|
538
|
+
{
|
|
539
|
+
"name": "max_llm_calls_per_task",
|
|
540
|
+
"required": False,
|
|
541
|
+
"type": "integer",
|
|
542
|
+
"default": 20,
|
|
543
|
+
"description": "Maximum number of LLM calls allowed for a single A2A task. A value of 0 or less means unlimited.",
|
|
544
|
+
},
|
|
545
|
+
]
|
|
546
|
+
}
|
|
547
|
+
|
|
548
|
+
def __init__(self, app_info: Dict[str, Any], **kwargs):
|
|
549
|
+
log.debug("Initializing A2A_ADK_App...")
|
|
550
|
+
|
|
551
|
+
app_config = app_info.get("app_config", {})
|
|
552
|
+
namespace = app_config.get("namespace")
|
|
553
|
+
agent_name = app_config.get("agent_name")
|
|
554
|
+
|
|
555
|
+
if not namespace or not isinstance(namespace, str):
|
|
556
|
+
raise ValueError(
|
|
557
|
+
"Internal Error: Namespace missing or invalid after validation."
|
|
558
|
+
)
|
|
559
|
+
if not agent_name or not isinstance(agent_name, str):
|
|
560
|
+
raise ValueError(
|
|
561
|
+
"Internal Error: Agent name missing or invalid after validation."
|
|
562
|
+
)
|
|
563
|
+
|
|
564
|
+
artifact_mode = app_config.get("artifact_handling_mode", "ignore").lower()
|
|
565
|
+
if artifact_mode not in ["ignore", "embed", "reference"]:
|
|
566
|
+
log.warning(
|
|
567
|
+
"Invalid 'artifact_handling_mode' value '%s' in app_config. Using 'ignore'. Allowed values: 'ignore', 'embed', 'reference'.",
|
|
568
|
+
artifact_mode,
|
|
569
|
+
)
|
|
570
|
+
app_config["artifact_handling_mode"] = "ignore"
|
|
571
|
+
|
|
572
|
+
schema_max_keys = app_config.get("schema_max_keys", DEFAULT_SCHEMA_MAX_KEYS)
|
|
573
|
+
if not isinstance(schema_max_keys, int) or schema_max_keys < 0:
|
|
574
|
+
log.warning(
|
|
575
|
+
"Invalid 'schema_max_keys' value '%s' in app_config. Using default: %d.",
|
|
576
|
+
schema_max_keys,
|
|
577
|
+
DEFAULT_SCHEMA_MAX_KEYS,
|
|
578
|
+
)
|
|
579
|
+
app_config["schema_max_keys"] = DEFAULT_SCHEMA_MAX_KEYS
|
|
580
|
+
|
|
581
|
+
artifact_service_config = app_config.get("artifact_service", {})
|
|
582
|
+
if artifact_service_config.get("type") == "filesystem":
|
|
583
|
+
artifact_scope = artifact_service_config.get("artifact_scope", "namespace")
|
|
584
|
+
if artifact_scope == "custom" and not artifact_service_config.get(
|
|
585
|
+
"artifact_scope_value"
|
|
586
|
+
):
|
|
587
|
+
raise ValueError(
|
|
588
|
+
"Configuration Error: 'artifact_scope_value' is required when 'artifact_scope' is 'custom'."
|
|
589
|
+
)
|
|
590
|
+
if artifact_scope != "custom" and artifact_service_config.get(
|
|
591
|
+
"artifact_scope_value"
|
|
592
|
+
):
|
|
593
|
+
log.warning(
|
|
594
|
+
"Configuration Warning: 'artifact_scope_value' is ignored when 'artifact_scope' is not 'custom'."
|
|
595
|
+
)
|
|
596
|
+
|
|
597
|
+
log.info(
|
|
598
|
+
"Configuring A2A_ADK_App for Agent: '%s' in Namespace: '%s'",
|
|
599
|
+
agent_name,
|
|
600
|
+
namespace,
|
|
601
|
+
)
|
|
602
|
+
|
|
603
|
+
required_topics = [
|
|
604
|
+
get_agent_request_topic(namespace, agent_name),
|
|
605
|
+
get_discovery_topic(namespace),
|
|
606
|
+
get_agent_response_subscription_topic(namespace, agent_name),
|
|
607
|
+
get_agent_status_subscription_topic(namespace, agent_name),
|
|
608
|
+
]
|
|
609
|
+
generated_subs = [{"topic": topic} for topic in required_topics]
|
|
610
|
+
log.info(
|
|
611
|
+
"Automatically generated subscriptions for Agent '%s': %s",
|
|
612
|
+
agent_name,
|
|
613
|
+
generated_subs,
|
|
614
|
+
)
|
|
615
|
+
|
|
616
|
+
component_definition = {
|
|
617
|
+
"name": f"{agent_name}_host",
|
|
618
|
+
"component_class": SamAgentComponent,
|
|
619
|
+
"component_config": {},
|
|
620
|
+
"subscriptions": generated_subs,
|
|
621
|
+
}
|
|
622
|
+
|
|
623
|
+
app_info["components"] = [component_definition]
|
|
624
|
+
log.debug("Replaced 'components' in app_info with programmatic definition.")
|
|
625
|
+
|
|
626
|
+
broker_config = app_info.setdefault("broker", {})
|
|
627
|
+
|
|
628
|
+
broker_config["input_enabled"] = True
|
|
629
|
+
broker_config["output_enabled"] = True
|
|
630
|
+
log.debug("Injected broker.input_enabled=True and broker.output_enabled=True")
|
|
631
|
+
|
|
632
|
+
generated_queue_name = f"{namespace.strip('/')}/q/a2a/{agent_name}"
|
|
633
|
+
broker_config["queue_name"] = generated_queue_name
|
|
634
|
+
log.debug("Injected generated broker.queue_name: %s", generated_queue_name)
|
|
635
|
+
|
|
636
|
+
broker_config["temporary_queue"] = True
|
|
637
|
+
log.debug("Set broker_config.temporary_queue = True")
|
|
638
|
+
|
|
639
|
+
super().__init__(app_info, **kwargs)
|
|
640
|
+
log.debug("A2A_ADK_App initialization complete.")
|