solace-agent-mesh 1.7.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/artifacts/filesystem_artifact_service.py +164 -0
- solace_agent_mesh/agent/adk/artifacts/s3_artifact_service.py +163 -0
- solace_agent_mesh/agent/adk/callbacks.py +752 -127
- solace_agent_mesh/agent/adk/embed_resolving_mcp_toolset.py +99 -7
- 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 +34 -16
- solace_agent_mesh/agent/adk/models/oauth2_token_manager.py +24 -137
- solace_agent_mesh/agent/adk/runner.py +66 -8
- solace_agent_mesh/agent/adk/schema_migration.py +88 -0
- solace_agent_mesh/agent/adk/services.py +41 -1
- solace_agent_mesh/agent/adk/setup.py +220 -32
- solace_agent_mesh/agent/adk/stream_parser.py +229 -40
- solace_agent_mesh/agent/protocol/event_handlers.py +219 -33
- 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/component.py +188 -22
- solace_agent_mesh/agent/proxies/base/proxy_task_context.py +3 -1
- solace_agent_mesh/agent/sac/app.py +37 -12
- solace_agent_mesh/agent/sac/component.py +322 -52
- solace_agent_mesh/agent/sac/patch_adk.py +8 -16
- solace_agent_mesh/agent/sac/task_execution_context.py +90 -0
- 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 +698 -24
- solace_agent_mesh/agent/tools/deep_research_tools.py +2161 -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 +54 -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 +243 -5
- 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/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/64195356.09dbd087.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/66d4869e.30340bd3.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6aaedf65.7253541d.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6d84eae0.fd23ba4a.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/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/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/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/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 +75 -75
- 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 +98 -112
- 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 -28
- solace_agent_mesh/assets/docs/docs/documentation/deploying/deployment-options/index.html +29 -29
- 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 +67 -53
- solace_agent_mesh/assets/docs/docs/documentation/deploying/observability/index.html +17 -17
- 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 +87 -87
- 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 +50 -23
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/connectors/index.html +29 -24
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/index.html +21 -21
- 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 +96 -66
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/secure-user-delegated-access/index.html +181 -181
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/single-sign-on/index.html +75 -75
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/wheel-installation/index.html +27 -27
- 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 -38
- 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 +135 -114
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/configurations/index.html +37 -37
- 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 +112 -112
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/user-feedback/index.html +28 -28
- 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/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-tcIFZLis.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-CINwxvwV.js → vendor-CGk8Suyh.js} +189 -94
- 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/types.py +1 -1
- solace_agent_mesh/common/agent_registry.py +38 -11
- solace_agent_mesh/common/data_parts.py +124 -0
- 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 +73 -1
- solace_agent_mesh/common/sam_events/event_service.py +2 -2
- solace_agent_mesh/common/utils/embeds/converter.py +1 -8
- solace_agent_mesh/common/utils/embeds/modifiers.py +2 -27
- solace_agent_mesh/common/utils/embeds/resolver.py +94 -25
- solace_agent_mesh/common/utils/embeds/types.py +1 -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/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/base.py +28 -1
- solace_agent_mesh/gateway/adapter/types.py +9 -0
- solace_agent_mesh/gateway/base/app.py +10 -0
- solace_agent_mesh/gateway/base/auth_interface.py +103 -0
- solace_agent_mesh/gateway/base/component.py +451 -10
- solace_agent_mesh/gateway/generic/component.py +274 -30
- solace_agent_mesh/gateway/http_sse/alembic/env.py +0 -7
- solace_agent_mesh/gateway/http_sse/alembic/versions/20251023_add_soft_delete_and_search.py +2 -43
- solace_agent_mesh/gateway/http_sse/alembic/versions/20251024_add_default_agent_to_projects.py +2 -2
- 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 +23 -6
- solace_agent_mesh/gateway/http_sse/component.py +158 -73
- solace_agent_mesh/gateway/http_sse/dependencies.py +50 -57
- solace_agent_mesh/gateway/http_sse/main.py +58 -482
- solace_agent_mesh/gateway/http_sse/repository/chat_task_repository.py +2 -2
- solace_agent_mesh/gateway/http_sse/repository/entities/project.py +1 -1
- solace_agent_mesh/gateway/http_sse/repository/entities/project_user.py +1 -1
- solace_agent_mesh/gateway/http_sse/repository/entities/session.py +3 -2
- solace_agent_mesh/gateway/http_sse/repository/entities/task.py +7 -0
- solace_agent_mesh/gateway/http_sse/repository/feedback_repository.py +2 -2
- solace_agent_mesh/gateway/http_sse/repository/interfaces.py +2 -2
- solace_agent_mesh/gateway/http_sse/repository/models/__init__.py +5 -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 +1 -1
- solace_agent_mesh/gateway/http_sse/repository/models/task_model.py +8 -1
- solace_agent_mesh/gateway/http_sse/repository/project_repository.py +1 -1
- solace_agent_mesh/gateway/http_sse/repository/project_user_repository.py +1 -1
- solace_agent_mesh/gateway/http_sse/repository/session_repository.py +12 -107
- 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 +113 -7
- solace_agent_mesh/gateway/http_sse/routers/auth.py +69 -132
- solace_agent_mesh/gateway/http_sse/routers/config.py +235 -10
- 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/session_requests.py +1 -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 +1 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/responses/session_responses.py +3 -2
- solace_agent_mesh/gateway/http_sse/routers/dto/responses/version_responses.py +31 -0
- solace_agent_mesh/gateway/http_sse/routers/feedback.py +2 -2
- solace_agent_mesh/gateway/http_sse/routers/people.py +2 -2
- solace_agent_mesh/gateway/http_sse/routers/projects.py +250 -24
- solace_agent_mesh/gateway/http_sse/routers/prompts.py +1416 -0
- solace_agent_mesh/gateway/http_sse/routers/sessions.py +14 -5
- solace_agent_mesh/gateway/http_sse/routers/speech.py +355 -0
- solace_agent_mesh/gateway/http_sse/routers/sse.py +117 -4
- solace_agent_mesh/gateway/http_sse/routers/tasks.py +509 -149
- 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 +2 -1
- 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 +539 -12
- solace_agent_mesh/gateway/http_sse/services/prompt_builder_assistant.py +303 -0
- solace_agent_mesh/gateway/http_sse/services/session_service.py +198 -21
- solace_agent_mesh/gateway/http_sse/services/task_logger_service.py +354 -4
- solace_agent_mesh/gateway/http_sse/sse_manager.py +280 -169
- 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 +1 -1
- 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.7.1.dist-info → solace_agent_mesh-1.13.2.dist-info}/METADATA +29 -8
- {solace_agent_mesh-1.7.1.dist-info → solace_agent_mesh-1.13.2.dist-info}/RECORD +334 -313
- {solace_agent_mesh-1.7.1.dist-info → solace_agent_mesh-1.13.2.dist-info}/WHEEL +1 -1
- solace_agent_mesh/agent/adk/adk_llm.txt +0 -226
- 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 -189
- solace_agent_mesh/agent/agent_llm.txt +0 -369
- 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/proxies/a2a/a2a_llm.txt +0 -190
- solace_agent_mesh/agent/proxies/base/base_llm.txt +0 -148
- solace_agent_mesh/agent/proxies/proxies_llm.txt +0 -283
- 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 -58
- solace_agent_mesh/agent/testing/testing_llm_detail.txt +0 -68
- solace_agent_mesh/agent/tools/tools_llm.txt +0 -276
- solace_agent_mesh/agent/tools/tools_llm_detail.txt +0 -275
- solace_agent_mesh/agent/utils/utils_llm.txt +0 -152
- solace_agent_mesh/agent/utils/utils_llm_detail.txt +0 -149
- solace_agent_mesh/assets/docs/assets/js/05749d90.c70b2be9.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/15ba94aa.92fea363.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/15e40e79.36003774.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/17896441.a5e82f9b.js +0 -2
- solace_agent_mesh/assets/docs/assets/js/240a0364.c39f8388.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.e4870a49.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/3ff0015d.b63ee53a.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/547e15cc.2f7790c1.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/55b7b518.f2b1d1ba.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/5c2bd65f.45b32c2b.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/64195356.c498c4d0.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/66d4869e.830d443f.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/6d84eae0.4a5fbf39.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/8024126c.fa0e7186.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.09ed9234.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.245ae0ef.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/c93cbaa0.eaff365e.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/cbe2e9ea.f902fad8.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/db5d6442.3daf1696.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/e04b235d.c9c50c7b.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/e3d9abda.d11c67a7.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/e6f9706b.045d0fa1.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/e92d0134.3bda61dd.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/f284c35a.5099c51e.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/main.f213fe0c.js +0 -2
- solace_agent_mesh/assets/docs/assets/js/runtime~main.d9606d6a.js +0 -1
- solace_agent_mesh/assets/docs/docs/documentation/deploying/kubernetes-deployment/index.html +0 -47
- solace_agent_mesh/assets/docs/lunr-index-1762283454666.json +0 -1
- solace_agent_mesh/assets/docs/search-doc-1762283454666.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-CRYdKo2Q.js +0 -25
- solace_agent_mesh/client/webui/frontend/static/assets/main-CojeY_1w.css +0 -1
- solace_agent_mesh/client/webui/frontend/static/assets/main-ILja9MCG.js +0 -353
- solace_agent_mesh/common/a2a/a2a_llm.txt +0 -175
- solace_agent_mesh/common/a2a/a2a_llm_detail.txt +0 -193
- solace_agent_mesh/common/a2a_spec/a2a_spec_llm.txt +0 -445
- solace_agent_mesh/common/a2a_spec/a2a_spec_llm_detail.txt +0 -736
- solace_agent_mesh/common/a2a_spec/schemas/schemas_llm.txt +0 -330
- solace_agent_mesh/common/common_llm.txt +0 -230
- 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 -81
- solace_agent_mesh/common/services/services_llm.txt +0 -368
- 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 -335
- 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 -226
- solace_agent_mesh/gateway/base/base_llm_detail.txt +0 -235
- solace_agent_mesh/gateway/gateway_llm.txt +0 -369
- solace_agent_mesh/gateway/gateway_llm_detail.txt +0 -3885
- solace_agent_mesh/gateway/http_sse/alembic/alembic_llm.txt +0 -345
- solace_agent_mesh/gateway/http_sse/alembic/versions/20251023_add_fulltext_search_indexes.py +0 -92
- solace_agent_mesh/gateway/http_sse/alembic/versions/versions_llm.txt +0 -161
- 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 -221
- solace_agent_mesh/gateway/http_sse/repository/models/models_llm.txt +0 -257
- solace_agent_mesh/gateway/http_sse/repository/repository_llm.txt +0 -308
- solace_agent_mesh/gateway/http_sse/routers/dto/dto_llm.txt +0 -450
- solace_agent_mesh/gateway/http_sse/routers/dto/requests/requests_llm.txt +0 -133
- solace_agent_mesh/gateway/http_sse/routers/dto/responses/responses_llm.txt +0 -123
- solace_agent_mesh/gateway/http_sse/routers/routers_llm.txt +0 -312
- solace_agent_mesh/gateway/http_sse/services/services_llm.txt +0 -303
- solace_agent_mesh/gateway/http_sse/shared/__init__.py +0 -146
- solace_agent_mesh/gateway/http_sse/shared/shared_llm.txt +0 -319
- 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/assets/docs/assets/js/{main.f213fe0c.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.7.1.dist-info → solace_agent_mesh-1.13.2.dist-info}/entry_points.txt +0 -0
- {solace_agent_mesh-1.7.1.dist-info → solace_agent_mesh-1.13.2.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Exception types and handlers for consistent error handling.
|
|
3
|
+
|
|
4
|
+
Provides:
|
|
5
|
+
- Business exception types (ValidationError, EntityNotFoundError, etc.)
|
|
6
|
+
- FastAPI exception handlers
|
|
7
|
+
- Error DTOs for API responses
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
from .exceptions import (
|
|
11
|
+
WebUIBackendException,
|
|
12
|
+
ValidationError,
|
|
13
|
+
EntityNotFoundError,
|
|
14
|
+
EntityAlreadyExistsError,
|
|
15
|
+
BusinessRuleViolationError,
|
|
16
|
+
ConfigurationError,
|
|
17
|
+
DataIntegrityError,
|
|
18
|
+
ExternalServiceError,
|
|
19
|
+
EntityOperation,
|
|
20
|
+
)
|
|
21
|
+
from .exception_handlers import register_exception_handlers
|
|
22
|
+
from .error_dto import EventErrorDTO
|
|
23
|
+
|
|
24
|
+
__all__ = [
|
|
25
|
+
"WebUIBackendException",
|
|
26
|
+
"ValidationError",
|
|
27
|
+
"EntityNotFoundError",
|
|
28
|
+
"EntityAlreadyExistsError",
|
|
29
|
+
"BusinessRuleViolationError",
|
|
30
|
+
"ConfigurationError",
|
|
31
|
+
"DataIntegrityError",
|
|
32
|
+
"ExternalServiceError",
|
|
33
|
+
"EntityOperation",
|
|
34
|
+
"register_exception_handlers",
|
|
35
|
+
"EventErrorDTO",
|
|
36
|
+
]
|
|
@@ -193,7 +193,7 @@ def register_exception_handlers(app):
|
|
|
193
193
|
|
|
194
194
|
Example:
|
|
195
195
|
from fastapi import FastAPI
|
|
196
|
-
from solace_agent_mesh.
|
|
196
|
+
from solace_agent_mesh.shared.exceptions.exception_handlers import register_exception_handlers
|
|
197
197
|
|
|
198
198
|
app = FastAPI()
|
|
199
199
|
register_exception_handlers(app)
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"""
|
|
2
|
+
General utilities for common operations.
|
|
3
|
+
|
|
4
|
+
Provides:
|
|
5
|
+
- Timestamp utilities (epoch conversions, ISO8601 formatting)
|
|
6
|
+
- Enums
|
|
7
|
+
- Type definitions
|
|
8
|
+
- Generic helper functions
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
from .timestamp_utils import (
|
|
12
|
+
now_epoch_ms,
|
|
13
|
+
epoch_ms_to_iso8601,
|
|
14
|
+
iso8601_to_epoch_ms,
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
__all__ = [
|
|
18
|
+
"now_epoch_ms",
|
|
19
|
+
"epoch_ms_to_iso8601",
|
|
20
|
+
"iso8601_to_epoch_ms",
|
|
21
|
+
]
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
version: 1
|
|
2
|
+
disable_existing_loggers: false
|
|
3
|
+
|
|
4
|
+
formatters:
|
|
5
|
+
simpleFormatter:
|
|
6
|
+
format: "%(asctime)s | %(levelname)-5s | %(threadName)s | %(name)s | %(message)s"
|
|
7
|
+
|
|
8
|
+
coloredFormatter:
|
|
9
|
+
class: solace_ai_connector.logging.ColoredFormatter
|
|
10
|
+
format: "%(asctime)s | %(levelname)-5s | %(threadName)s | %(name)s | %(message)s"
|
|
11
|
+
|
|
12
|
+
jsonFormatter:
|
|
13
|
+
"()": pythonjsonlogger.json.JsonFormatter
|
|
14
|
+
format: "%(timestamp)s %(levelname)s %(threadName)s %(name)s %(message)s"
|
|
15
|
+
timestamp: "timestamp"
|
|
16
|
+
|
|
17
|
+
handlers:
|
|
18
|
+
streamHandler:
|
|
19
|
+
class: logging.StreamHandler
|
|
20
|
+
formatter: coloredFormatter
|
|
21
|
+
stream: ext://sys.stdout
|
|
22
|
+
|
|
23
|
+
rotatingFileHandler:
|
|
24
|
+
class: logging.handlers.RotatingFileHandler
|
|
25
|
+
formatter: simpleFormatter
|
|
26
|
+
filename: ${LOGGING_FILE_NAME, sam.log}
|
|
27
|
+
mode: a
|
|
28
|
+
maxBytes: 52428800
|
|
29
|
+
backupCount: 10
|
|
30
|
+
|
|
31
|
+
loggers:
|
|
32
|
+
solace_ai_connector:
|
|
33
|
+
level: ${LOGGING_SAC_LEVEL, INFO}
|
|
34
|
+
handlers: []
|
|
35
|
+
|
|
36
|
+
solace_agent_mesh:
|
|
37
|
+
level: ${LOGGING_SAM_LEVEL, INFO}
|
|
38
|
+
handlers: []
|
|
39
|
+
|
|
40
|
+
sam_trace:
|
|
41
|
+
level: ${LOGGING_SAM_TRACE_LEVEL, INFO}
|
|
42
|
+
handlers: []
|
|
43
|
+
|
|
44
|
+
root:
|
|
45
|
+
level: ${LOGGING_ROOT_LEVEL, WARNING}
|
|
46
|
+
handlers:
|
|
47
|
+
- streamHandler
|
|
48
|
+
- rotatingFileHandler
|
|
@@ -43,7 +43,18 @@ apps:
|
|
|
43
43
|
description: "__AGENT_CARD_DESCRIPTION__"
|
|
44
44
|
defaultInputModes: __DEFAULT_INPUT_MODES__
|
|
45
45
|
defaultOutputModes: __DEFAULT_OUTPUT_MODES__
|
|
46
|
-
skills:
|
|
46
|
+
skills:
|
|
47
|
+
- id: strategic_planning
|
|
48
|
+
name: Strategic Planning
|
|
49
|
+
description: Analyzes complex requests and creates structured execution plans, breaking down multi-step goals into logical sequences with clear checkpoints and progress tracking.
|
|
50
|
+
|
|
51
|
+
- id: agent_coordination
|
|
52
|
+
name: Agent Coordination
|
|
53
|
+
description: Identifies the most suitable specialized agents for specific tasks and coordinates multi-agent workflows, managing data handoffs and execution sequences to achieve complex objectives efficiently.
|
|
54
|
+
|
|
55
|
+
- id: artifact_management
|
|
56
|
+
name: Artifact Management
|
|
57
|
+
description: Creates, transforms, and manages various artifact types including documents, reports, and data files, with capabilities for content generation, formatting, embedding dynamic data, and applying sophisticated data transformations.
|
|
47
58
|
|
|
48
59
|
agent_card_publishing:
|
|
49
60
|
interval_seconds: __AGENT_CARD_PUBLISHING_INTERVAL__
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Platform Service Template for Solace Agent Mesh
|
|
2
|
+
# Provides agent management, deployments, connectors, and toolsets
|
|
3
|
+
|
|
4
|
+
log:
|
|
5
|
+
stdout_log_level: INFO
|
|
6
|
+
log_file_level: DEBUG
|
|
7
|
+
log_file: platform_service.log
|
|
8
|
+
|
|
9
|
+
# Shared SAM config (broker, models, etc.)
|
|
10
|
+
!include ../shared_config.yaml
|
|
11
|
+
|
|
12
|
+
apps:
|
|
13
|
+
- name: platform_service_app
|
|
14
|
+
app_base_path: .
|
|
15
|
+
app_module: solace_agent_mesh.services.platform.app
|
|
16
|
+
|
|
17
|
+
broker:
|
|
18
|
+
<<: *broker_connection
|
|
19
|
+
|
|
20
|
+
app_config:
|
|
21
|
+
# --- Required ---
|
|
22
|
+
namespace: ${NAMESPACE}
|
|
23
|
+
database_url: "${PLATFORM_DATABASE_URL, sqlite:///platform.db}"
|
|
24
|
+
|
|
25
|
+
# --- FastAPI Server Configuration ---
|
|
26
|
+
fastapi_host: ${PLATFORM_API_HOST, localhost}
|
|
27
|
+
fastapi_port: ${PLATFORM_API_PORT, 8001}
|
|
28
|
+
cors_allowed_origins:
|
|
29
|
+
- "http://localhost:3000"
|
|
30
|
+
- "http://127.0.0.1:3000"
|
|
31
|
+
- "http://localhost:8000"
|
|
32
|
+
|
|
33
|
+
# --- Message Size Configuration ---
|
|
34
|
+
max_message_size_bytes: ${MAX_MESSAGE_SIZE_BYTES, 10000000}
|
|
35
|
+
|
|
36
|
+
# --- OAuth2 Authentication ---
|
|
37
|
+
# Community mode: frontend_use_authorization=false (dev user)
|
|
38
|
+
# Enterprise mode: frontend_use_authorization=true (OAuth validation)
|
|
39
|
+
external_auth_service_url: ${EXTERNAL_AUTH_SERVICE_URL}
|
|
40
|
+
external_auth_provider: ${EXTERNAL_AUTH_PROVIDER, generic}
|
|
41
|
+
frontend_use_authorization: ${FRONTEND_USE_AUTHORIZATION, false}
|
|
42
|
+
|
|
43
|
+
# --- Background Task Configuration ---
|
|
44
|
+
# Deployment monitoring (enterprise feature)
|
|
45
|
+
deployment_timeout_minutes: ${DEPLOYMENT_TIMEOUT_MINUTES, 5}
|
|
46
|
+
deployment_check_interval_seconds: ${DEPLOYMENT_CHECK_INTERVAL, 60}
|
|
47
|
+
|
|
48
|
+
# Deployer heartbeat monitoring (enterprise feature)
|
|
49
|
+
heartbeat_timeout_seconds: ${HEARTBEAT_TIMEOUT_SECONDS, 90}
|
|
@@ -1,34 +1,12 @@
|
|
|
1
|
-
#
|
|
1
|
+
# __PLUGIN_PASCAL_CASE_NAME__ SAM Plugin
|
|
2
2
|
|
|
3
3
|
__PLUGIN_DESCRIPTION__
|
|
4
4
|
|
|
5
5
|
This is a plugin for Solace Agent Mesh (SAM).
|
|
6
6
|
|
|
7
|
-
##
|
|
8
|
-
|
|
9
|
-
The `config.yaml` in this plugin serves as a template. When you use `sam plugin add <component_name> --plugin __PLUGIN_KEBAB_CASE_NAME__`, the following placeholders in the YAML structure will be replaced with variations of `<component_name>`:
|
|
10
|
-
- `__COMPONENT_UPPER_SNAKE_CASE_NAME__`
|
|
11
|
-
- `__COMPONENT_KEBAB_CASE_NAME__`
|
|
12
|
-
- `__COMPONENT_PASCAL_CASE_NAME__`
|
|
13
|
-
|
|
14
|
-
Customize the `config.yaml` in this plugin directory to define the base configuration for components created from it.
|
|
15
|
-
|
|
16
|
-
## Source Code (`src/`)
|
|
17
|
-
The `src/` directory contains the Python source code for your plugin.
|
|
18
|
-
|
|
19
|
-
## Installation (as a developer of this plugin)
|
|
20
|
-
|
|
21
|
-
To build and install this plugin locally for testing:
|
|
22
|
-
```bash
|
|
23
|
-
sam plugin build
|
|
24
|
-
pip install dist/*.whl
|
|
25
|
-
```
|
|
26
|
-
(Or `pip install .` if preferred, `sam plugin build` is for creating the distributable wheel)
|
|
27
|
-
|
|
28
|
-
## Usage (as a user of this plugin)
|
|
7
|
+
## Installation
|
|
29
8
|
|
|
30
9
|
Once the plugin is installed (e.g., from PyPI or a local wheel file):
|
|
31
10
|
```bash
|
|
32
11
|
sam plugin add <your-new-component-name> --plugin __PLUGIN_KEBAB_CASE_NAME__
|
|
33
|
-
```
|
|
34
|
-
This will create a new component configuration at `configs/plugins/<your-new-component-name-kebab-case>.yaml`.
|
|
12
|
+
```
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# Plugin Metadata:
|
|
2
|
+
# Name: __PLUGIN_KEBAB_CASE_NAME__
|
|
3
|
+
# Version: __PLUGIN_VERSION__
|
|
4
|
+
# Description: __PLUGIN_DESCRIPTION__
|
|
5
|
+
# Author: __PLUGIN_AUTHOR_NAME__ <__PLUGIN_AUTHOR_EMAIL__>
|
|
6
|
+
#
|
|
7
|
+
# --- Start of Agent Configuration Template ---
|
|
8
|
+
# Solace Agent Mesh: Plugin Configuration Template
|
|
9
|
+
#
|
|
10
|
+
# This file serves as a template for creating new agent configurations from this plugin.
|
|
11
|
+
# Use placeholders like __COMPONENT_KEBAB_CASE_NAME__, __COMPONENT_PASCAL_CASE_NAME__,
|
|
12
|
+
# and __COMPONENT_UPPER_SNAKE_CASE_NAME__ where the specific component name should be inserted.
|
|
13
|
+
|
|
14
|
+
log:
|
|
15
|
+
stdout_log_level: INFO
|
|
16
|
+
log_file_level: DEBUG
|
|
17
|
+
log_file: __COMPONENT_KEBAB_CASE_NAME__.log
|
|
18
|
+
|
|
19
|
+
# To use the `shared_config.yaml` file, uncomment the following line and remove the `shared_config` section below.
|
|
20
|
+
# !include ../shared_config.yaml
|
|
21
|
+
shared_config:
|
|
22
|
+
- broker_connection: &broker_connection
|
|
23
|
+
dev_mode: ${SOLACE_DEV_MODE, false}
|
|
24
|
+
broker_url: ${SOLACE_BROKER_URL, ws://localhost:8008}
|
|
25
|
+
broker_username: ${SOLACE_BROKER_USERNAME, default}
|
|
26
|
+
broker_password: ${SOLACE_BROKER_PASSWORD, default}
|
|
27
|
+
broker_vpn: ${SOLACE_BROKER_VPN, default}
|
|
28
|
+
temporary_queue: ${USE_TEMPORARY_QUEUES, true}
|
|
29
|
+
|
|
30
|
+
- models:
|
|
31
|
+
general: &general_model
|
|
32
|
+
# This dictionary structure tells ADK to use the LiteLlm wrapper.
|
|
33
|
+
# 'model' uses the specific model identifier your endpoint expects.
|
|
34
|
+
model: ${LLM_SERVICE_GENERAL_MODEL_NAME} # Use env var for model name
|
|
35
|
+
# 'api_base' tells LiteLLM where to send the request.
|
|
36
|
+
api_base: ${LLM_SERVICE_ENDPOINT} # Use env var for endpoint URL
|
|
37
|
+
# 'api_key' provides authentication.
|
|
38
|
+
api_key: ${LLM_SERVICE_API_KEY} # Use env var for API key
|
|
39
|
+
|
|
40
|
+
- services:
|
|
41
|
+
# Default session service configuration
|
|
42
|
+
session_service: &default_session_service
|
|
43
|
+
type: "memory"
|
|
44
|
+
default_behavior: "PERSISTENT"
|
|
45
|
+
|
|
46
|
+
# Default artifact service configuration
|
|
47
|
+
artifact_service: &default_artifact_service
|
|
48
|
+
type: "filesystem"
|
|
49
|
+
base_path: "/tmp/samv2"
|
|
50
|
+
artifact_scope: namespace # Or "namespace", "app", "custom"
|
|
51
|
+
|
|
52
|
+
apps:
|
|
53
|
+
- name: __COMPONENT_KEBAB_CASE_NAME__-app
|
|
54
|
+
app_base_path: .
|
|
55
|
+
app_module: solace_agent_mesh.agent.sac.app
|
|
56
|
+
broker:
|
|
57
|
+
<<: *broker_connection
|
|
58
|
+
|
|
59
|
+
# App Level Config
|
|
60
|
+
app_config:
|
|
61
|
+
namespace: ${NAMESPACE}
|
|
62
|
+
supports_streaming: true
|
|
63
|
+
agent_name: "__COMPONENT_PASCAL_CASE_NAME__"
|
|
64
|
+
display_name: "__COMPONENT_SPACED_CAPITALIZED_NAME__ Agent"
|
|
65
|
+
model: *general_model
|
|
66
|
+
|
|
67
|
+
instruction: |
|
|
68
|
+
You're __COMPONENT_SPACED_CAPITALIZED_NAME__ agent.
|
|
69
|
+
Configure its specific instructions here.
|
|
70
|
+
|
|
71
|
+
tools:
|
|
72
|
+
- group_name: artifact_management
|
|
73
|
+
tool_type: builtin-group
|
|
74
|
+
|
|
75
|
+
# --- Example Python Tools (defined in tools.py) ---
|
|
76
|
+
# - tool_type: python
|
|
77
|
+
# component_module: __PLUGIN_SNAKE_CASE_NAME__.tools
|
|
78
|
+
# component_base_path: . # Relative to where the agent runs
|
|
79
|
+
# function_name: example_text_processor_tool
|
|
80
|
+
# tool_config:
|
|
81
|
+
# prefix: "PluginProcessed: "
|
|
82
|
+
|
|
83
|
+
# - tool_type: python
|
|
84
|
+
# component_module: __PLUGIN_SNAKE_CASE_NAME__.tools
|
|
85
|
+
# component_base_path: .
|
|
86
|
+
# function_name: example_file_creator_tool
|
|
87
|
+
# tool_config: {} # Add specific config if needed by the tool
|
|
88
|
+
|
|
89
|
+
session_service: *default_session_service
|
|
90
|
+
artifact_service: *default_artifact_service
|
|
91
|
+
|
|
92
|
+
artifact_handling_mode: "reference"
|
|
93
|
+
enable_embed_resolution: true
|
|
94
|
+
enable_artifact_content_instruction: true
|
|
95
|
+
|
|
96
|
+
agent_card:
|
|
97
|
+
description: "__PLUGIN_DESCRIPTION__"
|
|
98
|
+
defaultInputModes: ["text"]
|
|
99
|
+
defaultOutputModes: ["text"]
|
|
100
|
+
skills: [] # Remove brackets after adding entries
|
|
101
|
+
# - id: "example_tool"
|
|
102
|
+
# name: "Example Tool"
|
|
103
|
+
# description: "An example tool provided by the __PLUGIN_PASCAL_CASE_NAME__ plugin."
|
|
104
|
+
|
|
105
|
+
agent_card_publishing: { interval_seconds: 10 }
|
|
106
|
+
agent_discovery: { enabled: false }
|
|
107
|
+
inter_agent_communication:
|
|
108
|
+
allow_list: []
|
|
109
|
+
request_timeout_seconds: 30
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# A2A Proxy Configuration File
|
|
2
|
+
|
|
3
|
+
log:
|
|
4
|
+
stdout_log_level: INFO
|
|
5
|
+
log_file_level: DEBUG
|
|
6
|
+
log_file: a2a_proxy.log
|
|
7
|
+
|
|
8
|
+
# Shared SAM config (includes broker connection details)
|
|
9
|
+
!include ../shared_config.yaml
|
|
10
|
+
|
|
11
|
+
apps:
|
|
12
|
+
- name: "__PROXY_NAME____app"
|
|
13
|
+
app_base_path: .
|
|
14
|
+
app_module: solace_agent_mesh.agent.proxies.a2a.app
|
|
15
|
+
broker:
|
|
16
|
+
<<: *broker_connection
|
|
17
|
+
|
|
18
|
+
# --- App Level Config for the Proxy ---
|
|
19
|
+
app_config:
|
|
20
|
+
namespace: ${NAMESPACE}
|
|
21
|
+
|
|
22
|
+
# Configuration for the artifact service used by the proxy itself.
|
|
23
|
+
# When the proxy receives an artifact from a downstream agent, it will
|
|
24
|
+
# store it here before forwarding it on the Solace mesh.
|
|
25
|
+
artifact_service:
|
|
26
|
+
type: "filesystem"
|
|
27
|
+
base_path: "/tmp/samv2"
|
|
28
|
+
artifact_scope: namespace # Default scope, shares artifacts within the NAMESPACE
|
|
29
|
+
|
|
30
|
+
# How the proxy should handle artifacts it sends over Solace.
|
|
31
|
+
# 'reference': Sends an artifact:// URI.
|
|
32
|
+
# 'embed': Sends the full content base64 encoded.
|
|
33
|
+
artifact_handling_mode: "reference"
|
|
34
|
+
|
|
35
|
+
# Interval in seconds for the proxy to re-fetch agent cards from
|
|
36
|
+
# downstream agents. Set to 0 to disable periodic checks.
|
|
37
|
+
discovery_interval_seconds: 5
|
|
38
|
+
tools:
|
|
39
|
+
- group_name: artifact_management
|
|
40
|
+
tool_type: builtin-group
|
|
41
|
+
|
|
42
|
+
# --- List of Downstream Agents to Proxy ---
|
|
43
|
+
# A single proxy can manage multiple external agents.
|
|
44
|
+
# Each agent can have its own URL, authentication, and timeout settings.
|
|
45
|
+
proxied_agents:
|
|
46
|
+
# Example 1: A simple agent without authentication
|
|
47
|
+
- name: "HelloWorld" # The name this agent will have on the Solace mesh
|
|
48
|
+
url: "http://localhost:9999" # The real HTTP endpoint of the agent
|
|
49
|
+
|
|
50
|
+
# Example 2: Another agent without authentication
|
|
51
|
+
- name: "AnalysisAgent"
|
|
52
|
+
url: "http://127.0.0.1:10001"
|
|
53
|
+
|
|
54
|
+
# You can add more agents here with different configurations:
|
|
55
|
+
# - name: "SecureAgent"
|
|
56
|
+
# url: "https://api.example.com/agent"
|
|
57
|
+
# authentication:
|
|
58
|
+
# type: "static_bearer"
|
|
59
|
+
# token: "${SECURE_AGENT_TOKEN}"
|
|
60
|
+
# request_timeout_seconds: 180
|
|
61
|
+
# # use_agent_card_url: false # If true (default), uses URL from agent card for tasks.
|
|
62
|
+
# # If false, uses configured URL directly for all calls.
|
|
@@ -20,15 +20,25 @@ apps:
|
|
|
20
20
|
namespace: ${NAMESPACE}
|
|
21
21
|
session_secret_key: "${SESSION_SECRET_KEY}"
|
|
22
22
|
|
|
23
|
+
model: *general_model
|
|
23
24
|
artifact_service: *default_artifact_service
|
|
24
25
|
session_service: __SESSION_SERVICE__
|
|
25
26
|
gateway_id: ${WEBUI_GATEWAY_ID}
|
|
26
27
|
fastapi_host: ${FASTAPI_HOST}
|
|
27
|
-
fastapi_port: ${FASTAPI_PORT}
|
|
28
|
-
cors_allowed_origins:
|
|
29
|
-
- "http://localhost:3000"
|
|
28
|
+
fastapi_port: ${FASTAPI_PORT, 8000}
|
|
29
|
+
cors_allowed_origins:
|
|
30
|
+
- "http://localhost:3000"
|
|
30
31
|
- "http://127.0.0.1:3000"
|
|
31
32
|
|
|
33
|
+
# Platform Service Configuration (runs as second app in this template)
|
|
34
|
+
platform_service:
|
|
35
|
+
url: "${PLATFORM_SERVICE_URL, http://localhost:8001}"
|
|
36
|
+
|
|
37
|
+
# OAuth2 Authentication (Community: false, Enterprise: true)
|
|
38
|
+
external_auth_service_url: ${EXTERNAL_AUTH_SERVICE_URL}
|
|
39
|
+
external_auth_provider: ${EXTERNAL_AUTH_PROVIDER, generic}
|
|
40
|
+
frontend_use_authorization: ${FRONTEND_USE_AUTHORIZATION, false}
|
|
41
|
+
|
|
32
42
|
enable_embed_resolution: ${ENABLE_EMBED_RESOLUTION} # Enable late-stage resolution
|
|
33
43
|
gateway_artifact_content_limit_bytes: ${GATEWAY_ARTIFACT_LIMIT_BYTES, 10000000} # Max size for late-stage embeds
|
|
34
44
|
sse_max_queue_size: ${SSE_MAX_QUEUE_SIZE, 200} # Max size of SSE connection queues
|
|
@@ -46,6 +56,138 @@ apps:
|
|
|
46
56
|
Format responses to the user in Markdown using appropriate formatting.
|
|
47
57
|
|
|
48
58
|
# --- Frontend Config Passthrough ---
|
|
49
|
-
frontend_welcome_message:
|
|
50
|
-
frontend_bot_name:
|
|
51
|
-
frontend_collect_feedback:
|
|
59
|
+
frontend_welcome_message: __FRONTEND_WELCOME_MESSAGE__
|
|
60
|
+
frontend_bot_name: __FRONTEND_BOT_NAME__
|
|
61
|
+
frontend_collect_feedback: __FRONTEND_COLLECT_FEEDBACK__
|
|
62
|
+
frontend_logo_url: __FRONTEND_LOGO_URL__
|
|
63
|
+
|
|
64
|
+
task_logging:
|
|
65
|
+
enabled: true
|
|
66
|
+
log_status_updates: true
|
|
67
|
+
log_artifact_events: true
|
|
68
|
+
log_file_parts: true
|
|
69
|
+
max_file_part_size_bytes: 10240
|
|
70
|
+
|
|
71
|
+
# --- Frontend Feature Flags ---
|
|
72
|
+
# Uncomment to control speech features in the UI
|
|
73
|
+
frontend_feature_enablement:
|
|
74
|
+
# speechToText: true # Set to false to hide Speech-to-Text settings & microphone
|
|
75
|
+
# textToSpeech: true # Set to false to hide Text-to-Speech settings & speaker button
|
|
76
|
+
# projects: true
|
|
77
|
+
# promptLibrary: true
|
|
78
|
+
background_tasks: true # NOTE: task_logging must also be enabled for background tasks to work
|
|
79
|
+
|
|
80
|
+
# --- Background Tasks Configuration ---
|
|
81
|
+
background_tasks:
|
|
82
|
+
default_timeout_ms: 3600000 # Default: 1 hour (3600000ms)
|
|
83
|
+
|
|
84
|
+
# --- Speech Configuration (STT/TTS) ---
|
|
85
|
+
speech:
|
|
86
|
+
# stt:
|
|
87
|
+
# provider: openai
|
|
88
|
+
# url: "https://api.openai.com/v1/audio/transcriptions"
|
|
89
|
+
# api_key: "${OPENAI_API_KEY}"
|
|
90
|
+
# model: "whisper-1"
|
|
91
|
+
stt:
|
|
92
|
+
provider: azure
|
|
93
|
+
azure:
|
|
94
|
+
api_key: "${AZURE_SPEECH_KEY}"
|
|
95
|
+
region: "${AZURE_SPEECH_REGION}"
|
|
96
|
+
language: en-US
|
|
97
|
+
|
|
98
|
+
# Text-to-Speech Configuration
|
|
99
|
+
tts:
|
|
100
|
+
provider: ${TTS_PROVIDER, gemini} # "gemini", "azure", or "polly" (can be overridden by UI)
|
|
101
|
+
|
|
102
|
+
# Azure Neural Voices Configuration
|
|
103
|
+
azure:
|
|
104
|
+
api_key: "${AZURE_SPEECH_KEY}"
|
|
105
|
+
region: "${AZURE_SPEECH_REGION}"
|
|
106
|
+
default_voice: "en-US-Andrew:DragonHDLatestNeural"
|
|
107
|
+
voices:
|
|
108
|
+
# DragonHD Latest Neural Voices (Highest Quality)
|
|
109
|
+
- "en-US-Ava:DragonHDLatestNeural"
|
|
110
|
+
- "en-US-Ava3:DragonHDLatestNeural"
|
|
111
|
+
- "en-US-Adam:DragonHDLatestNeural"
|
|
112
|
+
- "en-US-Alloy:DragonHDLatestNeural"
|
|
113
|
+
- "en-US-Andrew:DragonHDLatestNeural"
|
|
114
|
+
- "en-US-Andrew2:DragonHDLatestNeural"
|
|
115
|
+
- "en-US-Andrew3:DragonHDLatestNeural"
|
|
116
|
+
- "en-US-Aria:DragonHDLatestNeural"
|
|
117
|
+
- "en-US-Brian:DragonHDLatestNeural"
|
|
118
|
+
- "en-US-Davis:DragonHDLatestNeural"
|
|
119
|
+
- "en-US-Emma:DragonHDLatestNeural"
|
|
120
|
+
- "en-US-Emma2:DragonHDLatestNeural"
|
|
121
|
+
- "en-US-Jenny:DragonHDLatestNeural"
|
|
122
|
+
- "en-US-MultiTalker-Ava-Andrew:DragonHDLatestNeural"
|
|
123
|
+
- "en-US-Nova:DragonHDLatestNeural"
|
|
124
|
+
- "en-US-Phoebe:DragonHDLatestNeural"
|
|
125
|
+
- "en-US-Serena:DragonHDLatestNeural"
|
|
126
|
+
- "en-US-Steffan:DragonHDLatestNeural"
|
|
127
|
+
# Standard Neural Voices
|
|
128
|
+
- "en-US-JennyNeural"
|
|
129
|
+
- "en-US-GuyNeural"
|
|
130
|
+
- "en-US-AriaNeural"
|
|
131
|
+
- "en-US-DavisNeural"
|
|
132
|
+
- "en-US-JaneNeural"
|
|
133
|
+
- "en-US-JasonNeural"
|
|
134
|
+
- "en-US-NancyNeural"
|
|
135
|
+
- "en-US-TonyNeural"
|
|
136
|
+
- "en-GB-LibbyNeural"
|
|
137
|
+
- "en-GB-RyanNeural"
|
|
138
|
+
- "en-GB-SoniaNeural"
|
|
139
|
+
- "en-AU-NatashaNeural"
|
|
140
|
+
- "en-AU-WilliamNeural"
|
|
141
|
+
|
|
142
|
+
# Google Gemini Configuration
|
|
143
|
+
gemini:
|
|
144
|
+
api_key: "${GEMINI_API_KEY}"
|
|
145
|
+
model: "gemini-2.5-flash-preview-tts"
|
|
146
|
+
default_voice: "Kore"
|
|
147
|
+
language: "en-US"
|
|
148
|
+
voices:
|
|
149
|
+
- "Kore"
|
|
150
|
+
- "Puck"
|
|
151
|
+
- "Zephyr"
|
|
152
|
+
- "Charon"
|
|
153
|
+
- "Fenrir"
|
|
154
|
+
- "Leda"
|
|
155
|
+
- "Aoede"
|
|
156
|
+
- "Callirhoe"
|
|
157
|
+
- "Umbriel"
|
|
158
|
+
- "Enceladus"
|
|
159
|
+
- "Iapetus"
|
|
160
|
+
- "Erinome"
|
|
161
|
+
- "Algieba"
|
|
162
|
+
- "Despina"
|
|
163
|
+
- "Algenib"
|
|
164
|
+
- "Achernar"
|
|
165
|
+
- "Schedar"
|
|
166
|
+
- "Gacrux"
|
|
167
|
+
- "Pulcherrima"
|
|
168
|
+
- "Achird"
|
|
169
|
+
- "Zubenelgenubi"
|
|
170
|
+
- "Vindemiatrix"
|
|
171
|
+
- "Sadachbia"
|
|
172
|
+
- "Sadaltager"
|
|
173
|
+
- "Sulafat"
|
|
174
|
+
- "Autonoe"
|
|
175
|
+
- "Laomedeia"
|
|
176
|
+
- "Orus"
|
|
177
|
+
- "Rasalgethi"
|
|
178
|
+
- "Alnilam"
|
|
179
|
+
|
|
180
|
+
# Frontend Speech Tab Default Settings (optional)
|
|
181
|
+
speechTab:
|
|
182
|
+
advancedMode: false
|
|
183
|
+
speechToText:
|
|
184
|
+
speechToText: true
|
|
185
|
+
engineSTT: "external" # Use external for better quality
|
|
186
|
+
languageSTT: "en-US"
|
|
187
|
+
textToSpeech:
|
|
188
|
+
textToSpeech: true
|
|
189
|
+
engineTTS: "external" # Use external for better quality
|
|
190
|
+
voice: "Kore"
|
|
191
|
+
playbackRate: 1.0
|
|
192
|
+
cacheTTS: true
|
|
193
|
+
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"""Web search tools for Solace Agent Mesh.
|
|
2
|
+
|
|
3
|
+
This module provides Google Search integration. For other search providers
|
|
4
|
+
(Exa, Brave, Tavily), please use the corresponding plugins from
|
|
5
|
+
solace-agent-mesh-plugins repository.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from .models import SearchSource, SearchResult, ImageResult
|
|
9
|
+
from .base import WebSearchTool
|
|
10
|
+
from .google_search import GoogleSearchTool
|
|
11
|
+
|
|
12
|
+
__all__ = [
|
|
13
|
+
"SearchSource",
|
|
14
|
+
"SearchResult",
|
|
15
|
+
"ImageResult",
|
|
16
|
+
"WebSearchTool",
|
|
17
|
+
"GoogleSearchTool",
|
|
18
|
+
]
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"""Base web search tool interface."""
|
|
2
|
+
|
|
3
|
+
from abc import ABC, abstractmethod
|
|
4
|
+
from typing import Literal, Optional
|
|
5
|
+
from .models import SearchResult
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class WebSearchTool(ABC):
|
|
9
|
+
"""Base class for web search tools."""
|
|
10
|
+
|
|
11
|
+
def __init__(self, api_key: Optional[str] = None, **kwargs):
|
|
12
|
+
"""Initialize the search tool.
|
|
13
|
+
|
|
14
|
+
Args:
|
|
15
|
+
api_key: API key for the search provider (if required)
|
|
16
|
+
**kwargs: Additional provider-specific configuration
|
|
17
|
+
"""
|
|
18
|
+
self.api_key = api_key
|
|
19
|
+
self.config = kwargs
|
|
20
|
+
|
|
21
|
+
@abstractmethod
|
|
22
|
+
async def search(
|
|
23
|
+
self,
|
|
24
|
+
query: str,
|
|
25
|
+
max_results: int = 5,
|
|
26
|
+
search_depth: Literal["basic", "advanced"] = "basic",
|
|
27
|
+
**kwargs
|
|
28
|
+
) -> SearchResult:
|
|
29
|
+
"""Execute a search query.
|
|
30
|
+
|
|
31
|
+
Args:
|
|
32
|
+
query: The search query string
|
|
33
|
+
max_results: Maximum number of results to return (1-10)
|
|
34
|
+
search_depth: Search depth - 'basic' for quick results, 'advanced' for comprehensive
|
|
35
|
+
**kwargs: Additional provider-specific parameters
|
|
36
|
+
|
|
37
|
+
Returns:
|
|
38
|
+
SearchResult object containing the search results
|
|
39
|
+
|
|
40
|
+
Raises:
|
|
41
|
+
Exception: If the search fails
|
|
42
|
+
"""
|
|
43
|
+
raise NotImplementedError("Subclasses must implement search()")
|
|
44
|
+
|
|
45
|
+
def get_tool_definition(self) -> dict:
|
|
46
|
+
"""Get the tool definition for LLM function calling.
|
|
47
|
+
|
|
48
|
+
Returns:
|
|
49
|
+
Dictionary containing the tool definition
|
|
50
|
+
"""
|
|
51
|
+
return {
|
|
52
|
+
"type": "function",
|
|
53
|
+
"function": {
|
|
54
|
+
"name": "web_search",
|
|
55
|
+
"description": (
|
|
56
|
+
"Search the web for current information. Use this when you need "
|
|
57
|
+
"up-to-date information, facts, news, or data that may not be in "
|
|
58
|
+
"your training data. Always cite sources using the citation format."
|
|
59
|
+
),
|
|
60
|
+
"parameters": {
|
|
61
|
+
"type": "object",
|
|
62
|
+
"properties": {
|
|
63
|
+
"query": {
|
|
64
|
+
"type": "string",
|
|
65
|
+
"description": "The search query"
|
|
66
|
+
},
|
|
67
|
+
"max_results": {
|
|
68
|
+
"type": "integer",
|
|
69
|
+
"description": "Maximum number of results (1-10)",
|
|
70
|
+
"minimum": 1,
|
|
71
|
+
"maximum": 10,
|
|
72
|
+
"default": 5
|
|
73
|
+
},
|
|
74
|
+
"search_depth": {
|
|
75
|
+
"type": "string",
|
|
76
|
+
"enum": ["basic", "advanced"],
|
|
77
|
+
"description": "Search depth: 'basic' for quick results, 'advanced' for comprehensive",
|
|
78
|
+
"default": "basic"
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
"required": ["query"]
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|