solace-agent-mesh 1.6.1__py3-none-any.whl → 1.13.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.
Potentially problematic release.
This version of solace-agent-mesh might be problematic. Click here for more details.
- 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 +26 -0
- solace_agent_mesh/agent/adk/artifacts/filesystem_artifact_service.py +165 -1
- solace_agent_mesh/agent/adk/artifacts/s3_artifact_service.py +163 -0
- solace_agent_mesh/agent/adk/callbacks.py +852 -109
- solace_agent_mesh/agent/adk/embed_resolving_mcp_toolset.py +234 -36
- solace_agent_mesh/agent/adk/intelligent_mcp_callbacks.py +52 -5
- solace_agent_mesh/agent/adk/mcp_content_processor.py +1 -1
- solace_agent_mesh/agent/adk/models/lite_llm.py +77 -21
- solace_agent_mesh/agent/adk/models/oauth2_token_manager.py +24 -137
- solace_agent_mesh/agent/adk/runner.py +85 -20
- solace_agent_mesh/agent/adk/schema_migration.py +88 -0
- solace_agent_mesh/agent/adk/services.py +94 -18
- solace_agent_mesh/agent/adk/setup.py +281 -65
- solace_agent_mesh/agent/adk/stream_parser.py +231 -37
- solace_agent_mesh/agent/adk/tool_wrapper.py +3 -0
- solace_agent_mesh/agent/protocol/event_handlers.py +472 -137
- solace_agent_mesh/agent/proxies/a2a/app.py +3 -2
- solace_agent_mesh/agent/proxies/a2a/component.py +572 -75
- solace_agent_mesh/agent/proxies/a2a/config.py +80 -4
- solace_agent_mesh/agent/proxies/base/app.py +3 -2
- solace_agent_mesh/agent/proxies/base/component.py +188 -22
- solace_agent_mesh/agent/proxies/base/proxy_task_context.py +3 -1
- solace_agent_mesh/agent/sac/app.py +91 -3
- solace_agent_mesh/agent/sac/component.py +591 -157
- solace_agent_mesh/agent/sac/patch_adk.py +8 -16
- solace_agent_mesh/agent/sac/task_execution_context.py +146 -4
- solace_agent_mesh/agent/tools/__init__.py +3 -0
- solace_agent_mesh/agent/tools/audio_tools.py +3 -3
- solace_agent_mesh/agent/tools/builtin_artifact_tools.py +710 -171
- solace_agent_mesh/agent/tools/deep_research_tools.py +2161 -0
- solace_agent_mesh/agent/tools/dynamic_tool.py +2 -0
- solace_agent_mesh/agent/tools/peer_agent_tool.py +82 -15
- solace_agent_mesh/agent/tools/time_tools.py +126 -0
- solace_agent_mesh/agent/tools/tool_config_types.py +57 -2
- solace_agent_mesh/agent/tools/web_search_tools.py +279 -0
- solace_agent_mesh/agent/tools/web_tools.py +125 -17
- solace_agent_mesh/agent/utils/artifact_helpers.py +248 -6
- solace_agent_mesh/agent/utils/context_helpers.py +17 -0
- solace_agent_mesh/assets/docs/404.html +6 -6
- solace_agent_mesh/assets/docs/assets/css/{styles.906a1503.css → styles.8162edfb.css} +1 -1
- solace_agent_mesh/assets/docs/assets/js/05749d90.19ac4f35.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/15ba94aa.e186750d.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/15e40e79.434bb30f.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/17896441.e612dfb4.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/2279.550aa580.js +2 -0
- solace_agent_mesh/assets/docs/assets/js/{17896441.a5e82f9b.js.LICENSE.txt → 2279.550aa580.js.LICENSE.txt} +6 -0
- solace_agent_mesh/assets/docs/assets/js/240a0364.83e37aa8.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/2987107d.a80604f9.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/2e32b5e0.2f0db237.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/3a6c6137.7e61915d.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/3ac1795d.7f7ab1c1.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/3ff0015d.e53c9b78.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/41adc471.0e95b87c.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/4667dc50.bf2ad456.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/49eed117.493d6f99.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/{509e993c.4c7a1a6d.js → 509e993c.a1fbf45a.js} +1 -1
- solace_agent_mesh/assets/docs/assets/js/547e15cc.8e6da617.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/55b7b518.29d6e75d.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/5b8d9c11.d4eb37b8.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/5c2bd65f.1ee87753.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/60702c0e.a8bdd79b.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/631738c7.fa471607.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/64195356.09dbd087.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/66d4869e.30340bd3.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/71da7b71.374b9d54.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/729898df.7249e9fd.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/7e294c01.7c5f6906.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/8024126c.e3467286.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/81a99df0.7ed65d45.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/82fbfb93.161823a5.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/8b032486.91a91afc.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/924ffdeb.975e428a.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/94e8668d.16083b3f.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/9bb13469.4523ae20.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/a7d42657.a956689d.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/a94703ab.3e5fbcb3.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/ab9708a8.3e563275.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/ad87452a.9d73dad6.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/da0b5bad.b62f7b08.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/de915948.44a432bc.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/e04b235d.06d23db6.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/e1b6eeb4.deb2b62e.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/e3d9abda.1476f570.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/e6f9706b.acc800d3.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/e92d0134.c147a429.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/ee0c2fe7.94d0a351.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/f284c35a.cc97854c.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/ff4d71f2.74710fc1.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/main.d634009f.js +2 -0
- solace_agent_mesh/assets/docs/assets/js/runtime~main.27bb82a7.js +1 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/agents/index.html +68 -68
- solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/artifact-management/index.html +50 -50
- solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/audio-tools/index.html +42 -42
- solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/data-analysis-tools/index.html +55 -55
- solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/embeds/index.html +82 -68
- solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/image-tools/index.html +81 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/index.html +67 -50
- solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/research-tools/index.html +136 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/cli/index.html +178 -144
- solace_agent_mesh/assets/docs/docs/documentation/components/gateways/index.html +43 -42
- solace_agent_mesh/assets/docs/docs/documentation/components/index.html +20 -18
- solace_agent_mesh/assets/docs/docs/documentation/components/orchestrator/index.html +23 -23
- solace_agent_mesh/assets/docs/docs/documentation/components/platform-service/index.html +33 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/plugins/index.html +45 -45
- 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 +208 -125
- solace_agent_mesh/assets/docs/docs/documentation/components/speech/index.html +52 -0
- solace_agent_mesh/assets/docs/docs/documentation/deploying/debugging/index.html +28 -49
- solace_agent_mesh/assets/docs/docs/documentation/deploying/deployment-options/index.html +29 -30
- solace_agent_mesh/assets/docs/docs/documentation/deploying/index.html +14 -14
- solace_agent_mesh/assets/docs/docs/documentation/deploying/kubernetes/index.html +47 -0
- solace_agent_mesh/assets/docs/docs/documentation/deploying/kubernetes/kubernetes-deployment-guide/index.html +197 -0
- solace_agent_mesh/assets/docs/docs/documentation/deploying/logging/index.html +90 -0
- solace_agent_mesh/assets/docs/docs/documentation/deploying/observability/index.html +17 -16
- 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 +38 -38
- solace_agent_mesh/assets/docs/docs/documentation/developing/create-gateways/index.html +162 -171
- solace_agent_mesh/assets/docs/docs/documentation/developing/creating-python-tools/index.html +67 -49
- solace_agent_mesh/assets/docs/docs/documentation/developing/creating-service-providers/index.html +17 -17
- solace_agent_mesh/assets/docs/docs/documentation/developing/evaluations/index.html +51 -51
- solace_agent_mesh/assets/docs/docs/documentation/developing/index.html +22 -22
- solace_agent_mesh/assets/docs/docs/documentation/developing/structure/index.html +27 -27
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/bedrock-agents/index.html +135 -135
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/custom-agent/index.html +66 -66
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/event-mesh-gateway/index.html +51 -51
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/mcp-integration/index.html +50 -38
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/mongodb-integration/index.html +86 -86
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/rag-integration/index.html +51 -51
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/rest-gateway/index.html +24 -24
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/slack-integration/index.html +30 -30
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/sql-database/index.html +44 -44
- 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 +23 -19
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/installation/index.html +40 -37
- 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 +112 -87
- 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 +87 -64
- 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 +44 -44
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/index.html +39 -37
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/introduction/index.html +30 -30
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/try-agent-mesh/index.html +18 -18
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/vibe_coding/index.html +62 -0
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/artifact-storage/index.html +311 -0
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/configurations/index.html +39 -42
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/index.html +14 -14
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/installation/index.html +27 -25
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/large_language_models/index.html +69 -69
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/run-project/index.html +72 -72
- 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 +42 -42
- solace_agent_mesh/assets/docs/docs/documentation/migrations/a2a-upgrade/a2a-technical-migration-map/index.html +20 -20
- solace_agent_mesh/assets/docs/docs/documentation/migrations/platform-service-split/index.html +85 -0
- solace_agent_mesh/assets/docs/lunr-index-1768329217460.json +1 -0
- solace_agent_mesh/assets/docs/lunr-index.json +1 -1
- solace_agent_mesh/assets/docs/search-doc-1768329217460.json +1 -0
- solace_agent_mesh/assets/docs/search-doc.json +1 -1
- solace_agent_mesh/assets/docs/sitemap.xml +1 -1
- solace_agent_mesh/cli/__init__.py +1 -1
- solace_agent_mesh/cli/commands/add_cmd/__init__.py +3 -1
- solace_agent_mesh/cli/commands/add_cmd/agent_cmd.py +6 -1
- solace_agent_mesh/cli/commands/add_cmd/proxy_cmd.py +100 -0
- solace_agent_mesh/cli/commands/docs_cmd.py +4 -1
- solace_agent_mesh/cli/commands/eval_cmd.py +1 -1
- solace_agent_mesh/cli/commands/init_cmd/__init__.py +15 -0
- solace_agent_mesh/cli/commands/init_cmd/directory_step.py +1 -1
- solace_agent_mesh/cli/commands/init_cmd/env_step.py +30 -3
- solace_agent_mesh/cli/commands/init_cmd/orchestrator_step.py +3 -4
- solace_agent_mesh/cli/commands/init_cmd/platform_service_step.py +85 -0
- solace_agent_mesh/cli/commands/init_cmd/webui_gateway_step.py +16 -3
- solace_agent_mesh/cli/commands/plugin_cmd/add_cmd.py +2 -1
- solace_agent_mesh/cli/commands/plugin_cmd/catalog_cmd.py +1 -0
- solace_agent_mesh/cli/commands/plugin_cmd/create_cmd.py +3 -3
- solace_agent_mesh/cli/commands/run_cmd.py +64 -49
- solace_agent_mesh/cli/commands/tools_cmd.py +315 -0
- solace_agent_mesh/cli/main.py +15 -0
- solace_agent_mesh/client/webui/frontend/static/assets/{authCallback-BTf6dqwp.js → authCallback-KnKMP_vb.js} +1 -1
- solace_agent_mesh/client/webui/frontend/static/assets/client-DpBL2stg.js +25 -0
- solace_agent_mesh/client/webui/frontend/static/assets/main-Cd498TV2.js +435 -0
- solace_agent_mesh/client/webui/frontend/static/assets/main-rSf8Vu29.css +1 -0
- solace_agent_mesh/client/webui/frontend/static/assets/vendor-CGk8Suyh.js +565 -0
- solace_agent_mesh/client/webui/frontend/static/auth-callback.html +3 -3
- solace_agent_mesh/client/webui/frontend/static/index.html +4 -4
- 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/a2a/events.py +2 -1
- solace_agent_mesh/common/a2a/protocol.py +5 -0
- solace_agent_mesh/common/a2a/types.py +2 -1
- solace_agent_mesh/common/a2a_spec/schemas/artifact_creation_progress.json +23 -6
- solace_agent_mesh/common/a2a_spec/schemas/feedback_event.json +51 -0
- solace_agent_mesh/common/agent_registry.py +38 -11
- solace_agent_mesh/common/data_parts.py +144 -4
- solace_agent_mesh/common/error_handlers.py +83 -0
- solace_agent_mesh/common/exceptions.py +24 -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/rag_dto.py +156 -0
- solace_agent_mesh/common/sac/sam_component_base.py +97 -19
- solace_agent_mesh/common/sam_events/event_service.py +2 -2
- solace_agent_mesh/common/services/employee_service.py +1 -1
- solace_agent_mesh/common/utils/embeds/constants.py +1 -0
- solace_agent_mesh/common/utils/embeds/converter.py +1 -8
- solace_agent_mesh/common/utils/embeds/modifiers.py +4 -28
- solace_agent_mesh/common/utils/embeds/resolver.py +152 -31
- solace_agent_mesh/common/utils/embeds/types.py +9 -0
- solace_agent_mesh/common/utils/log_formatters.py +20 -0
- solace_agent_mesh/common/utils/mime_helpers.py +12 -5
- solace_agent_mesh/common/utils/pydantic_utils.py +90 -3
- 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/config_portal/backend/common.py +12 -0
- solace_agent_mesh/config_portal/frontend/static/client/assets/_index-CljP4_mv.js +103 -0
- solace_agent_mesh/config_portal/frontend/static/client/assets/{components-Rk0n-9cK.js → components-CaC6hG8d.js} +22 -22
- solace_agent_mesh/config_portal/frontend/static/client/assets/{entry.client-mvZjNKiz.js → entry.client-H_TM0YBt.js} +3 -3
- solace_agent_mesh/config_portal/frontend/static/client/assets/{index-DzNKzXrc.js → index-CnFykb2v.js} +16 -16
- solace_agent_mesh/config_portal/frontend/static/client/assets/manifest-f8439d40.js +1 -0
- solace_agent_mesh/config_portal/frontend/static/client/assets/root-BIMqslJB.css +1 -0
- solace_agent_mesh/config_portal/frontend/static/client/assets/root-mJmTIdIk.js +10 -0
- solace_agent_mesh/config_portal/frontend/static/client/index.html +3 -3
- solace_agent_mesh/core_a2a/service.py +3 -2
- solace_agent_mesh/gateway/adapter/__init__.py +1 -0
- solace_agent_mesh/gateway/adapter/base.py +170 -0
- solace_agent_mesh/gateway/adapter/types.py +230 -0
- solace_agent_mesh/gateway/base/app.py +39 -2
- solace_agent_mesh/gateway/base/auth_interface.py +103 -0
- solace_agent_mesh/gateway/base/component.py +1027 -151
- 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 +894 -0
- solace_agent_mesh/gateway/http_sse/alembic/env.py +0 -7
- 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.ini +0 -36
- solace_agent_mesh/gateway/http_sse/app.py +40 -11
- solace_agent_mesh/gateway/http_sse/component.py +285 -160
- solace_agent_mesh/gateway/http_sse/dependencies.py +149 -114
- solace_agent_mesh/gateway/http_sse/main.py +68 -450
- solace_agent_mesh/gateway/http_sse/repository/__init__.py +19 -1
- solace_agent_mesh/gateway/http_sse/repository/chat_task_repository.py +2 -2
- 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 +26 -3
- solace_agent_mesh/gateway/http_sse/repository/entities/task.py +7 -0
- solace_agent_mesh/gateway/http_sse/repository/feedback_repository.py +47 -0
- solace_agent_mesh/gateway/http_sse/repository/interfaces.py +114 -6
- solace_agent_mesh/gateway/http_sse/repository/models/__init__.py +13 -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 +8 -2
- solace_agent_mesh/gateway/http_sse/repository/models/task_model.py +8 -1
- 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/session_repository.py +177 -11
- solace_agent_mesh/gateway/http_sse/repository/task_repository.py +86 -2
- solace_agent_mesh/gateway/http_sse/routers/agent_cards.py +38 -7
- solace_agent_mesh/gateway/http_sse/routers/artifacts.py +256 -58
- solace_agent_mesh/gateway/http_sse/routers/auth.py +168 -134
- solace_agent_mesh/gateway/http_sse/routers/config.py +302 -8
- 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/project_requests.py +48 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/requests/session_requests.py +14 -1
- solace_agent_mesh/gateway/http_sse/routers/dto/responses/base_responses.py +1 -1
- solace_agent_mesh/gateway/http_sse/routers/dto/responses/project_responses.py +31 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/responses/session_responses.py +5 -2
- solace_agent_mesh/gateway/http_sse/routers/dto/responses/version_responses.py +31 -0
- solace_agent_mesh/gateway/http_sse/routers/feedback.py +133 -2
- solace_agent_mesh/gateway/http_sse/routers/people.py +2 -2
- solace_agent_mesh/gateway/http_sse/routers/projects.py +768 -0
- solace_agent_mesh/gateway/http_sse/routers/prompts.py +1416 -0
- solace_agent_mesh/gateway/http_sse/routers/sessions.py +167 -7
- solace_agent_mesh/gateway/http_sse/routers/speech.py +355 -0
- solace_agent_mesh/gateway/http_sse/routers/sse.py +131 -8
- solace_agent_mesh/gateway/http_sse/routers/tasks.py +670 -18
- solace_agent_mesh/gateway/http_sse/routers/users.py +1 -1
- solace_agent_mesh/gateway/http_sse/routers/version.py +343 -0
- solace_agent_mesh/gateway/http_sse/routers/visualization.py +92 -9
- 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 +1 -1
- solace_agent_mesh/gateway/http_sse/services/feedback_service.py +1 -1
- 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/session_service.py +361 -12
- solace_agent_mesh/gateway/http_sse/services/task_logger_service.py +354 -4
- solace_agent_mesh/gateway/http_sse/session_manager.py +15 -15
- solace_agent_mesh/gateway/http_sse/sse_manager.py +286 -166
- solace_agent_mesh/gateway/http_sse/utils/artifact_copy_utils.py +370 -0
- solace_agent_mesh/gateway/http_sse/utils/stim_utils.py +41 -1
- solace_agent_mesh/services/__init__.py +0 -0
- solace_agent_mesh/services/platform/__init__.py +29 -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 +154 -0
- solace_agent_mesh/services/platform/api/main.py +314 -0
- solace_agent_mesh/services/platform/api/middleware.py +51 -0
- solace_agent_mesh/services/platform/api/routers/__init__.py +33 -0
- solace_agent_mesh/services/platform/api/routers/health_router.py +31 -0
- solace_agent_mesh/services/platform/app.py +215 -0
- solace_agent_mesh/services/platform/component.py +777 -0
- solace_agent_mesh/shared/__init__.py +14 -0
- solace_agent_mesh/shared/api/__init__.py +42 -0
- solace_agent_mesh/shared/auth/__init__.py +26 -0
- solace_agent_mesh/shared/auth/dependencies.py +204 -0
- solace_agent_mesh/shared/auth/middleware.py +347 -0
- solace_agent_mesh/shared/database/__init__.py +20 -0
- solace_agent_mesh/{gateway/http_sse/shared → shared/database}/base_repository.py +1 -1
- solace_agent_mesh/{gateway/http_sse/shared → shared/database}/database_exceptions.py +1 -1
- solace_agent_mesh/{gateway/http_sse/shared → shared/database}/database_helpers.py +1 -1
- solace_agent_mesh/shared/exceptions/__init__.py +36 -0
- solace_agent_mesh/{gateway/http_sse/shared → shared/exceptions}/exception_handlers.py +19 -5
- solace_agent_mesh/shared/utils/__init__.py +21 -0
- solace_agent_mesh/templates/logging_config_template.yaml +48 -0
- solace_agent_mesh/templates/main_orchestrator.yaml +12 -1
- solace_agent_mesh/templates/platform.yaml +49 -0
- solace_agent_mesh/templates/plugin_readme_template.md +3 -25
- solace_agent_mesh/templates/plugin_tool_config_template.yaml +109 -0
- solace_agent_mesh/templates/proxy_template.yaml +62 -0
- solace_agent_mesh/templates/webui.yaml +148 -6
- solace_agent_mesh/tools/web_search/__init__.py +18 -0
- solace_agent_mesh/tools/web_search/base.py +84 -0
- solace_agent_mesh/tools/web_search/google_search.py +247 -0
- solace_agent_mesh/tools/web_search/models.py +99 -0
- {solace_agent_mesh-1.6.1.dist-info → solace_agent_mesh-1.13.2.dist-info}/METADATA +31 -12
- solace_agent_mesh-1.13.2.dist-info/RECORD +591 -0
- {solace_agent_mesh-1.6.1.dist-info → solace_agent_mesh-1.13.2.dist-info}/WHEEL +1 -1
- solace_agent_mesh/agent/adk/adk_llm.txt +0 -232
- solace_agent_mesh/agent/adk/adk_llm_detail.txt +0 -566
- solace_agent_mesh/agent/adk/artifacts/artifacts_llm.txt +0 -171
- solace_agent_mesh/agent/adk/models/models_llm.txt +0 -142
- solace_agent_mesh/agent/agent_llm.txt +0 -378
- solace_agent_mesh/agent/agent_llm_detail.txt +0 -1702
- solace_agent_mesh/agent/protocol/protocol_llm.txt +0 -81
- solace_agent_mesh/agent/protocol/protocol_llm_detail.txt +0 -92
- solace_agent_mesh/agent/sac/sac_llm.txt +0 -189
- solace_agent_mesh/agent/sac/sac_llm_detail.txt +0 -200
- solace_agent_mesh/agent/testing/testing_llm.txt +0 -57
- solace_agent_mesh/agent/testing/testing_llm_detail.txt +0 -68
- solace_agent_mesh/agent/tools/tools_llm.txt +0 -263
- solace_agent_mesh/agent/tools/tools_llm_detail.txt +0 -274
- solace_agent_mesh/agent/utils/utils_llm.txt +0 -138
- solace_agent_mesh/agent/utils/utils_llm_detail.txt +0 -149
- solace_agent_mesh/assets/docs/assets/js/15ba94aa.932dd2db.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/17896441.a5e82f9b.js +0 -2
- solace_agent_mesh/assets/docs/assets/js/240a0364.7eac6021.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/2e32b5e0.33f5d75b.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/3a6c6137.f5940cfa.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/3ac1795d.76654dd9.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/3ff0015d.2be20244.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/547e15cc.2cbb060a.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/55b7b518.f2b1d1ba.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/5c2bd65f.eda4bcb2.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/631738c7.a8b1ef8b.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/6a520c9d.ba015d81.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/6ad8f0bd.f4b15f3b.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/6d84eae0.4a5fbf39.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/71da7b71.38583438.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/8024126c.56e59919.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/81a99df0.07034dd9.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/82fbfb93.139a1a1f.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/924ffdeb.8095e148.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/94e8668d.b5ddb7a1.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/9bb13469.dd1c9b54.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/a94703ab.0438dbc2.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/ab9708a8.3e6dd091.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/c93cbaa0.eaff365e.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/da0b5bad.d08a9466.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/dd817ffc.0aa9630a.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/dd81e2b8.d590bc9e.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/de915948.27d6b065.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/e3d9abda.6b9493d0.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/e6f9706b.e74a984d.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/e92d0134.cf6d6522.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/f284c35a.42f59cdd.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/ff4d71f2.15b02f97.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/main.b12eac43.js +0 -2
- solace_agent_mesh/assets/docs/assets/js/runtime~main.e268214e.js +0 -1
- solace_agent_mesh/assets/docs/lunr-index-1761248203150.json +0 -1
- solace_agent_mesh/assets/docs/search-doc-1761248203150.json +0 -1
- solace_agent_mesh/cli/commands/add_cmd/add_cmd_llm.txt +0 -250
- solace_agent_mesh/cli/commands/init_cmd/init_cmd_llm.txt +0 -365
- solace_agent_mesh/cli/commands/plugin_cmd/plugin_cmd_llm.txt +0 -305
- solace_agent_mesh/client/webui/frontend/static/assets/client-CaY59VuC.js +0 -25
- solace_agent_mesh/client/webui/frontend/static/assets/main-B32noGmR.js +0 -342
- solace_agent_mesh/client/webui/frontend/static/assets/main-DHJKSW1S.css +0 -1
- solace_agent_mesh/client/webui/frontend/static/assets/vendor-BEmvJSYz.js +0 -405
- solace_agent_mesh/common/a2a/a2a_llm.txt +0 -182
- solace_agent_mesh/common/a2a/a2a_llm_detail.txt +0 -193
- solace_agent_mesh/common/a2a_spec/a2a_spec_llm.txt +0 -407
- solace_agent_mesh/common/a2a_spec/a2a_spec_llm_detail.txt +0 -736
- solace_agent_mesh/common/a2a_spec/schemas/schemas_llm.txt +0 -313
- solace_agent_mesh/common/common_llm.txt +0 -251
- solace_agent_mesh/common/common_llm_detail.txt +0 -2562
- solace_agent_mesh/common/middleware/middleware_llm.txt +0 -174
- solace_agent_mesh/common/middleware/middleware_llm_detail.txt +0 -185
- solace_agent_mesh/common/sac/sac_llm.txt +0 -71
- solace_agent_mesh/common/sac/sac_llm_detail.txt +0 -82
- solace_agent_mesh/common/sam_events/sam_events_llm.txt +0 -104
- solace_agent_mesh/common/sam_events/sam_events_llm_detail.txt +0 -115
- solace_agent_mesh/common/services/providers/providers_llm.txt +0 -80
- solace_agent_mesh/common/services/services_llm.txt +0 -363
- solace_agent_mesh/common/services/services_llm_detail.txt +0 -459
- solace_agent_mesh/common/utils/embeds/embeds_llm.txt +0 -220
- solace_agent_mesh/common/utils/utils_llm.txt +0 -336
- solace_agent_mesh/common/utils/utils_llm_detail.txt +0 -572
- solace_agent_mesh/config_portal/frontend/static/client/assets/_index-ByU1X1HD.js +0 -98
- solace_agent_mesh/config_portal/frontend/static/client/assets/manifest-61038fc6.js +0 -1
- solace_agent_mesh/config_portal/frontend/static/client/assets/root-BWvk5-gF.js +0 -10
- solace_agent_mesh/config_portal/frontend/static/client/assets/root-DxRwaWiE.css +0 -1
- solace_agent_mesh/core_a2a/core_a2a_llm.txt +0 -90
- solace_agent_mesh/core_a2a/core_a2a_llm_detail.txt +0 -101
- solace_agent_mesh/gateway/base/base_llm.txt +0 -224
- solace_agent_mesh/gateway/base/base_llm_detail.txt +0 -235
- solace_agent_mesh/gateway/gateway_llm.txt +0 -373
- solace_agent_mesh/gateway/gateway_llm_detail.txt +0 -3885
- solace_agent_mesh/gateway/http_sse/alembic/alembic_llm.txt +0 -295
- solace_agent_mesh/gateway/http_sse/alembic/versions/versions_llm.txt +0 -155
- solace_agent_mesh/gateway/http_sse/components/components_llm.txt +0 -105
- solace_agent_mesh/gateway/http_sse/http_sse_llm.txt +0 -299
- solace_agent_mesh/gateway/http_sse/http_sse_llm_detail.txt +0 -3278
- solace_agent_mesh/gateway/http_sse/repository/entities/entities_llm.txt +0 -263
- solace_agent_mesh/gateway/http_sse/repository/models/models_llm.txt +0 -266
- solace_agent_mesh/gateway/http_sse/repository/repository_llm.txt +0 -340
- solace_agent_mesh/gateway/http_sse/routers/dto/dto_llm.txt +0 -346
- solace_agent_mesh/gateway/http_sse/routers/dto/requests/requests_llm.txt +0 -83
- solace_agent_mesh/gateway/http_sse/routers/dto/responses/responses_llm.txt +0 -107
- solace_agent_mesh/gateway/http_sse/routers/routers_llm.txt +0 -314
- solace_agent_mesh/gateway/http_sse/services/services_llm.txt +0 -297
- solace_agent_mesh/gateway/http_sse/shared/__init__.py +0 -146
- solace_agent_mesh/gateway/http_sse/shared/shared_llm.txt +0 -285
- solace_agent_mesh/gateway/http_sse/utils/utils_llm.txt +0 -47
- solace_agent_mesh/llm.txt +0 -228
- solace_agent_mesh/llm_detail.txt +0 -2835
- solace_agent_mesh/solace_agent_mesh_llm.txt +0 -362
- solace_agent_mesh/solace_agent_mesh_llm_detail.txt +0 -8599
- solace_agent_mesh/templates/logging_config_template.ini +0 -45
- solace_agent_mesh/templates/templates_llm.txt +0 -147
- solace_agent_mesh-1.6.1.dist-info/RECORD +0 -525
- /solace_agent_mesh/assets/docs/assets/js/{main.b12eac43.js.LICENSE.txt → main.d634009f.js.LICENSE.txt} +0 -0
- /solace_agent_mesh/{gateway/http_sse/shared → shared/api}/auth_utils.py +0 -0
- /solace_agent_mesh/{gateway/http_sse/shared → shared/api}/pagination.py +0 -0
- /solace_agent_mesh/{gateway/http_sse/shared → shared/api}/response_utils.py +0 -0
- /solace_agent_mesh/{gateway/http_sse/shared → shared/exceptions}/error_dto.py +0 -0
- /solace_agent_mesh/{gateway/http_sse/shared → shared/exceptions}/exceptions.py +0 -0
- /solace_agent_mesh/{gateway/http_sse/shared → shared/utils}/enums.py +0 -0
- /solace_agent_mesh/{gateway/http_sse/shared → shared/utils}/timestamp_utils.py +0 -0
- /solace_agent_mesh/{gateway/http_sse/shared → shared/utils}/types.py +0 -0
- /solace_agent_mesh/{gateway/http_sse/shared → shared/utils}/utils.py +0 -0
- {solace_agent_mesh-1.6.1.dist-info → solace_agent_mesh-1.13.2.dist-info}/entry_points.txt +0 -0
- {solace_agent_mesh-1.6.1.dist-info → solace_agent_mesh-1.13.2.dist-info}/licenses/LICENSE +0 -0
|
@@ -2,50 +2,58 @@
|
|
|
2
2
|
Handles ADK Agent and Runner initialization, including tool loading and callback assignment.
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
|
-
import logging
|
|
6
|
-
from typing import Dict, List, Optional, Union, Callable, Tuple, Set, Any, TYPE_CHECKING, Type
|
|
7
5
|
import functools
|
|
8
6
|
import inspect
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
7
|
+
import logging
|
|
8
|
+
import os
|
|
9
|
+
from typing import (
|
|
10
|
+
TYPE_CHECKING,
|
|
11
|
+
Any,
|
|
12
|
+
Callable,
|
|
13
|
+
Dict,
|
|
14
|
+
List,
|
|
15
|
+
Optional,
|
|
16
|
+
Set,
|
|
17
|
+
Tuple,
|
|
18
|
+
Type,
|
|
19
|
+
Union,
|
|
20
|
+
)
|
|
12
21
|
|
|
13
|
-
from .app_llm_agent import AppLlmAgent
|
|
14
|
-
from .tool_wrapper import ADKToolWrapper
|
|
15
|
-
from .embed_resolving_mcp_toolset import EmbedResolvingMCPToolset
|
|
16
|
-
from google.adk.runners import Runner
|
|
17
|
-
from google.adk.models import BaseLlm
|
|
18
|
-
from google.adk.tools import BaseTool, ToolContext
|
|
19
22
|
from google.adk import tools as adk_tools_module
|
|
20
23
|
from google.adk.agents.callback_context import CallbackContext
|
|
24
|
+
from google.adk.models import BaseLlm
|
|
21
25
|
from google.adk.models.llm_request import LlmRequest
|
|
22
26
|
from google.adk.models.llm_response import LlmResponse
|
|
27
|
+
from google.adk.runners import Runner
|
|
28
|
+
from google.adk.tools import BaseTool, ToolContext
|
|
29
|
+
from google.adk.tools.mcp_tool import MCPTool
|
|
23
30
|
from google.adk.tools.mcp_tool.mcp_session_manager import (
|
|
24
31
|
SseServerParams,
|
|
25
32
|
StdioConnectionParams,
|
|
26
33
|
StreamableHTTPServerParams,
|
|
27
|
-
|
|
28
34
|
)
|
|
29
|
-
|
|
30
35
|
from mcp import StdioServerParameters
|
|
36
|
+
from solace_ai_connector.common.utils import import_module
|
|
31
37
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
from ..tools.registry import tool_registry
|
|
36
|
-
from ..tools.tool_definition import BuiltinTool
|
|
38
|
+
from ...agent.adk import callbacks as adk_callbacks
|
|
39
|
+
from ...agent.adk.models.lite_llm import LiteLlm
|
|
40
|
+
from ...common.utils.type_utils import is_subclass_by_name
|
|
37
41
|
from ..tools.dynamic_tool import DynamicTool, DynamicToolProvider
|
|
42
|
+
from ..tools.registry import tool_registry
|
|
38
43
|
from ..tools.tool_config_types import (
|
|
39
44
|
AnyToolConfig,
|
|
40
|
-
BuiltinToolConfig,
|
|
41
45
|
BuiltinGroupToolConfig,
|
|
46
|
+
BuiltinToolConfig,
|
|
42
47
|
McpToolConfig,
|
|
43
48
|
PythonToolConfig,
|
|
44
49
|
)
|
|
50
|
+
from ..tools.tool_definition import BuiltinTool
|
|
51
|
+
from .app_llm_agent import AppLlmAgent
|
|
52
|
+
from .embed_resolving_mcp_toolset import EmbedResolvingMCPToolset
|
|
53
|
+
from .tool_wrapper import ADKToolWrapper
|
|
45
54
|
|
|
46
|
-
|
|
47
|
-
from
|
|
48
|
-
from ...agent.adk.models.lite_llm import LiteLlm
|
|
55
|
+
if TYPE_CHECKING:
|
|
56
|
+
from ..sac.component import SamAgentComponent
|
|
49
57
|
|
|
50
58
|
log = logging.getLogger(__name__)
|
|
51
59
|
|
|
@@ -488,7 +496,16 @@ async def _load_builtin_group_tool(component: "SamAgentComponent", tool_config:
|
|
|
488
496
|
loaded_tools: List[Union[BaseTool, Callable]] = []
|
|
489
497
|
enabled_builtin_tools: List[BuiltinTool] = []
|
|
490
498
|
for tool_def in tools_in_group:
|
|
499
|
+
# Try to get tool-specific config, but fall back to the entire tool_config
|
|
500
|
+
# This allows both patterns:
|
|
501
|
+
# 1. tool_config with keys at top level (e.g., api_key: "xxx")
|
|
502
|
+
# 2. tool_config with nested configs per tool (e.g., tool_name: {api_key: "xxx"})
|
|
491
503
|
specific_tool_config = tool_config_model.tool_config.get(tool_def.name)
|
|
504
|
+
if specific_tool_config is None:
|
|
505
|
+
# No tool-specific config found, use the entire tool_config
|
|
506
|
+
# This is the common case for groups where all tools share the same config
|
|
507
|
+
specific_tool_config = tool_config_model.tool_config
|
|
508
|
+
|
|
492
509
|
tool_callable = ADKToolWrapper(
|
|
493
510
|
tool_def.implementation,
|
|
494
511
|
specific_tool_config,
|
|
@@ -506,6 +523,35 @@ async def _load_builtin_group_tool(component: "SamAgentComponent", tool_config:
|
|
|
506
523
|
)
|
|
507
524
|
return loaded_tools, enabled_builtin_tools, []
|
|
508
525
|
|
|
526
|
+
def validate_filesystem_path(path, log_identifier=""):
|
|
527
|
+
"""
|
|
528
|
+
Validates that a filesystem path exists and is accessible.
|
|
529
|
+
|
|
530
|
+
Args:
|
|
531
|
+
path: The filesystem path to validate
|
|
532
|
+
log_identifier: Optional identifier for logging
|
|
533
|
+
|
|
534
|
+
Returns:
|
|
535
|
+
bool: True if the path exists and is accessible, False otherwise
|
|
536
|
+
|
|
537
|
+
Raises:
|
|
538
|
+
ValueError: If the path doesn't exist or isn't accessible
|
|
539
|
+
"""
|
|
540
|
+
if not path:
|
|
541
|
+
raise ValueError(f"{log_identifier} Filesystem path is empty or None")
|
|
542
|
+
|
|
543
|
+
if not os.path.exists(path):
|
|
544
|
+
raise ValueError(f"{log_identifier} Filesystem path does not exist: {path}")
|
|
545
|
+
|
|
546
|
+
if not os.path.isdir(path):
|
|
547
|
+
raise ValueError(f"{log_identifier} Filesystem path is not a directory: {path}")
|
|
548
|
+
|
|
549
|
+
# Check if the directory is readable and writable
|
|
550
|
+
if not os.access(path, os.R_OK | os.W_OK):
|
|
551
|
+
raise ValueError(f"{log_identifier} Filesystem path is not readable and writable: {path}")
|
|
552
|
+
|
|
553
|
+
return True
|
|
554
|
+
|
|
509
555
|
async def _load_mcp_tool(component: "SamAgentComponent", tool_config: Dict) -> ToolLoadingResult:
|
|
510
556
|
"""Loads an MCP toolset based on connection parameters."""
|
|
511
557
|
from pydantic import TypeAdapter
|
|
@@ -553,6 +599,31 @@ async def _load_mcp_tool(component: "SamAgentComponent", tool_config: Dict) -> T
|
|
|
553
599
|
raise ValueError(
|
|
554
600
|
f"MCP tool 'args' parameter must be a list, got {type(args_list)}"
|
|
555
601
|
)
|
|
602
|
+
|
|
603
|
+
# Check if this is the filesystem MCP server
|
|
604
|
+
if args_list and any("@modelcontextprotocol/server-filesystem" in arg for arg in args_list):
|
|
605
|
+
# Find the index of the server-filesystem argument
|
|
606
|
+
server_fs_index = -1
|
|
607
|
+
for i, arg in enumerate(args_list):
|
|
608
|
+
if "@modelcontextprotocol/server-filesystem" in arg:
|
|
609
|
+
server_fs_index = i
|
|
610
|
+
break
|
|
611
|
+
|
|
612
|
+
# All arguments after server-filesystem are directory paths
|
|
613
|
+
if server_fs_index >= 0 and server_fs_index + 1 < len(args_list):
|
|
614
|
+
directory_paths = args_list[server_fs_index + 1:]
|
|
615
|
+
|
|
616
|
+
for path in directory_paths:
|
|
617
|
+
try:
|
|
618
|
+
validate_filesystem_path(path, log_identifier=component.log_identifier)
|
|
619
|
+
log.info(
|
|
620
|
+
"%s Validated filesystem path for MCP server: %s",
|
|
621
|
+
component.log_identifier,
|
|
622
|
+
path
|
|
623
|
+
)
|
|
624
|
+
except ValueError as e:
|
|
625
|
+
log.error("%s", str(e))
|
|
626
|
+
raise ValueError(f"MCP filesystem server path validation failed: {e}")
|
|
556
627
|
final_connection_args = {
|
|
557
628
|
k: v
|
|
558
629
|
for k, v in connection_args.items()
|
|
@@ -575,32 +646,153 @@ async def _load_mcp_tool(component: "SamAgentComponent", tool_config: Dict) -> T
|
|
|
575
646
|
else:
|
|
576
647
|
raise ValueError(f"Unsupported MCP connection type: {connection_type}")
|
|
577
648
|
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
649
|
+
# Determine tool filter based on configuration
|
|
650
|
+
# tool_name, allow_list, and deny_list are mutually exclusive (validated by pydantic)
|
|
651
|
+
tool_filter = None
|
|
652
|
+
filter_description = "none (all tools)"
|
|
653
|
+
|
|
654
|
+
if tool_config_model.tool_name:
|
|
655
|
+
# Backward compatible: single tool name becomes a list
|
|
656
|
+
tool_filter = [tool_config_model.tool_name]
|
|
657
|
+
filter_description = f"tool_name='{tool_config_model.tool_name}'"
|
|
658
|
+
elif tool_config_model.allow_list:
|
|
659
|
+
# Allow list: pass directly as list of tool names
|
|
660
|
+
tool_filter = tool_config_model.allow_list
|
|
661
|
+
filter_description = f"allow_list={tool_config_model.allow_list}"
|
|
662
|
+
elif tool_config_model.deny_list:
|
|
663
|
+
# Deny list: create a ToolPredicate that excludes these tools
|
|
664
|
+
deny_set = set(tool_config_model.deny_list)
|
|
665
|
+
tool_filter = lambda tool, ctx=None, _deny=deny_set: tool.name not in _deny
|
|
666
|
+
filter_description = f"deny_list={tool_config_model.deny_list}"
|
|
667
|
+
|
|
668
|
+
if tool_filter:
|
|
582
669
|
log.info(
|
|
583
|
-
"%s MCP tool config specifies
|
|
670
|
+
"%s MCP tool config specifies filter: %s",
|
|
584
671
|
component.log_identifier,
|
|
585
|
-
|
|
672
|
+
filter_description,
|
|
586
673
|
)
|
|
587
674
|
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
675
|
+
additional_params = {}
|
|
676
|
+
try:
|
|
677
|
+
from solace_agent_mesh_enterprise.auth.tool_configurator import (
|
|
678
|
+
configure_mcp_tool,
|
|
679
|
+
)
|
|
680
|
+
|
|
681
|
+
try:
|
|
682
|
+
# Call the tool configurator with MCP-specific context
|
|
683
|
+
additional_params = configure_mcp_tool(
|
|
684
|
+
tool_type="mcp",
|
|
685
|
+
tool_config=tool_config,
|
|
686
|
+
connection_params=connection_params,
|
|
687
|
+
tool_filter=tool_filter,
|
|
688
|
+
)
|
|
689
|
+
except Exception as e:
|
|
690
|
+
log.error(
|
|
691
|
+
"%s Tool configurator failed for %s: %s",
|
|
692
|
+
component.log_identifier,
|
|
693
|
+
tool_config.get("name", "unknown"),
|
|
694
|
+
e,
|
|
695
|
+
)
|
|
696
|
+
# Continue with normal tool creation if configurator fails
|
|
697
|
+
additional_params = {}
|
|
698
|
+
except ImportError:
|
|
699
|
+
pass
|
|
700
|
+
|
|
701
|
+
# Create the EmbedResolvingMCPToolset with base parameters
|
|
702
|
+
toolset_params = {
|
|
703
|
+
"connection_params": connection_params,
|
|
704
|
+
"tool_filter": tool_filter,
|
|
705
|
+
"tool_name_prefix": tool_config_model.tool_name_prefix,
|
|
706
|
+
"tool_config": tool_config,
|
|
707
|
+
}
|
|
708
|
+
|
|
709
|
+
# Merge additional parameters from configurator
|
|
710
|
+
toolset_params.update(additional_params)
|
|
711
|
+
|
|
712
|
+
mcp_toolset_instance = EmbedResolvingMCPToolset(**toolset_params)
|
|
593
713
|
mcp_toolset_instance.origin = "mcp"
|
|
594
714
|
|
|
595
715
|
log.info(
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
716
|
+
"%s Initialized MCPToolset (filter: %s) for server: %s",
|
|
717
|
+
component.log_identifier,
|
|
718
|
+
filter_description,
|
|
719
|
+
connection_params,
|
|
600
720
|
)
|
|
601
721
|
|
|
602
722
|
return [mcp_toolset_instance], [], []
|
|
603
723
|
|
|
724
|
+
|
|
725
|
+
async def _load_openapi_tool(component: "SamAgentComponent", tool_config: Dict) -> ToolLoadingResult:
|
|
726
|
+
"""
|
|
727
|
+
Loads an OpenAPI toolset by delegating to the enterprise configurator.
|
|
728
|
+
|
|
729
|
+
This function validates the tool configuration and attempts to load the OpenAPI tool
|
|
730
|
+
using the enterprise package. If the enterprise package is not available, it logs a
|
|
731
|
+
warning and returns empty results.
|
|
732
|
+
|
|
733
|
+
Args:
|
|
734
|
+
component: The SamAgentComponent instance
|
|
735
|
+
tool_config: Dictionary containing the tool's configuration
|
|
736
|
+
|
|
737
|
+
Returns:
|
|
738
|
+
ToolLoadingResult: Tuple of (tools, builtins, cleanup_hooks)
|
|
739
|
+
Returns ([], [], []) if enterprise package not available
|
|
740
|
+
"""
|
|
741
|
+
from pydantic import TypeAdapter
|
|
742
|
+
|
|
743
|
+
from ..tools.tool_config_types import OpenApiToolConfig
|
|
744
|
+
|
|
745
|
+
# Validate basic tool configuration structure
|
|
746
|
+
openapi_tool_adapter = TypeAdapter(OpenApiToolConfig)
|
|
747
|
+
try:
|
|
748
|
+
tool_config_model = openapi_tool_adapter.validate_python(tool_config)
|
|
749
|
+
except Exception as e:
|
|
750
|
+
log.error(
|
|
751
|
+
"%s Invalid OpenAPI tool configuration: %s",
|
|
752
|
+
component.log_identifier,
|
|
753
|
+
e,
|
|
754
|
+
)
|
|
755
|
+
raise
|
|
756
|
+
|
|
757
|
+
# Try to load the tool using the enterprise configurator
|
|
758
|
+
try:
|
|
759
|
+
from solace_agent_mesh_enterprise.auth.tool_configurator import (
|
|
760
|
+
configure_openapi_tool,
|
|
761
|
+
)
|
|
762
|
+
|
|
763
|
+
try:
|
|
764
|
+
openapi_toolset = configure_openapi_tool(
|
|
765
|
+
tool_type="openapi",
|
|
766
|
+
tool_config=tool_config,
|
|
767
|
+
)
|
|
768
|
+
openapi_toolset.origin = "openapi"
|
|
769
|
+
|
|
770
|
+
log.info(
|
|
771
|
+
"%s Loaded OpenAPI toolset via enterprise configurator",
|
|
772
|
+
component.log_identifier,
|
|
773
|
+
)
|
|
774
|
+
|
|
775
|
+
return [openapi_toolset], [], []
|
|
776
|
+
|
|
777
|
+
except Exception as e:
|
|
778
|
+
log.error(
|
|
779
|
+
"%s Failed to create OpenAPI tool %s: %s",
|
|
780
|
+
component.log_identifier,
|
|
781
|
+
tool_config.get("name", "unknown"),
|
|
782
|
+
e,
|
|
783
|
+
)
|
|
784
|
+
raise
|
|
785
|
+
|
|
786
|
+
except ImportError:
|
|
787
|
+
log.warning(
|
|
788
|
+
"%s OpenAPI tools require the solace-agent-mesh-enterprise package. "
|
|
789
|
+
"Skipping tool configuration: %s",
|
|
790
|
+
component.log_identifier,
|
|
791
|
+
tool_config.get("name", "unknown"),
|
|
792
|
+
)
|
|
793
|
+
return [], [], []
|
|
794
|
+
|
|
795
|
+
|
|
604
796
|
def _load_internal_tools(component: "SamAgentComponent", loaded_tool_names: Set[str]) -> ToolLoadingResult:
|
|
605
797
|
"""Loads internal framework tools that are not explicitly configured by the user."""
|
|
606
798
|
loaded_tools: List[Union[BaseTool, Callable]] = []
|
|
@@ -722,6 +914,12 @@ async def load_adk_tools(
|
|
|
722
914
|
new_builtins,
|
|
723
915
|
new_cleanups,
|
|
724
916
|
) = await _load_mcp_tool(component, tool_config)
|
|
917
|
+
elif tool_type == "openapi":
|
|
918
|
+
(
|
|
919
|
+
new_tools,
|
|
920
|
+
new_builtins,
|
|
921
|
+
new_cleanups,
|
|
922
|
+
) = await _load_openapi_tool(component, tool_config)
|
|
725
923
|
else:
|
|
726
924
|
log.warning(
|
|
727
925
|
"%s Unknown tool type '%s' in config: %s",
|
|
@@ -734,19 +932,7 @@ async def load_adk_tools(
|
|
|
734
932
|
for tool in new_tools:
|
|
735
933
|
if isinstance(tool, EmbedResolvingMCPToolset):
|
|
736
934
|
# Special handling for MCPToolset which can load multiple tools
|
|
737
|
-
|
|
738
|
-
mcp_tools = await tool.get_tools()
|
|
739
|
-
for mcp_tool in mcp_tools:
|
|
740
|
-
_check_and_register_tool_name(
|
|
741
|
-
mcp_tool.name, "mcp", loaded_tool_names
|
|
742
|
-
)
|
|
743
|
-
except Exception as e:
|
|
744
|
-
log.error(
|
|
745
|
-
"%s Failed to discover tools from MCP server for name registration: %s",
|
|
746
|
-
component.log_identifier,
|
|
747
|
-
str(e),
|
|
748
|
-
)
|
|
749
|
-
raise
|
|
935
|
+
await _check_and_register_tool_name_mcp(component, loaded_tool_names, tool)
|
|
750
936
|
else:
|
|
751
937
|
tool_name = getattr(
|
|
752
938
|
tool, "name", getattr(tool, "__name__", None)
|
|
@@ -790,6 +976,25 @@ async def load_adk_tools(
|
|
|
790
976
|
return loaded_tools, enabled_builtin_tools, cleanup_hooks
|
|
791
977
|
|
|
792
978
|
|
|
979
|
+
async def _check_and_register_tool_name_mcp(component, loaded_tool_names: set[str], tool: EmbedResolvingMCPToolset):
|
|
980
|
+
try:
|
|
981
|
+
mcp_tools: list[MCPTool] = await tool.get_tools()
|
|
982
|
+
for mcp_tool in mcp_tools:
|
|
983
|
+
toolname = mcp_tool.name
|
|
984
|
+
if tool.tool_name_prefix != None:
|
|
985
|
+
toolname = f"{tool.tool_name_prefix}_{toolname}"
|
|
986
|
+
_check_and_register_tool_name(
|
|
987
|
+
toolname, "mcp", loaded_tool_names
|
|
988
|
+
)
|
|
989
|
+
except Exception as e:
|
|
990
|
+
log.error(
|
|
991
|
+
"%s Failed to discover tools from MCP server for name registration: %s",
|
|
992
|
+
component.log_identifier,
|
|
993
|
+
str(e),
|
|
994
|
+
)
|
|
995
|
+
raise
|
|
996
|
+
|
|
997
|
+
|
|
793
998
|
def initialize_adk_agent(
|
|
794
999
|
component,
|
|
795
1000
|
loaded_explicit_tools: List[Union[BaseTool, Callable]],
|
|
@@ -891,7 +1096,7 @@ def initialize_adk_agent(
|
|
|
891
1096
|
callbacks_in_order_for_before_model.append(
|
|
892
1097
|
adk_callbacks.repair_history_callback
|
|
893
1098
|
)
|
|
894
|
-
log.
|
|
1099
|
+
log.debug(
|
|
895
1100
|
"%s Added repair_history_callback to before_model chain.",
|
|
896
1101
|
component.log_identifier,
|
|
897
1102
|
)
|
|
@@ -900,7 +1105,7 @@ def initialize_adk_agent(
|
|
|
900
1105
|
callbacks_in_order_for_before_model.append(
|
|
901
1106
|
component._inject_peer_tools_callback
|
|
902
1107
|
)
|
|
903
|
-
log.
|
|
1108
|
+
log.debug(
|
|
904
1109
|
"%s Added _inject_peer_tools_callback to before_model chain.",
|
|
905
1110
|
component.log_identifier,
|
|
906
1111
|
)
|
|
@@ -909,7 +1114,7 @@ def initialize_adk_agent(
|
|
|
909
1114
|
callbacks_in_order_for_before_model.append(
|
|
910
1115
|
component._filter_tools_by_capability_callback
|
|
911
1116
|
)
|
|
912
|
-
log.
|
|
1117
|
+
log.debug(
|
|
913
1118
|
"%s Added _filter_tools_by_capability_callback to before_model chain.",
|
|
914
1119
|
component.log_identifier,
|
|
915
1120
|
)
|
|
@@ -917,7 +1122,7 @@ def initialize_adk_agent(
|
|
|
917
1122
|
callbacks_in_order_for_before_model.append(
|
|
918
1123
|
component._inject_gateway_instructions_callback
|
|
919
1124
|
)
|
|
920
|
-
log.
|
|
1125
|
+
log.debug(
|
|
921
1126
|
"%s Added _inject_gateway_instructions_callback to before_model chain.",
|
|
922
1127
|
component.log_identifier,
|
|
923
1128
|
)
|
|
@@ -930,7 +1135,7 @@ def initialize_adk_agent(
|
|
|
930
1135
|
callbacks_in_order_for_before_model.append(
|
|
931
1136
|
dynamic_instruction_callback_with_component
|
|
932
1137
|
)
|
|
933
|
-
log.
|
|
1138
|
+
log.debug(
|
|
934
1139
|
"%s Added inject_dynamic_instructions_callback to before_model chain.",
|
|
935
1140
|
component.log_identifier,
|
|
936
1141
|
)
|
|
@@ -957,7 +1162,7 @@ def initialize_adk_agent(
|
|
|
957
1162
|
return None
|
|
958
1163
|
|
|
959
1164
|
agent.before_model_callback = final_before_model_wrapper
|
|
960
|
-
log.
|
|
1165
|
+
log.debug(
|
|
961
1166
|
"%s Final before_model_callback chain (Solace logging now occurs last) assigned to agent.",
|
|
962
1167
|
component.log_identifier,
|
|
963
1168
|
)
|
|
@@ -967,7 +1172,7 @@ def initialize_adk_agent(
|
|
|
967
1172
|
host_component=component,
|
|
968
1173
|
)
|
|
969
1174
|
agent.before_tool_callback = tool_invocation_start_cb_with_component
|
|
970
|
-
log.
|
|
1175
|
+
log.debug(
|
|
971
1176
|
"%s Assigned notify_tool_invocation_start_callback as before_tool_callback.",
|
|
972
1177
|
component.log_identifier,
|
|
973
1178
|
)
|
|
@@ -1053,7 +1258,7 @@ def initialize_adk_agent(
|
|
|
1053
1258
|
return tool_response
|
|
1054
1259
|
|
|
1055
1260
|
agent.after_tool_callback = chained_after_tool_callback
|
|
1056
|
-
log.
|
|
1261
|
+
log.debug(
|
|
1057
1262
|
"%s Chained 'manage_large_mcp_tool_responses_callback' and 'after_tool_callback_inject_metadata' as after_tool_callback.",
|
|
1058
1263
|
component.log_identifier,
|
|
1059
1264
|
)
|
|
@@ -1062,33 +1267,43 @@ def initialize_adk_agent(
|
|
|
1062
1267
|
# The callbacks are executed in the order they are added to this list.
|
|
1063
1268
|
callbacks_in_order_for_after_model = []
|
|
1064
1269
|
|
|
1065
|
-
# 1.
|
|
1270
|
+
# 1. Pre-register long-running tools (must run BEFORE tool execution)
|
|
1271
|
+
preregister_cb = functools.partial(
|
|
1272
|
+
adk_callbacks.preregister_long_running_tools_callback, host_component=component
|
|
1273
|
+
)
|
|
1274
|
+
callbacks_in_order_for_after_model.append(preregister_cb)
|
|
1275
|
+
log.debug(
|
|
1276
|
+
"%s Added preregister_long_running_tools_callback to after_model chain.",
|
|
1277
|
+
component.log_identifier,
|
|
1278
|
+
)
|
|
1279
|
+
|
|
1280
|
+
# 2. Fenced Artifact Block Processing (must run before auto-continue)
|
|
1066
1281
|
artifact_block_cb = functools.partial(
|
|
1067
1282
|
adk_callbacks.process_artifact_blocks_callback, host_component=component
|
|
1068
1283
|
)
|
|
1069
1284
|
callbacks_in_order_for_after_model.append(artifact_block_cb)
|
|
1070
|
-
log.
|
|
1285
|
+
log.debug(
|
|
1071
1286
|
"%s Added process_artifact_blocks_callback to after_model chain.",
|
|
1072
1287
|
component.log_identifier,
|
|
1073
1288
|
)
|
|
1074
1289
|
|
|
1075
|
-
#
|
|
1290
|
+
# 3. Auto-Continuation (may short-circuit the chain)
|
|
1076
1291
|
auto_continue_cb = functools.partial(
|
|
1077
1292
|
adk_callbacks.auto_continue_on_max_tokens_callback, host_component=component
|
|
1078
1293
|
)
|
|
1079
1294
|
callbacks_in_order_for_after_model.append(auto_continue_cb)
|
|
1080
|
-
log.
|
|
1295
|
+
log.debug(
|
|
1081
1296
|
"%s Added auto_continue_on_max_tokens_callback to after_model chain.",
|
|
1082
1297
|
component.log_identifier,
|
|
1083
1298
|
)
|
|
1084
1299
|
|
|
1085
|
-
#
|
|
1300
|
+
# 4. Solace LLM Response Logging
|
|
1086
1301
|
solace_llm_response_cb = functools.partial(
|
|
1087
1302
|
adk_callbacks.solace_llm_response_callback, host_component=component
|
|
1088
1303
|
)
|
|
1089
1304
|
callbacks_in_order_for_after_model.append(solace_llm_response_cb)
|
|
1090
1305
|
|
|
1091
|
-
#
|
|
1306
|
+
# 5. Chunk Logging
|
|
1092
1307
|
log_chunk_cb = functools.partial(
|
|
1093
1308
|
adk_callbacks.log_streaming_chunk_callback, host_component=component
|
|
1094
1309
|
)
|
|
@@ -1110,7 +1325,7 @@ def initialize_adk_agent(
|
|
|
1110
1325
|
return None
|
|
1111
1326
|
|
|
1112
1327
|
agent.after_model_callback = final_after_model_wrapper
|
|
1113
|
-
log.
|
|
1328
|
+
log.debug(
|
|
1114
1329
|
"%s Chained all after_model_callbacks and assigned to agent.",
|
|
1115
1330
|
component.log_identifier,
|
|
1116
1331
|
)
|
|
@@ -1157,6 +1372,7 @@ def initialize_adk_runner(component) -> Runner:
|
|
|
1157
1372
|
session_service=component.session_service,
|
|
1158
1373
|
artifact_service=component.artifact_service,
|
|
1159
1374
|
memory_service=component.memory_service,
|
|
1375
|
+
credential_service=component.credential_service,
|
|
1160
1376
|
)
|
|
1161
1377
|
log.info("%s ADK Runner created successfully.", component.log_identifier)
|
|
1162
1378
|
return runner
|