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,566 +0,0 @@
|
|
|
1
|
-
# LLM Summary Detail File
|
|
2
|
-
|
|
3
|
-
This file is a concatenation of all individual *llm.txt files found in the 'adk' directory tree. Each section below corresponds to a specific directory's summary file.
|
|
4
|
-
|
|
5
|
-
================================================================================
|
|
6
|
-
|
|
7
|
-
## Section 1: solace_agent_mesh/agent/adk/adk_llm.txt
|
|
8
|
-
|
|
9
|
-
**Source file:** `solace_agent_mesh/agent/adk/adk_llm.txt`
|
|
10
|
-
|
|
11
|
-
# DEVELOPER GUIDE for adk directory
|
|
12
|
-
|
|
13
|
-
## Quick Summary
|
|
14
|
-
The `adk` directory serves as the core integration layer between the Solace AI Connector framework and Google's Agent Development Kit (ADK). It provides the essential components for building, configuring, and running sophisticated AI agents within a Solace messaging environment.
|
|
15
|
-
|
|
16
|
-
The architecture is designed for modularity and extensibility. The `setup.py` module acts as the main configuration hub, using factory functions from `services.py` to initialize pluggable services (like `FilesystemArtifactService` for artifact storage) and loading tools (Python functions, MCP tools) via the `ADKToolWrapper`.
|
|
17
|
-
|
|
18
|
-
Once initialized, the `AppLlmAgent` (a custom agent class) is managed by the `runner.py` module, which handles the asynchronous task execution loop. The agent's behavior is dynamically augmented at runtime by a rich set of callbacks from `callbacks.py`. These callbacks inject dynamic instructions, manage large tool responses, log events to Solace, and handle advanced features like streaming artifact creation and auto-continuation of conversations. The `models/` subdirectory provides the concrete LLM clients, with `LiteLlm` offering broad compatibility with various model providers.
|
|
19
|
-
|
|
20
|
-
## Files and Subdirectories Overview
|
|
21
|
-
- **Direct files:**
|
|
22
|
-
- `__init__.py`: Standard Python package initializer
|
|
23
|
-
- `adk_llm.txt`: Documentation file containing developer guide content
|
|
24
|
-
- `app_llm_agent.py`: Defines a custom `LlmAgent` subclass that holds a reference to its host component
|
|
25
|
-
- `callbacks.py`: Provides a rich set of ADK callback functions for dynamic instructions, metadata injection, and Solace integration
|
|
26
|
-
- `embed_resolving_mcp_toolset.py`: Custom MCPToolset that resolves embeds in tool parameters before calling MCP tools
|
|
27
|
-
- `filesystem_artifact_service.py`: A local filesystem-based implementation of ADK's `BaseArtifactService`
|
|
28
|
-
- `intelligent_mcp_callbacks.py`: Intelligent MCP callback functions for processing and saving MCP tool responses as typed artifacts
|
|
29
|
-
- `invocation_monitor.py`: A utility for monitoring and logging agent invocations to YAML files for debugging
|
|
30
|
-
- `mcp_content_processor.py`: Intelligent processing of MCP tool responses, converting raw content into appropriately typed artifacts
|
|
31
|
-
- `runner.py`: Manages the asynchronous execution of ADK agent tasks, including cancellation support
|
|
32
|
-
- `services.py`: Contains factory functions for initializing ADK services (session, artifact, memory) based on configuration
|
|
33
|
-
- `setup.py`: Handles the high-level initialization of the ADK agent, tools, and runner
|
|
34
|
-
- `stream_parser.py`: An internal utility for parsing fenced artifact blocks from an LLM's streaming response
|
|
35
|
-
- `tool_wrapper.py`: A wrapper for Python functions to make them compatible with ADK, handling embed resolution and config injection
|
|
36
|
-
- **Subdirectories:**
|
|
37
|
-
- `artifacts/`: Contains filesystem and S3-compatible artifact storage implementations
|
|
38
|
-
- `models/`: Contains concrete `BaseLlm` implementations for interfacing with various LLM providers
|
|
39
|
-
|
|
40
|
-
## Developer API Reference
|
|
41
|
-
|
|
42
|
-
### Direct Files
|
|
43
|
-
|
|
44
|
-
#### app_llm_agent.py
|
|
45
|
-
**Purpose:** A custom `LlmAgent` subclass that includes a reference to its hosting component, allowing callbacks and tools to access host-level configurations and services.
|
|
46
|
-
**Import:** `from solace_agent_mesh.agent.adk.app_llm_agent import AppLlmAgent`
|
|
47
|
-
|
|
48
|
-
**Classes/Functions/Constants:**
|
|
49
|
-
- `AppLlmAgent(host_component: Any = None, **kwargs)`: A custom `LlmAgent` that can be linked to a host component. The `host_component` is set post-initialization and is excluded from serialization.
|
|
50
|
-
|
|
51
|
-
#### callbacks.py
|
|
52
|
-
**Purpose:** Provides a suite of ADK callback functions that hook into the agent's lifecycle to inject custom logic. These are typically not called directly but are assigned to the agent during setup.
|
|
53
|
-
**Import:** `from solace_agent_mesh.agent.adk import callbacks`
|
|
54
|
-
|
|
55
|
-
**Classes/Functions/Constants:**
|
|
56
|
-
- `inject_dynamic_instructions_callback(...)`: Injects instructions into the prompt based on host configuration, active tools, and peer agents
|
|
57
|
-
- `manage_large_mcp_tool_responses_callback(...)`: Intercepts large tool responses, saves them as artifacts, and returns a truncated summary to the LLM
|
|
58
|
-
- `after_tool_callback_inject_metadata(...)`: After a tool creates an artifact, this loads its metadata and injects it into the tool response
|
|
59
|
-
- `process_artifact_blocks_callback(...)`: Processes streaming text to identify and save fenced artifact blocks (e.g., `«««save_artifact:...»»»`)
|
|
60
|
-
- `auto_continue_on_max_tokens_callback(...)`: Automatically continues a conversation if the LLM response was interrupted due to token limits
|
|
61
|
-
- `notify_tool_invocation_start_callback(...)`: Sends a status update over Solace when a tool is about to be invoked
|
|
62
|
-
- `solace_llm_invocation_callback(...)`: Sends a status update over Solace when the agent calls the LLM
|
|
63
|
-
- `repair_history_callback(...)`: Proactively checks for and repairs dangling tool calls in conversation history
|
|
64
|
-
|
|
65
|
-
#### embed_resolving_mcp_toolset.py
|
|
66
|
-
**Purpose:** Custom MCPToolset that resolves embeds in tool parameters before calling MCP tools, enabling dynamic content injection.
|
|
67
|
-
**Import:** `from solace_agent_mesh.agent.adk.embed_resolving_mcp_toolset import EmbedResolvingMCPToolset, EmbedResolvingMCPTool`
|
|
68
|
-
|
|
69
|
-
**Classes/Functions/Constants:**
|
|
70
|
-
- `EmbedResolvingMCPToolset(connection_params, tool_filter=None, auth_scheme=None, auth_credential=None, tool_config=None)`: Custom MCPToolset that creates EmbedResolvingMCPTool instances
|
|
71
|
-
- `EmbedResolvingMCPTool(original_mcp_tool, tool_config=None)`: Custom MCPTool that resolves embeds in parameters before calling the actual MCP tool
|
|
72
|
-
|
|
73
|
-
#### filesystem_artifact_service.py
|
|
74
|
-
**Purpose:** An implementation of `BaseArtifactService` that stores artifacts on the local filesystem, organized by scope, user, and session.
|
|
75
|
-
**Import:** `from solace_agent_mesh.agent.adk.filesystem_artifact_service import FilesystemArtifactService`
|
|
76
|
-
|
|
77
|
-
**Classes/Functions/Constants:**
|
|
78
|
-
- `FilesystemArtifactService(base_path: str)`: A service for managing artifacts on the local disk
|
|
79
|
-
- `async save_artifact(...) -> int`: Saves an artifact and returns its version number
|
|
80
|
-
- `async load_artifact(...) -> Optional[adk_types.Part]`: Loads a specific version of an artifact, or the latest if unspecified
|
|
81
|
-
- `async list_artifact_keys(...) -> List[str]`: Lists the names of all artifacts for a given user/session
|
|
82
|
-
- `async delete_artifact(...)`: Deletes an artifact and all its versions
|
|
83
|
-
- `async list_versions(...) -> List[int]`: Lists all version numbers for a specific artifact
|
|
84
|
-
|
|
85
|
-
#### intelligent_mcp_callbacks.py
|
|
86
|
-
**Purpose:** Intelligent MCP callback functions that use intelligent content processing to save MCP tool responses as appropriately typed artifacts.
|
|
87
|
-
**Import:** `from solace_agent_mesh.agent.adk.intelligent_mcp_callbacks import save_mcp_response_as_artifact_intelligent, McpSaveResult, McpSaveStatus`
|
|
88
|
-
|
|
89
|
-
**Classes/Functions/Constants:**
|
|
90
|
-
- `save_mcp_response_as_artifact_intelligent(tool, tool_context, host_component, mcp_response_dict, original_tool_args) -> McpSaveResult`: Intelligently processes and saves MCP tool response content as typed artifacts
|
|
91
|
-
- `McpSaveStatus`: Enumeration for the status of an MCP save operation (SUCCESS, PARTIAL_SUCCESS, ERROR)
|
|
92
|
-
- `McpSaveResult`: The definitive result of an MCP response save operation with status, message, and artifact details
|
|
93
|
-
|
|
94
|
-
#### invocation_monitor.py
|
|
95
|
-
**Purpose:** A debugging utility that logs the entire lifecycle of an agent invocation, from the initial request to the final response, into a structured YAML file.
|
|
96
|
-
**Import:** `from solace_agent_mesh.agent.adk.invocation_monitor import InvocationMonitor`
|
|
97
|
-
|
|
98
|
-
**Classes/Functions/Constants:**
|
|
99
|
-
- `InvocationMonitor()`: A class that monitors and logs agent message flows
|
|
100
|
-
- `log_message_event(direction: str, topic: str, payload: any, ...)`: Logs a single message event
|
|
101
|
-
- `cleanup()`: Finalizes any active logging sessions
|
|
102
|
-
|
|
103
|
-
#### mcp_content_processor.py
|
|
104
|
-
**Purpose:** Intelligent processing of MCP tool responses, converting raw MCP content into appropriately typed and formatted artifacts based on the MCP specification content types.
|
|
105
|
-
**Import:** `from solace_agent_mesh.agent.adk.mcp_content_processor import MCPContentProcessor, MCPContentItem, MCPContentProcessorConfig`
|
|
106
|
-
|
|
107
|
-
**Classes/Functions/Constants:**
|
|
108
|
-
- `MCPContentProcessor(tool_name: str, tool_args: Dict[str, Any])`: Main processor for MCP tool response content
|
|
109
|
-
- `process_mcp_response(mcp_response_dict) -> List[MCPContentItem]`: Process an MCP tool response and extract content items
|
|
110
|
-
- `MCPContentItem`: Represents a processed MCP content item with metadata
|
|
111
|
-
- `MCPContentProcessorConfig`: Configuration for MCP content processing
|
|
112
|
-
|
|
113
|
-
#### runner.py
|
|
114
|
-
**Purpose:** Provides the core asynchronous task execution logic for the ADK agent, including robust cancellation handling.
|
|
115
|
-
**Import:** `from solace_agent_mesh.agent.adk.runner import run_adk_async_task_thread_wrapper, TaskCancelledError`
|
|
116
|
-
|
|
117
|
-
**Classes/Functions/Constants:**
|
|
118
|
-
- `run_adk_async_task_thread_wrapper(component, adk_session, adk_content, ...)`: A high-level wrapper that runs an ADK task in a separate thread and handles all cleanup and error finalization
|
|
119
|
-
- `run_adk_async_task(component, task_context, adk_session, adk_content, run_config, a2a_context) -> bool`: Runs the ADK Runner asynchronously and processes intermediate events
|
|
120
|
-
- `TaskCancelledError(Exception)`: Custom exception raised when an agent task is cancelled externally
|
|
121
|
-
|
|
122
|
-
#### services.py
|
|
123
|
-
**Purpose:** Provides factory functions to initialize the various ADK services based on the agent's configuration file.
|
|
124
|
-
**Import:** `from solace_agent_mesh.agent.adk.services import initialize_session_service, initialize_artifact_service, initialize_memory_service, ScopedArtifactServiceWrapper`
|
|
125
|
-
|
|
126
|
-
**Classes/Functions/Constants:**
|
|
127
|
-
- `initialize_session_service(component) -> BaseSessionService`: Creates a session service (e.g., `InMemorySessionService`)
|
|
128
|
-
- `initialize_artifact_service(component) -> BaseArtifactService`: Creates an artifact service (e.g., `FilesystemArtifactService`, `GcsArtifactService`)
|
|
129
|
-
- `initialize_memory_service(component) -> BaseMemoryService`: Creates a memory service (e.g., `InMemoryMemoryService`)
|
|
130
|
-
- `ScopedArtifactServiceWrapper`: A wrapper that transparently applies configured scope to artifact operations
|
|
131
|
-
|
|
132
|
-
#### setup.py
|
|
133
|
-
**Purpose:** The main entry point for configuring and instantiating the ADK agent and its dependencies. These functions tie all the other modules together.
|
|
134
|
-
**Import:** `from solace_agent_mesh.agent.adk.setup import load_adk_tools, initialize_adk_agent, initialize_adk_runner`
|
|
135
|
-
|
|
136
|
-
**Classes/Functions/Constants:**
|
|
137
|
-
- `async load_adk_tools(component) -> Tuple[List[Union[BaseTool, Callable]], List[BuiltinTool]]`: Loads all configured tools, including Python functions, MCP tools, and built-ins, wrapping them with `ADKToolWrapper`
|
|
138
|
-
- `initialize_adk_agent(component, loaded_explicit_tools, enabled_builtin_tools) -> AppLlmAgent`: Creates an `AppLlmAgent` instance, assigns all the necessary callbacks from `callbacks.py`, and attaches the tools
|
|
139
|
-
- `initialize_adk_runner(component) -> Runner`: Initializes the ADK Runner with the agent and services
|
|
140
|
-
|
|
141
|
-
#### stream_parser.py
|
|
142
|
-
**Purpose:** A stateful stream parser for identifying and extracting fenced artifact blocks from an LLM's text stream.
|
|
143
|
-
**Import:** `from solace_agent_mesh.agent.adk.stream_parser import FencedBlockStreamParser, BlockStartedEvent, BlockCompletedEvent`
|
|
144
|
-
|
|
145
|
-
**Classes/Functions/Constants:**
|
|
146
|
-
- `FencedBlockStreamParser(progress_update_interval_bytes=4096)`: Processes a stream of text chunks to identify and extract fenced artifact blocks
|
|
147
|
-
- `process_chunk(text_chunk: str) -> ParserResult`: Processes the next chunk of text from the stream
|
|
148
|
-
- `finalize() -> ParserResult`: Call at the end of an LLM turn to handle any unterminated blocks
|
|
149
|
-
- `BlockStartedEvent`, `BlockCompletedEvent`, `BlockProgressedEvent`, `BlockInvalidatedEvent`: Events emitted by the parser
|
|
150
|
-
|
|
151
|
-
#### tool_wrapper.py
|
|
152
|
-
**Purpose:** A wrapper for Python functions to make them compatible with ADK, handling embed resolution and config injection.
|
|
153
|
-
**Import:** `from solace_agent_mesh.agent.adk.tool_wrapper import ADKToolWrapper`
|
|
154
|
-
|
|
155
|
-
**Classes/Functions/Constants:**
|
|
156
|
-
- `ADKToolWrapper(original_func, tool_config, tool_name, origin, raw_string_args=None)`: A consolidated wrapper for ADK tools that handles metadata preservation, embed resolution, config injection, and error handling
|
|
157
|
-
|
|
158
|
-
### Subdirectory APIs
|
|
159
|
-
|
|
160
|
-
#### artifacts/
|
|
161
|
-
**Purpose:** Contains filesystem and S3-compatible artifact storage implementations for managing artifacts with versioning, user namespacing, and session-based organization
|
|
162
|
-
**Key Exports:** `FilesystemArtifactService`, `S3ArtifactService` classes for local and cloud artifact storage
|
|
163
|
-
**Import Examples:**
|
|
164
|
-
```python
|
|
165
|
-
from solace_agent_mesh.agent.adk.artifacts.filesystem_artifact_service import FilesystemArtifactService
|
|
166
|
-
from solace_agent_mesh.agent.adk.artifacts.s3_artifact_service import S3ArtifactService
|
|
167
|
-
```
|
|
168
|
-
|
|
169
|
-
#### models/
|
|
170
|
-
**Purpose:** Contains concrete `BaseLlm` implementations for interfacing with various LLM providers
|
|
171
|
-
**Key Exports:** `LiteLlm` class for broad model provider compatibility
|
|
172
|
-
**Import Examples:**
|
|
173
|
-
```python
|
|
174
|
-
from solace_agent_mesh.agent.adk.models.lite_llm import LiteLlm
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
## Complete Usage Guide
|
|
178
|
-
|
|
179
|
-
### 1. Basic ADK Agent Setup
|
|
180
|
-
|
|
181
|
-
```python
|
|
182
|
-
from solace_agent_mesh.agent.adk.setup import load_adk_tools, initialize_adk_agent, initialize_adk_runner
|
|
183
|
-
from solace_agent_mesh.agent.adk.services import initialize_session_service, initialize_artifact_service, initialize_memory_service
|
|
184
|
-
from solace_agent_mesh.agent.adk.models.lite_llm import LiteLlm
|
|
185
|
-
|
|
186
|
-
# Initialize services
|
|
187
|
-
session_service = initialize_session_service(component)
|
|
188
|
-
artifact_service = initialize_artifact_service(component)
|
|
189
|
-
memory_service = initialize_memory_service(component)
|
|
190
|
-
|
|
191
|
-
# Load tools
|
|
192
|
-
loaded_tools, builtin_tools, cleanup_hooks = await load_adk_tools(component)
|
|
193
|
-
|
|
194
|
-
# Initialize agent
|
|
195
|
-
agent = initialize_adk_agent(component, loaded_tools, builtin_tools)
|
|
196
|
-
|
|
197
|
-
# Initialize runner
|
|
198
|
-
runner = initialize_adk_runner(component)
|
|
199
|
-
```
|
|
200
|
-
|
|
201
|
-
### 2. Custom LLM Model Configuration
|
|
202
|
-
|
|
203
|
-
```python
|
|
204
|
-
from solace_agent_mesh.agent.adk.models.lite_llm import LiteLlm
|
|
205
|
-
|
|
206
|
-
# Configure LiteLlm for different providers
|
|
207
|
-
# OpenAI
|
|
208
|
-
llm = LiteLlm(
|
|
209
|
-
model="gpt-4-turbo",
|
|
210
|
-
temperature=0.7,
|
|
211
|
-
max_completion_tokens=1000
|
|
212
|
-
)
|
|
213
|
-
|
|
214
|
-
# Anthropic
|
|
215
|
-
llm = LiteLlm(
|
|
216
|
-
model="claude-3-sonnet-20240229",
|
|
217
|
-
temperature=0.5
|
|
218
|
-
)
|
|
219
|
-
|
|
220
|
-
# Vertex AI
|
|
221
|
-
llm = LiteLlm(
|
|
222
|
-
model="gemini-pro",
|
|
223
|
-
temperature=0.3
|
|
224
|
-
)
|
|
225
|
-
```
|
|
226
|
-
|
|
227
|
-
### 3. Artifact Service Usage
|
|
228
|
-
|
|
229
|
-
```python
|
|
230
|
-
from solace_agent_mesh.agent.adk.artifacts.filesystem_artifact_service import FilesystemArtifactService
|
|
231
|
-
from solace_agent_mesh.agent.adk.artifacts.s3_artifact_service import S3ArtifactService
|
|
232
|
-
from google.genai import types as adk_types
|
|
233
|
-
|
|
234
|
-
# Initialize filesystem artifact service
|
|
235
|
-
artifact_service = FilesystemArtifactService(base_path="/tmp/artifacts")
|
|
236
|
-
|
|
237
|
-
# Or initialize S3 artifact service
|
|
238
|
-
artifact_service = S3ArtifactService(bucket_name="my-artifacts-bucket")
|
|
239
|
-
|
|
240
|
-
# Save an artifact
|
|
241
|
-
|
|
242
|
-
================================================================================
|
|
243
|
-
|
|
244
|
-
## Section 2: solace_agent_mesh/agent/adk/artifacts/artifacts_llm.txt
|
|
245
|
-
|
|
246
|
-
**Source file:** `solace_agent_mesh/agent/adk/artifacts/artifacts_llm.txt`
|
|
247
|
-
|
|
248
|
-
# DEVELOPER GUIDE: artifacts
|
|
249
|
-
|
|
250
|
-
## Quick Summary
|
|
251
|
-
The artifacts directory provides ADK ArtifactService implementations for the Solace Agent Mesh. It includes filesystem and S3-compatible storage backends for managing artifacts with versioning, user namespacing, and session-based organization.
|
|
252
|
-
|
|
253
|
-
## Files Overview
|
|
254
|
-
- `__init__.py` - Package initialization for artifact service implementations
|
|
255
|
-
- `filesystem_artifact_service.py` - Local filesystem-based artifact storage implementation
|
|
256
|
-
- `s3_artifact_service.py` - Amazon S3 compatible storage implementation for artifacts
|
|
257
|
-
|
|
258
|
-
## Developer API Reference
|
|
259
|
-
|
|
260
|
-
### filesystem_artifact_service.py
|
|
261
|
-
**Purpose:** Provides local filesystem storage for artifacts with structured directory organization and metadata management.
|
|
262
|
-
|
|
263
|
-
**Import:** `from solace_agent_mesh.agent.adk.artifacts.filesystem_artifact_service import FilesystemArtifactService`
|
|
264
|
-
|
|
265
|
-
**Classes:**
|
|
266
|
-
- `FilesystemArtifactService(base_path: str)` - Filesystem-based artifact service implementation
|
|
267
|
-
- `save_artifact(*, app_name: str, user_id: str, session_id: str, filename: str, artifact: adk_types.Part) -> int` - Saves an artifact and returns version number
|
|
268
|
-
- `load_artifact(*, app_name: str, user_id: str, session_id: str, filename: str, version: int | None = None) -> adk_types.Part | None` - Loads an artifact by version (latest if None)
|
|
269
|
-
- `list_artifact_keys(*, app_name: str, user_id: str, session_id: str) -> list[str]` - Lists all artifact filenames for a scope
|
|
270
|
-
- `delete_artifact(*, app_name: str, user_id: str, session_id: str, filename: str) -> None` - Deletes all versions of an artifact
|
|
271
|
-
- `list_versions(*, app_name: str, user_id: str, session_id: str, filename: str) -> list[int]` - Lists all version numbers for an artifact
|
|
272
|
-
- `base_path: str` - Root directory for artifact storage
|
|
273
|
-
|
|
274
|
-
**Constants/Variables:**
|
|
275
|
-
- `METADATA_FILE_SUFFIX: str` - File suffix for metadata files (".meta")
|
|
276
|
-
|
|
277
|
-
**Usage Examples:**
|
|
278
|
-
```python
|
|
279
|
-
from solace_agent_mesh.agent.adk.artifacts.filesystem_artifact_service import FilesystemArtifactService
|
|
280
|
-
from google.genai import types as adk_types
|
|
281
|
-
|
|
282
|
-
# Initialize the service
|
|
283
|
-
artifact_service = FilesystemArtifactService(base_path="/path/to/artifacts")
|
|
284
|
-
|
|
285
|
-
# Save an artifact
|
|
286
|
-
artifact_data = b"Hello, World!"
|
|
287
|
-
artifact_part = adk_types.Part.from_bytes(data=artifact_data, mime_type="text/plain")
|
|
288
|
-
version = await artifact_service.save_artifact(
|
|
289
|
-
app_name="my_app",
|
|
290
|
-
user_id="user123",
|
|
291
|
-
session_id="session456",
|
|
292
|
-
filename="greeting.txt",
|
|
293
|
-
artifact=artifact_part
|
|
294
|
-
)
|
|
295
|
-
|
|
296
|
-
# Load the latest version
|
|
297
|
-
loaded_artifact = await artifact_service.load_artifact(
|
|
298
|
-
app_name="my_app",
|
|
299
|
-
user_id="user123",
|
|
300
|
-
session_id="session456",
|
|
301
|
-
filename="greeting.txt"
|
|
302
|
-
)
|
|
303
|
-
|
|
304
|
-
# Load a specific version
|
|
305
|
-
specific_version = await artifact_service.load_artifact(
|
|
306
|
-
app_name="my_app",
|
|
307
|
-
user_id="user123",
|
|
308
|
-
session_id="session456",
|
|
309
|
-
filename="greeting.txt",
|
|
310
|
-
version=1
|
|
311
|
-
)
|
|
312
|
-
|
|
313
|
-
# List all artifacts
|
|
314
|
-
artifact_keys = await artifact_service.list_artifact_keys(
|
|
315
|
-
app_name="my_app",
|
|
316
|
-
user_id="user123",
|
|
317
|
-
session_id="session456"
|
|
318
|
-
)
|
|
319
|
-
|
|
320
|
-
# List versions of an artifact
|
|
321
|
-
versions = await artifact_service.list_versions(
|
|
322
|
-
app_name="my_app",
|
|
323
|
-
user_id="user123",
|
|
324
|
-
session_id="session456",
|
|
325
|
-
filename="greeting.txt"
|
|
326
|
-
)
|
|
327
|
-
|
|
328
|
-
# Delete an artifact
|
|
329
|
-
await artifact_service.delete_artifact(
|
|
330
|
-
app_name="my_app",
|
|
331
|
-
user_id="user123",
|
|
332
|
-
session_id="session456",
|
|
333
|
-
filename="greeting.txt"
|
|
334
|
-
)
|
|
335
|
-
```
|
|
336
|
-
|
|
337
|
-
### s3_artifact_service.py
|
|
338
|
-
**Purpose:** Provides S3-compatible storage for artifacts with structured key organization and AWS integration.
|
|
339
|
-
|
|
340
|
-
**Import:** `from solace_agent_mesh.agent.adk.artifacts.s3_artifact_service import S3ArtifactService`
|
|
341
|
-
|
|
342
|
-
**Classes:**
|
|
343
|
-
- `S3ArtifactService(bucket_name: str, s3_client: BaseClient | None = None, **kwargs)` - S3-based artifact service implementation
|
|
344
|
-
- `save_artifact(*, app_name: str, user_id: str, session_id: str, filename: str, artifact: adk_types.Part) -> int` - Saves an artifact to S3 and returns version number
|
|
345
|
-
- `load_artifact(*, app_name: str, user_id: str, session_id: str, filename: str, version: int | None = None) -> adk_types.Part | None` - Loads an artifact from S3 by version (latest if None)
|
|
346
|
-
- `list_artifact_keys(*, app_name: str, user_id: str, session_id: str) -> list[str]` - Lists all artifact filenames for a scope
|
|
347
|
-
- `delete_artifact(*, app_name: str, user_id: str, session_id: str, filename: str) -> None` - Deletes all versions of an artifact from S3
|
|
348
|
-
- `list_versions(*, app_name: str, user_id: str, session_id: str, filename: str) -> list[int]` - Lists all version numbers for an artifact
|
|
349
|
-
- `bucket_name: str` - S3 bucket name for storage
|
|
350
|
-
- `s3: BaseClient` - Boto3 S3 client instance
|
|
351
|
-
|
|
352
|
-
**Usage Examples:**
|
|
353
|
-
```python
|
|
354
|
-
from solace_agent_mesh.agent.adk.artifacts.s3_artifact_service import S3ArtifactService
|
|
355
|
-
from google.genai import types as adk_types
|
|
356
|
-
import boto3
|
|
357
|
-
|
|
358
|
-
# Initialize with default credentials
|
|
359
|
-
artifact_service = S3ArtifactService(bucket_name="my-artifacts-bucket")
|
|
360
|
-
|
|
361
|
-
# Initialize with custom S3 client
|
|
362
|
-
s3_client = boto3.client(
|
|
363
|
-
's3',
|
|
364
|
-
endpoint_url='https://minio.example.com',
|
|
365
|
-
aws_access_key_id='access_key',
|
|
366
|
-
aws_secret_access_key='secret_key'
|
|
367
|
-
)
|
|
368
|
-
artifact_service = S3ArtifactService(
|
|
369
|
-
bucket_name="my-artifacts-bucket",
|
|
370
|
-
s3_client=s3_client
|
|
371
|
-
)
|
|
372
|
-
|
|
373
|
-
# Save an artifact
|
|
374
|
-
artifact_data = b"Hello, S3!"
|
|
375
|
-
artifact_part = adk_types.Part.from_bytes(data=artifact_data, mime_type="text/plain")
|
|
376
|
-
version = await artifact_service.save_artifact(
|
|
377
|
-
app_name="my_app",
|
|
378
|
-
user_id="user123",
|
|
379
|
-
session_id="session456",
|
|
380
|
-
filename="greeting.txt",
|
|
381
|
-
artifact=artifact_part
|
|
382
|
-
)
|
|
383
|
-
|
|
384
|
-
# Load the latest version
|
|
385
|
-
loaded_artifact = await artifact_service.load_artifact(
|
|
386
|
-
app_name="my_app",
|
|
387
|
-
user_id="user123",
|
|
388
|
-
session_id="session456",
|
|
389
|
-
filename="greeting.txt"
|
|
390
|
-
)
|
|
391
|
-
|
|
392
|
-
# Save user-scoped artifact (persists across sessions)
|
|
393
|
-
user_artifact = adk_types.Part.from_bytes(data=b"User data", mime_type="text/plain")
|
|
394
|
-
await artifact_service.save_artifact(
|
|
395
|
-
app_name="my_app",
|
|
396
|
-
user_id="user123",
|
|
397
|
-
session_id="session456",
|
|
398
|
-
filename="user:profile.json", # user: prefix for user-scoped storage
|
|
399
|
-
artifact=user_artifact
|
|
400
|
-
)
|
|
401
|
-
|
|
402
|
-
# List all artifacts (includes both session and user-scoped)
|
|
403
|
-
artifact_keys = await artifact_service.list_artifact_keys(
|
|
404
|
-
app_name="my_app",
|
|
405
|
-
user_id="user123",
|
|
406
|
-
session_id="session456"
|
|
407
|
-
)
|
|
408
|
-
|
|
409
|
-
# Delete an artifact
|
|
410
|
-
await artifact_service.delete_artifact(
|
|
411
|
-
app_name="my_app",
|
|
412
|
-
user_id="user123",
|
|
413
|
-
session_id="session456",
|
|
414
|
-
filename="greeting.txt"
|
|
415
|
-
)
|
|
416
|
-
```
|
|
417
|
-
|
|
418
|
-
================================================================================
|
|
419
|
-
|
|
420
|
-
## Section 3: solace_agent_mesh/agent/adk/models/models_llm.txt
|
|
421
|
-
|
|
422
|
-
**Source file:** `solace_agent_mesh/agent/adk/models/models_llm.txt`
|
|
423
|
-
|
|
424
|
-
# DEVELOPER GUIDE for models directory
|
|
425
|
-
|
|
426
|
-
## Quick Summary
|
|
427
|
-
This directory contains concrete implementations of the `BaseLlm` interface, providing wrappers for various Large Language Model APIs. These classes translate the ADK's standard `LlmRequest` into provider-specific formats and parse responses back into standard `LlmResponse` objects.
|
|
428
|
-
|
|
429
|
-
## Files Overview
|
|
430
|
-
- `lite_llm.py` - LLM client using the `litellm` library to support hundreds of models from different providers
|
|
431
|
-
|
|
432
|
-
## Developer API Reference
|
|
433
|
-
|
|
434
|
-
### lite_llm.py
|
|
435
|
-
**Purpose:** Provides the `LiteLlm` class, a `BaseLlm` implementation that interfaces with hundreds of LLM models through the `litellm` library. Supports models from OpenAI, Anthropic, Vertex AI, and many other providers by simply changing the model string.
|
|
436
|
-
|
|
437
|
-
**Import:** `from solace_agent_mesh.agent.adk.models.lite_llm import LiteLlm`
|
|
438
|
-
|
|
439
|
-
**Classes:**
|
|
440
|
-
- `LiteLlm(model: str, **kwargs)` - Wrapper around `litellm` supporting any model it recognizes
|
|
441
|
-
- `generate_content_async(llm_request: LlmRequest, stream: bool = False) -> AsyncGenerator[LlmResponse, None]` - Generates content asynchronously with optional streaming
|
|
442
|
-
- `supported_models() -> list[str]` - Returns list of supported models (empty for LiteLlm due to dynamic model support)
|
|
443
|
-
- `model: str` - The name of the LiteLlm model
|
|
444
|
-
- `llm_client: LiteLLMClient` - The LLM client instance used for API calls
|
|
445
|
-
|
|
446
|
-
- `LiteLLMClient()` - Internal client providing completion methods for better testability
|
|
447
|
-
- `acompletion(model, messages, tools, **kwargs) -> Union[ModelResponse, CustomStreamWrapper]` - Asynchronous completion call
|
|
448
|
-
- `completion(model, messages, tools, stream=False, **kwargs) -> Union[ModelResponse, CustomStreamWrapper]` - Synchronous completion call
|
|
449
|
-
|
|
450
|
-
- `FunctionChunk(BaseModel)` - Represents a function call chunk in streaming responses
|
|
451
|
-
- `id: Optional[str]` - Function call ID
|
|
452
|
-
- `name: Optional[str]` - Function name
|
|
453
|
-
- `args: Optional[str]` - Function arguments as JSON string
|
|
454
|
-
- `index: Optional[int]` - Index of the function call
|
|
455
|
-
|
|
456
|
-
- `TextChunk(BaseModel)` - Represents a text chunk in streaming responses
|
|
457
|
-
- `text: str` - The text content
|
|
458
|
-
|
|
459
|
-
- `UsageMetadataChunk(BaseModel)` - Represents token usage information
|
|
460
|
-
- `prompt_tokens: int` - Number of tokens in the prompt
|
|
461
|
-
- `completion_tokens: int` - Number of tokens in the completion
|
|
462
|
-
- `total_tokens: int` - Total number of tokens used
|
|
463
|
-
|
|
464
|
-
**Functions:**
|
|
465
|
-
- `_content_to_message_param(content: types.Content) -> Union[Message, list[Message]]` - Converts ADK Content to litellm Message format
|
|
466
|
-
- `_get_content(parts: Iterable[types.Part]) -> Union[OpenAIMessageContent, str]` - Converts parts to litellm content format
|
|
467
|
-
- `_function_declaration_to_tool_param(function_declaration: types.FunctionDeclaration) -> dict` - Converts function declarations to OpenAPI spec format
|
|
468
|
-
- `_model_response_to_generate_content_response(response: ModelResponse) -> LlmResponse` - Converts litellm response to LlmResponse
|
|
469
|
-
|
|
470
|
-
**Usage Examples:**
|
|
471
|
-
```python
|
|
472
|
-
import asyncio
|
|
473
|
-
import os
|
|
474
|
-
from solace_agent_mesh.agent.adk.models.lite_llm import LiteLlm
|
|
475
|
-
from solace_agent_mesh.agent.adk.models.llm_request import LlmRequest, LlmConfig
|
|
476
|
-
from google.genai.types import Content, Part
|
|
477
|
-
|
|
478
|
-
# Set environment variables for your chosen provider
|
|
479
|
-
# For OpenAI:
|
|
480
|
-
# os.environ["OPENAI_API_KEY"] = "your-api-key"
|
|
481
|
-
# For Vertex AI:
|
|
482
|
-
# os.environ["VERTEXAI_PROJECT"] = "your-project-id"
|
|
483
|
-
# os.environ["VERTEXAI_LOCATION"] = "your-location"
|
|
484
|
-
|
|
485
|
-
async def main():
|
|
486
|
-
# Initialize LiteLlm with a specific model
|
|
487
|
-
llm = LiteLlm(
|
|
488
|
-
model="gpt-4-turbo",
|
|
489
|
-
temperature=0.7,
|
|
490
|
-
max_completion_tokens=150
|
|
491
|
-
)
|
|
492
|
-
|
|
493
|
-
# Create a request
|
|
494
|
-
request = LlmRequest(
|
|
495
|
-
contents=[
|
|
496
|
-
Content(
|
|
497
|
-
role="user",
|
|
498
|
-
parts=[Part.from_text("Explain quantum computing in simple terms")]
|
|
499
|
-
)
|
|
500
|
-
],
|
|
501
|
-
config=LlmConfig(
|
|
502
|
-
temperature=0.5,
|
|
503
|
-
max_output_tokens=200
|
|
504
|
-
)
|
|
505
|
-
)
|
|
506
|
-
|
|
507
|
-
# Non-streaming generation
|
|
508
|
-
print("=== Non-streaming ===")
|
|
509
|
-
async for response in llm.generate_content_async(request, stream=False):
|
|
510
|
-
print(f"Response: {response.text}")
|
|
511
|
-
if response.usage_metadata:
|
|
512
|
-
print(f"Tokens used: {response.usage_metadata.total_token_count}")
|
|
513
|
-
|
|
514
|
-
# Streaming generation
|
|
515
|
-
print("\n=== Streaming ===")
|
|
516
|
-
async for response in llm.generate_content_async(request, stream=True):
|
|
517
|
-
if response.text:
|
|
518
|
-
print(response.text, end="", flush=True)
|
|
519
|
-
if response.usage_metadata:
|
|
520
|
-
print(f"\nTotal tokens: {response.usage_metadata.total_token_count}")
|
|
521
|
-
|
|
522
|
-
# Example with function calling
|
|
523
|
-
async def function_calling_example():
|
|
524
|
-
from google.genai.types import FunctionDeclaration, Schema, Type, Tool
|
|
525
|
-
|
|
526
|
-
# Define a function for the LLM to call
|
|
527
|
-
get_weather_func = FunctionDeclaration(
|
|
528
|
-
name="get_weather",
|
|
529
|
-
description="Get current weather for a location",
|
|
530
|
-
parameters=Schema(
|
|
531
|
-
type=Type.OBJECT,
|
|
532
|
-
properties={
|
|
533
|
-
"location": Schema(type=Type.STRING, description="City name"),
|
|
534
|
-
"unit": Schema(type=Type.STRING, description="Temperature unit")
|
|
535
|
-
},
|
|
536
|
-
required=["location"]
|
|
537
|
-
)
|
|
538
|
-
)
|
|
539
|
-
|
|
540
|
-
llm = LiteLlm(model="gpt-4-turbo")
|
|
541
|
-
|
|
542
|
-
request = LlmRequest(
|
|
543
|
-
contents=[
|
|
544
|
-
Content(
|
|
545
|
-
role="user",
|
|
546
|
-
parts=[Part.from_text("What's the weather like in Tokyo?")]
|
|
547
|
-
)
|
|
548
|
-
],
|
|
549
|
-
config=LlmConfig(
|
|
550
|
-
tools=[Tool(function_declarations=[get_weather_func])]
|
|
551
|
-
)
|
|
552
|
-
)
|
|
553
|
-
|
|
554
|
-
async for response in llm.generate_content_async(request):
|
|
555
|
-
if response.function_calls:
|
|
556
|
-
for func_call in response.function_calls:
|
|
557
|
-
print(f"Function called: {func_call.name}")
|
|
558
|
-
print(f"Arguments: {func_call.args}")
|
|
559
|
-
|
|
560
|
-
if __name__ == "__main__":
|
|
561
|
-
asyncio.run(main())
|
|
562
|
-
# asyncio.run(function_calling_example())
|
|
563
|
-
```
|
|
564
|
-
|
|
565
|
-
================================================================================
|
|
566
|
-
|