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
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
<link rel="icon" type="image/svg+xml" href="/assets/favicon-BLgzUch9.ico" />
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
7
|
<title>Solace Agent Mesh</title>
|
|
8
|
-
<script type="module" crossorigin src="/assets/authCallback-
|
|
9
|
-
<link rel="modulepreload" crossorigin href="/assets/vendor-
|
|
10
|
-
<link rel="modulepreload" crossorigin href="/assets/client-
|
|
8
|
+
<script type="module" crossorigin src="/assets/authCallback-KnKMP_vb.js"></script>
|
|
9
|
+
<link rel="modulepreload" crossorigin href="/assets/vendor-CGk8Suyh.js">
|
|
10
|
+
<link rel="modulepreload" crossorigin href="/assets/client-DpBL2stg.js">
|
|
11
11
|
</head>
|
|
12
12
|
<body>
|
|
13
13
|
<div id="root"></div>
|
|
@@ -5,10 +5,10 @@
|
|
|
5
5
|
<link rel="icon" type="image/svg+xml" href="/assets/favicon-BLgzUch9.ico" />
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
7
|
<title>Solace Agent Mesh</title>
|
|
8
|
-
<script type="module" crossorigin src="/assets/main-
|
|
9
|
-
<link rel="modulepreload" crossorigin href="/assets/vendor-
|
|
10
|
-
<link rel="modulepreload" crossorigin href="/assets/client-
|
|
11
|
-
<link rel="stylesheet" crossorigin href="/assets/main-
|
|
8
|
+
<script type="module" crossorigin src="/assets/main-Cd498TV2.js"></script>
|
|
9
|
+
<link rel="modulepreload" crossorigin href="/assets/vendor-CGk8Suyh.js">
|
|
10
|
+
<link rel="modulepreload" crossorigin href="/assets/client-DpBL2stg.js">
|
|
11
|
+
<link rel="stylesheet" crossorigin href="/assets/main-rSf8Vu29.css">
|
|
12
12
|
</head>
|
|
13
13
|
<body>
|
|
14
14
|
<div id="root"></div>
|
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
/* tslint:disable */
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Mock Service Worker.
|
|
6
|
+
* @see https://github.com/mswjs/msw
|
|
7
|
+
* - Please do NOT modify this file.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
const PACKAGE_VERSION = "2.12.3";
|
|
11
|
+
const INTEGRITY_CHECKSUM = "4db4a41e972cec1b64cc569c66952d82";
|
|
12
|
+
const IS_MOCKED_RESPONSE = Symbol("isMockedResponse");
|
|
13
|
+
const activeClientIds = new Set();
|
|
14
|
+
|
|
15
|
+
addEventListener("install", function () {
|
|
16
|
+
self.skipWaiting();
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
addEventListener("activate", function (event) {
|
|
20
|
+
event.waitUntil(self.clients.claim());
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
addEventListener("message", async function (event) {
|
|
24
|
+
const clientId = Reflect.get(event.source || {}, "id");
|
|
25
|
+
|
|
26
|
+
if (!clientId || !self.clients) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const client = await self.clients.get(clientId);
|
|
31
|
+
|
|
32
|
+
if (!client) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
const allClients = await self.clients.matchAll({
|
|
37
|
+
type: "window",
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
switch (event.data) {
|
|
41
|
+
case "KEEPALIVE_REQUEST": {
|
|
42
|
+
sendToClient(client, {
|
|
43
|
+
type: "KEEPALIVE_RESPONSE",
|
|
44
|
+
});
|
|
45
|
+
break;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
case "INTEGRITY_CHECK_REQUEST": {
|
|
49
|
+
sendToClient(client, {
|
|
50
|
+
type: "INTEGRITY_CHECK_RESPONSE",
|
|
51
|
+
payload: {
|
|
52
|
+
packageVersion: PACKAGE_VERSION,
|
|
53
|
+
checksum: INTEGRITY_CHECKSUM,
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
break;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
case "MOCK_ACTIVATE": {
|
|
60
|
+
activeClientIds.add(clientId);
|
|
61
|
+
|
|
62
|
+
sendToClient(client, {
|
|
63
|
+
type: "MOCKING_ENABLED",
|
|
64
|
+
payload: {
|
|
65
|
+
client: {
|
|
66
|
+
id: client.id,
|
|
67
|
+
frameType: client.frameType,
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
});
|
|
71
|
+
break;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
case "CLIENT_CLOSED": {
|
|
75
|
+
activeClientIds.delete(clientId);
|
|
76
|
+
|
|
77
|
+
const remainingClients = allClients.filter(client => {
|
|
78
|
+
return client.id !== clientId;
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
// Unregister itself when there are no more clients
|
|
82
|
+
if (remainingClients.length === 0) {
|
|
83
|
+
self.registration.unregister();
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
addEventListener("fetch", function (event) {
|
|
92
|
+
const requestInterceptedAt = Date.now();
|
|
93
|
+
|
|
94
|
+
// Bypass navigation requests.
|
|
95
|
+
if (event.request.mode === "navigate") {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// Opening the DevTools triggers the "only-if-cached" request
|
|
100
|
+
// that cannot be handled by the worker. Bypass such requests.
|
|
101
|
+
if (event.request.cache === "only-if-cached" && event.request.mode !== "same-origin") {
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// Bypass all requests when there are no active clients.
|
|
106
|
+
// Prevents the self-unregistered worked from handling requests
|
|
107
|
+
// after it's been terminated (still remains active until the next reload).
|
|
108
|
+
if (activeClientIds.size === 0) {
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
const requestId = crypto.randomUUID();
|
|
113
|
+
event.respondWith(handleRequest(event, requestId, requestInterceptedAt));
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* @param {FetchEvent} event
|
|
118
|
+
* @param {string} requestId
|
|
119
|
+
* @param {number} requestInterceptedAt
|
|
120
|
+
*/
|
|
121
|
+
async function handleRequest(event, requestId, requestInterceptedAt) {
|
|
122
|
+
const client = await resolveMainClient(event);
|
|
123
|
+
const requestCloneForEvents = event.request.clone();
|
|
124
|
+
const response = await getResponse(event, client, requestId, requestInterceptedAt);
|
|
125
|
+
|
|
126
|
+
// Send back the response clone for the "response:*" life-cycle events.
|
|
127
|
+
// Ensure MSW is active and ready to handle the message, otherwise
|
|
128
|
+
// this message will pend indefinitely.
|
|
129
|
+
if (client && activeClientIds.has(client.id)) {
|
|
130
|
+
const serializedRequest = await serializeRequest(requestCloneForEvents);
|
|
131
|
+
|
|
132
|
+
// Clone the response so both the client and the library could consume it.
|
|
133
|
+
const responseClone = response.clone();
|
|
134
|
+
|
|
135
|
+
sendToClient(
|
|
136
|
+
client,
|
|
137
|
+
{
|
|
138
|
+
type: "RESPONSE",
|
|
139
|
+
payload: {
|
|
140
|
+
isMockedResponse: IS_MOCKED_RESPONSE in response,
|
|
141
|
+
request: {
|
|
142
|
+
id: requestId,
|
|
143
|
+
...serializedRequest,
|
|
144
|
+
},
|
|
145
|
+
response: {
|
|
146
|
+
type: responseClone.type,
|
|
147
|
+
status: responseClone.status,
|
|
148
|
+
statusText: responseClone.statusText,
|
|
149
|
+
headers: Object.fromEntries(responseClone.headers.entries()),
|
|
150
|
+
body: responseClone.body,
|
|
151
|
+
},
|
|
152
|
+
},
|
|
153
|
+
},
|
|
154
|
+
responseClone.body ? [serializedRequest.body, responseClone.body] : []
|
|
155
|
+
);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
return response;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* Resolve the main client for the given event.
|
|
163
|
+
* Client that issues a request doesn't necessarily equal the client
|
|
164
|
+
* that registered the worker. It's with the latter the worker should
|
|
165
|
+
* communicate with during the response resolving phase.
|
|
166
|
+
* @param {FetchEvent} event
|
|
167
|
+
* @returns {Promise<Client | undefined>}
|
|
168
|
+
*/
|
|
169
|
+
async function resolveMainClient(event) {
|
|
170
|
+
const client = await self.clients.get(event.clientId);
|
|
171
|
+
|
|
172
|
+
if (activeClientIds.has(event.clientId)) {
|
|
173
|
+
return client;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
if (client?.frameType === "top-level") {
|
|
177
|
+
return client;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
const allClients = await self.clients.matchAll({
|
|
181
|
+
type: "window",
|
|
182
|
+
});
|
|
183
|
+
|
|
184
|
+
return allClients
|
|
185
|
+
.filter(client => {
|
|
186
|
+
// Get only those clients that are currently visible.
|
|
187
|
+
return client.visibilityState === "visible";
|
|
188
|
+
})
|
|
189
|
+
.find(client => {
|
|
190
|
+
// Find the client ID that's recorded in the
|
|
191
|
+
// set of clients that have registered the worker.
|
|
192
|
+
return activeClientIds.has(client.id);
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* @param {FetchEvent} event
|
|
198
|
+
* @param {Client | undefined} client
|
|
199
|
+
* @param {string} requestId
|
|
200
|
+
* @param {number} requestInterceptedAt
|
|
201
|
+
* @returns {Promise<Response>}
|
|
202
|
+
*/
|
|
203
|
+
async function getResponse(event, client, requestId, requestInterceptedAt) {
|
|
204
|
+
// Clone the request because it might've been already used
|
|
205
|
+
// (i.e. its body has been read and sent to the client).
|
|
206
|
+
const requestClone = event.request.clone();
|
|
207
|
+
|
|
208
|
+
function passthrough() {
|
|
209
|
+
// Cast the request headers to a new Headers instance
|
|
210
|
+
// so the headers can be manipulated with.
|
|
211
|
+
const headers = new Headers(requestClone.headers);
|
|
212
|
+
|
|
213
|
+
// Remove the "accept" header value that marked this request as passthrough.
|
|
214
|
+
// This prevents request alteration and also keeps it compliant with the
|
|
215
|
+
// user-defined CORS policies.
|
|
216
|
+
const acceptHeader = headers.get("accept");
|
|
217
|
+
if (acceptHeader) {
|
|
218
|
+
const values = acceptHeader.split(",").map(value => value.trim());
|
|
219
|
+
const filteredValues = values.filter(value => value !== "msw/passthrough");
|
|
220
|
+
|
|
221
|
+
if (filteredValues.length > 0) {
|
|
222
|
+
headers.set("accept", filteredValues.join(", "));
|
|
223
|
+
} else {
|
|
224
|
+
headers.delete("accept");
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
return fetch(requestClone, { headers });
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
// Bypass mocking when the client is not active.
|
|
232
|
+
if (!client) {
|
|
233
|
+
return passthrough();
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
// Bypass initial page load requests (i.e. static assets).
|
|
237
|
+
// The absence of the immediate/parent client in the map of the active clients
|
|
238
|
+
// means that MSW hasn't dispatched the "MOCK_ACTIVATE" event yet
|
|
239
|
+
// and is not ready to handle requests.
|
|
240
|
+
if (!activeClientIds.has(client.id)) {
|
|
241
|
+
return passthrough();
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
// Notify the client that a request has been intercepted.
|
|
245
|
+
const serializedRequest = await serializeRequest(event.request);
|
|
246
|
+
const clientMessage = await sendToClient(
|
|
247
|
+
client,
|
|
248
|
+
{
|
|
249
|
+
type: "REQUEST",
|
|
250
|
+
payload: {
|
|
251
|
+
id: requestId,
|
|
252
|
+
interceptedAt: requestInterceptedAt,
|
|
253
|
+
...serializedRequest,
|
|
254
|
+
},
|
|
255
|
+
},
|
|
256
|
+
[serializedRequest.body]
|
|
257
|
+
);
|
|
258
|
+
|
|
259
|
+
switch (clientMessage.type) {
|
|
260
|
+
case "MOCK_RESPONSE": {
|
|
261
|
+
return respondWithMock(clientMessage.data);
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
case "PASSTHROUGH": {
|
|
265
|
+
return passthrough();
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
return passthrough();
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
/**
|
|
273
|
+
* @param {Client} client
|
|
274
|
+
* @param {any} message
|
|
275
|
+
* @param {Array<Transferable>} transferrables
|
|
276
|
+
* @returns {Promise<any>}
|
|
277
|
+
*/
|
|
278
|
+
function sendToClient(client, message, transferrables = []) {
|
|
279
|
+
return new Promise((resolve, reject) => {
|
|
280
|
+
const channel = new MessageChannel();
|
|
281
|
+
|
|
282
|
+
channel.port1.onmessage = event => {
|
|
283
|
+
if (event.data && event.data.error) {
|
|
284
|
+
return reject(event.data.error);
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
resolve(event.data);
|
|
288
|
+
};
|
|
289
|
+
|
|
290
|
+
client.postMessage(message, [channel.port2, ...transferrables.filter(Boolean)]);
|
|
291
|
+
});
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
/**
|
|
295
|
+
* @param {Response} response
|
|
296
|
+
* @returns {Response}
|
|
297
|
+
*/
|
|
298
|
+
function respondWithMock(response) {
|
|
299
|
+
// Setting response status code to 0 is a no-op.
|
|
300
|
+
// However, when responding with a "Response.error()", the produced Response
|
|
301
|
+
// instance will have status code set to 0. Since it's not possible to create
|
|
302
|
+
// a Response instance with status code 0, handle that use-case separately.
|
|
303
|
+
if (response.status === 0) {
|
|
304
|
+
return Response.error();
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
const mockedResponse = new Response(response.body, response);
|
|
308
|
+
|
|
309
|
+
Reflect.defineProperty(mockedResponse, IS_MOCKED_RESPONSE, {
|
|
310
|
+
value: true,
|
|
311
|
+
enumerable: true,
|
|
312
|
+
});
|
|
313
|
+
|
|
314
|
+
return mockedResponse;
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
/**
|
|
318
|
+
* @param {Request} request
|
|
319
|
+
*/
|
|
320
|
+
async function serializeRequest(request) {
|
|
321
|
+
return {
|
|
322
|
+
url: request.url,
|
|
323
|
+
mode: request.mode,
|
|
324
|
+
method: request.method,
|
|
325
|
+
headers: Object.fromEntries(request.headers.entries()),
|
|
326
|
+
cache: request.cache,
|
|
327
|
+
credentials: request.credentials,
|
|
328
|
+
destination: request.destination,
|
|
329
|
+
integrity: request.integrity,
|
|
330
|
+
redirect: request.redirect,
|
|
331
|
+
referrer: request.referrer,
|
|
332
|
+
referrerPolicy: request.referrerPolicy,
|
|
333
|
+
body: await request.arrayBuffer(),
|
|
334
|
+
keepalive: request.keepalive,
|
|
335
|
+
};
|
|
336
|
+
}
|
|
@@ -66,6 +66,7 @@ def create_status_update(
|
|
|
66
66
|
message: Message,
|
|
67
67
|
is_final: bool = False,
|
|
68
68
|
metadata: Optional[Dict[str, Any]] = None,
|
|
69
|
+
state: TaskState = TaskState.working,
|
|
69
70
|
) -> TaskStatusUpdateEvent:
|
|
70
71
|
"""
|
|
71
72
|
Creates a new TaskStatusUpdateEvent.
|
|
@@ -81,7 +82,7 @@ def create_status_update(
|
|
|
81
82
|
A new `TaskStatusUpdateEvent` object.
|
|
82
83
|
"""
|
|
83
84
|
task_status = task_helpers.create_task_status(
|
|
84
|
-
state=
|
|
85
|
+
state=state,
|
|
85
86
|
message=message,
|
|
86
87
|
)
|
|
87
88
|
return TaskStatusUpdateEvent(
|
|
@@ -188,6 +188,11 @@ def get_sam_events_topic(namespace: str, category: str, action: str) -> str:
|
|
|
188
188
|
return f"{namespace.rstrip('/')}/sam/events/{category}/{action}"
|
|
189
189
|
|
|
190
190
|
|
|
191
|
+
def get_feedback_topic(namespace: str) -> str:
|
|
192
|
+
"""Returns the topic for publishing user feedback events."""
|
|
193
|
+
return f"{namespace.rstrip('/')}/sam/v1/feedback/submit"
|
|
194
|
+
|
|
195
|
+
|
|
191
196
|
def get_sam_events_subscription_topic(namespace: str, category: str) -> str:
|
|
192
197
|
"""Returns SAM system events subscription topic."""
|
|
193
198
|
if not namespace:
|
|
@@ -34,7 +34,8 @@ class ArtifactInfo(BaseModel):
|
|
|
34
34
|
schema_definition: Optional[Dict[str, Any]] = Field(default=None, alias="schema")
|
|
35
35
|
uri: Optional[str] = None
|
|
36
36
|
version: Optional[Union[int, str]] = None
|
|
37
|
-
version_count: int
|
|
37
|
+
version_count: Optional[int] = None
|
|
38
|
+
source: Optional[str] = None # Optional: Source of the artifact (e.g., "project")
|
|
38
39
|
|
|
39
40
|
model_config = ConfigDict(populate_by_name=True)
|
|
40
41
|
|
|
@@ -13,19 +13,36 @@
|
|
|
13
13
|
"type": "string",
|
|
14
14
|
"description": "The name of the artifact being created."
|
|
15
15
|
},
|
|
16
|
-
"
|
|
16
|
+
"description": {
|
|
17
|
+
"type": "string",
|
|
18
|
+
"description": "An optional description of the artifact being created."
|
|
19
|
+
},
|
|
20
|
+
"status": {
|
|
21
|
+
"type": "string",
|
|
22
|
+
"enum": ["in-progress", "completed", "failed"],
|
|
23
|
+
"description": "The status of the artifact creation."
|
|
24
|
+
},
|
|
25
|
+
"bytes_transferred": {
|
|
17
26
|
"type": "integer",
|
|
18
|
-
"description": "The number of bytes
|
|
27
|
+
"description": "The number of bytes transferred so far."
|
|
19
28
|
},
|
|
20
29
|
"artifact_chunk": {
|
|
21
30
|
"type": "string",
|
|
22
|
-
"description": "The chunk of artifact data that was
|
|
31
|
+
"description": "The chunk of artifact data that was transferred in this progress update. Only present for 'in-progress' status."
|
|
32
|
+
},
|
|
33
|
+
"mime_type": {
|
|
34
|
+
"type": "string",
|
|
35
|
+
"description": "The MIME type of the artifact. Only present for 'completed' status."
|
|
36
|
+
},
|
|
37
|
+
"version": {
|
|
38
|
+
"type": "integer",
|
|
39
|
+
"description": "The version number of the artifact being created or updated."
|
|
23
40
|
}
|
|
24
41
|
},
|
|
25
42
|
"required": [
|
|
26
43
|
"type",
|
|
27
44
|
"filename",
|
|
28
|
-
"
|
|
29
|
-
"
|
|
45
|
+
"status",
|
|
46
|
+
"bytes_transferred"
|
|
30
47
|
]
|
|
31
|
-
}
|
|
48
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "FeedbackEvent",
|
|
4
|
+
"description": "Schema for a user feedback event published by a gateway.",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"properties": {
|
|
7
|
+
"id": {
|
|
8
|
+
"type": "string",
|
|
9
|
+
"description": "A unique identifier for this feedback submission."
|
|
10
|
+
},
|
|
11
|
+
"session_id": {
|
|
12
|
+
"type": "string",
|
|
13
|
+
"description": "The A2A session ID associated with the task."
|
|
14
|
+
},
|
|
15
|
+
"task_id": {
|
|
16
|
+
"type": "string",
|
|
17
|
+
"description": "The ID of the task this feedback is for."
|
|
18
|
+
},
|
|
19
|
+
"user_id": {
|
|
20
|
+
"type": "string",
|
|
21
|
+
"description": "The identifier of the user who provided the feedback."
|
|
22
|
+
},
|
|
23
|
+
"rating": {
|
|
24
|
+
"type": "string",
|
|
25
|
+
"enum": ["up", "down"],
|
|
26
|
+
"description": "The rating provided by the user."
|
|
27
|
+
},
|
|
28
|
+
"comment": {
|
|
29
|
+
"type": ["string", "null"],
|
|
30
|
+
"description": "Optional text comment provided by the user."
|
|
31
|
+
},
|
|
32
|
+
"created_time": {
|
|
33
|
+
"type": "string",
|
|
34
|
+
"format": "date-time",
|
|
35
|
+
"description": "The ISO 8601 timestamp (UTC) when the feedback was submitted."
|
|
36
|
+
},
|
|
37
|
+
"gateway_id": {
|
|
38
|
+
"type": "string",
|
|
39
|
+
"description": "The ID of the gateway that collected the feedback."
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
"required": [
|
|
43
|
+
"id",
|
|
44
|
+
"session_id",
|
|
45
|
+
"task_id",
|
|
46
|
+
"user_id",
|
|
47
|
+
"rating",
|
|
48
|
+
"created_time",
|
|
49
|
+
"gateway_id"
|
|
50
|
+
]
|
|
51
|
+
}
|
|
@@ -12,17 +12,28 @@ from a2a.types import AgentCard
|
|
|
12
12
|
|
|
13
13
|
log = logging.getLogger(__name__)
|
|
14
14
|
|
|
15
|
+
|
|
15
16
|
class AgentRegistry:
|
|
16
17
|
"""Stores and manages discovered AgentCards with health tracking."""
|
|
17
18
|
|
|
18
|
-
def __init__(self):
|
|
19
|
+
def __init__(self, on_agent_added=None, on_agent_removed=None):
|
|
19
20
|
self._agents: Dict[str, AgentCard] = {}
|
|
20
21
|
self._last_seen: Dict[str, float] = {} # Timestamp of last agent card received
|
|
21
22
|
self._lock = threading.Lock()
|
|
23
|
+
self._on_agent_added = on_agent_added
|
|
24
|
+
self._on_agent_removed = on_agent_removed
|
|
25
|
+
|
|
26
|
+
def set_on_agent_added_callback(self, callback):
|
|
27
|
+
"""Sets the callback function to be called when a new agent is added."""
|
|
28
|
+
self._on_agent_added = callback
|
|
29
|
+
|
|
30
|
+
def set_on_agent_removed_callback(self, callback):
|
|
31
|
+
"""Sets the callback function to be called when an agent is removed."""
|
|
32
|
+
self._on_agent_removed = callback
|
|
22
33
|
|
|
23
34
|
def add_or_update_agent(self, agent_card: AgentCard):
|
|
24
35
|
"""Adds a new agent or updates an existing one."""
|
|
25
|
-
|
|
36
|
+
|
|
26
37
|
if not agent_card or not agent_card.name:
|
|
27
38
|
log.warning("Attempted to register agent with invalid agent card or missing name")
|
|
28
39
|
return False
|
|
@@ -30,12 +41,19 @@ class AgentRegistry:
|
|
|
30
41
|
with self._lock:
|
|
31
42
|
is_new = agent_card.name not in self._agents
|
|
32
43
|
current_time = time.time()
|
|
33
|
-
|
|
44
|
+
|
|
34
45
|
# Store the agent information
|
|
35
46
|
self._agents[agent_card.name] = agent_card
|
|
36
47
|
self._last_seen[agent_card.name] = current_time
|
|
37
|
-
|
|
38
|
-
|
|
48
|
+
|
|
49
|
+
# Call callback OUTSIDE the lock to avoid deadlock
|
|
50
|
+
if is_new and self._on_agent_added:
|
|
51
|
+
try:
|
|
52
|
+
self._on_agent_added(agent_card)
|
|
53
|
+
except Exception as e:
|
|
54
|
+
log.error(f"Error in agent added callback for {agent_card.name}: {e}", exc_info=True)
|
|
55
|
+
|
|
56
|
+
return is_new
|
|
39
57
|
|
|
40
58
|
def get_agent(self, agent_name: str) -> Optional[AgentCard]:
|
|
41
59
|
"""Retrieves an agent card by name."""
|
|
@@ -88,14 +106,14 @@ class AgentRegistry:
|
|
|
88
106
|
|
|
89
107
|
def remove_agent(self, agent_name: str) -> bool:
|
|
90
108
|
"""Removes an agent from the registry."""
|
|
91
|
-
|
|
109
|
+
|
|
92
110
|
with self._lock:
|
|
93
111
|
if agent_name in self._agents:
|
|
94
112
|
# Get agent details before removal for logging
|
|
95
113
|
last_seen_time = self._last_seen.get(agent_name)
|
|
96
114
|
current_time = time.time()
|
|
97
115
|
time_since_last_seen = int(current_time - last_seen_time) if last_seen_time else "unknown"
|
|
98
|
-
|
|
116
|
+
|
|
99
117
|
# Log detailed information about the agent being removed
|
|
100
118
|
log.warning(
|
|
101
119
|
"AGENT DE-REGISTRATION: Removing agent '%s' from registry. "
|
|
@@ -103,17 +121,26 @@ class AgentRegistry:
|
|
|
103
121
|
agent_name,
|
|
104
122
|
time_since_last_seen
|
|
105
123
|
)
|
|
106
|
-
|
|
124
|
+
|
|
107
125
|
# Remove the agent from all tracking dictionaries
|
|
108
126
|
del self._agents[agent_name]
|
|
109
127
|
if agent_name in self._last_seen:
|
|
110
128
|
del self._last_seen[agent_name]
|
|
111
|
-
|
|
129
|
+
|
|
112
130
|
log.info("Agent '%s' successfully removed from registry", agent_name)
|
|
113
|
-
|
|
131
|
+
removed = True
|
|
114
132
|
else:
|
|
115
133
|
log.debug("Attempted to remove non-existent agent '%s' from registry", agent_name)
|
|
116
|
-
|
|
134
|
+
removed = False
|
|
135
|
+
|
|
136
|
+
# Call callback OUTSIDE the lock to avoid deadlock
|
|
137
|
+
if removed and self._on_agent_removed:
|
|
138
|
+
try:
|
|
139
|
+
self._on_agent_removed(agent_name)
|
|
140
|
+
except Exception as e:
|
|
141
|
+
log.error(f"Error in agent removed callback for {agent_name}: {e}", exc_info=True)
|
|
142
|
+
|
|
143
|
+
return removed
|
|
117
144
|
|
|
118
145
|
def clear(self):
|
|
119
146
|
"""Clears all registered agents."""
|