solace-agent-mesh 1.6.1__py3-none-any.whl → 1.13.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of solace-agent-mesh might be problematic. Click here for more details.
- solace_agent_mesh/agent/adk/alembic/README +74 -0
- solace_agent_mesh/agent/adk/alembic/env.py +77 -0
- solace_agent_mesh/agent/adk/alembic/script.py.mako +28 -0
- solace_agent_mesh/agent/adk/alembic/versions/e2902798564d_adk_session_db_upgrade.py +52 -0
- solace_agent_mesh/agent/adk/alembic.ini +112 -0
- solace_agent_mesh/agent/adk/app_llm_agent.py +26 -0
- solace_agent_mesh/agent/adk/artifacts/filesystem_artifact_service.py +165 -1
- solace_agent_mesh/agent/adk/artifacts/s3_artifact_service.py +163 -0
- solace_agent_mesh/agent/adk/callbacks.py +852 -109
- solace_agent_mesh/agent/adk/embed_resolving_mcp_toolset.py +234 -36
- solace_agent_mesh/agent/adk/intelligent_mcp_callbacks.py +52 -5
- solace_agent_mesh/agent/adk/mcp_content_processor.py +1 -1
- solace_agent_mesh/agent/adk/models/lite_llm.py +77 -21
- solace_agent_mesh/agent/adk/models/oauth2_token_manager.py +24 -137
- solace_agent_mesh/agent/adk/runner.py +85 -20
- solace_agent_mesh/agent/adk/schema_migration.py +88 -0
- solace_agent_mesh/agent/adk/services.py +94 -18
- solace_agent_mesh/agent/adk/setup.py +281 -65
- solace_agent_mesh/agent/adk/stream_parser.py +231 -37
- solace_agent_mesh/agent/adk/tool_wrapper.py +3 -0
- solace_agent_mesh/agent/protocol/event_handlers.py +472 -137
- solace_agent_mesh/agent/proxies/a2a/app.py +3 -2
- solace_agent_mesh/agent/proxies/a2a/component.py +572 -75
- solace_agent_mesh/agent/proxies/a2a/config.py +80 -4
- solace_agent_mesh/agent/proxies/base/app.py +3 -2
- solace_agent_mesh/agent/proxies/base/component.py +188 -22
- solace_agent_mesh/agent/proxies/base/proxy_task_context.py +3 -1
- solace_agent_mesh/agent/sac/app.py +91 -3
- solace_agent_mesh/agent/sac/component.py +591 -157
- solace_agent_mesh/agent/sac/patch_adk.py +8 -16
- solace_agent_mesh/agent/sac/task_execution_context.py +146 -4
- solace_agent_mesh/agent/tools/__init__.py +3 -0
- solace_agent_mesh/agent/tools/audio_tools.py +3 -3
- solace_agent_mesh/agent/tools/builtin_artifact_tools.py +710 -171
- solace_agent_mesh/agent/tools/deep_research_tools.py +2161 -0
- solace_agent_mesh/agent/tools/dynamic_tool.py +2 -0
- solace_agent_mesh/agent/tools/peer_agent_tool.py +82 -15
- solace_agent_mesh/agent/tools/time_tools.py +126 -0
- solace_agent_mesh/agent/tools/tool_config_types.py +57 -2
- solace_agent_mesh/agent/tools/web_search_tools.py +279 -0
- solace_agent_mesh/agent/tools/web_tools.py +125 -17
- solace_agent_mesh/agent/utils/artifact_helpers.py +248 -6
- solace_agent_mesh/agent/utils/context_helpers.py +17 -0
- solace_agent_mesh/assets/docs/404.html +6 -6
- solace_agent_mesh/assets/docs/assets/css/{styles.906a1503.css → styles.8162edfb.css} +1 -1
- solace_agent_mesh/assets/docs/assets/js/05749d90.19ac4f35.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/15ba94aa.e186750d.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/15e40e79.434bb30f.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/17896441.e612dfb4.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/2279.550aa580.js +2 -0
- solace_agent_mesh/assets/docs/assets/js/{17896441.a5e82f9b.js.LICENSE.txt → 2279.550aa580.js.LICENSE.txt} +6 -0
- solace_agent_mesh/assets/docs/assets/js/240a0364.83e37aa8.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/2987107d.a80604f9.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/2e32b5e0.2f0db237.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/3a6c6137.7e61915d.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/3ac1795d.7f7ab1c1.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/3ff0015d.e53c9b78.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/41adc471.0e95b87c.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/4667dc50.bf2ad456.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/49eed117.493d6f99.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/{509e993c.4c7a1a6d.js → 509e993c.a1fbf45a.js} +1 -1
- solace_agent_mesh/assets/docs/assets/js/547e15cc.8e6da617.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/55b7b518.29d6e75d.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/5b8d9c11.d4eb37b8.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/5c2bd65f.1ee87753.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/60702c0e.a8bdd79b.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/631738c7.fa471607.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/64195356.09dbd087.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/66d4869e.30340bd3.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6a520c9d.b6e3f2ce.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6aaedf65.7253541d.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6ad8f0bd.a5b36a60.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6d84eae0.fd23ba4a.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/71da7b71.374b9d54.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/729898df.7249e9fd.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/7e294c01.7c5f6906.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/8024126c.e3467286.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/81a99df0.7ed65d45.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/82fbfb93.161823a5.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/8b032486.91a91afc.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/924ffdeb.975e428a.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/94e8668d.16083b3f.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/9bb13469.4523ae20.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/a7d42657.a956689d.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/a94703ab.3e5fbcb3.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/ab9708a8.3e563275.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/ad87452a.9d73dad6.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/c93cbaa0.0e0d8baf.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/cab03b5b.6a073091.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/cbe2e9ea.07e170dd.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/da0b5bad.b62f7b08.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/dd817ffc.c37a755e.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/dd81e2b8.b682e9c2.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/de915948.44a432bc.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/e04b235d.06d23db6.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/e1b6eeb4.deb2b62e.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/e3d9abda.1476f570.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/e6f9706b.acc800d3.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/e92d0134.c147a429.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/ee0c2fe7.94d0a351.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/f284c35a.cc97854c.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/ff4d71f2.74710fc1.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/main.d634009f.js +2 -0
- solace_agent_mesh/assets/docs/assets/js/runtime~main.27bb82a7.js +1 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/agents/index.html +68 -68
- solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/artifact-management/index.html +50 -50
- solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/audio-tools/index.html +42 -42
- solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/data-analysis-tools/index.html +55 -55
- solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/embeds/index.html +82 -68
- solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/image-tools/index.html +81 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/index.html +67 -50
- solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/research-tools/index.html +136 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/cli/index.html +178 -144
- solace_agent_mesh/assets/docs/docs/documentation/components/gateways/index.html +43 -42
- solace_agent_mesh/assets/docs/docs/documentation/components/index.html +20 -18
- solace_agent_mesh/assets/docs/docs/documentation/components/orchestrator/index.html +23 -23
- solace_agent_mesh/assets/docs/docs/documentation/components/platform-service/index.html +33 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/plugins/index.html +45 -45
- solace_agent_mesh/assets/docs/docs/documentation/components/projects/index.html +182 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/prompts/index.html +147 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/proxies/index.html +208 -125
- solace_agent_mesh/assets/docs/docs/documentation/components/speech/index.html +52 -0
- solace_agent_mesh/assets/docs/docs/documentation/deploying/debugging/index.html +28 -49
- solace_agent_mesh/assets/docs/docs/documentation/deploying/deployment-options/index.html +29 -30
- solace_agent_mesh/assets/docs/docs/documentation/deploying/index.html +14 -14
- solace_agent_mesh/assets/docs/docs/documentation/deploying/kubernetes/index.html +47 -0
- solace_agent_mesh/assets/docs/docs/documentation/deploying/kubernetes/kubernetes-deployment-guide/index.html +197 -0
- solace_agent_mesh/assets/docs/docs/documentation/deploying/logging/index.html +90 -0
- solace_agent_mesh/assets/docs/docs/documentation/deploying/observability/index.html +17 -16
- solace_agent_mesh/assets/docs/docs/documentation/deploying/proxy_configuration/index.html +49 -0
- solace_agent_mesh/assets/docs/docs/documentation/developing/create-agents/index.html +38 -38
- solace_agent_mesh/assets/docs/docs/documentation/developing/create-gateways/index.html +162 -171
- solace_agent_mesh/assets/docs/docs/documentation/developing/creating-python-tools/index.html +67 -49
- solace_agent_mesh/assets/docs/docs/documentation/developing/creating-service-providers/index.html +17 -17
- solace_agent_mesh/assets/docs/docs/documentation/developing/evaluations/index.html +51 -51
- solace_agent_mesh/assets/docs/docs/documentation/developing/index.html +22 -22
- solace_agent_mesh/assets/docs/docs/documentation/developing/structure/index.html +27 -27
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/bedrock-agents/index.html +135 -135
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/custom-agent/index.html +66 -66
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/event-mesh-gateway/index.html +51 -51
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/mcp-integration/index.html +50 -38
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/mongodb-integration/index.html +86 -86
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/rag-integration/index.html +51 -51
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/rest-gateway/index.html +24 -24
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/slack-integration/index.html +30 -30
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/sql-database/index.html +44 -44
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/teams-integration/index.html +115 -0
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/agent-builder/index.html +86 -0
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/connectors/index.html +67 -0
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/index.html +23 -19
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/installation/index.html +40 -37
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/openapi-tools/index.html +324 -0
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/rbac-setup-guide/index.html +112 -87
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/secure-user-delegated-access/index.html +440 -0
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/single-sign-on/index.html +87 -64
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/wheel-installation/index.html +62 -0
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/architecture/index.html +44 -44
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/index.html +39 -37
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/introduction/index.html +30 -30
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/try-agent-mesh/index.html +18 -18
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/vibe_coding/index.html +62 -0
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/artifact-storage/index.html +311 -0
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/configurations/index.html +39 -42
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/index.html +14 -14
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/installation/index.html +27 -25
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/large_language_models/index.html +69 -69
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/run-project/index.html +72 -72
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/session-storage/index.html +251 -0
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/user-feedback/index.html +88 -0
- solace_agent_mesh/assets/docs/docs/documentation/migrations/a2a-upgrade/a2a-gateway-upgrade-to-0.3.0/index.html +42 -42
- solace_agent_mesh/assets/docs/docs/documentation/migrations/a2a-upgrade/a2a-technical-migration-map/index.html +20 -20
- solace_agent_mesh/assets/docs/docs/documentation/migrations/platform-service-split/index.html +85 -0
- solace_agent_mesh/assets/docs/lunr-index-1768329217460.json +1 -0
- solace_agent_mesh/assets/docs/lunr-index.json +1 -1
- solace_agent_mesh/assets/docs/search-doc-1768329217460.json +1 -0
- solace_agent_mesh/assets/docs/search-doc.json +1 -1
- solace_agent_mesh/assets/docs/sitemap.xml +1 -1
- solace_agent_mesh/cli/__init__.py +1 -1
- solace_agent_mesh/cli/commands/add_cmd/__init__.py +3 -1
- solace_agent_mesh/cli/commands/add_cmd/agent_cmd.py +6 -1
- solace_agent_mesh/cli/commands/add_cmd/proxy_cmd.py +100 -0
- solace_agent_mesh/cli/commands/docs_cmd.py +4 -1
- solace_agent_mesh/cli/commands/eval_cmd.py +1 -1
- solace_agent_mesh/cli/commands/init_cmd/__init__.py +15 -0
- solace_agent_mesh/cli/commands/init_cmd/directory_step.py +1 -1
- solace_agent_mesh/cli/commands/init_cmd/env_step.py +30 -3
- solace_agent_mesh/cli/commands/init_cmd/orchestrator_step.py +3 -4
- solace_agent_mesh/cli/commands/init_cmd/platform_service_step.py +85 -0
- solace_agent_mesh/cli/commands/init_cmd/webui_gateway_step.py +16 -3
- solace_agent_mesh/cli/commands/plugin_cmd/add_cmd.py +2 -1
- solace_agent_mesh/cli/commands/plugin_cmd/catalog_cmd.py +1 -0
- solace_agent_mesh/cli/commands/plugin_cmd/create_cmd.py +3 -3
- solace_agent_mesh/cli/commands/run_cmd.py +64 -49
- solace_agent_mesh/cli/commands/tools_cmd.py +315 -0
- solace_agent_mesh/cli/main.py +15 -0
- solace_agent_mesh/client/webui/frontend/static/assets/{authCallback-BTf6dqwp.js → authCallback-KnKMP_vb.js} +1 -1
- solace_agent_mesh/client/webui/frontend/static/assets/client-DpBL2stg.js +25 -0
- solace_agent_mesh/client/webui/frontend/static/assets/main-Cd498TV2.js +435 -0
- solace_agent_mesh/client/webui/frontend/static/assets/main-rSf8Vu29.css +1 -0
- solace_agent_mesh/client/webui/frontend/static/assets/vendor-CGk8Suyh.js +565 -0
- solace_agent_mesh/client/webui/frontend/static/auth-callback.html +3 -3
- solace_agent_mesh/client/webui/frontend/static/index.html +4 -4
- solace_agent_mesh/client/webui/frontend/static/mockServiceWorker.js +336 -0
- solace_agent_mesh/client/webui/frontend/static/ui-version.json +6 -0
- solace_agent_mesh/common/a2a/events.py +2 -1
- solace_agent_mesh/common/a2a/protocol.py +5 -0
- solace_agent_mesh/common/a2a/types.py +2 -1
- solace_agent_mesh/common/a2a_spec/schemas/artifact_creation_progress.json +23 -6
- solace_agent_mesh/common/a2a_spec/schemas/feedback_event.json +51 -0
- solace_agent_mesh/common/agent_registry.py +38 -11
- solace_agent_mesh/common/data_parts.py +144 -4
- solace_agent_mesh/common/error_handlers.py +83 -0
- solace_agent_mesh/common/exceptions.py +24 -0
- solace_agent_mesh/common/oauth/__init__.py +17 -0
- solace_agent_mesh/common/oauth/oauth_client.py +408 -0
- solace_agent_mesh/common/oauth/utils.py +50 -0
- solace_agent_mesh/common/rag_dto.py +156 -0
- solace_agent_mesh/common/sac/sam_component_base.py +97 -19
- solace_agent_mesh/common/sam_events/event_service.py +2 -2
- solace_agent_mesh/common/services/employee_service.py +1 -1
- solace_agent_mesh/common/utils/embeds/constants.py +1 -0
- solace_agent_mesh/common/utils/embeds/converter.py +1 -8
- solace_agent_mesh/common/utils/embeds/modifiers.py +4 -28
- solace_agent_mesh/common/utils/embeds/resolver.py +152 -31
- solace_agent_mesh/common/utils/embeds/types.py +9 -0
- solace_agent_mesh/common/utils/log_formatters.py +20 -0
- solace_agent_mesh/common/utils/mime_helpers.py +12 -5
- solace_agent_mesh/common/utils/pydantic_utils.py +90 -3
- solace_agent_mesh/common/utils/rbac_utils.py +69 -0
- solace_agent_mesh/common/utils/templates/__init__.py +8 -0
- solace_agent_mesh/common/utils/templates/liquid_renderer.py +210 -0
- solace_agent_mesh/common/utils/templates/template_resolver.py +161 -0
- solace_agent_mesh/config_portal/backend/common.py +12 -0
- solace_agent_mesh/config_portal/frontend/static/client/assets/_index-CljP4_mv.js +103 -0
- solace_agent_mesh/config_portal/frontend/static/client/assets/{components-Rk0n-9cK.js → components-CaC6hG8d.js} +22 -22
- solace_agent_mesh/config_portal/frontend/static/client/assets/{entry.client-mvZjNKiz.js → entry.client-H_TM0YBt.js} +3 -3
- solace_agent_mesh/config_portal/frontend/static/client/assets/{index-DzNKzXrc.js → index-CnFykb2v.js} +16 -16
- solace_agent_mesh/config_portal/frontend/static/client/assets/manifest-f8439d40.js +1 -0
- solace_agent_mesh/config_portal/frontend/static/client/assets/root-BIMqslJB.css +1 -0
- solace_agent_mesh/config_portal/frontend/static/client/assets/root-mJmTIdIk.js +10 -0
- solace_agent_mesh/config_portal/frontend/static/client/index.html +3 -3
- solace_agent_mesh/core_a2a/service.py +3 -2
- solace_agent_mesh/gateway/adapter/__init__.py +1 -0
- solace_agent_mesh/gateway/adapter/base.py +170 -0
- solace_agent_mesh/gateway/adapter/types.py +230 -0
- solace_agent_mesh/gateway/base/app.py +39 -2
- solace_agent_mesh/gateway/base/auth_interface.py +103 -0
- solace_agent_mesh/gateway/base/component.py +1027 -151
- solace_agent_mesh/gateway/generic/__init__.py +1 -0
- solace_agent_mesh/gateway/generic/app.py +50 -0
- solace_agent_mesh/gateway/generic/component.py +894 -0
- solace_agent_mesh/gateway/http_sse/alembic/env.py +0 -7
- solace_agent_mesh/gateway/http_sse/alembic/versions/20251023_add_project_users_table.py +72 -0
- solace_agent_mesh/gateway/http_sse/alembic/versions/20251023_add_soft_delete_and_search.py +109 -0
- solace_agent_mesh/gateway/http_sse/alembic/versions/20251024_add_default_agent_to_projects.py +26 -0
- solace_agent_mesh/gateway/http_sse/alembic/versions/20251024_add_projects_table.py +135 -0
- solace_agent_mesh/gateway/http_sse/alembic/versions/20251108_create_prompt_tables_with_sharing.py +154 -0
- solace_agent_mesh/gateway/http_sse/alembic/versions/20251115_add_parent_task_id.py +32 -0
- solace_agent_mesh/gateway/http_sse/alembic/versions/20251126_add_background_task_fields.py +47 -0
- solace_agent_mesh/gateway/http_sse/alembic/versions/20251202_add_versioned_fields_to_prompts.py +52 -0
- solace_agent_mesh/gateway/http_sse/alembic.ini +0 -36
- solace_agent_mesh/gateway/http_sse/app.py +40 -11
- solace_agent_mesh/gateway/http_sse/component.py +285 -160
- solace_agent_mesh/gateway/http_sse/dependencies.py +149 -114
- solace_agent_mesh/gateway/http_sse/main.py +68 -450
- solace_agent_mesh/gateway/http_sse/repository/__init__.py +19 -1
- solace_agent_mesh/gateway/http_sse/repository/chat_task_repository.py +2 -2
- solace_agent_mesh/gateway/http_sse/repository/entities/project.py +81 -0
- solace_agent_mesh/gateway/http_sse/repository/entities/project_user.py +47 -0
- solace_agent_mesh/gateway/http_sse/repository/entities/session.py +26 -3
- solace_agent_mesh/gateway/http_sse/repository/entities/task.py +7 -0
- solace_agent_mesh/gateway/http_sse/repository/feedback_repository.py +47 -0
- solace_agent_mesh/gateway/http_sse/repository/interfaces.py +114 -6
- solace_agent_mesh/gateway/http_sse/repository/models/__init__.py +13 -0
- solace_agent_mesh/gateway/http_sse/repository/models/project_model.py +51 -0
- solace_agent_mesh/gateway/http_sse/repository/models/project_user_model.py +75 -0
- solace_agent_mesh/gateway/http_sse/repository/models/prompt_model.py +159 -0
- solace_agent_mesh/gateway/http_sse/repository/models/session_model.py +8 -2
- solace_agent_mesh/gateway/http_sse/repository/models/task_model.py +8 -1
- solace_agent_mesh/gateway/http_sse/repository/project_repository.py +172 -0
- solace_agent_mesh/gateway/http_sse/repository/project_user_repository.py +186 -0
- solace_agent_mesh/gateway/http_sse/repository/session_repository.py +177 -11
- solace_agent_mesh/gateway/http_sse/repository/task_repository.py +86 -2
- solace_agent_mesh/gateway/http_sse/routers/agent_cards.py +38 -7
- solace_agent_mesh/gateway/http_sse/routers/artifacts.py +256 -58
- solace_agent_mesh/gateway/http_sse/routers/auth.py +168 -134
- solace_agent_mesh/gateway/http_sse/routers/config.py +302 -8
- solace_agent_mesh/gateway/http_sse/routers/dto/project_dto.py +69 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/prompt_dto.py +255 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/requests/project_requests.py +48 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/requests/session_requests.py +14 -1
- solace_agent_mesh/gateway/http_sse/routers/dto/responses/base_responses.py +1 -1
- solace_agent_mesh/gateway/http_sse/routers/dto/responses/project_responses.py +31 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/responses/session_responses.py +5 -2
- solace_agent_mesh/gateway/http_sse/routers/dto/responses/version_responses.py +31 -0
- solace_agent_mesh/gateway/http_sse/routers/feedback.py +133 -2
- solace_agent_mesh/gateway/http_sse/routers/people.py +2 -2
- solace_agent_mesh/gateway/http_sse/routers/projects.py +768 -0
- solace_agent_mesh/gateway/http_sse/routers/prompts.py +1416 -0
- solace_agent_mesh/gateway/http_sse/routers/sessions.py +167 -7
- solace_agent_mesh/gateway/http_sse/routers/speech.py +355 -0
- solace_agent_mesh/gateway/http_sse/routers/sse.py +131 -8
- solace_agent_mesh/gateway/http_sse/routers/tasks.py +670 -18
- solace_agent_mesh/gateway/http_sse/routers/users.py +1 -1
- solace_agent_mesh/gateway/http_sse/routers/version.py +343 -0
- solace_agent_mesh/gateway/http_sse/routers/visualization.py +92 -9
- solace_agent_mesh/gateway/http_sse/services/audio_service.py +1227 -0
- solace_agent_mesh/gateway/http_sse/services/background_task_monitor.py +186 -0
- solace_agent_mesh/gateway/http_sse/services/data_retention_service.py +1 -1
- solace_agent_mesh/gateway/http_sse/services/feedback_service.py +1 -1
- solace_agent_mesh/gateway/http_sse/services/project_service.py +930 -0
- solace_agent_mesh/gateway/http_sse/services/prompt_builder_assistant.py +303 -0
- solace_agent_mesh/gateway/http_sse/services/session_service.py +361 -12
- solace_agent_mesh/gateway/http_sse/services/task_logger_service.py +354 -4
- solace_agent_mesh/gateway/http_sse/session_manager.py +15 -15
- solace_agent_mesh/gateway/http_sse/sse_manager.py +286 -166
- solace_agent_mesh/gateway/http_sse/utils/artifact_copy_utils.py +370 -0
- solace_agent_mesh/gateway/http_sse/utils/stim_utils.py +41 -1
- solace_agent_mesh/services/__init__.py +0 -0
- solace_agent_mesh/services/platform/__init__.py +29 -0
- solace_agent_mesh/services/platform/alembic/env.py +85 -0
- solace_agent_mesh/services/platform/alembic/script.py.mako +28 -0
- solace_agent_mesh/services/platform/alembic.ini +109 -0
- solace_agent_mesh/services/platform/api/__init__.py +3 -0
- solace_agent_mesh/services/platform/api/dependencies.py +154 -0
- solace_agent_mesh/services/platform/api/main.py +314 -0
- solace_agent_mesh/services/platform/api/middleware.py +51 -0
- solace_agent_mesh/services/platform/api/routers/__init__.py +33 -0
- solace_agent_mesh/services/platform/api/routers/health_router.py +31 -0
- solace_agent_mesh/services/platform/app.py +215 -0
- solace_agent_mesh/services/platform/component.py +777 -0
- solace_agent_mesh/shared/__init__.py +14 -0
- solace_agent_mesh/shared/api/__init__.py +42 -0
- solace_agent_mesh/shared/auth/__init__.py +26 -0
- solace_agent_mesh/shared/auth/dependencies.py +204 -0
- solace_agent_mesh/shared/auth/middleware.py +347 -0
- solace_agent_mesh/shared/database/__init__.py +20 -0
- solace_agent_mesh/{gateway/http_sse/shared → shared/database}/base_repository.py +1 -1
- solace_agent_mesh/{gateway/http_sse/shared → shared/database}/database_exceptions.py +1 -1
- solace_agent_mesh/{gateway/http_sse/shared → shared/database}/database_helpers.py +1 -1
- solace_agent_mesh/shared/exceptions/__init__.py +36 -0
- solace_agent_mesh/{gateway/http_sse/shared → shared/exceptions}/exception_handlers.py +19 -5
- solace_agent_mesh/shared/utils/__init__.py +21 -0
- solace_agent_mesh/templates/logging_config_template.yaml +48 -0
- solace_agent_mesh/templates/main_orchestrator.yaml +12 -1
- solace_agent_mesh/templates/platform.yaml +49 -0
- solace_agent_mesh/templates/plugin_readme_template.md +3 -25
- solace_agent_mesh/templates/plugin_tool_config_template.yaml +109 -0
- solace_agent_mesh/templates/proxy_template.yaml +62 -0
- solace_agent_mesh/templates/webui.yaml +148 -6
- solace_agent_mesh/tools/web_search/__init__.py +18 -0
- solace_agent_mesh/tools/web_search/base.py +84 -0
- solace_agent_mesh/tools/web_search/google_search.py +247 -0
- solace_agent_mesh/tools/web_search/models.py +99 -0
- {solace_agent_mesh-1.6.1.dist-info → solace_agent_mesh-1.13.2.dist-info}/METADATA +31 -12
- solace_agent_mesh-1.13.2.dist-info/RECORD +591 -0
- {solace_agent_mesh-1.6.1.dist-info → solace_agent_mesh-1.13.2.dist-info}/WHEEL +1 -1
- solace_agent_mesh/agent/adk/adk_llm.txt +0 -232
- solace_agent_mesh/agent/adk/adk_llm_detail.txt +0 -566
- solace_agent_mesh/agent/adk/artifacts/artifacts_llm.txt +0 -171
- solace_agent_mesh/agent/adk/models/models_llm.txt +0 -142
- solace_agent_mesh/agent/agent_llm.txt +0 -378
- solace_agent_mesh/agent/agent_llm_detail.txt +0 -1702
- solace_agent_mesh/agent/protocol/protocol_llm.txt +0 -81
- solace_agent_mesh/agent/protocol/protocol_llm_detail.txt +0 -92
- solace_agent_mesh/agent/sac/sac_llm.txt +0 -189
- solace_agent_mesh/agent/sac/sac_llm_detail.txt +0 -200
- solace_agent_mesh/agent/testing/testing_llm.txt +0 -57
- solace_agent_mesh/agent/testing/testing_llm_detail.txt +0 -68
- solace_agent_mesh/agent/tools/tools_llm.txt +0 -263
- solace_agent_mesh/agent/tools/tools_llm_detail.txt +0 -274
- solace_agent_mesh/agent/utils/utils_llm.txt +0 -138
- solace_agent_mesh/agent/utils/utils_llm_detail.txt +0 -149
- solace_agent_mesh/assets/docs/assets/js/15ba94aa.932dd2db.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/17896441.a5e82f9b.js +0 -2
- solace_agent_mesh/assets/docs/assets/js/240a0364.7eac6021.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/2e32b5e0.33f5d75b.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/3a6c6137.f5940cfa.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/3ac1795d.76654dd9.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/3ff0015d.2be20244.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/547e15cc.2cbb060a.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/55b7b518.f2b1d1ba.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/5c2bd65f.eda4bcb2.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/631738c7.a8b1ef8b.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/6a520c9d.ba015d81.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/6ad8f0bd.f4b15f3b.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/6d84eae0.4a5fbf39.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/71da7b71.38583438.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/8024126c.56e59919.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/81a99df0.07034dd9.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/82fbfb93.139a1a1f.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/924ffdeb.8095e148.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/94e8668d.b5ddb7a1.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/9bb13469.dd1c9b54.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/a94703ab.0438dbc2.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/ab9708a8.3e6dd091.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/c93cbaa0.eaff365e.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/da0b5bad.d08a9466.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/dd817ffc.0aa9630a.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/dd81e2b8.d590bc9e.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/de915948.27d6b065.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/e3d9abda.6b9493d0.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/e6f9706b.e74a984d.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/e92d0134.cf6d6522.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/f284c35a.42f59cdd.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/ff4d71f2.15b02f97.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/main.b12eac43.js +0 -2
- solace_agent_mesh/assets/docs/assets/js/runtime~main.e268214e.js +0 -1
- solace_agent_mesh/assets/docs/lunr-index-1761248203150.json +0 -1
- solace_agent_mesh/assets/docs/search-doc-1761248203150.json +0 -1
- solace_agent_mesh/cli/commands/add_cmd/add_cmd_llm.txt +0 -250
- solace_agent_mesh/cli/commands/init_cmd/init_cmd_llm.txt +0 -365
- solace_agent_mesh/cli/commands/plugin_cmd/plugin_cmd_llm.txt +0 -305
- solace_agent_mesh/client/webui/frontend/static/assets/client-CaY59VuC.js +0 -25
- solace_agent_mesh/client/webui/frontend/static/assets/main-B32noGmR.js +0 -342
- solace_agent_mesh/client/webui/frontend/static/assets/main-DHJKSW1S.css +0 -1
- solace_agent_mesh/client/webui/frontend/static/assets/vendor-BEmvJSYz.js +0 -405
- solace_agent_mesh/common/a2a/a2a_llm.txt +0 -182
- solace_agent_mesh/common/a2a/a2a_llm_detail.txt +0 -193
- solace_agent_mesh/common/a2a_spec/a2a_spec_llm.txt +0 -407
- solace_agent_mesh/common/a2a_spec/a2a_spec_llm_detail.txt +0 -736
- solace_agent_mesh/common/a2a_spec/schemas/schemas_llm.txt +0 -313
- solace_agent_mesh/common/common_llm.txt +0 -251
- solace_agent_mesh/common/common_llm_detail.txt +0 -2562
- solace_agent_mesh/common/middleware/middleware_llm.txt +0 -174
- solace_agent_mesh/common/middleware/middleware_llm_detail.txt +0 -185
- solace_agent_mesh/common/sac/sac_llm.txt +0 -71
- solace_agent_mesh/common/sac/sac_llm_detail.txt +0 -82
- solace_agent_mesh/common/sam_events/sam_events_llm.txt +0 -104
- solace_agent_mesh/common/sam_events/sam_events_llm_detail.txt +0 -115
- solace_agent_mesh/common/services/providers/providers_llm.txt +0 -80
- solace_agent_mesh/common/services/services_llm.txt +0 -363
- solace_agent_mesh/common/services/services_llm_detail.txt +0 -459
- solace_agent_mesh/common/utils/embeds/embeds_llm.txt +0 -220
- solace_agent_mesh/common/utils/utils_llm.txt +0 -336
- solace_agent_mesh/common/utils/utils_llm_detail.txt +0 -572
- solace_agent_mesh/config_portal/frontend/static/client/assets/_index-ByU1X1HD.js +0 -98
- solace_agent_mesh/config_portal/frontend/static/client/assets/manifest-61038fc6.js +0 -1
- solace_agent_mesh/config_portal/frontend/static/client/assets/root-BWvk5-gF.js +0 -10
- solace_agent_mesh/config_portal/frontend/static/client/assets/root-DxRwaWiE.css +0 -1
- solace_agent_mesh/core_a2a/core_a2a_llm.txt +0 -90
- solace_agent_mesh/core_a2a/core_a2a_llm_detail.txt +0 -101
- solace_agent_mesh/gateway/base/base_llm.txt +0 -224
- solace_agent_mesh/gateway/base/base_llm_detail.txt +0 -235
- solace_agent_mesh/gateway/gateway_llm.txt +0 -373
- solace_agent_mesh/gateway/gateway_llm_detail.txt +0 -3885
- solace_agent_mesh/gateway/http_sse/alembic/alembic_llm.txt +0 -295
- solace_agent_mesh/gateway/http_sse/alembic/versions/versions_llm.txt +0 -155
- solace_agent_mesh/gateway/http_sse/components/components_llm.txt +0 -105
- solace_agent_mesh/gateway/http_sse/http_sse_llm.txt +0 -299
- solace_agent_mesh/gateway/http_sse/http_sse_llm_detail.txt +0 -3278
- solace_agent_mesh/gateway/http_sse/repository/entities/entities_llm.txt +0 -263
- solace_agent_mesh/gateway/http_sse/repository/models/models_llm.txt +0 -266
- solace_agent_mesh/gateway/http_sse/repository/repository_llm.txt +0 -340
- solace_agent_mesh/gateway/http_sse/routers/dto/dto_llm.txt +0 -346
- solace_agent_mesh/gateway/http_sse/routers/dto/requests/requests_llm.txt +0 -83
- solace_agent_mesh/gateway/http_sse/routers/dto/responses/responses_llm.txt +0 -107
- solace_agent_mesh/gateway/http_sse/routers/routers_llm.txt +0 -314
- solace_agent_mesh/gateway/http_sse/services/services_llm.txt +0 -297
- solace_agent_mesh/gateway/http_sse/shared/__init__.py +0 -146
- solace_agent_mesh/gateway/http_sse/shared/shared_llm.txt +0 -285
- solace_agent_mesh/gateway/http_sse/utils/utils_llm.txt +0 -47
- solace_agent_mesh/llm.txt +0 -228
- solace_agent_mesh/llm_detail.txt +0 -2835
- solace_agent_mesh/solace_agent_mesh_llm.txt +0 -362
- solace_agent_mesh/solace_agent_mesh_llm_detail.txt +0 -8599
- solace_agent_mesh/templates/logging_config_template.ini +0 -45
- solace_agent_mesh/templates/templates_llm.txt +0 -147
- solace_agent_mesh-1.6.1.dist-info/RECORD +0 -525
- /solace_agent_mesh/assets/docs/assets/js/{main.b12eac43.js.LICENSE.txt → main.d634009f.js.LICENSE.txt} +0 -0
- /solace_agent_mesh/{gateway/http_sse/shared → shared/api}/auth_utils.py +0 -0
- /solace_agent_mesh/{gateway/http_sse/shared → shared/api}/pagination.py +0 -0
- /solace_agent_mesh/{gateway/http_sse/shared → shared/api}/response_utils.py +0 -0
- /solace_agent_mesh/{gateway/http_sse/shared → shared/exceptions}/error_dto.py +0 -0
- /solace_agent_mesh/{gateway/http_sse/shared → shared/exceptions}/exceptions.py +0 -0
- /solace_agent_mesh/{gateway/http_sse/shared → shared/utils}/enums.py +0 -0
- /solace_agent_mesh/{gateway/http_sse/shared → shared/utils}/timestamp_utils.py +0 -0
- /solace_agent_mesh/{gateway/http_sse/shared → shared/utils}/types.py +0 -0
- /solace_agent_mesh/{gateway/http_sse/shared → shared/utils}/utils.py +0 -0
- {solace_agent_mesh-1.6.1.dist-info → solace_agent_mesh-1.13.2.dist-info}/entry_points.txt +0 -0
- {solace_agent_mesh-1.6.1.dist-info → solace_agent_mesh-1.13.2.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,285 +0,0 @@
|
|
|
1
|
-
# DEVELOPER GUIDE: shared
|
|
2
|
-
|
|
3
|
-
## Quick Summary
|
|
4
|
-
The `shared` directory contains common utilities, constants, enums, types, and exception handling used across all layers of the HTTP SSE gateway. It provides authentication helpers, timestamp utilities, standardized exception handling, database utilities, pagination support, and response formatting for consistent API behavior.
|
|
5
|
-
|
|
6
|
-
## Files Overview
|
|
7
|
-
- `__init__.py` - Central exports for all shared utilities and components
|
|
8
|
-
- `auth_utils.py` - Authentication utilities for FastAPI applications
|
|
9
|
-
- `timestamp_utils.py` - Epoch timestamp utilities matching Java backend patterns
|
|
10
|
-
- `exceptions.py` - Generic web exceptions for HTTP/REST APIs
|
|
11
|
-
- `error_dto.py` - Standardized error response DTOs
|
|
12
|
-
- `exception_handlers.py` - FastAPI exception handlers for consistent HTTP error responses
|
|
13
|
-
- `base_repository.py` - Base repository classes with proper transaction management
|
|
14
|
-
- `pagination.py` - Pagination utilities for API responses
|
|
15
|
-
- `database_exceptions.py` - Database exception handling and conversion
|
|
16
|
-
- `database_helpers.py` - Database utility functions and custom types
|
|
17
|
-
- `response_utils.py` - Standardized response formatting utilities
|
|
18
|
-
- `enums.py` - Enumerations for message types, task status, and validation errors
|
|
19
|
-
- `types.py` - Custom types and type aliases for better type safety
|
|
20
|
-
- `utils.py` - Generic utility functions
|
|
21
|
-
|
|
22
|
-
## Developer API Reference
|
|
23
|
-
|
|
24
|
-
### auth_utils.py
|
|
25
|
-
**Purpose:** Provides authentication utilities for FastAPI controllers
|
|
26
|
-
**Import:** `from solace_agent_mesh.gateway.http_sse.shared import get_current_user`
|
|
27
|
-
|
|
28
|
-
**Functions:**
|
|
29
|
-
- `get_current_user(request: FastAPIRequest) -> dict` - Extracts authenticated user from request state, returns user info or anonymous default
|
|
30
|
-
|
|
31
|
-
**Usage Examples:**
|
|
32
|
-
```python
|
|
33
|
-
from fastapi import Depends
|
|
34
|
-
from solace_agent_mesh.gateway.http_sse.shared import get_current_user
|
|
35
|
-
|
|
36
|
-
@app.get("/protected")
|
|
37
|
-
async def protected_endpoint(user: dict = Depends(get_current_user)):
|
|
38
|
-
return {"user_id": user["id"], "name": user["name"]}
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
### timestamp_utils.py
|
|
42
|
-
**Purpose:** Provides epoch timestamp utilities for database portability and timezone handling
|
|
43
|
-
**Import:** `from solace_agent_mesh.gateway.http_sse.shared import now_epoch_ms, epoch_ms_to_iso8601, iso8601_to_epoch_ms`
|
|
44
|
-
|
|
45
|
-
**Functions:**
|
|
46
|
-
- `now_epoch_ms() -> int` - Get current time as milliseconds since epoch
|
|
47
|
-
- `epoch_ms_to_iso8601(epoch_ms: int) -> str` - Convert epoch milliseconds to ISO 8601 string
|
|
48
|
-
- `iso8601_to_epoch_ms(iso8601_string: str) -> int` - Convert ISO 8601 string to epoch milliseconds
|
|
49
|
-
- `datetime_to_epoch_ms(dt: datetime) -> int` - Convert datetime object to epoch milliseconds
|
|
50
|
-
- `epoch_ms_to_datetime(epoch_ms: int) -> datetime` - Convert epoch milliseconds to datetime object
|
|
51
|
-
- `validate_epoch_ms(epoch_ms: int | None) -> bool` - Validate that an epoch milliseconds value is reasonable
|
|
52
|
-
|
|
53
|
-
**Usage Examples:**
|
|
54
|
-
```python
|
|
55
|
-
from solace_agent_mesh.gateway.http_sse.shared import (
|
|
56
|
-
now_epoch_ms, epoch_ms_to_iso8601, iso8601_to_epoch_ms
|
|
57
|
-
)
|
|
58
|
-
|
|
59
|
-
# Get current timestamp for database storage
|
|
60
|
-
created_time = now_epoch_ms()
|
|
61
|
-
|
|
62
|
-
# Convert for API response
|
|
63
|
-
iso_string = epoch_ms_to_iso8601(created_time)
|
|
64
|
-
|
|
65
|
-
# Parse from API request
|
|
66
|
-
timestamp = iso8601_to_epoch_ms("2024-01-01T00:00:00Z")
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
### exceptions.py
|
|
70
|
-
**Purpose:** Generic web exceptions for HTTP/REST APIs
|
|
71
|
-
**Import:** `from solace_agent_mesh.gateway.http_sse.shared import ValidationError, EntityNotFoundError, EntityAlreadyExistsError`
|
|
72
|
-
|
|
73
|
-
**Classes:**
|
|
74
|
-
- `WebUIBackendException(message: str, details: Optional[Dict[str, Any]] = None)` - Base exception for all web UI backend errors
|
|
75
|
-
- `ValidationError(message: str, validation_details: Optional[Dict[str, List[str]]] = None, entity_type: Optional[str] = None, entity_identifier: Optional[str] = None)` - Exception for validation errors with field-level details
|
|
76
|
-
- `EntityNotFoundError(entity_type: str, entity_id: str)` - Generic exception for when an entity is not found
|
|
77
|
-
- `EntityAlreadyExistsError(entity_type: str, identifier: str, value: Any = None)` - Exception for when an entity already exists
|
|
78
|
-
- `BusinessRuleViolationError(rule: str, message: str)` - Exception for business rule violations
|
|
79
|
-
- `ConfigurationError(component: str, message: str)` - Exception for configuration-related errors
|
|
80
|
-
- `DataIntegrityError(constraint: str, message: str)` - Exception for data integrity violations
|
|
81
|
-
- `ExternalServiceError(service: str, message: str, status_code: Optional[int] = None)` - Exception for external service communication errors
|
|
82
|
-
- `ValidationErrorBuilder()` - Builder for constructing ValidationError instances with fluent API
|
|
83
|
-
|
|
84
|
-
**Usage Examples:**
|
|
85
|
-
```python
|
|
86
|
-
from solace_agent_mesh.gateway.http_sse.shared import (
|
|
87
|
-
ValidationError, EntityNotFoundError, ValidationErrorBuilder
|
|
88
|
-
)
|
|
89
|
-
|
|
90
|
-
# Simple validation error
|
|
91
|
-
raise ValidationError("Invalid input data")
|
|
92
|
-
|
|
93
|
-
# Entity not found
|
|
94
|
-
raise EntityNotFoundError("User", "123")
|
|
95
|
-
|
|
96
|
-
# Complex validation with builder
|
|
97
|
-
error = ValidationError.builder() \
|
|
98
|
-
.message("Invalid user data") \
|
|
99
|
-
.validation_detail("email", ["Invalid email format"]) \
|
|
100
|
-
.entity_type("User") \
|
|
101
|
-
.build()
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
### error_dto.py
|
|
105
|
-
**Purpose:** Standardized error response DTOs for HTTP APIs
|
|
106
|
-
**Import:** `from solace_agent_mesh.gateway.http_sse.shared import EventErrorDTO`
|
|
107
|
-
|
|
108
|
-
**Classes:**
|
|
109
|
-
- `EventErrorDTO(message: str, validationDetails: Optional[Dict[str, List[str]]] = None)` - Simplified and standardized error response format
|
|
110
|
-
- `create(message: str, validation_details: Optional[Dict[str, List[str]]] = None) -> EventErrorDTO` - Create a new EventErrorDTO
|
|
111
|
-
- `not_found(entity_type: str, entity_id: str) -> EventErrorDTO` - Create a 404 Not Found error
|
|
112
|
-
- `validation_error(message: str, validation_details: Dict[str, List[str]]) -> EventErrorDTO` - Create a validation error
|
|
113
|
-
|
|
114
|
-
**Usage Examples:**
|
|
115
|
-
```python
|
|
116
|
-
from solace_agent_mesh.gateway.http_sse.shared import EventErrorDTO
|
|
117
|
-
|
|
118
|
-
# Simple error
|
|
119
|
-
error = EventErrorDTO.create("Something went wrong")
|
|
120
|
-
|
|
121
|
-
# Not found error
|
|
122
|
-
error = EventErrorDTO.not_found("User", "123")
|
|
123
|
-
|
|
124
|
-
# Validation error
|
|
125
|
-
error = EventErrorDTO.validation_error(
|
|
126
|
-
"Invalid data",
|
|
127
|
-
{"email": ["Invalid format"], "age": ["Must be positive"]}
|
|
128
|
-
)
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
### exception_handlers.py
|
|
132
|
-
**Purpose:** FastAPI exception handlers for consistent HTTP error responses
|
|
133
|
-
**Import:** `from solace_agent_mesh.gateway.http_sse.shared import register_exception_handlers`
|
|
134
|
-
|
|
135
|
-
**Functions:**
|
|
136
|
-
- `register_exception_handlers(app)` - Register all exception handlers with a FastAPI app
|
|
137
|
-
- `create_error_response(status_code: int, message: str, validation_details: dict = None) -> JSONResponse` - Create standardized error response
|
|
138
|
-
|
|
139
|
-
**Usage Examples:**
|
|
140
|
-
```python
|
|
141
|
-
from fastapi import FastAPI
|
|
142
|
-
from solace_agent_mesh.gateway.http_sse.shared import register_exception_handlers
|
|
143
|
-
|
|
144
|
-
app = FastAPI()
|
|
145
|
-
register_exception_handlers(app)
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
### base_repository.py
|
|
149
|
-
**Purpose:** Base repository classes with proper transaction management
|
|
150
|
-
**Import:** `from solace_agent_mesh.gateway.http_sse.shared import BaseRepository, PaginatedRepository, ValidationMixin`
|
|
151
|
-
|
|
152
|
-
**Classes:**
|
|
153
|
-
- `BaseRepository(model_class: Type[ModelType], entity_class: Type[EntityType])` - Abstract base class for repositories
|
|
154
|
-
- `create(session: Session, create_data: Dict[str, Any]) -> EntityType` - Create a new entity
|
|
155
|
-
- `get_by_id(session: Session, entity_id: Any) -> EntityType` - Get entity by ID
|
|
156
|
-
- `get_all(session: Session, limit: Optional[int] = None, offset: Optional[int] = None) -> List[EntityType]` - Get all entities
|
|
157
|
-
- `update(session: Session, entity_id: Any, update_data: Dict[str, Any]) -> EntityType` - Update an entity
|
|
158
|
-
- `delete(session: Session, entity_id: Any) -> None` - Delete an entity
|
|
159
|
-
- `PaginatedRepository(model_class: Type[ModelType], entity_class: Type[EntityType])` - Base repository with enhanced pagination support
|
|
160
|
-
- `get_paginated(session: Session, page_number: int, page_size: int) -> tuple[List[EntityType], int]` - Get paginated results
|
|
161
|
-
- `ValidationMixin` - Mixin for repositories that need validation logic
|
|
162
|
-
|
|
163
|
-
**Usage Examples:**
|
|
164
|
-
```python
|
|
165
|
-
from solace_agent_mesh.gateway.http_sse.shared import BaseRepository
|
|
166
|
-
from sqlalchemy.orm import Session
|
|
167
|
-
|
|
168
|
-
class UserRepository(BaseRepository[UserModel, UserEntity]):
|
|
169
|
-
@property
|
|
170
|
-
def entity_name(self) -> str:
|
|
171
|
-
return "User"
|
|
172
|
-
|
|
173
|
-
# Usage
|
|
174
|
-
repo = UserRepository(UserModel, UserEntity)
|
|
175
|
-
user = repo.create(session, {"name": "John", "email": "john@example.com"})
|
|
176
|
-
```
|
|
177
|
-
|
|
178
|
-
### pagination.py
|
|
179
|
-
**Purpose:** Pagination utilities for API responses
|
|
180
|
-
**Import:** `from solace_agent_mesh.gateway.http_sse.shared import PaginationParams, PaginatedResponse, DataResponse`
|
|
181
|
-
|
|
182
|
-
**Classes:**
|
|
183
|
-
- `PaginationParams(page_number: int = 1, page_size: int = 20)` - Request parameters for pagination
|
|
184
|
-
- `offset: int` - Calculate the offset for database queries
|
|
185
|
-
- `PaginatedResponse[T](data: list[T], meta: Meta)` - Generic paginated response with data and metadata
|
|
186
|
-
- `create(data: list[T], total_count: int, pagination: PaginationParams) -> PaginatedResponse[T]` - Create paginated response
|
|
187
|
-
- `DataResponse[T](data: T)` - Simple data response wrapper
|
|
188
|
-
- `create(data: T) -> DataResponse[T]` - Create data response
|
|
189
|
-
|
|
190
|
-
**Usage Examples:**
|
|
191
|
-
```python
|
|
192
|
-
from solace_agent_mesh.gateway.http_sse.shared import PaginationParams, PaginatedResponse
|
|
193
|
-
|
|
194
|
-
# Create pagination params
|
|
195
|
-
pagination = PaginationParams(page_number=1, page_size=20)
|
|
196
|
-
|
|
197
|
-
# Create paginated response
|
|
198
|
-
response = PaginatedResponse.create(users, total_count=100, pagination=pagination)
|
|
199
|
-
```
|
|
200
|
-
|
|
201
|
-
### response_utils.py
|
|
202
|
-
**Purpose:** Standardized response formatting utilities
|
|
203
|
-
**Import:** `from solace_agent_mesh.gateway.http_sse.shared import create_data_response, create_paginated_response, StandardResponseMixin`
|
|
204
|
-
|
|
205
|
-
**Functions:**
|
|
206
|
-
- `create_data_response(data: T) -> DataResponse[T]` - Create a standardized data response
|
|
207
|
-
- `create_paginated_response(data: List[T], total_count: int, pagination_params: PaginationParams) -> PaginatedResponse[T]` - Create a standardized paginated response
|
|
208
|
-
- `create_success_response(message: str = "Success") -> DataResponse[Dict[str, str]]` - Create a standardized success response
|
|
209
|
-
- `create_list_response(items: List[T]) -> DataResponse[List[T]]` - Create a standardized list response
|
|
210
|
-
|
|
211
|
-
**Classes:**
|
|
212
|
-
- `StandardResponseMixin` - Mixin class to add standard response methods to services or controllers
|
|
213
|
-
|
|
214
|
-
**Usage Examples:**
|
|
215
|
-
```python
|
|
216
|
-
from solace_agent_mesh.gateway.http_sse.shared import create_data_response, create_paginated_response
|
|
217
|
-
|
|
218
|
-
# Simple data response
|
|
219
|
-
response = create_data_response({"id": 1, "name": "test"})
|
|
220
|
-
|
|
221
|
-
# Paginated response
|
|
222
|
-
response = create_paginated_response(users, 100, pagination_params)
|
|
223
|
-
```
|
|
224
|
-
|
|
225
|
-
### database_exceptions.py
|
|
226
|
-
**Purpose:** Database exception handling and conversion
|
|
227
|
-
**Import:** `from solace_agent_mesh.gateway.http_sse.shared import DatabaseExceptionHandler, handle_database_errors`
|
|
228
|
-
|
|
229
|
-
**Classes:**
|
|
230
|
-
- `DatabaseExceptionHandler` - Centralized handler for converting SQLAlchemy exceptions to domain exceptions
|
|
231
|
-
- `handle_integrity_error(e: IntegrityError, entity_type: str = "Resource") -> ValidationError` - Convert integrity constraint violations
|
|
232
|
-
- `handle_operational_error(e: OperationalError, entity_type: str = "Resource") -> DataIntegrityError` - Handle operational errors
|
|
233
|
-
|
|
234
|
-
**Functions:**
|
|
235
|
-
- `handle_database_errors(entity_type: str = "Resource")` - Convenience decorator for database exception handling
|
|
236
|
-
|
|
237
|
-
**Usage Examples:**
|
|
238
|
-
```python
|
|
239
|
-
from solace_agent_mesh.gateway.http_sse.shared import handle_database_errors
|
|
240
|
-
|
|
241
|
-
class UserRepository:
|
|
242
|
-
@handle_database_errors("User")
|
|
243
|
-
def create_user(self, session, data):
|
|
244
|
-
# Repository method implementation
|
|
245
|
-
pass
|
|
246
|
-
```
|
|
247
|
-
|
|
248
|
-
### database_helpers.py
|
|
249
|
-
**Purpose:** Database utility functions and custom types
|
|
250
|
-
**Import:** `from solace_agent_mesh.gateway.http_sse.shared import SimpleJSON`
|
|
251
|
-
|
|
252
|
-
**Classes:**
|
|
253
|
-
- `SimpleJSON(TypeDecorator)` - Simple JSON type using Text storage for all databases
|
|
254
|
-
|
|
255
|
-
**Usage Examples:**
|
|
256
|
-
```python
|
|
257
|
-
from sqlalchemy import Column, String
|
|
258
|
-
from solace_agent_mesh.gateway.http_sse.shared import SimpleJSON
|
|
259
|
-
|
|
260
|
-
class MyModel(Base):
|
|
261
|
-
id = Column(String, primary_key=True)
|
|
262
|
-
metadata = Column(SimpleJSON) # Stores JSON as text
|
|
263
|
-
```
|
|
264
|
-
|
|
265
|
-
### utils.py
|
|
266
|
-
**Purpose:** Generic utility functions
|
|
267
|
-
**Import:** `from solace_agent_mesh.gateway.http_sse.shared import generate_uuid, to_snake_case, to_pascal_case`
|
|
268
|
-
|
|
269
|
-
**Functions:**
|
|
270
|
-
- `generate_uuid() -> str` - Generate a UUID string for database storage
|
|
271
|
-
- `to_snake_case(name: str) -> str` - Convert a string to snake_case
|
|
272
|
-
- `to_pascal_case(name: str) -> str` - Convert a string to PascalCase
|
|
273
|
-
|
|
274
|
-
**Usage Examples:**
|
|
275
|
-
```python
|
|
276
|
-
from solace_agent_mesh.gateway.http_sse.shared import generate_uuid, to_snake_case
|
|
277
|
-
|
|
278
|
-
# Generate unique ID
|
|
279
|
-
user_id = generate_uuid()
|
|
280
|
-
|
|
281
|
-
# Convert naming
|
|
282
|
-
snake_name = to_snake_case("User Name") # "user_name"
|
|
283
|
-
```
|
|
284
|
-
|
|
285
|
-
# content_hash: 0e33735691fb4637243f4fe61acbba78a388e654834903e34be22e3ce6f3c3bc
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
## Quick Summary
|
|
2
|
-
The `utils` directory provides utility functions for the HTTP SSE Gateway, specifically for creating .stim file structures from task and event data.
|
|
3
|
-
|
|
4
|
-
## Files Overview
|
|
5
|
-
- `__init__.py` - Package initialization file for HTTP SSE Gateway utilities
|
|
6
|
-
- `stim_utils.py` - Utility functions for formatting task data into .stim file structures
|
|
7
|
-
|
|
8
|
-
## Developer API Reference
|
|
9
|
-
|
|
10
|
-
### __init__.py
|
|
11
|
-
**Purpose:** Package initialization for HTTP SSE Gateway utilities
|
|
12
|
-
**Import:** `from solace_agent_mesh.gateway.http_sse.utils import *`
|
|
13
|
-
|
|
14
|
-
This file serves as the package entry point and contains no public interfaces.
|
|
15
|
-
|
|
16
|
-
### stim_utils.py
|
|
17
|
-
**Purpose:** Provides utility functions for creating .stim file structures from task and event data
|
|
18
|
-
**Import:** `from solace_agent_mesh.gateway.http_sse.utils.stim_utils import create_stim_from_task_data`
|
|
19
|
-
|
|
20
|
-
**Functions:**
|
|
21
|
-
- `create_stim_from_task_data(task: Task, events: List[TaskEvent]) -> dict` - Formats a task and its events into the .stim file structure with version 2.0 format for gateway-generated logs
|
|
22
|
-
|
|
23
|
-
**Usage Examples:**
|
|
24
|
-
```python
|
|
25
|
-
from solace_agent_mesh.gateway.http_sse.utils.stim_utils import create_stim_from_task_data
|
|
26
|
-
from solace_agent_mesh.gateway.http_sse.repository.entities import Task, TaskEvent
|
|
27
|
-
|
|
28
|
-
# Create a .stim file structure from task and events
|
|
29
|
-
task = Task(
|
|
30
|
-
id="task_123",
|
|
31
|
-
user_id="user_456",
|
|
32
|
-
start_time="2024-01-01T10:00:00Z",
|
|
33
|
-
end_time="2024-01-01T10:05:00Z",
|
|
34
|
-
status="completed",
|
|
35
|
-
initial_request_text="Process this data"
|
|
36
|
-
)
|
|
37
|
-
|
|
38
|
-
events = [
|
|
39
|
-
TaskEvent(event_type="start", timestamp="2024-01-01T10:00:00Z"),
|
|
40
|
-
TaskEvent(event_type="complete", timestamp="2024-01-01T10:05:00Z")
|
|
41
|
-
]
|
|
42
|
-
|
|
43
|
-
stim_data = create_stim_from_task_data(task, events)
|
|
44
|
-
# Returns a dictionary with 'invocation_details' and 'invocation_flow' keys
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
# content_hash: 7fdc4ad8bbcefb07ee40f84c438f988cda4fdfb812dab55c6a064d1b38b0c83f
|
solace_agent_mesh/llm.txt
DELETED
|
@@ -1,228 +0,0 @@
|
|
|
1
|
-
Here is the comprehensive developer guide for the `src` directory.
|
|
2
|
-
|
|
3
|
-
## Quick Summary
|
|
4
|
-
The `src` directory serves as the main source code root for the Solace AI Connector, containing four primary subsystems that work together to enable comprehensive AI agent communication and hosting. The `agent` directory provides a complete framework for hosting Google ADK agents with A2A protocol support, the `common` directory offers foundational A2A protocol infrastructure and utilities, the `core_a2a` directory provides a reusable service layer for core A2A operations, and the `gateway` directory implements various gateway patterns for external platform integration. These components work together to create a distributed AI agent ecosystem with real-time communication, task delegation, and multi-platform integration capabilities.
|
|
5
|
-
|
|
6
|
-
## Files and Subdirectories Overview
|
|
7
|
-
- **Direct files:**
|
|
8
|
-
- `__init__.py`: Empty package initialization file.
|
|
9
|
-
- **Subdirectories:**
|
|
10
|
-
- `agent/`: Complete ADK agent hosting framework with A2A protocol integration and comprehensive tool library.
|
|
11
|
-
- `common/`: Foundational A2A protocol infrastructure, type systems, and client/server implementations.
|
|
12
|
-
- `core_a2a/`: Reusable service layer for core A2A interactions and agent registry operations.
|
|
13
|
-
- `gateway/`: Gateway framework with HTTP/SSE, Slack, and Webhook implementations for external platform integration.
|
|
14
|
-
|
|
15
|
-
## Developer API Reference
|
|
16
|
-
|
|
17
|
-
### Direct Files
|
|
18
|
-
|
|
19
|
-
#### __init__.py
|
|
20
|
-
**Purpose:** Standard Python package initializer. It allows the `src` directory and its subdirectories to be treated as a package.
|
|
21
|
-
**Import:** `from src import agent, common, gateway`
|
|
22
|
-
|
|
23
|
-
**Classes/Functions/Constants:**
|
|
24
|
-
This file is empty and has no public interfaces.
|
|
25
|
-
|
|
26
|
-
### Subdirectory APIs
|
|
27
|
-
|
|
28
|
-
#### agent/
|
|
29
|
-
**Purpose:** Provides a complete framework for hosting Google ADK agents with A2A protocol support and a comprehensive, extensible tool library.
|
|
30
|
-
**Key Exports:** `SamAgentApp`, `SamAgentComponent`, `AppLlmAgent`, and a wide array of built-in tools for data analysis, web requests, multimedia processing, and inter-agent communication.
|
|
31
|
-
**Import Examples:**
|
|
32
|
-
```python
|
|
33
|
-
from src.solace_agent_mesh.agent.sac.app import SamAgentApp
|
|
34
|
-
from src.solace_agent_mesh.agent.sac.component import SamAgentComponent
|
|
35
|
-
from src.solace_agent_mesh.agent.adk.app_llm_agent import AppLlmAgent
|
|
36
|
-
from src.solace_agent_mesh.agent.tools.builtin_data_analysis_tools import query_data_with_sql
|
|
37
|
-
from src.solace_agent_mesh.agent.tools.peer_agent_tool import PeerAgentTool
|
|
38
|
-
from src.solace_agent_mesh.agent.tools.web_tools import web_request
|
|
39
|
-
from src.solace_agent_mesh.agent.tools.image_tools import create_image_from_description
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
#### common/
|
|
43
|
-
**Purpose:** Provides the foundational infrastructure for Agent-to-Agent (A2A) communication, including the core protocol, data types, message translation, and client/server implementations.
|
|
44
|
-
**Key Exports:** A2A protocol functions, Pydantic type definitions (`Message`, `Task`, `AgentCard`), `A2AClient` for interacting with agents, `A2AServer` for building agents, and various utilities.
|
|
45
|
-
**Import Examples:**
|
|
46
|
-
```python
|
|
47
|
-
from src.solace_agent_mesh.common.a2a_protocol import get_agent_request_topic
|
|
48
|
-
from src.solace_agent_mesh.common.types import Message, Task, AgentCard, TextPart
|
|
49
|
-
from src.solace_agent_mesh.common.client import A2AClient, A2ACardResolver
|
|
50
|
-
from src.solace_agent_mesh.common.server import A2AServer, InMemoryTaskManager
|
|
51
|
-
from src.solace_agent_mesh.common.agent_registry import AgentRegistry
|
|
52
|
-
from src.solace_agent_mesh.common.utils.embeds import resolve_embeds_in_string
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
#### core_a2a/
|
|
56
|
-
**Purpose:** Provides a reusable, decoupled service layer for core A2A interactions, handling task submission, cancellation, and agent discovery.
|
|
57
|
-
**Key Exports:** `CoreA2AService` for managing A2A protocol logic without being tied to a specific gateway or messaging implementation.
|
|
58
|
-
**Import Examples:**
|
|
59
|
-
```python
|
|
60
|
-
from src.solace_agent_mesh.core_a2a.service import CoreA2AService
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
#### gateway/
|
|
64
|
-
**Purpose:** Provides a framework and multiple implementations for building gateways that bridge external platforms (like web UIs, Slack, or webhooks) with the A2A messaging system.
|
|
65
|
-
**Key Exports:** `BaseGatewayApp` and `BaseGatewayComponent` for creating custom gateways, and concrete implementations like `WebUIBackendApp`, `SlackGatewayApp`, and `WebhookGatewayApp`.
|
|
66
|
-
**Import Examples:**
|
|
67
|
-
```python
|
|
68
|
-
from src.solace_agent_mesh.gateway.base.app import BaseGatewayApp
|
|
69
|
-
from src.solace_agent_mesh.gateway.http_sse.app import WebUIBackendApp
|
|
70
|
-
from src.solace_agent_mesh.gateway.slack.app import SlackGatewayApp
|
|
71
|
-
from src.solace_agent_mesh.gateway.webhook.app import WebhookGatewayApp
|
|
72
|
-
from src.solace_agent_mesh.gateway.base.authorization_service import ConfigurableRbacAuthorizationService
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
## Complete Usage Guide
|
|
76
|
-
This guide demonstrates how the different subdirectories within `src` work together to build a complete, distributed AI agent system.
|
|
77
|
-
|
|
78
|
-
### 1. How to import and use functionality from subdirectories
|
|
79
|
-
The following examples show how to import and instantiate components from each major subdirectory.
|
|
80
|
-
|
|
81
|
-
```python
|
|
82
|
-
# 1. Import from the 'agent' directory to create an AI agent
|
|
83
|
-
from src.solace_agent_mesh.agent.sac.app import SamAgentApp
|
|
84
|
-
|
|
85
|
-
# 2. Import from the 'common' and 'core_a2a' directories for protocol infrastructure
|
|
86
|
-
from src.solace_agent_mesh.common.agent_registry import AgentRegistry
|
|
87
|
-
from src.solace_agent_mesh.common.types import AgentCard, AgentCapabilities, AgentSkill
|
|
88
|
-
from src.solace_agent_mesh.core_a2a.service import CoreA2AService
|
|
89
|
-
|
|
90
|
-
# 3. Import from the 'gateway' directory to create interfaces
|
|
91
|
-
from src.solace_agent_mesh.gateway.http_sse.app import WebUIBackendApp
|
|
92
|
-
from src.solace_agent_mesh.gateway.slack.app import SlackGatewayApp
|
|
93
|
-
from src.solace_agent_mesh.gateway.webhook.app import WebhookGatewayApp
|
|
94
|
-
|
|
95
|
-
# 4. Import tools from the 'agent/tools' subdirectory
|
|
96
|
-
from src.solace_agent_mesh.agent.tools.peer_agent_tool import PeerAgentTool
|
|
97
|
-
from src.solace_agent_mesh.agent.tools.builtin_data_analysis_tools import query_data_with_sql
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
### 2. How different parts work together
|
|
101
|
-
This section shows a step-by-step process for building a system, illustrating the synergy between the components.
|
|
102
|
-
|
|
103
|
-
#### Step 1: Create an ADK-powered agent (`agent/`)
|
|
104
|
-
First, define and configure an agent. This agent will automatically be equipped with a rich set of tools and A2A communication capabilities.
|
|
105
|
-
|
|
106
|
-
```python
|
|
107
|
-
# File: my_system.py
|
|
108
|
-
from src.solace_agent_mesh.agent.sac.app import SamAgentApp
|
|
109
|
-
|
|
110
|
-
# Configure the agent with all capabilities
|
|
111
|
-
agent_config = {
|
|
112
|
-
"name": "data-analyst-agent",
|
|
113
|
-
"app_config": {
|
|
114
|
-
"namespace": "myorg/ai-agents",
|
|
115
|
-
"agent_name": "data_analyst",
|
|
116
|
-
"model": "gemini-1.5-pro",
|
|
117
|
-
"instruction": "You are a data analysis expert with access to SQL, charting, web tools, and peer collaboration.",
|
|
118
|
-
"agent_card": {
|
|
119
|
-
"description": "AI agent for comprehensive data analysis and reporting",
|
|
120
|
-
"capabilities": ["data_analysis", "web_research", "chart_generation", "peer_collaboration"]
|
|
121
|
-
},
|
|
122
|
-
"agent_card_publishing": {"interval_seconds": 30},
|
|
123
|
-
"agent_discovery": {"enabled": True},
|
|
124
|
-
"inter_agent_communication": {"allow_list": ["*"]}
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
# Create the agent app (in a real scenario, this is run by the SAC framework)
|
|
129
|
-
agent_app = SamAgentApp(agent_config)
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
#### Step 2: Set Up A2A Protocol Infrastructure (`common/` and `core_a2a/`)
|
|
133
|
-
Next, set up the core services that manage agent discovery and task routing. This is often handled by the gateway components but can be used directly.
|
|
134
|
-
|
|
135
|
-
```python
|
|
136
|
-
# File: my_system.py (continued)
|
|
137
|
-
from src.solace_agent_mesh.common.agent_registry import AgentRegistry
|
|
138
|
-
from src.solace_agent_mesh.common.types import AgentCard, AgentCapabilities, AgentSkill
|
|
139
|
-
from src.solace_agent_mesh.core_a2a.service import CoreA2AService
|
|
140
|
-
|
|
141
|
-
# Initialize a shared agent registry
|
|
142
|
-
agent_registry = AgentRegistry()
|
|
143
|
-
|
|
144
|
-
# Create the core A2A service, which uses the registry
|
|
145
|
-
namespace = "myorg/ai-agents"
|
|
146
|
-
a2a_service = CoreA2AService(agent_registry, namespace)
|
|
147
|
-
|
|
148
|
-
# Manually register an agent's capabilities (this is usually done automatically by the agent itself)
|
|
149
|
-
data_analyst_card = AgentCard(
|
|
150
|
-
name="data_analyst",
|
|
151
|
-
display_name="Data Analyst",
|
|
152
|
-
description="AI agent for data analysis",
|
|
153
|
-
url=f"a2a://{namespace}/data_analyst",
|
|
154
|
-
version="1.0.0",
|
|
155
|
-
capabilities=AgentCapabilities(streaming=True, pushNotifications=True),
|
|
156
|
-
skills=[AgentSkill(id="sql_analysis", name="SQL Data Analysis")]
|
|
157
|
-
)
|
|
158
|
-
a2a_service.process_discovery_message(data_analyst_card)
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
#### Step 3: Create Gateway Integrations (`gateway/`)
|
|
162
|
-
Create one or more gateways to expose the agent(s) to external platforms.
|
|
163
|
-
|
|
164
|
-
```python
|
|
165
|
-
# File: my_system.py (continued)
|
|
166
|
-
from src.solace_agent_mesh.gateway.http_sse.app import WebUIBackendApp
|
|
167
|
-
from src.solace_agent_mesh.gateway.slack.app import SlackGatewayApp
|
|
168
|
-
|
|
169
|
-
# Web UI Gateway for browser-based interactions
|
|
170
|
-
webui_config = {
|
|
171
|
-
"name": "web-gateway",
|
|
172
|
-
"app_config": {
|
|
173
|
-
"namespace": "myorg/ai-agents",
|
|
174
|
-
"gateway_id": "web-ui-gateway",
|
|
175
|
-
"session_secret_key": "a-very-secret-key",
|
|
176
|
-
"fastapi_host": "0.0.0.0",
|
|
177
|
-
"fastapi_port": 8080,
|
|
178
|
-
"artifact_service": {"type": "local_file", "base_path": "./artifacts"}
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
webui_app = WebUIBackendApp(webui_config)
|
|
182
|
-
|
|
183
|
-
# Slack Gateway for team collaboration
|
|
184
|
-
slack_config = {
|
|
185
|
-
"name": "slack-gateway",
|
|
186
|
-
"app_config": {
|
|
187
|
-
"namespace": "myorg/ai-agents",
|
|
188
|
-
"gateway_id": "slack-gateway",
|
|
189
|
-
"slack_bot_token": "${SLACK_BOT_TOKEN}",
|
|
190
|
-
"slack_app_token": "${SLACK_APP_TOKEN}",
|
|
191
|
-
"default_agent_name": "data_analyst"
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
slack_app = SlackGatewayApp(slack_config)
|
|
195
|
-
```
|
|
196
|
-
|
|
197
|
-
### 3. Common usage patterns
|
|
198
|
-
|
|
199
|
-
#### Pattern 1: Inter-Agent Communication
|
|
200
|
-
An agent can use the `PeerAgentTool` (from `agent/tools/`) to delegate tasks to other agents, leveraging the `common/` protocol infrastructure.
|
|
201
|
-
|
|
202
|
-
```python
|
|
203
|
-
# This code would run within an agent's tool execution context.
|
|
204
|
-
from src.solace_agent_mesh.agent.tools.peer_agent_tool import PeerAgentTool
|
|
205
|
-
|
|
206
|
-
async def analyze_and_delegate_report(component, tool_context):
|
|
207
|
-
# Assume 'component' is the SamAgentComponent instance hosting the current agent.
|
|
208
|
-
|
|
209
|
-
# Step 1: Perform local analysis (using another tool)
|
|
210
|
-
# ... analysis_result = await query_data_with_sql(...) ...
|
|
211
|
-
|
|
212
|
-
# Step 2: Delegate report generation to a specialist agent
|
|
213
|
-
peer_tool = PeerAgentTool(
|
|
214
|
-
target_agent_name="report_generator",
|
|
215
|
-
host_component=component
|
|
216
|
-
)
|
|
217
|
-
|
|
218
|
-
report_result = await peer_tool.run_async(
|
|
219
|
-
args={
|
|
220
|
-
"task_description": "Generate a professional PDF report from this analysis",
|
|
221
|
-
"analysis_data": "artifact://analysis_result.json",
|
|
222
|
-
"report_format": "PDF"
|
|
223
|
-
},
|
|
224
|
-
tool_context=tool_context
|
|
225
|
-
)
|
|
226
|
-
|
|
227
|
-
return report_result
|
|
228
|
-
```
|