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,83 +0,0 @@
|
|
|
1
|
-
# DEVELOPER GUIDE: requests
|
|
2
|
-
|
|
3
|
-
## Quick Summary
|
|
4
|
-
This directory contains request Data Transfer Objects (DTOs) for API endpoints, specifically focused on session management operations. These Pydantic models define the structure and validation rules for incoming API requests.
|
|
5
|
-
|
|
6
|
-
## Files Overview
|
|
7
|
-
- `__init__.py` - Exports all session-related request DTOs for easy importing
|
|
8
|
-
- `session_requests.py` - Defines request DTOs for session CRUD operations (get, update, history retrieval)
|
|
9
|
-
|
|
10
|
-
## Developer API Reference
|
|
11
|
-
|
|
12
|
-
### __init__.py
|
|
13
|
-
**Purpose:** Provides centralized imports for all request DTOs
|
|
14
|
-
**Import:** `from solace_agent_mesh.gateway.http_sse.routers.dto.requests import GetSessionRequest, GetSessionHistoryRequest, UpdateSessionRequest`
|
|
15
|
-
|
|
16
|
-
**Usage Examples:**
|
|
17
|
-
```python
|
|
18
|
-
# Import all session request DTOs
|
|
19
|
-
from solace_agent_mesh.gateway.http_sse.routers.dto.requests import (
|
|
20
|
-
GetSessionRequest,
|
|
21
|
-
GetSessionHistoryRequest,
|
|
22
|
-
UpdateSessionRequest
|
|
23
|
-
)
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
### session_requests.py
|
|
27
|
-
**Purpose:** Defines Pydantic models for session-related API request validation
|
|
28
|
-
**Import:** `from solace_agent_mesh.gateway.http_sse.routers.dto.requests.session_requests import GetSessionRequest, GetSessionHistoryRequest, UpdateSessionRequest`
|
|
29
|
-
|
|
30
|
-
**Classes:**
|
|
31
|
-
- `GetSessionRequest(session_id: SessionId, user_id: UserId)` - Request DTO for retrieving a specific session by ID
|
|
32
|
-
- `GetSessionHistoryRequest(session_id: SessionId, user_id: UserId, pagination: Optional[PaginationInfo] = None)` - Request DTO for retrieving session message history with optional pagination
|
|
33
|
-
- `UpdateSessionRequest(session_id: SessionId, user_id: UserId, name: str)` - Request DTO for updating session details with validation (name must be 1-255 characters)
|
|
34
|
-
|
|
35
|
-
**Usage Examples:**
|
|
36
|
-
```python
|
|
37
|
-
from solace_agent_mesh.gateway.http_sse.routers.dto.requests.session_requests import (
|
|
38
|
-
GetSessionRequest,
|
|
39
|
-
GetSessionHistoryRequest,
|
|
40
|
-
UpdateSessionRequest
|
|
41
|
-
)
|
|
42
|
-
from pydantic import ValidationError
|
|
43
|
-
|
|
44
|
-
# Create a request to get a specific session
|
|
45
|
-
get_session_req = GetSessionRequest(
|
|
46
|
-
session_id="session456",
|
|
47
|
-
user_id="user123"
|
|
48
|
-
)
|
|
49
|
-
|
|
50
|
-
# Create a request to get session history with pagination
|
|
51
|
-
get_history_req = GetSessionHistoryRequest(
|
|
52
|
-
session_id="session456",
|
|
53
|
-
user_id="user123",
|
|
54
|
-
pagination={"page": 1, "size": 20}
|
|
55
|
-
)
|
|
56
|
-
|
|
57
|
-
# Create a request to update a session name
|
|
58
|
-
update_req = UpdateSessionRequest(
|
|
59
|
-
session_id="session456",
|
|
60
|
-
user_id="user123",
|
|
61
|
-
name="My Updated Session"
|
|
62
|
-
)
|
|
63
|
-
|
|
64
|
-
# Validate request data from dictionary
|
|
65
|
-
request_data = {
|
|
66
|
-
"session_id": "session789",
|
|
67
|
-
"user_id": "user456",
|
|
68
|
-
"name": "New Session Name"
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
try:
|
|
72
|
-
validated_request = UpdateSessionRequest(**request_data)
|
|
73
|
-
print(f"Valid request: {validated_request}")
|
|
74
|
-
except ValidationError as e:
|
|
75
|
-
print(f"Validation failed: {e}")
|
|
76
|
-
|
|
77
|
-
# Access validated fields
|
|
78
|
-
print(f"Session ID: {update_req.session_id}")
|
|
79
|
-
print(f"User ID: {update_req.user_id}")
|
|
80
|
-
print(f"New name: {update_req.name}")
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
# content_hash: d40151714f449905662170c71b393dba7c98e7ec1c46f5f3a861097b2d5376b2
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
# DEVELOPER GUIDE: responses
|
|
2
|
-
|
|
3
|
-
## Quick Summary
|
|
4
|
-
The `responses` directory contains Pydantic response DTOs (Data Transfer Objects) for API endpoints. It provides structured response models with automatic timestamp conversion from epoch milliseconds to ISO 8601 strings for JSON serialization.
|
|
5
|
-
|
|
6
|
-
## Files Overview
|
|
7
|
-
- `__init__.py` - Exports all response DTOs for easy importing
|
|
8
|
-
- `base_responses.py` - Base response class with automatic timestamp serialization
|
|
9
|
-
- `session_responses.py` - Session and message-related response DTOs
|
|
10
|
-
|
|
11
|
-
## Developer API Reference
|
|
12
|
-
|
|
13
|
-
### __init__.py
|
|
14
|
-
**Purpose:** Central import point for all response DTOs
|
|
15
|
-
**Import:** `from solace_agent_mesh.gateway.http_sse.routers.dto.responses import MessageResponse, SessionResponse, SessionListResponse`
|
|
16
|
-
|
|
17
|
-
### base_responses.py
|
|
18
|
-
**Purpose:** Provides base response class with automatic timestamp field conversion
|
|
19
|
-
**Import:** `from solace_agent_mesh.gateway.http_sse.routers.dto.responses.base_responses import BaseTimestampResponse`
|
|
20
|
-
|
|
21
|
-
**Classes:**
|
|
22
|
-
- `BaseTimestampResponse(BaseModel)` - Base class for responses with timestamp fields that auto-converts epoch ms to ISO strings
|
|
23
|
-
- `model_dump(**kwargs) -> dict[str, Any]` - Converts timestamp fields to ISO strings in output
|
|
24
|
-
- `model_dump_json(**kwargs) -> str` - Serializes to JSON with timestamp conversion
|
|
25
|
-
|
|
26
|
-
**Usage Examples:**
|
|
27
|
-
```python
|
|
28
|
-
from solace_agent_mesh.gateway.http_sse.routers.dto.responses.base_responses import BaseTimestampResponse
|
|
29
|
-
|
|
30
|
-
class MyResponse(BaseTimestampResponse):
|
|
31
|
-
name: str
|
|
32
|
-
created_time: int # Will be auto-converted to ISO string in JSON output
|
|
33
|
-
updated_time: int | None = None
|
|
34
|
-
|
|
35
|
-
# Usage
|
|
36
|
-
response = MyResponse(name="test", created_time=1640995200000)
|
|
37
|
-
json_data = response.model_dump() # created_time becomes ISO string
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
### session_responses.py
|
|
41
|
-
**Purpose:** Session and message response DTOs with field aliasing for API consistency
|
|
42
|
-
**Import:** `from solace_agent_mesh.gateway.http_sse.routers.dto.responses import MessageResponse, SessionResponse, SessionListResponse`
|
|
43
|
-
|
|
44
|
-
**Classes:**
|
|
45
|
-
- `MessageResponse(BaseTimestampResponse)` - Response DTO for chat messages
|
|
46
|
-
- `id: MessageId` - Unique message identifier
|
|
47
|
-
- `session_id: SessionId` - Session this message belongs to (aliased as "sessionId")
|
|
48
|
-
- `message: str` - Message content
|
|
49
|
-
- `sender_type: SenderType` - Type of sender (aliased as "senderType")
|
|
50
|
-
- `sender_name: str` - Name of sender (aliased as "senderName")
|
|
51
|
-
- `message_type: MessageType` - Type of message (aliased as "messageType")
|
|
52
|
-
- `created_time: int` - Creation timestamp in epoch ms (aliased as "createdTime")
|
|
53
|
-
- `updated_time: int | None` - Update timestamp in epoch ms (aliased as "updatedTime")
|
|
54
|
-
|
|
55
|
-
- `SessionResponse(BaseTimestampResponse)` - Response DTO for chat sessions
|
|
56
|
-
- `id: SessionId` - Unique session identifier
|
|
57
|
-
- `user_id: UserId` - User who owns the session (aliased as "userId")
|
|
58
|
-
- `name: str | None` - Optional session name
|
|
59
|
-
- `agent_id: str | None` - Optional agent identifier (aliased as "agentId")
|
|
60
|
-
- `created_time: int` - Creation timestamp in epoch ms (aliased as "createdTime")
|
|
61
|
-
- `updated_time: int | None` - Update timestamp in epoch ms (aliased as "updatedTime")
|
|
62
|
-
|
|
63
|
-
- `SessionListResponse(BaseModel)` - Response DTO for paginated session lists
|
|
64
|
-
- `sessions: list[SessionResponse]` - List of session objects
|
|
65
|
-
- `pagination: PaginationInfo | None` - Pagination metadata
|
|
66
|
-
- `total_count: int` - Total number of sessions (aliased as "totalCount")
|
|
67
|
-
|
|
68
|
-
**Usage Examples:**
|
|
69
|
-
```python
|
|
70
|
-
from solace_agent_mesh.gateway.http_sse.routers.dto.responses import (
|
|
71
|
-
MessageResponse,
|
|
72
|
-
SessionResponse,
|
|
73
|
-
SessionListResponse
|
|
74
|
-
)
|
|
75
|
-
from solace_agent_mesh.gateway.http_sse.shared.enums import MessageType, SenderType
|
|
76
|
-
|
|
77
|
-
# Create a message response
|
|
78
|
-
message = MessageResponse(
|
|
79
|
-
id="msg_123",
|
|
80
|
-
session_id="sess_456",
|
|
81
|
-
message="Hello world",
|
|
82
|
-
sender_type=SenderType.USER,
|
|
83
|
-
sender_name="John Doe",
|
|
84
|
-
message_type=MessageType.TEXT,
|
|
85
|
-
created_time=1640995200000
|
|
86
|
-
)
|
|
87
|
-
|
|
88
|
-
# Create a session response
|
|
89
|
-
session = SessionResponse(
|
|
90
|
-
id="sess_456",
|
|
91
|
-
user_id="user_789",
|
|
92
|
-
name="My Chat Session",
|
|
93
|
-
agent_id="agent_001",
|
|
94
|
-
created_time=1640995200000
|
|
95
|
-
)
|
|
96
|
-
|
|
97
|
-
# Create a session list response
|
|
98
|
-
session_list = SessionListResponse(
|
|
99
|
-
sessions=[session],
|
|
100
|
-
total_count=1
|
|
101
|
-
)
|
|
102
|
-
|
|
103
|
-
# Serialize to JSON (timestamps auto-converted to ISO strings)
|
|
104
|
-
json_output = message.model_dump_json()
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
# content_hash: ed7205266a0eb2b2cb548d0c84fd44758cf1030524ffb144d08e9c82545fc4eb
|
|
@@ -1,314 +0,0 @@
|
|
|
1
|
-
# DEVELOPER GUIDE for the routers directory
|
|
2
|
-
|
|
3
|
-
## Quick Summary
|
|
4
|
-
The `routers` directory contains FastAPI router modules that define the REST API endpoints for the HTTP SSE Gateway. Each router groups endpoints by functional domain (agent discovery, artifact management, authentication, sessions, etc.) and provides the primary interface for frontend applications and other clients to interact with the gateway. The routers work together to provide a complete web API with real-time capabilities through Server-Sent Events (SSE), along with comprehensive session management, artifact handling, and A2A message visualization.
|
|
5
|
-
|
|
6
|
-
## Files and Subdirectories Overview
|
|
7
|
-
- **Direct files:**
|
|
8
|
-
- `__init__.py` - Package initialization for router modules
|
|
9
|
-
- `agent_cards.py` - Agent discovery endpoints
|
|
10
|
-
- `artifacts.py` - Artifact management (upload, download, versioning)
|
|
11
|
-
- `auth.py` - Authentication flow endpoints (login, callback, refresh)
|
|
12
|
-
- `config.py` - Frontend configuration endpoint
|
|
13
|
-
- `feedback.py` - User feedback collection endpoints
|
|
14
|
-
- `people.py` - User search for autocomplete features
|
|
15
|
-
- `sessions.py` - Session management (CRUD operations)
|
|
16
|
-
- `sse.py` - Server-Sent Events streaming endpoint
|
|
17
|
-
- `tasks.py` - Task submission and management endpoints
|
|
18
|
-
- `users.py` - Current user information endpoint
|
|
19
|
-
- `visualization.py` - A2A message visualization streaming
|
|
20
|
-
- **Subdirectories:**
|
|
21
|
-
- `dto/` - Data Transfer Objects for request/response validation
|
|
22
|
-
|
|
23
|
-
## Developer API Reference
|
|
24
|
-
|
|
25
|
-
### Direct Files
|
|
26
|
-
|
|
27
|
-
#### __init__.py
|
|
28
|
-
**Purpose:** Package initialization for the routers module
|
|
29
|
-
**Import:** `from solace_agent_mesh.gateway.http_sse.routers import *`
|
|
30
|
-
|
|
31
|
-
#### agent_cards.py
|
|
32
|
-
**Purpose:** Provides REST endpoints for agent discovery
|
|
33
|
-
**Import:** `from solace_agent_mesh.gateway.http_sse.routers.agent_cards import router`
|
|
34
|
-
|
|
35
|
-
**Functions:**
|
|
36
|
-
- `get_discovered_agent_cards() -> List[AgentCard]` - Retrieves all currently discovered A2A agents
|
|
37
|
-
|
|
38
|
-
#### artifacts.py
|
|
39
|
-
**Purpose:** Manages session-specific artifacts via REST endpoints with versioning and metadata support
|
|
40
|
-
**Import:** `from solace_agent_mesh.gateway.http_sse.routers.artifacts import router, ArtifactUploadResponse`
|
|
41
|
-
|
|
42
|
-
**Classes:**
|
|
43
|
-
- `ArtifactUploadResponse(BaseModel)` - Response model for artifact uploads with camelCase fields
|
|
44
|
-
|
|
45
|
-
**Functions:**
|
|
46
|
-
- `upload_artifact_with_session(upload_file: UploadFile, sessionId: str, filename: str, metadata_json: str) -> ArtifactUploadResponse` - Uploads artifact with session management
|
|
47
|
-
- `list_artifact_versions(session_id: str, filename: str) -> List[int]` - Lists available versions for an artifact
|
|
48
|
-
- `list_artifacts(session_id: str) -> List[ArtifactInfo]` - Lists all artifacts in a session with metadata
|
|
49
|
-
- `get_latest_artifact(session_id: str, filename: str) -> StreamingResponse` - Downloads latest artifact version with embed resolution
|
|
50
|
-
- `get_specific_artifact_version(session_id: str, filename: str, version: Union[int, str]) -> StreamingResponse` - Downloads specific version
|
|
51
|
-
- `get_artifact_by_uri(uri: str) -> StreamingResponse` - Downloads artifact by formal artifact:// URI
|
|
52
|
-
- `upload_artifact(session_id: str, filename: str, upload_file: UploadFile, metadata_json: Optional[str]) -> Dict[str, Any]` - Uploads new artifact version with metadata
|
|
53
|
-
- `delete_artifact(session_id: str, filename: str) -> Response` - Deletes artifact and all versions
|
|
54
|
-
|
|
55
|
-
#### auth.py
|
|
56
|
-
**Purpose:** Handles OAuth-based user authentication flow with external authorization service
|
|
57
|
-
**Import:** `from solace_agent_mesh.gateway.http_sse.routers.auth import router`
|
|
58
|
-
|
|
59
|
-
**Functions:**
|
|
60
|
-
- `initiate_login(request: FastAPIRequest) -> RedirectResponse` - Starts OAuth login flow with external service
|
|
61
|
-
- `get_csrf_token(response: Response) -> Dict[str, str]` - Generates and sets CSRF token
|
|
62
|
-
- `auth_callback(request: FastAPIRequest) -> RedirectResponse` - Handles OAuth callback and token exchange
|
|
63
|
-
- `refresh_token(request: FastAPIRequest) -> Dict[str, str]` - Refreshes access token using refresh token
|
|
64
|
-
|
|
65
|
-
#### config.py
|
|
66
|
-
**Purpose:** Provides frontend configuration settings including feature flags
|
|
67
|
-
**Import:** `from solace_agent_mesh.gateway.http_sse.routers.config import router`
|
|
68
|
-
|
|
69
|
-
**Functions:**
|
|
70
|
-
- `get_app_config() -> Dict[str, Any]` - Returns frontend configuration including auth URLs, feature flags, and persistence settings
|
|
71
|
-
|
|
72
|
-
#### feedback.py
|
|
73
|
-
**Purpose:** Receives and processes user feedback on chat messages
|
|
74
|
-
**Import:** `from solace_agent_mesh.gateway.http_sse.routers.feedback import router, FeedbackPayload`
|
|
75
|
-
|
|
76
|
-
**Classes:**
|
|
77
|
-
- `FeedbackPayload(BaseModel)` - Data model for feedback submission
|
|
78
|
-
- `task_id: str` - ID of the task being rated
|
|
79
|
-
- `session_id: str` - Session containing the task
|
|
80
|
-
- `feedback_type: Literal["up", "down"]` - Type of feedback
|
|
81
|
-
- `feedback_text: Optional[str]` - Optional text feedback
|
|
82
|
-
|
|
83
|
-
**Functions:**
|
|
84
|
-
- `submit_feedback(payload: FeedbackPayload, user_id: str) -> Dict[str, str]` - Processes user feedback asynchronously
|
|
85
|
-
|
|
86
|
-
#### people.py
|
|
87
|
-
**Purpose:** Provides user search functionality for autocomplete features
|
|
88
|
-
**Import:** `from solace_agent_mesh.gateway.http_sse.routers.people import router`
|
|
89
|
-
|
|
90
|
-
**Functions:**
|
|
91
|
-
- `search_people(q: str, limit: int = 10) -> List[Dict[str, Any]]` - Searches for users for @mention autocomplete
|
|
92
|
-
|
|
93
|
-
#### sessions.py
|
|
94
|
-
**Purpose:** Manages user sessions including CRUD operations with persistence
|
|
95
|
-
**Import:** `from solace_agent_mesh.gateway.http_sse.routers.sessions import router`
|
|
96
|
-
|
|
97
|
-
**Functions:**
|
|
98
|
-
- `get_all_sessions(page_number: int, page_size: int, user: dict) -> PaginatedResponse[SessionResponse]` - Lists user's sessions with pagination
|
|
99
|
-
- `get_session(session_id: str, user: dict) -> DataResponse[SessionResponse]` - Gets session details with authorization
|
|
100
|
-
- `get_session_history(session_id: str, user: dict) -> List[MessageResponse]` - Gets session message history
|
|
101
|
-
- `update_session_name(session_id: str, name: str, user: dict) -> SessionResponse` - Updates session name with validation
|
|
102
|
-
- `delete_session(session_id: str, user: dict) -> None` - Deletes session with cascade notifications
|
|
103
|
-
|
|
104
|
-
#### sse.py
|
|
105
|
-
**Purpose:** Provides Server-Sent Events endpoint for real-time streaming
|
|
106
|
-
**Import:** `from solace_agent_mesh.gateway.http_sse.routers.sse import router`
|
|
107
|
-
|
|
108
|
-
**Functions:**
|
|
109
|
-
- `subscribe_to_task_events(task_id: str, request: FastAPIRequest) -> EventSourceResponse` - Establishes SSE connection for task updates with automatic cleanup
|
|
110
|
-
|
|
111
|
-
#### tasks.py
|
|
112
|
-
**Purpose:** Handles task submission, management, and historical search
|
|
113
|
-
**Import:** `from solace_agent_mesh.gateway.http_sse.routers.tasks import router`
|
|
114
|
-
|
|
115
|
-
**Functions:**
|
|
116
|
-
- `search_tasks(start_date: Optional[str], end_date: Optional[str], search: Optional[str], page: int, page_size: int, query_user_id: Optional[str]) -> List[Task]` - Searches historical tasks with admin capabilities
|
|
117
|
-
- `get_task_as_stim_file(task_id: str) -> Response` - Downloads complete task history as .stim file
|
|
118
|
-
- `send_task_to_agent(request: FastAPIRequest, payload: SendMessageRequest) -> SendMessageSuccessResponse` - Submits non-streaming task
|
|
119
|
-
- `subscribe_task_from_agent(request: FastAPIRequest, payload: SendStreamingMessageRequest) -> SendStreamingMessageSuccessResponse` - Submits streaming task
|
|
120
|
-
- `cancel_agent_task(request: FastAPIRequest, taskId: str, payload: CancelTaskRequest) -> Dict[str, str]` - Cancels active task
|
|
121
|
-
|
|
122
|
-
#### users.py
|
|
123
|
-
**Purpose:** Provides current user information with authentication status
|
|
124
|
-
**Import:** `from solace_agent_mesh.gateway.http_sse.routers.users import router`
|
|
125
|
-
|
|
126
|
-
**Functions:**
|
|
127
|
-
- `get_current_user_endpoint(user: dict) -> Dict[str, Any]` - Returns current user information with auth status
|
|
128
|
-
|
|
129
|
-
#### visualization.py
|
|
130
|
-
**Purpose:** Manages A2A message visualization streams for real-time monitoring
|
|
131
|
-
**Import:** `from solace_agent_mesh.gateway.http_sse.routers.visualization import router, SubscriptionTarget, VisualizationSubscribeRequest`
|
|
132
|
-
|
|
133
|
-
**Classes:**
|
|
134
|
-
- `SubscriptionTarget(BaseModel)` - Defines visualization target
|
|
135
|
-
- `type: str` - Target type (e.g., "current_namespace_a2a_messages", "agent_a2a_messages")
|
|
136
|
-
- `identifier: Optional[str]` - Target identifier (namespace or agent name)
|
|
137
|
-
- `VisualizationSubscribeRequest(BaseModel)` - Subscription request
|
|
138
|
-
- `subscription_targets: Optional[List[SubscriptionTarget]]` - Targets to monitor
|
|
139
|
-
- `client_stream_id: Optional[str]` - Client-generated stream ID for idempotency
|
|
140
|
-
- `VisualizationSubscribeResponse(BaseModel)` - Subscription response with SSE URL
|
|
141
|
-
- `VisualizationConfigUpdateRequest(BaseModel)` - Configuration update request
|
|
142
|
-
- `VisualizationConfigUpdateResponse(BaseModel)` - Configuration update response
|
|
143
|
-
|
|
144
|
-
**Functions:**
|
|
145
|
-
- `subscribe_to_visualization_stream(request_data: VisualizationSubscribeRequest) -> VisualizationSubscribeResponse` - Starts visualization stream with authorization
|
|
146
|
-
- `get_visualization_stream_events(stream_id: str) -> EventSourceResponse` - SSE endpoint for visualization events
|
|
147
|
-
- `update_visualization_stream_config(stream_id: str, update_request: VisualizationConfigUpdateRequest) -> VisualizationConfigUpdateResponse` - Updates stream configuration
|
|
148
|
-
- `unsubscribe_from_visualization_stream(stream_id: str) -> Response` - Terminates visualization stream
|
|
149
|
-
|
|
150
|
-
### Subdirectory APIs
|
|
151
|
-
|
|
152
|
-
#### dto/
|
|
153
|
-
**Purpose:** Provides Data Transfer Objects for request/response validation and serialization with automatic timestamp conversion
|
|
154
|
-
**Key Exports:** Request and response DTOs for session management with field validation and camelCase aliasing
|
|
155
|
-
**Import Examples:**
|
|
156
|
-
```python
|
|
157
|
-
from solace_agent_mesh.gateway.http_sse.routers.dto.requests import GetSessionsRequest, UpdateSessionRequest
|
|
158
|
-
from solace_agent_mesh.gateway.http_sse.routers.dto.responses import SessionResponse, MessageResponse
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
## Complete Usage Guide
|
|
162
|
-
|
|
163
|
-
### 1. Setting Up Routers in FastAPI Application
|
|
164
|
-
|
|
165
|
-
```python
|
|
166
|
-
from fastapi import FastAPI
|
|
167
|
-
from solace_agent_mesh.gateway.http_sse.routers import (
|
|
168
|
-
agent_cards,
|
|
169
|
-
artifacts,
|
|
170
|
-
auth,
|
|
171
|
-
config,
|
|
172
|
-
feedback,
|
|
173
|
-
people,
|
|
174
|
-
sessions,
|
|
175
|
-
sse,
|
|
176
|
-
tasks,
|
|
177
|
-
users,
|
|
178
|
-
visualization
|
|
179
|
-
)
|
|
180
|
-
|
|
181
|
-
app = FastAPI()
|
|
182
|
-
|
|
183
|
-
# Include all routers with appropriate prefixes
|
|
184
|
-
app.include_router(agent_cards.router, prefix="/api/v1", tags=["agents"])
|
|
185
|
-
app.include_router(artifacts.router, prefix="/api/v1/artifacts", tags=["artifacts"])
|
|
186
|
-
app.include_router(auth.router, prefix="/api/v1", tags=["auth"])
|
|
187
|
-
app.include_router(config.router, prefix="/api/v1", tags=["config"])
|
|
188
|
-
app.include_router(feedback.router, prefix="/api/v1", tags=["feedback"])
|
|
189
|
-
app.include_router(people.router, prefix="/api/v1", tags=["people"])
|
|
190
|
-
app.include_router(sessions.router, prefix="/api/v1", tags=["sessions"])
|
|
191
|
-
app.include_router(sse.router, prefix="/api/v1/sse", tags=["sse"])
|
|
192
|
-
app.include_router(tasks.router, prefix="/api/v1/tasks", tags=["tasks"])
|
|
193
|
-
app.include_router(users.router, prefix="/api/v1/users", tags=["users"])
|
|
194
|
-
app.include_router(visualization.router, prefix="/api/v1/visualization", tags=["visualization"])
|
|
195
|
-
```
|
|
196
|
-
|
|
197
|
-
### 2. Agent Discovery and Task Submission
|
|
198
|
-
|
|
199
|
-
```python
|
|
200
|
-
import httpx
|
|
201
|
-
from a2a.types import SendStreamingMessageRequest, Message, MessagePart
|
|
202
|
-
|
|
203
|
-
# Discover available agents
|
|
204
|
-
async def get_available_agents():
|
|
205
|
-
async with httpx.AsyncClient() as client:
|
|
206
|
-
response = await client.get("http://localhost:8000/api/v1/agentCards")
|
|
207
|
-
return response.json()
|
|
208
|
-
|
|
209
|
-
# Submit a streaming task to an agent
|
|
210
|
-
async def submit_streaming_task(agent_name: str, message_text: str, session_id: str):
|
|
211
|
-
# Create message parts
|
|
212
|
-
parts = [MessagePart(text=message_text)]
|
|
213
|
-
|
|
214
|
-
# Create message with metadata
|
|
215
|
-
message = Message(
|
|
216
|
-
parts=parts,
|
|
217
|
-
context_id=session_id,
|
|
218
|
-
metadata={"agent_name": agent_name}
|
|
219
|
-
)
|
|
220
|
-
|
|
221
|
-
# Create request payload
|
|
222
|
-
payload = SendStreamingMessageRequest(
|
|
223
|
-
method="message:stream",
|
|
224
|
-
params={"message": message},
|
|
225
|
-
id="req_123"
|
|
226
|
-
)
|
|
227
|
-
|
|
228
|
-
async with httpx.AsyncClient() as client:
|
|
229
|
-
response = await client.post(
|
|
230
|
-
"http://localhost:8000/api/v1/tasks/message:stream",
|
|
231
|
-
json=payload.model_dump()
|
|
232
|
-
)
|
|
233
|
-
return response.json()
|
|
234
|
-
|
|
235
|
-
# Search historical tasks (admin users can query all users)
|
|
236
|
-
async def search_historical_tasks(start_date: str = None, query_user_id: str = None):
|
|
237
|
-
params = {}
|
|
238
|
-
if start_date:
|
|
239
|
-
params["start_date"] = start_date
|
|
240
|
-
if query_user_id:
|
|
241
|
-
params["query_user_id"] = query_user_id
|
|
242
|
-
|
|
243
|
-
async with httpx.AsyncClient() as client:
|
|
244
|
-
response = await client.get(
|
|
245
|
-
"http://localhost:8000/api/v1/tasks",
|
|
246
|
-
params=params
|
|
247
|
-
)
|
|
248
|
-
return response.json()
|
|
249
|
-
```
|
|
250
|
-
|
|
251
|
-
### 3. Real-time Event Streaming with SSE
|
|
252
|
-
|
|
253
|
-
```python
|
|
254
|
-
import asyncio
|
|
255
|
-
import httpx
|
|
256
|
-
import json
|
|
257
|
-
|
|
258
|
-
# Client-side SSE connection for task events
|
|
259
|
-
async def listen_to_task_events(task_id: str):
|
|
260
|
-
async with httpx.AsyncClient() as client:
|
|
261
|
-
async with client.stream(
|
|
262
|
-
"GET",
|
|
263
|
-
f"http://localhost:8000/api/v1/sse/subscribe/{task_id}",
|
|
264
|
-
headers={"Accept": "text/event-stream"}
|
|
265
|
-
) as response:
|
|
266
|
-
async for line in response.aiter_lines():
|
|
267
|
-
if line.startswith("data: "):
|
|
268
|
-
event_data = line[6:] # Remove "data: " prefix
|
|
269
|
-
try:
|
|
270
|
-
parsed_data = json.loads(event_data)
|
|
271
|
-
print(f"Received event: {parsed_data}")
|
|
272
|
-
except json.JSONDecodeError:
|
|
273
|
-
print(f"Received raw data: {event_data}")
|
|
274
|
-
|
|
275
|
-
# Client-side SSE connection for visualization
|
|
276
|
-
async def listen_to_visualization_events(stream_id: str):
|
|
277
|
-
async with httpx.AsyncClient() as client:
|
|
278
|
-
async with client.stream(
|
|
279
|
-
"GET",
|
|
280
|
-
f"http://localhost:8000/api/v1/visualization/{stream_id}/events",
|
|
281
|
-
headers={"Accept": "text/event-stream"}
|
|
282
|
-
) as response:
|
|
283
|
-
async for line in response.aiter_lines():
|
|
284
|
-
if line.startswith("data: "):
|
|
285
|
-
event_data = line[6:]
|
|
286
|
-
print(f"Visualization event: {event_data}")
|
|
287
|
-
```
|
|
288
|
-
|
|
289
|
-
### 4. Comprehensive Artifact Management
|
|
290
|
-
|
|
291
|
-
```python
|
|
292
|
-
import httpx
|
|
293
|
-
import json
|
|
294
|
-
from pathlib import Path
|
|
295
|
-
|
|
296
|
-
# Upload an artifact with metadata using session-based endpoint
|
|
297
|
-
async def upload_artifact_with_metadata(session_id: str, filename: str, file_path: Path, metadata: dict = None):
|
|
298
|
-
files = {"upload_file": (filename, file_path.open("rb"))}
|
|
299
|
-
data = {}
|
|
300
|
-
|
|
301
|
-
if metadata:
|
|
302
|
-
data["metadata_json"] = json.dumps(metadata)
|
|
303
|
-
|
|
304
|
-
async with httpx.AsyncClient() as client:
|
|
305
|
-
response = await client.post(
|
|
306
|
-
f"http://localhost:8000/api/v1/artifacts/{session_id}/{filename}",
|
|
307
|
-
files=files,
|
|
308
|
-
data=data
|
|
309
|
-
)
|
|
310
|
-
return response.json()
|
|
311
|
-
|
|
312
|
-
# Upload artifact with automatic session creation
|
|
313
|
-
|
|
314
|
-
# content_hash: a98ae1eb7e5483f6e9438569a4c3dd2df4d9992a968e84230d41cf18d2d34624
|