solace-agent-mesh 1.11.2__py3-none-any.whl → 1.12.0__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.
- solace_agent_mesh/agent/adk/callbacks.py +177 -10
- solace_agent_mesh/agent/adk/embed_resolving_mcp_toolset.py +3 -0
- solace_agent_mesh/agent/adk/models/lite_llm.py +34 -16
- solace_agent_mesh/agent/adk/runner.py +66 -8
- solace_agent_mesh/agent/adk/setup.py +61 -26
- solace_agent_mesh/agent/protocol/event_handlers.py +48 -0
- solace_agent_mesh/agent/proxies/a2a/component.py +27 -0
- solace_agent_mesh/agent/sac/component.py +84 -2
- solace_agent_mesh/agent/tools/builtin_artifact_tools.py +41 -22
- solace_agent_mesh/agent/tools/peer_agent_tool.py +19 -12
- solace_agent_mesh/agent/tools/tool_config_types.py +21 -1
- solace_agent_mesh/agent/utils/artifact_helpers.py +54 -0
- solace_agent_mesh/assets/docs/404.html +3 -3
- solace_agent_mesh/assets/docs/assets/js/15ba94aa.e186750d.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/240a0364.83e37aa8.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/2e32b5e0.2f0db237.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/3a6c6137.7e61915d.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/{3ac1795d.28b7c67b.js → 3ac1795d.dc006e20.js} +1 -1
- solace_agent_mesh/assets/docs/assets/js/3ff0015d.f08618fb.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/4667dc50.bf2ad456.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/547e15cc.8e6da617.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/64195356.09dbd087.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/66d4869e.30340bd3.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.95be65d4.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/ab9708a8.3e563275.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/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.08fab659.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/main.b241af3e.js +2 -0
- solace_agent_mesh/assets/docs/assets/js/runtime~main.4ca7d2e2.js +1 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/agents/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/artifact-management/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/audio-tools/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/data-analysis-tools/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/embeds/index.html +4 -4
- 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 +14 -12
- solace_agent_mesh/assets/docs/docs/documentation/components/cli/index.html +30 -9
- solace_agent_mesh/assets/docs/docs/documentation/components/gateways/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/components/index.html +6 -4
- solace_agent_mesh/assets/docs/docs/documentation/components/orchestrator/index.html +4 -4
- 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 +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/components/projects/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/components/prompts/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/components/proxies/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/components/speech/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/deploying/debugging/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/deploying/deployment-options/index.html +5 -5
- solace_agent_mesh/assets/docs/docs/documentation/deploying/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/deploying/{kubernetes-deployment → kubernetes}/index.html +6 -6
- 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 +11 -6
- solace_agent_mesh/assets/docs/docs/documentation/deploying/observability/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/deploying/proxy_configuration/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/developing/create-agents/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/developing/create-gateways/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/developing/creating-python-tools/index.html +23 -5
- solace_agent_mesh/assets/docs/docs/documentation/developing/creating-service-providers/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/developing/evaluations/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/developing/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/developing/structure/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/bedrock-agents/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/custom-agent/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/event-mesh-gateway/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/mcp-integration/index.html +17 -8
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/mongodb-integration/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/rag-integration/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/rest-gateway/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/slack-integration/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/sql-database/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/teams-integration/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/agent-builder/index.html +5 -5
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/connectors/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/installation/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/openapi-tools/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/rbac-setup-guide/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/secure-user-delegated-access/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/single-sign-on/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/wheel-installation/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/architecture/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/index.html +6 -5
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/introduction/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/try-agent-mesh/index.html +4 -4
- 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 +25 -4
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/configurations/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/installation/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/large_language_models/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/run-project/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/session-storage/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/user-feedback/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/migrations/a2a-upgrade/a2a-gateway-upgrade-to-0.3.0/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/migrations/a2a-upgrade/a2a-technical-migration-map/index.html +4 -4
- solace_agent_mesh/assets/docs/docs/documentation/migrations/platform-service-split/index.html +85 -0
- solace_agent_mesh/assets/docs/lunr-index-1767712284328.json +1 -0
- solace_agent_mesh/assets/docs/lunr-index.json +1 -1
- solace_agent_mesh/assets/docs/search-doc-1767712284328.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/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 +29 -2
- solace_agent_mesh/cli/commands/init_cmd/platform_service_step.py +85 -0
- solace_agent_mesh/cli/commands/tools_cmd.py +315 -0
- solace_agent_mesh/cli/main.py +2 -0
- solace_agent_mesh/client/webui/frontend/static/assets/{authCallback-Dj3JtK42.js → authCallback-8Nihi8rv.js} +1 -1
- solace_agent_mesh/client/webui/frontend/static/assets/{client-ZKk9kEJ5.js → client-DYtZN8p-.js} +1 -1
- solace_agent_mesh/client/webui/frontend/static/assets/main-BYGUHQMk.js +435 -0
- solace_agent_mesh/client/webui/frontend/static/assets/main-D2CSH1bp.css +1 -0
- solace_agent_mesh/client/webui/frontend/static/assets/{vendor-BNV4kZN0.js → vendor-XBWAmrun.js} +106 -101
- 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/ui-version.json +1 -1
- solace_agent_mesh/common/a2a/types.py +1 -1
- solace_agent_mesh/common/agent_registry.py +38 -11
- solace_agent_mesh/common/data_parts.py +28 -0
- solace_agent_mesh/common/error_handlers.py +83 -0
- solace_agent_mesh/common/sam_events/event_service.py +2 -2
- solace_agent_mesh/config_portal/backend/common.py +2 -0
- solace_agent_mesh/config_portal/frontend/static/client/assets/_index-ZV-jX48T.js +103 -0
- solace_agent_mesh/config_portal/frontend/static/client/assets/{manifest-ba77705e.js → manifest-ce5bc5da.js} +1 -1
- solace_agent_mesh/config_portal/frontend/static/client/index.html +1 -1
- solace_agent_mesh/core_a2a/service.py +3 -2
- solace_agent_mesh/gateway/adapter/base.py +28 -1
- solace_agent_mesh/gateway/adapter/types.py +9 -0
- solace_agent_mesh/gateway/base/auth_interface.py +103 -0
- solace_agent_mesh/gateway/base/component.py +68 -1
- solace_agent_mesh/gateway/generic/component.py +195 -30
- solace_agent_mesh/gateway/http_sse/app.py +23 -6
- solace_agent_mesh/gateway/http_sse/component.py +9 -61
- solace_agent_mesh/gateway/http_sse/dependencies.py +9 -51
- solace_agent_mesh/gateway/http_sse/main.py +28 -418
- solace_agent_mesh/gateway/http_sse/repository/chat_task_repository.py +2 -2
- solace_agent_mesh/gateway/http_sse/repository/entities/project.py +1 -1
- solace_agent_mesh/gateway/http_sse/repository/entities/project_user.py +1 -1
- solace_agent_mesh/gateway/http_sse/repository/entities/session.py +2 -2
- solace_agent_mesh/gateway/http_sse/repository/feedback_repository.py +2 -2
- solace_agent_mesh/gateway/http_sse/repository/interfaces.py +2 -2
- solace_agent_mesh/gateway/http_sse/repository/models/prompt_model.py +1 -1
- solace_agent_mesh/gateway/http_sse/repository/models/session_model.py +1 -1
- solace_agent_mesh/gateway/http_sse/repository/project_repository.py +1 -1
- solace_agent_mesh/gateway/http_sse/repository/project_user_repository.py +1 -1
- solace_agent_mesh/gateway/http_sse/repository/session_repository.py +4 -4
- solace_agent_mesh/gateway/http_sse/repository/task_repository.py +2 -2
- solace_agent_mesh/gateway/http_sse/routers/artifacts.py +16 -15
- solace_agent_mesh/gateway/http_sse/routers/auth.py +61 -132
- solace_agent_mesh/gateway/http_sse/routers/config.py +12 -8
- solace_agent_mesh/gateway/http_sse/routers/dto/requests/session_requests.py +1 -1
- solace_agent_mesh/gateway/http_sse/routers/dto/responses/base_responses.py +1 -1
- solace_agent_mesh/gateway/http_sse/routers/dto/responses/session_responses.py +2 -2
- solace_agent_mesh/gateway/http_sse/routers/feedback.py +2 -2
- solace_agent_mesh/gateway/http_sse/routers/people.py +2 -2
- solace_agent_mesh/gateway/http_sse/routers/projects.py +2 -1
- solace_agent_mesh/gateway/http_sse/routers/prompts.py +2 -1
- solace_agent_mesh/gateway/http_sse/routers/sessions.py +3 -3
- solace_agent_mesh/gateway/http_sse/routers/speech.py +1 -1
- solace_agent_mesh/gateway/http_sse/routers/tasks.py +3 -2
- solace_agent_mesh/gateway/http_sse/routers/users.py +1 -1
- solace_agent_mesh/gateway/http_sse/routers/visualization.py +2 -1
- solace_agent_mesh/gateway/http_sse/services/background_task_monitor.py +1 -1
- 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/session_service.py +4 -4
- solace_agent_mesh/gateway/http_sse/services/task_logger_service.py +1 -1
- solace_agent_mesh/services/platform/__init__.py +23 -12
- solace_agent_mesh/services/platform/api/dependencies.py +23 -16
- solace_agent_mesh/services/platform/api/main.py +118 -43
- solace_agent_mesh/services/platform/api/routers/__init__.py +12 -3
- solace_agent_mesh/services/platform/api/routers/health_router.py +31 -0
- solace_agent_mesh/services/platform/app.py +101 -7
- solace_agent_mesh/services/platform/component.py +552 -33
- 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 +291 -0
- solace_agent_mesh/shared/database/__init__.py +20 -0
- solace_agent_mesh/{gateway/http_sse/shared → shared/database}/base_repository.py +1 -1
- solace_agent_mesh/{gateway/http_sse/shared → shared/database}/database_exceptions.py +1 -1
- solace_agent_mesh/{gateway/http_sse/shared → shared/database}/database_helpers.py +1 -1
- solace_agent_mesh/shared/exceptions/__init__.py +36 -0
- solace_agent_mesh/{gateway/http_sse/shared → shared/exceptions}/exception_handlers.py +1 -1
- solace_agent_mesh/shared/utils/__init__.py +21 -0
- solace_agent_mesh/templates/platform.yaml +49 -0
- solace_agent_mesh/templates/webui.yaml +12 -3
- {solace_agent_mesh-1.11.2.dist-info → solace_agent_mesh-1.12.0.dist-info}/METADATA +2 -1
- {solace_agent_mesh-1.11.2.dist-info → solace_agent_mesh-1.12.0.dist-info}/RECORD +214 -258
- solace_agent_mesh/agent/adk/adk_llm.txt +0 -226
- solace_agent_mesh/agent/adk/adk_llm_detail.txt +0 -566
- solace_agent_mesh/agent/adk/artifacts/artifacts_llm.txt +0 -171
- solace_agent_mesh/agent/adk/models/models_llm.txt +0 -189
- solace_agent_mesh/agent/agent_llm.txt +0 -369
- solace_agent_mesh/agent/agent_llm_detail.txt +0 -1702
- solace_agent_mesh/agent/protocol/protocol_llm.txt +0 -81
- solace_agent_mesh/agent/protocol/protocol_llm_detail.txt +0 -92
- solace_agent_mesh/agent/proxies/a2a/a2a_llm.txt +0 -190
- solace_agent_mesh/agent/proxies/base/base_llm.txt +0 -148
- solace_agent_mesh/agent/proxies/proxies_llm.txt +0 -283
- solace_agent_mesh/agent/sac/sac_llm.txt +0 -189
- solace_agent_mesh/agent/sac/sac_llm_detail.txt +0 -200
- solace_agent_mesh/agent/testing/testing_llm.txt +0 -58
- solace_agent_mesh/agent/testing/testing_llm_detail.txt +0 -68
- solace_agent_mesh/agent/tools/tools_llm.txt +0 -276
- solace_agent_mesh/agent/tools/tools_llm_detail.txt +0 -275
- solace_agent_mesh/agent/utils/utils_llm.txt +0 -152
- solace_agent_mesh/agent/utils/utils_llm_detail.txt +0 -149
- solace_agent_mesh/assets/docs/assets/js/15ba94aa.92fea363.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/240a0364.9ad94d1b.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/3ff0015d.2ddc75c0.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/547e15cc.2f7790c1.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/5c2bd65f.90a87880.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/64195356.c498c4d0.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/66d4869e.b77431fc.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/8024126c.fa0e7186.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/81a99df0.2484b8d9.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/9bb13469.b2333011.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/ab9708a8.245ae0ef.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/db5d6442.3daf1696.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/e04b235d.52cb25ed.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/e1b6eeb4.b1068f9b.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/e6f9706b.4488e34c.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/e92d0134.3bda61dd.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/f284c35a.250993bf.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/main.7acf7ace.js +0 -2
- solace_agent_mesh/assets/docs/assets/js/runtime~main.9e0813a2.js +0 -1
- solace_agent_mesh/assets/docs/lunr-index-1765810064709.json +0 -1
- solace_agent_mesh/assets/docs/search-doc-1765810064709.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/main-BcUaNZ-Q.css +0 -1
- solace_agent_mesh/client/webui/frontend/static/assets/main-vjch4RYc.js +0 -435
- solace_agent_mesh/common/a2a/a2a_llm.txt +0 -175
- solace_agent_mesh/common/a2a/a2a_llm_detail.txt +0 -193
- solace_agent_mesh/common/a2a_spec/a2a_spec_llm.txt +0 -445
- solace_agent_mesh/common/a2a_spec/a2a_spec_llm_detail.txt +0 -736
- solace_agent_mesh/common/a2a_spec/schemas/schemas_llm.txt +0 -330
- solace_agent_mesh/common/common_llm.txt +0 -230
- solace_agent_mesh/common/common_llm_detail.txt +0 -2562
- solace_agent_mesh/common/middleware/middleware_llm.txt +0 -174
- solace_agent_mesh/common/middleware/middleware_llm_detail.txt +0 -185
- solace_agent_mesh/common/sac/sac_llm.txt +0 -71
- solace_agent_mesh/common/sac/sac_llm_detail.txt +0 -82
- solace_agent_mesh/common/sam_events/sam_events_llm.txt +0 -104
- solace_agent_mesh/common/sam_events/sam_events_llm_detail.txt +0 -115
- solace_agent_mesh/common/services/providers/providers_llm.txt +0 -81
- solace_agent_mesh/common/services/services_llm.txt +0 -368
- solace_agent_mesh/common/services/services_llm_detail.txt +0 -459
- solace_agent_mesh/common/utils/embeds/embeds_llm.txt +0 -220
- solace_agent_mesh/common/utils/utils_llm.txt +0 -335
- solace_agent_mesh/common/utils/utils_llm_detail.txt +0 -572
- solace_agent_mesh/config_portal/frontend/static/client/assets/_index-DiOiAjzL.js +0 -103
- solace_agent_mesh/core_a2a/core_a2a_llm.txt +0 -90
- solace_agent_mesh/core_a2a/core_a2a_llm_detail.txt +0 -101
- solace_agent_mesh/gateway/base/base_llm.txt +0 -226
- solace_agent_mesh/gateway/base/base_llm_detail.txt +0 -235
- solace_agent_mesh/gateway/gateway_llm.txt +0 -369
- solace_agent_mesh/gateway/gateway_llm_detail.txt +0 -3885
- solace_agent_mesh/gateway/http_sse/alembic/alembic_llm.txt +0 -345
- solace_agent_mesh/gateway/http_sse/alembic/versions/versions_llm.txt +0 -161
- solace_agent_mesh/gateway/http_sse/components/components_llm.txt +0 -105
- solace_agent_mesh/gateway/http_sse/http_sse_llm.txt +0 -299
- solace_agent_mesh/gateway/http_sse/http_sse_llm_detail.txt +0 -3278
- solace_agent_mesh/gateway/http_sse/repository/entities/entities_llm.txt +0 -221
- solace_agent_mesh/gateway/http_sse/repository/models/models_llm.txt +0 -257
- solace_agent_mesh/gateway/http_sse/repository/repository_llm.txt +0 -308
- solace_agent_mesh/gateway/http_sse/routers/dto/dto_llm.txt +0 -450
- solace_agent_mesh/gateway/http_sse/routers/dto/requests/requests_llm.txt +0 -133
- solace_agent_mesh/gateway/http_sse/routers/dto/responses/responses_llm.txt +0 -123
- solace_agent_mesh/gateway/http_sse/routers/routers_llm.txt +0 -312
- solace_agent_mesh/gateway/http_sse/services/services_llm.txt +0 -303
- solace_agent_mesh/gateway/http_sse/shared/__init__.py +0 -146
- solace_agent_mesh/gateway/http_sse/shared/shared_llm.txt +0 -319
- solace_agent_mesh/gateway/http_sse/utils/utils_llm.txt +0 -47
- solace_agent_mesh/llm.txt +0 -228
- solace_agent_mesh/llm_detail.txt +0 -2835
- solace_agent_mesh/solace_agent_mesh_llm.txt +0 -362
- solace_agent_mesh/solace_agent_mesh_llm_detail.txt +0 -8599
- solace_agent_mesh/templates/templates_llm.txt +0 -147
- /solace_agent_mesh/assets/docs/assets/js/{main.7acf7ace.js.LICENSE.txt → main.b241af3e.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.11.2.dist-info → solace_agent_mesh-1.12.0.dist-info}/WHEEL +0 -0
- {solace_agent_mesh-1.11.2.dist-info → solace_agent_mesh-1.12.0.dist-info}/entry_points.txt +0 -0
- {solace_agent_mesh-1.11.2.dist-info → solace_agent_mesh-1.12.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,450 +0,0 @@
|
|
|
1
|
-
# DEVELOPER GUIDE: dto
|
|
2
|
-
|
|
3
|
-
## Quick Summary
|
|
4
|
-
The `dto` directory contains Data Transfer Objects (DTOs) for API contract definition and validation in the HTTP SSE gateway. It's organized into two main subdirectories: `requests` for incoming API request validation using Pydantic models, and `responses` for structured API response formatting with automatic timestamp conversion. The DTOs primarily focus on session management and task operations, providing type-safe interfaces for API endpoints with field aliasing and validation.
|
|
5
|
-
|
|
6
|
-
## Files and Subdirectories Overview
|
|
7
|
-
- **Direct files:**
|
|
8
|
-
- `__init__.py` - Main module exports for requests and responses submodules
|
|
9
|
-
- **Subdirectories:**
|
|
10
|
-
- `requests/` - Request DTOs for API endpoint validation (session and task CRUD operations)
|
|
11
|
-
- `responses/` - Response DTOs with automatic timestamp serialization and field aliasing
|
|
12
|
-
|
|
13
|
-
## Developer API Reference
|
|
14
|
-
|
|
15
|
-
### Direct Files
|
|
16
|
-
|
|
17
|
-
#### __init__.py
|
|
18
|
-
**Purpose:** Main entry point that exports the requests and responses submodules
|
|
19
|
-
**Import:** `from solace_agent_mesh.gateway.http_sse.routers.dto import requests, responses`
|
|
20
|
-
|
|
21
|
-
**Exports:**
|
|
22
|
-
- `requests` - Module containing all request DTOs
|
|
23
|
-
- `responses` - Module containing all response DTOs
|
|
24
|
-
|
|
25
|
-
### Subdirectory APIs
|
|
26
|
-
|
|
27
|
-
#### requests/
|
|
28
|
-
**Purpose:** Provides Pydantic models for validating incoming API requests for session management and task operations
|
|
29
|
-
**Key Exports:** GetSessionRequest, UpdateSessionRequest, SaveTaskRequest
|
|
30
|
-
**Import Examples:**
|
|
31
|
-
```python
|
|
32
|
-
from solace_agent_mesh.gateway.http_sse.routers.dto.requests import (
|
|
33
|
-
GetSessionRequest,
|
|
34
|
-
UpdateSessionRequest,
|
|
35
|
-
SaveTaskRequest
|
|
36
|
-
)
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
#### responses/
|
|
40
|
-
**Purpose:** Provides structured response DTOs with automatic timestamp conversion and field aliasing for API consistency
|
|
41
|
-
**Key Exports:** SessionResponse, SessionListResponse, TaskResponse, TaskListResponse, BaseTimestampResponse
|
|
42
|
-
**Import Examples:**
|
|
43
|
-
```python
|
|
44
|
-
from solace_agent_mesh.gateway.http_sse.routers.dto.responses import (
|
|
45
|
-
SessionResponse,
|
|
46
|
-
SessionListResponse,
|
|
47
|
-
TaskResponse,
|
|
48
|
-
TaskListResponse
|
|
49
|
-
)
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
## Complete Usage Guide
|
|
53
|
-
|
|
54
|
-
### 1. Basic Imports and Setup
|
|
55
|
-
|
|
56
|
-
```python
|
|
57
|
-
# Import the main dto modules
|
|
58
|
-
from solace_agent_mesh.gateway.http_sse.routers.dto import requests, responses
|
|
59
|
-
|
|
60
|
-
# Or import specific DTOs directly
|
|
61
|
-
from solace_agent_mesh.gateway.http_sse.routers.dto.requests import (
|
|
62
|
-
GetSessionRequest,
|
|
63
|
-
UpdateSessionRequest,
|
|
64
|
-
SaveTaskRequest
|
|
65
|
-
)
|
|
66
|
-
from solace_agent_mesh.gateway.http_sse.routers.dto.responses import (
|
|
67
|
-
SessionResponse,
|
|
68
|
-
SessionListResponse,
|
|
69
|
-
TaskResponse,
|
|
70
|
-
TaskListResponse
|
|
71
|
-
)
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
### 2. Working with Session Request DTOs
|
|
75
|
-
|
|
76
|
-
```python
|
|
77
|
-
from solace_agent_mesh.gateway.http_sse.routers.dto.requests import (
|
|
78
|
-
GetSessionRequest,
|
|
79
|
-
UpdateSessionRequest
|
|
80
|
-
)
|
|
81
|
-
from pydantic import ValidationError
|
|
82
|
-
|
|
83
|
-
# Create a request to get a specific session
|
|
84
|
-
def get_session(session_id: str, user_id: str):
|
|
85
|
-
try:
|
|
86
|
-
request = GetSessionRequest(
|
|
87
|
-
session_id=session_id,
|
|
88
|
-
user_id=user_id
|
|
89
|
-
)
|
|
90
|
-
return request
|
|
91
|
-
except ValidationError as e:
|
|
92
|
-
print(f"Invalid request parameters: {e}")
|
|
93
|
-
return None
|
|
94
|
-
|
|
95
|
-
# Create a request to update session name
|
|
96
|
-
def update_session_name(session_id: str, user_id: str, new_name: str):
|
|
97
|
-
try:
|
|
98
|
-
request = UpdateSessionRequest(
|
|
99
|
-
session_id=session_id,
|
|
100
|
-
user_id=user_id,
|
|
101
|
-
name=new_name # Automatically validated (1-255 characters)
|
|
102
|
-
)
|
|
103
|
-
return request
|
|
104
|
-
except ValidationError as e:
|
|
105
|
-
print(f"Validation failed: {e}")
|
|
106
|
-
return None
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
### 3. Working with Task Request DTOs
|
|
110
|
-
|
|
111
|
-
```python
|
|
112
|
-
from solace_agent_mesh.gateway.http_sse.routers.dto.requests import SaveTaskRequest
|
|
113
|
-
from pydantic import ValidationError
|
|
114
|
-
import json
|
|
115
|
-
|
|
116
|
-
# Create a save task request with camelCase field names (API style)
|
|
117
|
-
def save_task_with_validation(task_id: str, message_bubbles: list, user_message: str = None, metadata: dict = None):
|
|
118
|
-
try:
|
|
119
|
-
# Convert data to JSON strings as required
|
|
120
|
-
bubbles_json = json.dumps(message_bubbles)
|
|
121
|
-
metadata_json = json.dumps(metadata) if metadata else None
|
|
122
|
-
|
|
123
|
-
request = SaveTaskRequest(
|
|
124
|
-
task_id=task_id,
|
|
125
|
-
user_message=user_message,
|
|
126
|
-
message_bubbles=bubbles_json,
|
|
127
|
-
task_metadata=metadata_json
|
|
128
|
-
)
|
|
129
|
-
return request
|
|
130
|
-
except ValidationError as e:
|
|
131
|
-
print(f"Task validation failed: {e}")
|
|
132
|
-
return None
|
|
133
|
-
|
|
134
|
-
# Example usage
|
|
135
|
-
task_request = save_task_with_validation(
|
|
136
|
-
task_id="task_123",
|
|
137
|
-
message_bubbles=[
|
|
138
|
-
{"type": "user", "content": "Hello"},
|
|
139
|
-
{"type": "assistant", "content": "Hi there!"}
|
|
140
|
-
],
|
|
141
|
-
user_message="Please analyze this data",
|
|
142
|
-
metadata={"priority": "high", "category": "analysis"}
|
|
143
|
-
)
|
|
144
|
-
```
|
|
145
|
-
|
|
146
|
-
### 4. Working with Session Response DTOs
|
|
147
|
-
|
|
148
|
-
```python
|
|
149
|
-
from solace_agent_mesh.gateway.http_sse.routers.dto.responses import (
|
|
150
|
-
SessionResponse,
|
|
151
|
-
SessionListResponse
|
|
152
|
-
)
|
|
153
|
-
import time
|
|
154
|
-
|
|
155
|
-
# Create session responses
|
|
156
|
-
def create_session_response(session_data: dict) -> SessionResponse:
|
|
157
|
-
return SessionResponse(
|
|
158
|
-
id=session_data["id"],
|
|
159
|
-
user_id=session_data["user_id"],
|
|
160
|
-
name=session_data.get("name"),
|
|
161
|
-
agent_id=session_data.get("agent_id"),
|
|
162
|
-
created_time=int(time.time() * 1000), # Current time in epoch ms
|
|
163
|
-
updated_time=session_data.get("updated_time")
|
|
164
|
-
)
|
|
165
|
-
|
|
166
|
-
# Create paginated session list responses
|
|
167
|
-
def create_session_list_response(sessions: list, total: int) -> SessionListResponse:
|
|
168
|
-
session_responses = [create_session_response(session) for session in sessions]
|
|
169
|
-
return SessionListResponse(
|
|
170
|
-
sessions=session_responses,
|
|
171
|
-
pagination={"page": 1, "size": len(sessions), "total_pages": 1},
|
|
172
|
-
total_count=total
|
|
173
|
-
)
|
|
174
|
-
```
|
|
175
|
-
|
|
176
|
-
### 5. Working with Task Response DTOs
|
|
177
|
-
|
|
178
|
-
```python
|
|
179
|
-
from solace_agent_mesh.gateway.http_sse.routers.dto.responses import (
|
|
180
|
-
TaskResponse,
|
|
181
|
-
TaskListResponse
|
|
182
|
-
)
|
|
183
|
-
import json
|
|
184
|
-
import time
|
|
185
|
-
|
|
186
|
-
# Create task responses
|
|
187
|
-
def create_task_response(task_data: dict) -> TaskResponse:
|
|
188
|
-
return TaskResponse(
|
|
189
|
-
task_id=task_data["task_id"],
|
|
190
|
-
session_id=task_data["session_id"],
|
|
191
|
-
user_message=task_data.get("user_message"),
|
|
192
|
-
message_bubbles=json.dumps(task_data["message_bubbles"]),
|
|
193
|
-
task_metadata=json.dumps(task_data["metadata"]) if task_data.get("metadata") else None,
|
|
194
|
-
created_time=int(time.time() * 1000),
|
|
195
|
-
updated_time=task_data.get("updated_time")
|
|
196
|
-
)
|
|
197
|
-
|
|
198
|
-
# Create task list responses
|
|
199
|
-
def create_task_list_response(tasks: list) -> TaskListResponse:
|
|
200
|
-
task_responses = [create_task_response(task) for task in tasks]
|
|
201
|
-
return TaskListResponse(tasks=task_responses)
|
|
202
|
-
```
|
|
203
|
-
|
|
204
|
-
### 6. Complete API Endpoint Examples
|
|
205
|
-
|
|
206
|
-
```python
|
|
207
|
-
from fastapi import APIRouter, HTTPException
|
|
208
|
-
from solace_agent_mesh.gateway.http_sse.routers.dto.requests import (
|
|
209
|
-
GetSessionRequest,
|
|
210
|
-
UpdateSessionRequest,
|
|
211
|
-
SaveTaskRequest
|
|
212
|
-
)
|
|
213
|
-
from solace_agent_mesh.gateway.http_sse.routers.dto.responses import (
|
|
214
|
-
SessionResponse,
|
|
215
|
-
SessionListResponse,
|
|
216
|
-
TaskResponse
|
|
217
|
-
)
|
|
218
|
-
|
|
219
|
-
router = APIRouter()
|
|
220
|
-
|
|
221
|
-
@router.get("/sessions/{session_id}")
|
|
222
|
-
async def get_session(session_id: str, user_id: str) -> SessionResponse:
|
|
223
|
-
"""Get a specific session"""
|
|
224
|
-
|
|
225
|
-
# Create and validate request DTO
|
|
226
|
-
request = GetSessionRequest(
|
|
227
|
-
session_id=session_id,
|
|
228
|
-
user_id=user_id
|
|
229
|
-
)
|
|
230
|
-
|
|
231
|
-
# Fetch data (mock implementation)
|
|
232
|
-
session_data = fetch_session(request)
|
|
233
|
-
|
|
234
|
-
# Return structured response with automatic timestamp conversion
|
|
235
|
-
return SessionResponse(
|
|
236
|
-
id=session_data["id"],
|
|
237
|
-
user_id=session_data["user_id"],
|
|
238
|
-
name=session_data["name"],
|
|
239
|
-
created_time=session_data["created_time"]
|
|
240
|
-
)
|
|
241
|
-
|
|
242
|
-
@router.put("/sessions/{session_id}")
|
|
243
|
-
async def update_session(
|
|
244
|
-
session_id: str,
|
|
245
|
-
user_id: str,
|
|
246
|
-
name: str
|
|
247
|
-
) -> SessionResponse:
|
|
248
|
-
"""Update session name"""
|
|
249
|
-
|
|
250
|
-
# Validate request using DTO
|
|
251
|
-
try:
|
|
252
|
-
request = UpdateSessionRequest(
|
|
253
|
-
session_id=session_id,
|
|
254
|
-
user_id=user_id,
|
|
255
|
-
name=name
|
|
256
|
-
)
|
|
257
|
-
except ValidationError as e:
|
|
258
|
-
raise HTTPException(status_code=400, detail=str(e))
|
|
259
|
-
|
|
260
|
-
# Update session (mock implementation)
|
|
261
|
-
updated_session = update_session_in_db(request)
|
|
262
|
-
|
|
263
|
-
# Return response DTO with automatic field aliasing
|
|
264
|
-
return SessionResponse(
|
|
265
|
-
id=updated_session["id"],
|
|
266
|
-
user_id=updated_session["user_id"],
|
|
267
|
-
name=updated_session["name"],
|
|
268
|
-
created_time=updated_session["created_time"],
|
|
269
|
-
updated_time=updated_session["updated_time"]
|
|
270
|
-
)
|
|
271
|
-
|
|
272
|
-
@router.post("/tasks")
|
|
273
|
-
async def save_task(
|
|
274
|
-
task_id: str,
|
|
275
|
-
message_bubbles: str,
|
|
276
|
-
user_message: str = None,
|
|
277
|
-
task_metadata: str = None
|
|
278
|
-
) -> TaskResponse:
|
|
279
|
-
"""Save a new task"""
|
|
280
|
-
|
|
281
|
-
# Validate request using DTO
|
|
282
|
-
try:
|
|
283
|
-
request = SaveTaskRequest(
|
|
284
|
-
task_id=task_id,
|
|
285
|
-
user_message=user_message,
|
|
286
|
-
message_bubbles=message_bubbles,
|
|
287
|
-
task_metadata=task_metadata
|
|
288
|
-
)
|
|
289
|
-
except ValidationError as e:
|
|
290
|
-
raise HTTPException(status_code=400, detail=str(e))
|
|
291
|
-
|
|
292
|
-
# Save task (mock implementation)
|
|
293
|
-
saved_task = save_task_to_db(request)
|
|
294
|
-
|
|
295
|
-
# Return response DTO
|
|
296
|
-
return TaskResponse(
|
|
297
|
-
task_id=saved_task["task_id"],
|
|
298
|
-
session_id=saved_task["session_id"],
|
|
299
|
-
user_message=saved_task["user_message"],
|
|
300
|
-
message_bubbles=saved_task["message_bubbles"],
|
|
301
|
-
task_metadata=saved_task["task_metadata"],
|
|
302
|
-
created_time=saved_task["created_time"]
|
|
303
|
-
)
|
|
304
|
-
```
|
|
305
|
-
|
|
306
|
-
### 7. JSON Serialization with Automatic Timestamp Conversion
|
|
307
|
-
|
|
308
|
-
```python
|
|
309
|
-
from solace_agent_mesh.gateway.http_sse.routers.dto.responses import SessionResponse, TaskResponse
|
|
310
|
-
import json
|
|
311
|
-
|
|
312
|
-
# Create a session response
|
|
313
|
-
session = SessionResponse(
|
|
314
|
-
id="sess_123",
|
|
315
|
-
user_id="user_456",
|
|
316
|
-
name="My Session",
|
|
317
|
-
created_time=1640995200000, # Epoch milliseconds
|
|
318
|
-
updated_time=1640995260000
|
|
319
|
-
)
|
|
320
|
-
|
|
321
|
-
# Automatic conversion to ISO strings in JSON output
|
|
322
|
-
json_output = session.model_dump_json()
|
|
323
|
-
print(json_output)
|
|
324
|
-
# Output: {
|
|
325
|
-
# "id": "sess_123",
|
|
326
|
-
# "userId": "user_456", # Note the camelCase aliasing
|
|
327
|
-
# "name": "My Session",
|
|
328
|
-
# "createdTime": "2022-01-01T00:00:00Z", # Converted to ISO string
|
|
329
|
-
# "updatedTime": "2022-01-01T00:01:00Z"
|
|
330
|
-
# }
|
|
331
|
-
|
|
332
|
-
# Create a task response with field aliasing
|
|
333
|
-
task = TaskResponse(
|
|
334
|
-
task_id="task_789",
|
|
335
|
-
session_id="sess_123",
|
|
336
|
-
user_message="Process this data",
|
|
337
|
-
message_bubbles='[{"type": "text", "content": "Processing..."}]',
|
|
338
|
-
task_metadata='{"priority": "high"}',
|
|
339
|
-
created_time=1640995200000
|
|
340
|
-
)
|
|
341
|
-
|
|
342
|
-
# Get dict with converted timestamps and aliased fields
|
|
343
|
-
dict_output = task.model_dump()
|
|
344
|
-
print(dict_output["taskId"]) # "task_789" (camelCase alias)
|
|
345
|
-
print(dict_output["sessionId"]) # "sess_123" (camelCase alias)
|
|
346
|
-
print(dict_output["createdTime"]) # "2022-01-01T00:00:00Z" (converted timestamp)
|
|
347
|
-
```
|
|
348
|
-
|
|
349
|
-
### 8. Custom Response Classes Using Base
|
|
350
|
-
|
|
351
|
-
```python
|
|
352
|
-
from solace_agent_mesh.gateway.http_sse.routers.dto.responses.base_responses import BaseTimestampResponse
|
|
353
|
-
|
|
354
|
-
class CustomResponse(BaseTimestampResponse):
|
|
355
|
-
"""Custom response with automatic timestamp handling"""
|
|
356
|
-
name: str
|
|
357
|
-
status: str
|
|
358
|
-
created_time: int
|
|
359
|
-
last_accessed: int | None = None
|
|
360
|
-
|
|
361
|
-
class Config:
|
|
362
|
-
# Add field aliases if needed
|
|
363
|
-
alias_generator = lambda field_name: ''.join(
|
|
364
|
-
word.capitalize() if i > 0 else word
|
|
365
|
-
for i, word in enumerate(field_name.split('_'))
|
|
366
|
-
)
|
|
367
|
-
|
|
368
|
-
# Usage
|
|
369
|
-
custom_response = CustomResponse(
|
|
370
|
-
name="Test Item",
|
|
371
|
-
status="active",
|
|
372
|
-
created_time=1640995200000,
|
|
373
|
-
last_accessed=1640995300000
|
|
374
|
-
)
|
|
375
|
-
|
|
376
|
-
# Automatic timestamp conversion in JSON
|
|
377
|
-
json_data = custom_response.model_dump_json()
|
|
378
|
-
# Fields like created_time become ISO strings automatically
|
|
379
|
-
```
|
|
380
|
-
|
|
381
|
-
### 9. Working with Both Requests and Responses Together
|
|
382
|
-
|
|
383
|
-
```python
|
|
384
|
-
from solace_agent_mesh.gateway.http_sse.routers.dto.requests import UpdateSessionRequest, SaveTaskRequest
|
|
385
|
-
from solace_agent_mesh.gateway.http_sse.routers.dto.responses import SessionResponse, TaskResponse
|
|
386
|
-
from pydantic import ValidationError
|
|
387
|
-
import json
|
|
388
|
-
|
|
389
|
-
async def complete_session_workflow():
|
|
390
|
-
"""Example showing complete request/response workflow"""
|
|
391
|
-
|
|
392
|
-
# 1. Validate incoming request data
|
|
393
|
-
try:
|
|
394
|
-
update_request = UpdateSessionRequest(
|
|
395
|
-
session_id="sess_123",
|
|
396
|
-
user_id="user_456",
|
|
397
|
-
name="Updated Session Name"
|
|
398
|
-
)
|
|
399
|
-
except ValidationError as e:
|
|
400
|
-
return {"error": f"Invalid session update request: {e}"}
|
|
401
|
-
|
|
402
|
-
# 2. Process the request (mock database operation)
|
|
403
|
-
updated_session_data = {
|
|
404
|
-
"id": update_request.session_id,
|
|
405
|
-
"user_id": update_request.user_id,
|
|
406
|
-
"name": update_request.name,
|
|
407
|
-
"created_time": 1640995200000,
|
|
408
|
-
"updated_time": 1640995260000
|
|
409
|
-
}
|
|
410
|
-
|
|
411
|
-
# 3. Create structured response
|
|
412
|
-
session_response = SessionResponse(**updated_session_data)
|
|
413
|
-
|
|
414
|
-
# 4. Save a related task
|
|
415
|
-
try:
|
|
416
|
-
task_request = SaveTaskRequest(
|
|
417
|
-
task_id="task_456",
|
|
418
|
-
user_message="Session updated successfully",
|
|
419
|
-
message_bubbles=json.dumps([
|
|
420
|
-
{"type": "system", "content": "Session name updated"}
|
|
421
|
-
]),
|
|
422
|
-
task_metadata=json.dumps({"action": "session_update"})
|
|
423
|
-
)
|
|
424
|
-
except ValidationError as e:
|
|
425
|
-
return {"error": f"Invalid task request: {e}"}
|
|
426
|
-
|
|
427
|
-
# 5. Create task response
|
|
428
|
-
task_response = TaskResponse(
|
|
429
|
-
task_id=task_request.task_id,
|
|
430
|
-
session_id=update_request.session_id,
|
|
431
|
-
user_message=task_request.user_message,
|
|
432
|
-
message_bubbles=task_request.message_bubbles,
|
|
433
|
-
task_metadata=task_request.task_metadata,
|
|
434
|
-
created_time=1640995300000
|
|
435
|
-
)
|
|
436
|
-
|
|
437
|
-
# 6. Return both responses with automatic field aliasing and timestamp conversion
|
|
438
|
-
return {
|
|
439
|
-
"session": session_response.model_dump(),
|
|
440
|
-
"task": task_response.model_dump()
|
|
441
|
-
}
|
|
442
|
-
|
|
443
|
-
# Usage
|
|
444
|
-
result = await complete_session_workflow()
|
|
445
|
-
print(json.dumps(result, indent=2))
|
|
446
|
-
```
|
|
447
|
-
|
|
448
|
-
This comprehensive guide shows how the `dto` directory provides a complete type-safe API contract system with automatic validation for requests and structured responses with timestamp conversion and field aliasing for both session management and task operations in the HTTP SSE gateway.
|
|
449
|
-
|
|
450
|
-
# content_hash: 4a446edeace8a993477cc29e6c5676bbeb9fc98ae411e799017a21b610e486be
|
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
# DEVELOPER GUIDE: requests
|
|
2
|
-
|
|
3
|
-
## Quick Summary
|
|
4
|
-
This directory contains request Data Transfer Objects (DTOs) for API endpoints, providing Pydantic models for session management and task operations. These DTOs handle request validation, field transformation, and type safety for incoming API requests.
|
|
5
|
-
|
|
6
|
-
## Files Overview
|
|
7
|
-
- `__init__.py` - Exports all request DTOs for centralized importing
|
|
8
|
-
- `session_requests.py` - Defines request DTOs for session operations (get, update)
|
|
9
|
-
- `task_requests.py` - Defines request DTOs for task operations (save)
|
|
10
|
-
|
|
11
|
-
## Developer API Reference
|
|
12
|
-
|
|
13
|
-
### __init__.py
|
|
14
|
-
**Purpose:** Provides centralized imports for all request DTOs
|
|
15
|
-
**Import:** `from solace_agent_mesh.gateway.http_sse.routers.dto.requests import GetSessionRequest, UpdateSessionRequest, SaveTaskRequest`
|
|
16
|
-
|
|
17
|
-
**Usage Examples:**
|
|
18
|
-
```python
|
|
19
|
-
# Import all request DTOs
|
|
20
|
-
from solace_agent_mesh.gateway.http_sse.routers.dto.requests import (
|
|
21
|
-
GetSessionRequest,
|
|
22
|
-
UpdateSessionRequest,
|
|
23
|
-
SaveTaskRequest
|
|
24
|
-
)
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
### session_requests.py
|
|
28
|
-
**Purpose:** Defines Pydantic models for session-related API request validation
|
|
29
|
-
**Import:** `from solace_agent_mesh.gateway.http_sse.routers.dto.requests.session_requests import GetSessionRequest, UpdateSessionRequest`
|
|
30
|
-
|
|
31
|
-
**Classes:**
|
|
32
|
-
- `GetSessionRequest(session_id: SessionId, user_id: UserId)` - Request DTO for retrieving a specific session by ID
|
|
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
|
-
UpdateSessionRequest
|
|
40
|
-
)
|
|
41
|
-
from pydantic import ValidationError
|
|
42
|
-
|
|
43
|
-
# Create a request to get a specific session
|
|
44
|
-
get_session_req = GetSessionRequest(
|
|
45
|
-
session_id="session456",
|
|
46
|
-
user_id="user123"
|
|
47
|
-
)
|
|
48
|
-
|
|
49
|
-
# Create a request to update a session name
|
|
50
|
-
update_req = UpdateSessionRequest(
|
|
51
|
-
session_id="session456",
|
|
52
|
-
user_id="user123",
|
|
53
|
-
name="My Updated Session"
|
|
54
|
-
)
|
|
55
|
-
|
|
56
|
-
# Validate request data from dictionary
|
|
57
|
-
request_data = {
|
|
58
|
-
"session_id": "session789",
|
|
59
|
-
"user_id": "user456",
|
|
60
|
-
"name": "New Session Name"
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
try:
|
|
64
|
-
validated_request = UpdateSessionRequest(**request_data)
|
|
65
|
-
print(f"Valid request: {validated_request}")
|
|
66
|
-
except ValidationError as e:
|
|
67
|
-
print(f"Validation failed: {e}")
|
|
68
|
-
|
|
69
|
-
# Access validated fields
|
|
70
|
-
print(f"Session ID: {update_req.session_id}")
|
|
71
|
-
print(f"User ID: {update_req.user_id}")
|
|
72
|
-
print(f"New name: {update_req.name}")
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
### task_requests.py
|
|
76
|
-
**Purpose:** Defines Pydantic models for task-related API request validation with JSON field handling
|
|
77
|
-
**Import:** `from solace_agent_mesh.gateway.http_sse.routers.dto.requests.task_requests import SaveTaskRequest`
|
|
78
|
-
|
|
79
|
-
**Classes:**
|
|
80
|
-
- `SaveTaskRequest(task_id: str, user_message: Optional[str], message_bubbles: str, task_metadata: Optional[str])` - Request DTO for saving tasks with JSON validation
|
|
81
|
-
- `validate_task_id(v: str) -> str` - Validates task_id is non-empty and strips whitespace
|
|
82
|
-
- `validate_message_bubbles(v: str) -> str` - Validates message_bubbles is valid non-empty JSON array
|
|
83
|
-
- `validate_task_metadata(v: Optional[str]) -> Optional[str]` - Validates task_metadata is valid JSON if provided
|
|
84
|
-
|
|
85
|
-
**Usage Examples:**
|
|
86
|
-
```python
|
|
87
|
-
from solace_agent_mesh.gateway.http_sse.routers.dto.requests.task_requests import SaveTaskRequest
|
|
88
|
-
from pydantic import ValidationError
|
|
89
|
-
import json
|
|
90
|
-
|
|
91
|
-
# Create a save task request with camelCase field names (API style)
|
|
92
|
-
task_data = {
|
|
93
|
-
"taskId": "task_123",
|
|
94
|
-
"userMessage": "Please analyze this data",
|
|
95
|
-
"messageBubbles": json.dumps([
|
|
96
|
-
{"type": "user", "content": "Hello"},
|
|
97
|
-
{"type": "assistant", "content": "Hi there!"}
|
|
98
|
-
]),
|
|
99
|
-
"taskMetadata": json.dumps({"priority": "high", "category": "analysis"})
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
try:
|
|
103
|
-
save_task_req = SaveTaskRequest(**task_data)
|
|
104
|
-
print(f"Task ID: {save_task_req.task_id}")
|
|
105
|
-
print(f"User Message: {save_task_req.user_message}")
|
|
106
|
-
print(f"Message Bubbles: {save_task_req.message_bubbles}")
|
|
107
|
-
print(f"Task Metadata: {save_task_req.task_metadata}")
|
|
108
|
-
except ValidationError as e:
|
|
109
|
-
print(f"Validation failed: {e}")
|
|
110
|
-
|
|
111
|
-
# Create with snake_case field names (internal style)
|
|
112
|
-
task_data_snake = {
|
|
113
|
-
"task_id": "task_456",
|
|
114
|
-
"user_message": "Process this request",
|
|
115
|
-
"message_bubbles": json.dumps([{"type": "system", "content": "Processing..."}]),
|
|
116
|
-
"task_metadata": None # Optional field
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
save_task_req2 = SaveTaskRequest(**task_data_snake)
|
|
120
|
-
|
|
121
|
-
# Handle validation errors
|
|
122
|
-
invalid_data = {
|
|
123
|
-
"taskId": "", # Empty task_id will fail validation
|
|
124
|
-
"messageBubbles": "invalid json" # Invalid JSON will fail
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
try:
|
|
128
|
-
SaveTaskRequest(**invalid_data)
|
|
129
|
-
except ValidationError as e:
|
|
130
|
-
print(f"Expected validation error: {e}")
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
# content_hash: 57595b5f602ab4728452316a250ef1ecdcf8dedba497c07de378959b659eccc2
|
|
@@ -1,123 +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, covering sessions, tasks, and messages.
|
|
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-related response DTOs with field aliasing
|
|
10
|
-
- `task_responses.py` - Task-related response DTOs with field aliasing
|
|
11
|
-
|
|
12
|
-
## Developer API Reference
|
|
13
|
-
|
|
14
|
-
### __init__.py
|
|
15
|
-
**Purpose:** Central import point for all response DTOs
|
|
16
|
-
**Import:** `from solace_agent_mesh.gateway.http_sse.routers.dto.responses import SessionResponse, SessionListResponse, TaskResponse, TaskListResponse`
|
|
17
|
-
|
|
18
|
-
### base_responses.py
|
|
19
|
-
**Purpose:** Provides base response class with automatic timestamp field conversion
|
|
20
|
-
**Import:** `from solace_agent_mesh.gateway.http_sse.routers.dto.responses.base_responses import BaseTimestampResponse`
|
|
21
|
-
|
|
22
|
-
**Classes:**
|
|
23
|
-
- `BaseTimestampResponse(BaseModel)` - Base class for responses with timestamp fields that auto-converts epoch ms to ISO strings
|
|
24
|
-
- `model_dump(**kwargs) -> dict[str, Any]` - Converts timestamp fields to ISO strings in output
|
|
25
|
-
- `model_dump_json(**kwargs) -> str` - Serializes to JSON with timestamp conversion
|
|
26
|
-
|
|
27
|
-
**Usage Examples:**
|
|
28
|
-
```python
|
|
29
|
-
from solace_agent_mesh.gateway.http_sse.routers.dto.responses.base_responses import BaseTimestampResponse
|
|
30
|
-
|
|
31
|
-
class MyResponse(BaseTimestampResponse):
|
|
32
|
-
name: str
|
|
33
|
-
created_time: int # Will be auto-converted to ISO string in JSON output
|
|
34
|
-
updated_time: int | None = None
|
|
35
|
-
|
|
36
|
-
# Usage
|
|
37
|
-
response = MyResponse(name="test", created_time=1640995200000)
|
|
38
|
-
json_data = response.model_dump() # created_time becomes ISO string
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
### session_responses.py
|
|
42
|
-
**Purpose:** Session response DTOs with field aliasing for API consistency
|
|
43
|
-
**Import:** `from solace_agent_mesh.gateway.http_sse.routers.dto.responses import SessionResponse, SessionListResponse`
|
|
44
|
-
|
|
45
|
-
**Classes:**
|
|
46
|
-
- `SessionResponse(BaseTimestampResponse)` - Response DTO for chat sessions
|
|
47
|
-
- `id: SessionId` - Unique session identifier
|
|
48
|
-
- `user_id: UserId` - User who owns the session (aliased as "userId")
|
|
49
|
-
- `name: str | None` - Optional session name
|
|
50
|
-
- `agent_id: str | None` - Optional agent identifier (aliased as "agentId")
|
|
51
|
-
- `created_time: int` - Creation timestamp in epoch ms (aliased as "createdTime")
|
|
52
|
-
- `updated_time: int | None` - Update timestamp in epoch ms (aliased as "updatedTime")
|
|
53
|
-
|
|
54
|
-
- `SessionListResponse(BaseModel)` - Response DTO for paginated session lists
|
|
55
|
-
- `sessions: list[SessionResponse]` - List of session objects
|
|
56
|
-
- `pagination: PaginationMeta | None` - Pagination metadata
|
|
57
|
-
- `total_count: int` - Total number of sessions (aliased as "totalCount")
|
|
58
|
-
|
|
59
|
-
**Usage Examples:**
|
|
60
|
-
```python
|
|
61
|
-
from solace_agent_mesh.gateway.http_sse.routers.dto.responses import SessionResponse, SessionListResponse
|
|
62
|
-
|
|
63
|
-
# Create a session response
|
|
64
|
-
session = SessionResponse(
|
|
65
|
-
id="sess_456",
|
|
66
|
-
user_id="user_789",
|
|
67
|
-
name="My Chat Session",
|
|
68
|
-
agent_id="agent_001",
|
|
69
|
-
created_time=1640995200000
|
|
70
|
-
)
|
|
71
|
-
|
|
72
|
-
# Create a session list response
|
|
73
|
-
session_list = SessionListResponse(
|
|
74
|
-
sessions=[session],
|
|
75
|
-
total_count=1
|
|
76
|
-
)
|
|
77
|
-
|
|
78
|
-
# Serialize to JSON (timestamps auto-converted to ISO strings)
|
|
79
|
-
json_output = session.model_dump_json()
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
### task_responses.py
|
|
83
|
-
**Purpose:** Task response DTOs with field aliasing for API consistency
|
|
84
|
-
**Import:** `from solace_agent_mesh.gateway.http_sse.routers.dto.responses import TaskResponse, TaskListResponse`
|
|
85
|
-
|
|
86
|
-
**Classes:**
|
|
87
|
-
- `TaskResponse(BaseTimestampResponse)` - Response DTO for a single task
|
|
88
|
-
- `task_id: str` - Unique task identifier (aliased as "taskId")
|
|
89
|
-
- `session_id: str` - Session this task belongs to (aliased as "sessionId")
|
|
90
|
-
- `user_message: str | None` - Optional user message (aliased as "userMessage")
|
|
91
|
-
- `message_bubbles: str` - JSON string containing message bubbles (aliased as "messageBubbles")
|
|
92
|
-
- `task_metadata: str | None` - Optional JSON string with task metadata (aliased as "taskMetadata")
|
|
93
|
-
- `created_time: int` - Creation timestamp in epoch ms (aliased as "createdTime")
|
|
94
|
-
- `updated_time: int | None` - Update timestamp in epoch ms (aliased as "updatedTime")
|
|
95
|
-
|
|
96
|
-
- `TaskListResponse(BaseModel)` - Response DTO for a list of tasks
|
|
97
|
-
- `tasks: list[TaskResponse]` - List of task objects
|
|
98
|
-
|
|
99
|
-
**Usage Examples:**
|
|
100
|
-
```python
|
|
101
|
-
from solace_agent_mesh.gateway.http_sse.routers.dto.responses import TaskResponse, TaskListResponse
|
|
102
|
-
|
|
103
|
-
# Create a task response
|
|
104
|
-
task = TaskResponse(
|
|
105
|
-
task_id="task_123",
|
|
106
|
-
session_id="sess_456",
|
|
107
|
-
user_message="Process this data",
|
|
108
|
-
message_bubbles='{"bubbles": [{"type": "text", "content": "Processing..."}]}',
|
|
109
|
-
task_metadata='{"priority": "high"}',
|
|
110
|
-
created_time=1640995200000,
|
|
111
|
-
updated_time=1640995260000
|
|
112
|
-
)
|
|
113
|
-
|
|
114
|
-
# Create a task list response
|
|
115
|
-
task_list = TaskListResponse(
|
|
116
|
-
tasks=[task]
|
|
117
|
-
)
|
|
118
|
-
|
|
119
|
-
# Serialize to JSON (timestamps auto-converted to ISO strings)
|
|
120
|
-
json_output = task.model_dump_json()
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
# content_hash: 059aa6ca2472994cbde0e223252c8e78ba2be6c5d0d4f3e91f5e10976e173e5d
|