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
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import logging
|
|
1
2
|
import os
|
|
2
3
|
import sys
|
|
3
4
|
from pathlib import Path
|
|
@@ -7,6 +8,7 @@ from dotenv import find_dotenv, load_dotenv
|
|
|
7
8
|
|
|
8
9
|
from cli.utils import error_exit
|
|
9
10
|
from solace_agent_mesh.common.utils.initializer import initialize
|
|
11
|
+
from solace_ai_connector.common.logging_config import configure_from_file
|
|
10
12
|
|
|
11
13
|
|
|
12
14
|
def _execute_with_solace_ai_connector(config_file_paths: list[str]):
|
|
@@ -62,12 +64,28 @@ def run(files: tuple[str, ...], skip_files: tuple[str, ...], system_env: bool):
|
|
|
62
64
|
This command accepts paths to individual YAML files (`.yaml`, `.yml`) or directories.
|
|
63
65
|
When a directory is provided, it is recursively searched for YAML files.
|
|
64
66
|
"""
|
|
65
|
-
|
|
67
|
+
# Set up initial logging to root logger (will be overwritten by LOGGING_CONFIG_PATH if provided)
|
|
68
|
+
log = None
|
|
69
|
+
reset_logging = True
|
|
70
|
+
|
|
71
|
+
def _setup_backup_logger():
|
|
72
|
+
nonlocal log
|
|
73
|
+
if not log:
|
|
74
|
+
log = logging.getLogger()
|
|
75
|
+
handler = logging.StreamHandler(sys.stdout)
|
|
76
|
+
formatter = logging.Formatter(
|
|
77
|
+
"%(asctime)s - %(name)s - %(levelname)s - %(message)s"
|
|
78
|
+
)
|
|
79
|
+
handler.setFormatter(formatter)
|
|
80
|
+
log.addHandler(handler)
|
|
81
|
+
log.setLevel(logging.INFO)
|
|
82
|
+
return log
|
|
83
|
+
|
|
84
|
+
env_path = ""
|
|
66
85
|
|
|
67
86
|
if not system_env:
|
|
68
87
|
env_path = find_dotenv(usecwd=True)
|
|
69
88
|
if env_path:
|
|
70
|
-
click.echo(f"Loading environment variables from: {env_path}")
|
|
71
89
|
load_dotenv(dotenv_path=env_path, override=True)
|
|
72
90
|
|
|
73
91
|
# Resolve LOGGING_CONFIG_PATH to absolute path if it's relative
|
|
@@ -76,22 +94,24 @@ def run(files: tuple[str, ...], skip_files: tuple[str, ...], system_env: bool):
|
|
|
76
94
|
absolute_logging_path = os.path.abspath(logging_config_path)
|
|
77
95
|
os.environ["LOGGING_CONFIG_PATH"] = absolute_logging_path
|
|
78
96
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
except ImportError:
|
|
85
|
-
pass # solace_ai_connector might not be available yet
|
|
97
|
+
try:
|
|
98
|
+
if configure_from_file():
|
|
99
|
+
log = logging.getLogger(__name__)
|
|
100
|
+
log.info("Logging reconfigured from LOGGING_CONFIG_PATH")
|
|
101
|
+
reset_logging = False
|
|
86
102
|
else:
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
103
|
+
log = _setup_backup_logger()
|
|
104
|
+
except ImportError:
|
|
105
|
+
log = _setup_backup_logger() # solace_ai_connector might not be available yet
|
|
106
|
+
log.warning("Using backup logger; solace_ai_connector not available.")
|
|
107
|
+
|
|
108
|
+
if system_env:
|
|
109
|
+
log.warning("Skipping .env file loading due to --system-env flag.")
|
|
93
110
|
else:
|
|
94
|
-
|
|
111
|
+
if not env_path:
|
|
112
|
+
log.warning("Warning: .env file not found in the current directory or parent directories. Proceeding without loading .env.")
|
|
113
|
+
else:
|
|
114
|
+
log.info("Loaded environment variables from: %s", env_path)
|
|
95
115
|
|
|
96
116
|
# Run enterprise initialization if present
|
|
97
117
|
initialize()
|
|
@@ -101,16 +121,13 @@ def run(files: tuple[str, ...], skip_files: tuple[str, ...], system_env: bool):
|
|
|
101
121
|
configs_dir = project_root / "configs"
|
|
102
122
|
|
|
103
123
|
if not files:
|
|
104
|
-
|
|
105
|
-
|
|
124
|
+
log.info(
|
|
125
|
+
"No specific files provided. Discovering YAML files in %s...", configs_dir
|
|
106
126
|
)
|
|
107
127
|
if not configs_dir.is_dir():
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
fg="red",
|
|
112
|
-
),
|
|
113
|
-
err=True,
|
|
128
|
+
log.error(
|
|
129
|
+
"Error: Configuration directory '%s' not found. Please run 'init' first or provide specific config files.",
|
|
130
|
+
configs_dir
|
|
114
131
|
)
|
|
115
132
|
sys.exit(1)
|
|
116
133
|
|
|
@@ -118,8 +135,8 @@ def run(files: tuple[str, ...], skip_files: tuple[str, ...], system_env: bool):
|
|
|
118
135
|
if filepath.name.startswith("_") or filepath.name.startswith(
|
|
119
136
|
"shared_config"
|
|
120
137
|
):
|
|
121
|
-
|
|
122
|
-
|
|
138
|
+
log.info(
|
|
139
|
+
" Skipping discovery: %s (underscore prefix or shared_config)", filepath
|
|
123
140
|
)
|
|
124
141
|
continue
|
|
125
142
|
config_files_to_run.append(str(filepath.resolve()))
|
|
@@ -128,27 +145,27 @@ def run(files: tuple[str, ...], skip_files: tuple[str, ...], system_env: bool):
|
|
|
128
145
|
if filepath.name.startswith("_") or filepath.name.startswith(
|
|
129
146
|
"shared_config"
|
|
130
147
|
):
|
|
131
|
-
|
|
132
|
-
|
|
148
|
+
log.info(
|
|
149
|
+
" Skipping discovery: %s (underscore prefix or shared_config)", filepath
|
|
133
150
|
)
|
|
134
151
|
continue
|
|
135
152
|
if str(filepath.resolve()) not in config_files_to_run:
|
|
136
153
|
config_files_to_run.append(str(filepath.resolve()))
|
|
137
154
|
|
|
138
155
|
else:
|
|
139
|
-
|
|
156
|
+
log.info("Processing provided configuration files and directories:")
|
|
140
157
|
processed_files = set()
|
|
141
158
|
for path_str in files:
|
|
142
159
|
path = Path(path_str)
|
|
143
160
|
if path.is_dir():
|
|
144
|
-
|
|
161
|
+
log.info(" Discovering YAML files in directory: %s", path)
|
|
145
162
|
for yaml_ext in ("*.yaml", "*.yml"):
|
|
146
163
|
for filepath in path.rglob(yaml_ext):
|
|
147
164
|
if filepath.name.startswith("_") or filepath.name.startswith(
|
|
148
165
|
"shared_config"
|
|
149
166
|
):
|
|
150
|
-
|
|
151
|
-
|
|
167
|
+
log.info(
|
|
168
|
+
" Skipping discovery: %s (underscore prefix or shared_config)", filepath
|
|
152
169
|
)
|
|
153
170
|
continue
|
|
154
171
|
processed_files.add(str(filepath.resolve()))
|
|
@@ -156,45 +173,43 @@ def run(files: tuple[str, ...], skip_files: tuple[str, ...], system_env: bool):
|
|
|
156
173
|
if path.suffix in [".yaml", ".yml"]:
|
|
157
174
|
processed_files.add(str(path.resolve()))
|
|
158
175
|
else:
|
|
159
|
-
|
|
160
|
-
|
|
176
|
+
log.warning(
|
|
177
|
+
" Ignoring non-YAML file: %s", path
|
|
161
178
|
)
|
|
162
179
|
config_files_to_run = sorted(list(processed_files))
|
|
163
180
|
|
|
164
181
|
if skip_files:
|
|
165
|
-
|
|
182
|
+
log.info("Applying --skip for: %s", skip_files)
|
|
166
183
|
final_list = []
|
|
167
184
|
skipped_basenames = [os.path.basename(s) for s in skip_files]
|
|
168
185
|
for cf in config_files_to_run:
|
|
169
186
|
if os.path.basename(cf) in skipped_basenames:
|
|
170
|
-
|
|
171
|
-
|
|
187
|
+
log.info(
|
|
188
|
+
" Skipping execution: %s (due to --skip)", cf
|
|
172
189
|
)
|
|
173
190
|
continue
|
|
174
191
|
final_list.append(cf)
|
|
175
192
|
config_files_to_run = final_list
|
|
176
193
|
|
|
177
194
|
if not config_files_to_run:
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
"No configuration files to run after filtering. Exiting.", fg="yellow"
|
|
181
|
-
)
|
|
195
|
+
log.warning(
|
|
196
|
+
"No configuration files to run after filtering. Exiting."
|
|
182
197
|
)
|
|
183
198
|
return 0
|
|
184
199
|
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
click.echo(f" - {cf_path_str}")
|
|
200
|
+
file_list = "\n".join(f" - {cf}" for cf in config_files_to_run)
|
|
201
|
+
log.info("Final list of configuration files to run:\n%s", file_list)
|
|
188
202
|
|
|
203
|
+
if reset_logging:
|
|
204
|
+
for handler in log.handlers[:]:
|
|
205
|
+
log.removeHandler(handler)
|
|
189
206
|
return_code = _execute_with_solace_ai_connector(config_files_to_run)
|
|
190
207
|
|
|
191
208
|
if return_code == 0:
|
|
192
|
-
|
|
209
|
+
log.info("Application run completed successfully.")
|
|
193
210
|
else:
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
f"Application run failed or exited with code {return_code}.", fg="red"
|
|
197
|
-
)
|
|
211
|
+
log.error(
|
|
212
|
+
"Application run failed or exited with code %s.", return_code
|
|
198
213
|
)
|
|
199
214
|
|
|
200
215
|
sys.exit(return_code)
|
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
import click
|
|
2
|
+
import json
|
|
3
|
+
from typing import Optional, List, Dict, Any
|
|
4
|
+
from collections import defaultdict
|
|
5
|
+
|
|
6
|
+
# Import to trigger tool registration
|
|
7
|
+
import solace_agent_mesh.agent.tools # noqa: F401
|
|
8
|
+
from solace_agent_mesh.agent.tools.registry import tool_registry
|
|
9
|
+
from cli.utils import error_exit
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def format_parameter_schema(schema) -> str:
|
|
13
|
+
"""
|
|
14
|
+
Format the parameter schema into a readable string.
|
|
15
|
+
|
|
16
|
+
Args:
|
|
17
|
+
schema: A google.genai.types.Schema object
|
|
18
|
+
|
|
19
|
+
Returns:
|
|
20
|
+
Formatted string representation of parameters
|
|
21
|
+
"""
|
|
22
|
+
if not schema or not hasattr(schema, 'properties') or not schema.properties:
|
|
23
|
+
return " No parameters"
|
|
24
|
+
|
|
25
|
+
lines = []
|
|
26
|
+
required = schema.required if hasattr(schema, 'required') else []
|
|
27
|
+
|
|
28
|
+
for prop_name, prop_schema in schema.properties.items():
|
|
29
|
+
is_required = prop_name in required
|
|
30
|
+
req_str = "required" if is_required else "optional"
|
|
31
|
+
type_str = getattr(prop_schema, 'type', 'unknown')
|
|
32
|
+
desc = getattr(prop_schema, 'description', '')
|
|
33
|
+
lines.append(f" - {prop_name} ({type_str}, {req_str}): {desc}")
|
|
34
|
+
|
|
35
|
+
return "\n".join(lines)
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def format_tool_table_brief(tools: List) -> None:
|
|
39
|
+
"""
|
|
40
|
+
Format tools as a brief list and echo to console.
|
|
41
|
+
|
|
42
|
+
Groups tools by category and displays only names and descriptions.
|
|
43
|
+
|
|
44
|
+
Args:
|
|
45
|
+
tools: List of BuiltinTool objects
|
|
46
|
+
"""
|
|
47
|
+
if not tools:
|
|
48
|
+
click.echo("No tools found.")
|
|
49
|
+
return
|
|
50
|
+
|
|
51
|
+
# Group tools by category
|
|
52
|
+
tools_by_category = defaultdict(list)
|
|
53
|
+
for tool in tools:
|
|
54
|
+
tools_by_category[tool.category].append(tool)
|
|
55
|
+
|
|
56
|
+
# Sort categories alphabetically
|
|
57
|
+
sorted_categories = sorted(tools_by_category.keys())
|
|
58
|
+
|
|
59
|
+
total_tools = len(tools)
|
|
60
|
+
|
|
61
|
+
for category in sorted_categories:
|
|
62
|
+
category_tools = sorted(tools_by_category[category], key=lambda t: t.name)
|
|
63
|
+
|
|
64
|
+
# Get category metadata from first tool in category
|
|
65
|
+
first_tool = category_tools[0]
|
|
66
|
+
category_name = first_tool.category_name or category
|
|
67
|
+
|
|
68
|
+
# Display category header
|
|
69
|
+
click.echo()
|
|
70
|
+
click.echo(click.style(f"═══ {category_name} ═══", bold=True, fg='cyan'))
|
|
71
|
+
click.echo()
|
|
72
|
+
|
|
73
|
+
# Display tools in category (brief format)
|
|
74
|
+
for tool in category_tools:
|
|
75
|
+
click.echo(f" • {click.style(tool.name, bold=True, fg='green')}")
|
|
76
|
+
# Wrap description at 70 characters
|
|
77
|
+
desc_words = tool.description.split()
|
|
78
|
+
lines = []
|
|
79
|
+
current_line = " "
|
|
80
|
+
for word in desc_words:
|
|
81
|
+
if len(current_line) + len(word) + 1 <= 74:
|
|
82
|
+
current_line += (" " if len(current_line) > 4 else "") + word
|
|
83
|
+
else:
|
|
84
|
+
lines.append(current_line)
|
|
85
|
+
current_line = " " + word
|
|
86
|
+
if current_line.strip():
|
|
87
|
+
lines.append(current_line)
|
|
88
|
+
for line in lines:
|
|
89
|
+
click.echo(line)
|
|
90
|
+
click.echo()
|
|
91
|
+
|
|
92
|
+
# Display summary
|
|
93
|
+
click.echo(click.style(f"Total: {total_tools} tool{'s' if total_tools != 1 else ''}", bold=True, fg='blue'))
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
def format_tool_table(tools: List) -> None:
|
|
97
|
+
"""
|
|
98
|
+
Format tools as a detailed table and echo to console.
|
|
99
|
+
|
|
100
|
+
Groups tools by category and displays detailed information for each tool.
|
|
101
|
+
|
|
102
|
+
Args:
|
|
103
|
+
tools: List of BuiltinTool objects
|
|
104
|
+
"""
|
|
105
|
+
if not tools:
|
|
106
|
+
click.echo("No tools found.")
|
|
107
|
+
return
|
|
108
|
+
|
|
109
|
+
# Group tools by category
|
|
110
|
+
tools_by_category = defaultdict(list)
|
|
111
|
+
for tool in tools:
|
|
112
|
+
tools_by_category[tool.category].append(tool)
|
|
113
|
+
|
|
114
|
+
# Sort categories alphabetically
|
|
115
|
+
sorted_categories = sorted(tools_by_category.keys())
|
|
116
|
+
|
|
117
|
+
total_tools = len(tools)
|
|
118
|
+
|
|
119
|
+
for category in sorted_categories:
|
|
120
|
+
category_tools = sorted(tools_by_category[category], key=lambda t: t.name)
|
|
121
|
+
|
|
122
|
+
# Get category metadata from first tool in category
|
|
123
|
+
first_tool = category_tools[0]
|
|
124
|
+
category_name = first_tool.category_name or category
|
|
125
|
+
category_desc = first_tool.category_description or ""
|
|
126
|
+
|
|
127
|
+
# Display category header
|
|
128
|
+
header_width = 60
|
|
129
|
+
click.echo()
|
|
130
|
+
click.echo("╭" + "─" * (header_width - 2) + "╮")
|
|
131
|
+
click.echo("│ " + click.style(category_name, bold=True, fg='cyan') +
|
|
132
|
+
" " * (header_width - len(category_name) - 3) + "│")
|
|
133
|
+
if category_desc:
|
|
134
|
+
# Wrap description if needed
|
|
135
|
+
desc_lines = []
|
|
136
|
+
current_line = ""
|
|
137
|
+
for word in category_desc.split():
|
|
138
|
+
if len(current_line) + len(word) + 1 <= header_width - 4:
|
|
139
|
+
current_line += (" " if current_line else "") + word
|
|
140
|
+
else:
|
|
141
|
+
desc_lines.append(current_line)
|
|
142
|
+
current_line = word
|
|
143
|
+
if current_line:
|
|
144
|
+
desc_lines.append(current_line)
|
|
145
|
+
|
|
146
|
+
for desc_line in desc_lines:
|
|
147
|
+
click.echo("│ " + desc_line + " " * (header_width - len(desc_line) - 3) + "│")
|
|
148
|
+
click.echo("╰" + "─" * (header_width - 2) + "╯")
|
|
149
|
+
click.echo()
|
|
150
|
+
|
|
151
|
+
# Display tools in category
|
|
152
|
+
for tool in category_tools:
|
|
153
|
+
click.echo(click.style(f"Tool: {tool.name}", bold=True, fg='green'))
|
|
154
|
+
click.echo(f"Description: {tool.description}")
|
|
155
|
+
|
|
156
|
+
# Format and display parameters
|
|
157
|
+
click.echo("Parameters:")
|
|
158
|
+
params_str = format_parameter_schema(tool.parameters)
|
|
159
|
+
click.echo(params_str)
|
|
160
|
+
|
|
161
|
+
# Display required scopes
|
|
162
|
+
if tool.required_scopes:
|
|
163
|
+
scopes_str = ", ".join(tool.required_scopes)
|
|
164
|
+
click.echo(f"Required Scopes: {click.style(scopes_str, fg='yellow')}")
|
|
165
|
+
else:
|
|
166
|
+
click.echo("Required Scopes: None")
|
|
167
|
+
|
|
168
|
+
click.echo() # Blank line between tools
|
|
169
|
+
|
|
170
|
+
# Display summary
|
|
171
|
+
click.echo(click.style(f"Total: {total_tools} tool{'s' if total_tools != 1 else ''}",
|
|
172
|
+
bold=True, fg='blue'))
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
def tools_to_json(tools: List, detailed: bool = False) -> str:
|
|
176
|
+
"""
|
|
177
|
+
Convert tools list to JSON format.
|
|
178
|
+
|
|
179
|
+
Args:
|
|
180
|
+
tools: List of BuiltinTool objects
|
|
181
|
+
detailed: If True, include parameters and all metadata. If False, only name and description.
|
|
182
|
+
|
|
183
|
+
Returns:
|
|
184
|
+
JSON string representation of tools
|
|
185
|
+
"""
|
|
186
|
+
result = []
|
|
187
|
+
|
|
188
|
+
for tool in tools:
|
|
189
|
+
if detailed:
|
|
190
|
+
# Convert Schema to dict if possible
|
|
191
|
+
try:
|
|
192
|
+
if hasattr(tool.parameters, 'model_dump'):
|
|
193
|
+
params_dict = tool.parameters.model_dump()
|
|
194
|
+
elif hasattr(tool.parameters, 'to_dict'):
|
|
195
|
+
params_dict = tool.parameters.to_dict()
|
|
196
|
+
else:
|
|
197
|
+
# Fallback: manually construct dict from Schema
|
|
198
|
+
params_dict = {
|
|
199
|
+
"type": getattr(tool.parameters, 'type', None),
|
|
200
|
+
"properties": {},
|
|
201
|
+
"required": getattr(tool.parameters, 'required', [])
|
|
202
|
+
}
|
|
203
|
+
if hasattr(tool.parameters, 'properties') and tool.parameters.properties:
|
|
204
|
+
for prop_name, prop_schema in tool.parameters.properties.items():
|
|
205
|
+
params_dict["properties"][prop_name] = {
|
|
206
|
+
"type": getattr(prop_schema, 'type', None),
|
|
207
|
+
"description": getattr(prop_schema, 'description', '')
|
|
208
|
+
}
|
|
209
|
+
except Exception:
|
|
210
|
+
params_dict = {"error": "Could not serialize parameters"}
|
|
211
|
+
|
|
212
|
+
tool_dict = {
|
|
213
|
+
"name": tool.name,
|
|
214
|
+
"description": tool.description,
|
|
215
|
+
"category": tool.category,
|
|
216
|
+
"category_name": tool.category_name,
|
|
217
|
+
"category_description": tool.category_description,
|
|
218
|
+
"required_scopes": tool.required_scopes,
|
|
219
|
+
"parameters": params_dict,
|
|
220
|
+
"examples": tool.examples,
|
|
221
|
+
"raw_string_args": tool.raw_string_args
|
|
222
|
+
}
|
|
223
|
+
else:
|
|
224
|
+
# Brief format: only name and description
|
|
225
|
+
tool_dict = {
|
|
226
|
+
"name": tool.name,
|
|
227
|
+
"description": tool.description,
|
|
228
|
+
"category": tool.category,
|
|
229
|
+
"category_name": tool.category_name
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
result.append(tool_dict)
|
|
233
|
+
|
|
234
|
+
return json.dumps(result, indent=2)
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
@click.group("tools")
|
|
238
|
+
def tools():
|
|
239
|
+
"""Manage and explore SAM built-in tools."""
|
|
240
|
+
pass
|
|
241
|
+
|
|
242
|
+
|
|
243
|
+
@tools.command("list")
|
|
244
|
+
@click.option(
|
|
245
|
+
"--category", "-c",
|
|
246
|
+
type=str,
|
|
247
|
+
default=None,
|
|
248
|
+
help="Filter tools by category (e.g., 'artifact_management', 'data_analysis')"
|
|
249
|
+
)
|
|
250
|
+
@click.option(
|
|
251
|
+
"--detailed", "-d",
|
|
252
|
+
is_flag=True,
|
|
253
|
+
help="Show detailed information including parameters and required scopes"
|
|
254
|
+
)
|
|
255
|
+
@click.option(
|
|
256
|
+
"--json", "output_json",
|
|
257
|
+
is_flag=True,
|
|
258
|
+
help="Output in JSON format instead of pretty table"
|
|
259
|
+
)
|
|
260
|
+
def list_tools(category: Optional[str], detailed: bool, output_json: bool):
|
|
261
|
+
"""
|
|
262
|
+
List all built-in tools available in Solace Agent Mesh.
|
|
263
|
+
|
|
264
|
+
By default, shows brief information with tool names and descriptions.
|
|
265
|
+
Use --detailed flag to see parameters and required scopes.
|
|
266
|
+
|
|
267
|
+
Examples:
|
|
268
|
+
|
|
269
|
+
# List all tools (brief)
|
|
270
|
+
sam tools list
|
|
271
|
+
|
|
272
|
+
# List with full details
|
|
273
|
+
sam tools list --detailed
|
|
274
|
+
|
|
275
|
+
# Filter by category
|
|
276
|
+
sam tools list --category artifact_management
|
|
277
|
+
|
|
278
|
+
# Detailed view with category filter
|
|
279
|
+
sam tools list -c web --detailed
|
|
280
|
+
|
|
281
|
+
# Output as JSON
|
|
282
|
+
sam tools list --json
|
|
283
|
+
|
|
284
|
+
# Filter and output as JSON
|
|
285
|
+
sam tools list -c web --json
|
|
286
|
+
"""
|
|
287
|
+
# Fetch tools from registry
|
|
288
|
+
if category:
|
|
289
|
+
tools_list = tool_registry.get_tools_by_category(category)
|
|
290
|
+
if not tools_list:
|
|
291
|
+
# Get all categories to show valid options
|
|
292
|
+
all_tools = tool_registry.get_all_tools()
|
|
293
|
+
if not all_tools:
|
|
294
|
+
error_exit("No tools are registered in the tool registry.")
|
|
295
|
+
|
|
296
|
+
categories = sorted(set(t.category for t in all_tools))
|
|
297
|
+
error_exit(
|
|
298
|
+
f"No tools found for category '{category}'.\n"
|
|
299
|
+
f"Valid categories: {', '.join(categories)}"
|
|
300
|
+
)
|
|
301
|
+
else:
|
|
302
|
+
tools_list = tool_registry.get_all_tools()
|
|
303
|
+
if not tools_list:
|
|
304
|
+
error_exit("No tools are registered in the tool registry.")
|
|
305
|
+
|
|
306
|
+
# Output based on format preference
|
|
307
|
+
if output_json:
|
|
308
|
+
json_output = tools_to_json(tools_list, detailed=detailed)
|
|
309
|
+
click.echo(json_output)
|
|
310
|
+
else:
|
|
311
|
+
# Use detailed format only if --detailed flag is provided
|
|
312
|
+
if detailed:
|
|
313
|
+
format_tool_table(tools_list)
|
|
314
|
+
else:
|
|
315
|
+
format_tool_table_brief(tools_list)
|
solace_agent_mesh/cli/main.py
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import click
|
|
2
2
|
import os
|
|
3
3
|
import sys
|
|
4
|
+
import warnings
|
|
5
|
+
|
|
6
|
+
_suppress_warnings = "--suppress-warnings" in sys.argv
|
|
7
|
+
if _suppress_warnings:
|
|
8
|
+
warnings.simplefilter("ignore")
|
|
9
|
+
sys.argv.remove("--suppress-warnings")
|
|
4
10
|
|
|
5
11
|
SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
|
|
6
12
|
sys.path.append(os.path.dirname(SCRIPT_DIR))
|
|
@@ -12,12 +18,20 @@ from cli.commands.add_cmd import add
|
|
|
12
18
|
from cli.commands.plugin_cmd import plugin
|
|
13
19
|
from cli.commands.eval_cmd import eval_cmd
|
|
14
20
|
from cli.commands.docs_cmd import docs
|
|
21
|
+
from cli.commands.tools_cmd import tools
|
|
15
22
|
|
|
16
23
|
|
|
17
24
|
@click.group(context_settings=dict(help_option_names=['-h', '--help']))
|
|
18
25
|
@click.version_option(
|
|
19
26
|
__version__, "-v", "--version", help="Show the CLI version and exit."
|
|
20
27
|
)
|
|
28
|
+
@click.option(
|
|
29
|
+
'--suppress-warnings',
|
|
30
|
+
is_flag=True,
|
|
31
|
+
expose_value=False,
|
|
32
|
+
is_eager=True,
|
|
33
|
+
help="Suppress warnings emitted by Python's warnings module."
|
|
34
|
+
)
|
|
21
35
|
def cli():
|
|
22
36
|
"""Solace CLI Application"""
|
|
23
37
|
pass
|
|
@@ -29,6 +43,7 @@ cli.add_command(add)
|
|
|
29
43
|
cli.add_command(plugin)
|
|
30
44
|
cli.add_command(eval_cmd)
|
|
31
45
|
cli.add_command(docs)
|
|
46
|
+
cli.add_command(tools)
|
|
32
47
|
|
|
33
48
|
|
|
34
49
|
def main():
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as n}from"./client-
|
|
1
|
+
import{c as n}from"./client-DpBL2stg.js";import{r as a,j as s}from"./vendor-CGk8Suyh.js";function c(){return a.useEffect(()=>{const r=window.location.hash.substring(1),e=new URLSearchParams(r),o=e.get("access_token"),t=e.get("refresh_token");o?(localStorage.setItem("access_token",o),t&&localStorage.setItem("refresh_token",t),window.location.href="/"):console.error("AuthCallback: No access token found in URL hash.")},[]),s.jsx("div",{children:"Loading..."})}n.createRoot(document.getElementById("root")).render(s.jsx(c,{}));
|