solace-agent-mesh 1.7.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/artifacts/filesystem_artifact_service.py +164 -0
- solace_agent_mesh/agent/adk/artifacts/s3_artifact_service.py +163 -0
- solace_agent_mesh/agent/adk/callbacks.py +752 -127
- solace_agent_mesh/agent/adk/embed_resolving_mcp_toolset.py +99 -7
- 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 +34 -16
- solace_agent_mesh/agent/adk/models/oauth2_token_manager.py +24 -137
- solace_agent_mesh/agent/adk/runner.py +66 -8
- solace_agent_mesh/agent/adk/schema_migration.py +88 -0
- solace_agent_mesh/agent/adk/services.py +41 -1
- solace_agent_mesh/agent/adk/setup.py +220 -32
- solace_agent_mesh/agent/adk/stream_parser.py +229 -40
- solace_agent_mesh/agent/protocol/event_handlers.py +219 -33
- 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/component.py +188 -22
- solace_agent_mesh/agent/proxies/base/proxy_task_context.py +3 -1
- solace_agent_mesh/agent/sac/app.py +37 -12
- solace_agent_mesh/agent/sac/component.py +322 -52
- solace_agent_mesh/agent/sac/patch_adk.py +8 -16
- solace_agent_mesh/agent/sac/task_execution_context.py +90 -0
- 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 +698 -24
- solace_agent_mesh/agent/tools/deep_research_tools.py +2161 -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 +54 -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 +243 -5
- 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/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/64195356.09dbd087.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/66d4869e.30340bd3.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6aaedf65.7253541d.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6d84eae0.fd23ba4a.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/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/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/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/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 +75 -75
- 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 +98 -112
- 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 -28
- solace_agent_mesh/assets/docs/docs/documentation/deploying/deployment-options/index.html +29 -29
- 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 +67 -53
- solace_agent_mesh/assets/docs/docs/documentation/deploying/observability/index.html +17 -17
- 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 +87 -87
- 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 +50 -23
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/connectors/index.html +29 -24
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/index.html +21 -21
- 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 +96 -66
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/secure-user-delegated-access/index.html +181 -181
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/single-sign-on/index.html +75 -75
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/wheel-installation/index.html +27 -27
- 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 -38
- 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 +135 -114
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/configurations/index.html +37 -37
- 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 +112 -112
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/user-feedback/index.html +28 -28
- 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/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-tcIFZLis.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-CINwxvwV.js → vendor-CGk8Suyh.js} +189 -94
- 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/types.py +1 -1
- solace_agent_mesh/common/agent_registry.py +38 -11
- solace_agent_mesh/common/data_parts.py +124 -0
- 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 +73 -1
- solace_agent_mesh/common/sam_events/event_service.py +2 -2
- solace_agent_mesh/common/utils/embeds/converter.py +1 -8
- solace_agent_mesh/common/utils/embeds/modifiers.py +2 -27
- solace_agent_mesh/common/utils/embeds/resolver.py +94 -25
- solace_agent_mesh/common/utils/embeds/types.py +1 -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/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/base.py +28 -1
- solace_agent_mesh/gateway/adapter/types.py +9 -0
- solace_agent_mesh/gateway/base/app.py +10 -0
- solace_agent_mesh/gateway/base/auth_interface.py +103 -0
- solace_agent_mesh/gateway/base/component.py +451 -10
- solace_agent_mesh/gateway/generic/component.py +274 -30
- solace_agent_mesh/gateway/http_sse/alembic/env.py +0 -7
- solace_agent_mesh/gateway/http_sse/alembic/versions/20251023_add_soft_delete_and_search.py +2 -43
- solace_agent_mesh/gateway/http_sse/alembic/versions/20251024_add_default_agent_to_projects.py +2 -2
- 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 +23 -6
- solace_agent_mesh/gateway/http_sse/component.py +158 -73
- solace_agent_mesh/gateway/http_sse/dependencies.py +50 -57
- solace_agent_mesh/gateway/http_sse/main.py +58 -482
- 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 +3 -2
- solace_agent_mesh/gateway/http_sse/repository/entities/task.py +7 -0
- 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/__init__.py +5 -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 +1 -1
- solace_agent_mesh/gateway/http_sse/repository/models/task_model.py +8 -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 +12 -107
- 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 +113 -7
- solace_agent_mesh/gateway/http_sse/routers/auth.py +69 -132
- solace_agent_mesh/gateway/http_sse/routers/config.py +235 -10
- 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/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/project_responses.py +1 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/responses/session_responses.py +3 -2
- solace_agent_mesh/gateway/http_sse/routers/dto/responses/version_responses.py +31 -0
- 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 +250 -24
- solace_agent_mesh/gateway/http_sse/routers/prompts.py +1416 -0
- solace_agent_mesh/gateway/http_sse/routers/sessions.py +14 -5
- solace_agent_mesh/gateway/http_sse/routers/speech.py +355 -0
- solace_agent_mesh/gateway/http_sse/routers/sse.py +117 -4
- solace_agent_mesh/gateway/http_sse/routers/tasks.py +509 -149
- 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 +2 -1
- 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 +539 -12
- solace_agent_mesh/gateway/http_sse/services/prompt_builder_assistant.py +303 -0
- solace_agent_mesh/gateway/http_sse/services/session_service.py +198 -21
- solace_agent_mesh/gateway/http_sse/services/task_logger_service.py +354 -4
- solace_agent_mesh/gateway/http_sse/sse_manager.py +280 -169
- 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 +1 -1
- 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.7.1.dist-info → solace_agent_mesh-1.13.2.dist-info}/METADATA +29 -8
- {solace_agent_mesh-1.7.1.dist-info → solace_agent_mesh-1.13.2.dist-info}/RECORD +334 -313
- {solace_agent_mesh-1.7.1.dist-info → solace_agent_mesh-1.13.2.dist-info}/WHEEL +1 -1
- 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/05749d90.c70b2be9.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/15ba94aa.92fea363.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/15e40e79.36003774.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/17896441.a5e82f9b.js +0 -2
- solace_agent_mesh/assets/docs/assets/js/240a0364.c39f8388.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.e4870a49.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/3ff0015d.b63ee53a.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/547e15cc.2f7790c1.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/55b7b518.f2b1d1ba.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/5c2bd65f.45b32c2b.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/64195356.c498c4d0.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/66d4869e.830d443f.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/6d84eae0.4a5fbf39.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/8024126c.fa0e7186.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.09ed9234.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.245ae0ef.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/c93cbaa0.eaff365e.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/cbe2e9ea.f902fad8.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/db5d6442.3daf1696.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/e04b235d.c9c50c7b.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/e3d9abda.d11c67a7.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/e6f9706b.045d0fa1.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/e92d0134.3bda61dd.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/f284c35a.5099c51e.js +0 -1
- solace_agent_mesh/assets/docs/assets/js/main.f213fe0c.js +0 -2
- solace_agent_mesh/assets/docs/assets/js/runtime~main.d9606d6a.js +0 -1
- solace_agent_mesh/assets/docs/docs/documentation/deploying/kubernetes-deployment/index.html +0 -47
- solace_agent_mesh/assets/docs/lunr-index-1762283454666.json +0 -1
- solace_agent_mesh/assets/docs/search-doc-1762283454666.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-CRYdKo2Q.js +0 -25
- solace_agent_mesh/client/webui/frontend/static/assets/main-CojeY_1w.css +0 -1
- solace_agent_mesh/client/webui/frontend/static/assets/main-ILja9MCG.js +0 -353
- 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-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 -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/20251023_add_fulltext_search_indexes.py +0 -92
- 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/logging_config_template.ini +0 -45
- solace_agent_mesh/templates/templates_llm.txt +0 -147
- /solace_agent_mesh/assets/docs/assets/js/{main.f213fe0c.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.7.1.dist-info → solace_agent_mesh-1.13.2.dist-info}/entry_points.txt +0 -0
- {solace_agent_mesh-1.7.1.dist-info → solace_agent_mesh-1.13.2.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,24 +1,32 @@
|
|
|
1
1
|
"""
|
|
2
2
|
API Router for providing frontend configuration.
|
|
3
3
|
"""
|
|
4
|
+
from __future__ import annotations
|
|
4
5
|
|
|
5
6
|
import logging
|
|
6
|
-
from fastapi import APIRouter, Depends, HTTPException, status
|
|
7
7
|
from typing import Dict, Any
|
|
8
|
+
from typing import TYPE_CHECKING
|
|
9
|
+
|
|
10
|
+
from fastapi import APIRouter, Depends, HTTPException, status
|
|
8
11
|
|
|
12
|
+
from ..routers.dto.requests.project_requests import CreateProjectRequest
|
|
9
13
|
from ....gateway.http_sse.dependencies import get_sac_component, get_api_config
|
|
10
|
-
from ..routers.dto.requests.project_requests import CreateProjectRequest, UpdateProjectRequest
|
|
11
|
-
from typing import TYPE_CHECKING
|
|
12
14
|
|
|
13
15
|
if TYPE_CHECKING:
|
|
14
|
-
from
|
|
16
|
+
from ..component import WebUIBackendComponent
|
|
15
17
|
|
|
16
18
|
log = logging.getLogger(__name__)
|
|
17
19
|
|
|
18
20
|
router = APIRouter()
|
|
19
21
|
|
|
20
22
|
|
|
21
|
-
|
|
23
|
+
# Default max upload size (50MB) - matches gateway_max_upload_size_bytes default
|
|
24
|
+
DEFAULT_MAX_UPLOAD_SIZE_BYTES = 52428800
|
|
25
|
+
# Default max ZIP upload size (100MB) - for project import ZIP files
|
|
26
|
+
DEFAULT_MAX_ZIP_UPLOAD_SIZE_BYTES = 104857600
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def _get_validation_limits(component: "WebUIBackendComponent" = None) -> Dict[str, Any]:
|
|
22
30
|
"""
|
|
23
31
|
Extract validation limits from Pydantic models to expose to frontend.
|
|
24
32
|
This ensures frontend and backend validation limits stay in sync.
|
|
@@ -26,13 +34,69 @@ def _get_validation_limits() -> Dict[str, Any]:
|
|
|
26
34
|
# Extract limits from CreateProjectRequest model
|
|
27
35
|
create_fields = CreateProjectRequest.model_fields
|
|
28
36
|
|
|
37
|
+
# Get max upload size from component config, with fallback to default
|
|
38
|
+
max_upload_size_bytes = (
|
|
39
|
+
component.get_config("gateway_max_upload_size_bytes", DEFAULT_MAX_UPLOAD_SIZE_BYTES)
|
|
40
|
+
if component else DEFAULT_MAX_UPLOAD_SIZE_BYTES
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
# Get max ZIP upload size from component config, with fallback to default (100MB)
|
|
44
|
+
max_zip_upload_size_bytes = (
|
|
45
|
+
component.get_config("gateway_max_zip_upload_size_bytes", DEFAULT_MAX_ZIP_UPLOAD_SIZE_BYTES)
|
|
46
|
+
if component else DEFAULT_MAX_ZIP_UPLOAD_SIZE_BYTES
|
|
47
|
+
)
|
|
48
|
+
|
|
29
49
|
return {
|
|
30
50
|
"projectNameMax": create_fields["name"].metadata[1].max_length if create_fields["name"].metadata else 255,
|
|
31
51
|
"projectDescriptionMax": create_fields["description"].metadata[0].max_length if create_fields["description"].metadata else 1000,
|
|
32
52
|
"projectInstructionsMax": create_fields["system_prompt"].metadata[0].max_length if create_fields["system_prompt"].metadata else 4000,
|
|
53
|
+
"maxUploadSizeBytes": max_upload_size_bytes,
|
|
54
|
+
"maxZipUploadSizeBytes": max_zip_upload_size_bytes,
|
|
33
55
|
}
|
|
34
56
|
|
|
35
57
|
|
|
58
|
+
def _get_background_tasks_config(
|
|
59
|
+
component: "WebUIBackendComponent",
|
|
60
|
+
log_prefix: str
|
|
61
|
+
) -> Dict[str, Any]:
|
|
62
|
+
"""
|
|
63
|
+
Extracts background tasks configuration for the frontend.
|
|
64
|
+
|
|
65
|
+
Returns:
|
|
66
|
+
Dict with background tasks non-boolean settings:
|
|
67
|
+
- default_timeout_ms: Default timeout for background tasks
|
|
68
|
+
|
|
69
|
+
Note: The 'enabled' flag is now in frontend_feature_enablement.background_tasks
|
|
70
|
+
"""
|
|
71
|
+
background_config = component.get_config("background_tasks", {})
|
|
72
|
+
default_timeout_ms = background_config.get("default_timeout_ms", 3600000) # 1 hour default
|
|
73
|
+
|
|
74
|
+
return {
|
|
75
|
+
"default_timeout_ms": default_timeout_ms,
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
def _determine_background_tasks_enabled(
|
|
80
|
+
component: "WebUIBackendComponent",
|
|
81
|
+
log_prefix: str
|
|
82
|
+
) -> bool:
|
|
83
|
+
"""
|
|
84
|
+
Determines if background tasks feature should be enabled.
|
|
85
|
+
|
|
86
|
+
Returns:
|
|
87
|
+
bool: True if background tasks should be enabled
|
|
88
|
+
"""
|
|
89
|
+
feature_flags = component.get_config("frontend_feature_enablement", {})
|
|
90
|
+
enabled = feature_flags.get("background_tasks", False)
|
|
91
|
+
|
|
92
|
+
if enabled:
|
|
93
|
+
log.debug("%s Background tasks enabled globally for all agents", log_prefix)
|
|
94
|
+
else:
|
|
95
|
+
log.debug("%s Background tasks disabled", log_prefix)
|
|
96
|
+
|
|
97
|
+
return enabled
|
|
98
|
+
|
|
99
|
+
|
|
36
100
|
def _determine_projects_enabled(
|
|
37
101
|
component: "WebUIBackendComponent",
|
|
38
102
|
api_config: Dict[str, Any],
|
|
@@ -96,6 +160,80 @@ async def get_app_config(
|
|
|
96
160
|
feature_enablement["taskLogging"] = True
|
|
97
161
|
log.debug("%s taskLogging feature flag is enabled.", log_prefix)
|
|
98
162
|
|
|
163
|
+
# Determine if prompt library should be enabled
|
|
164
|
+
# Prompts require SQL session storage for persistence
|
|
165
|
+
prompt_library_config = component.get_config("prompt_library", {})
|
|
166
|
+
prompt_library_explicitly_enabled = prompt_library_config.get("enabled", True)
|
|
167
|
+
|
|
168
|
+
if prompt_library_explicitly_enabled:
|
|
169
|
+
# Check if SQL persistence is available (REQUIRED for prompts)
|
|
170
|
+
session_config = component.get_config("session_service", {})
|
|
171
|
+
session_type = session_config.get("type", "memory")
|
|
172
|
+
|
|
173
|
+
if session_type != "sql":
|
|
174
|
+
log.warning(
|
|
175
|
+
"%s Prompt library is configured but session_service type is '%s' (not 'sql'). "
|
|
176
|
+
"Disabling prompt library for frontend.",
|
|
177
|
+
log_prefix,
|
|
178
|
+
session_type
|
|
179
|
+
)
|
|
180
|
+
prompt_library_enabled = False
|
|
181
|
+
else:
|
|
182
|
+
prompt_library_enabled = True
|
|
183
|
+
feature_enablement["promptLibrary"] = True
|
|
184
|
+
log.debug("%s promptLibrary feature flag is enabled.", log_prefix)
|
|
185
|
+
|
|
186
|
+
# Check AI-assisted sub-feature (only if parent is enabled)
|
|
187
|
+
ai_assisted_config = prompt_library_config.get("ai_assisted", {})
|
|
188
|
+
ai_assisted_enabled = ai_assisted_config.get("enabled", True)
|
|
189
|
+
|
|
190
|
+
if ai_assisted_enabled:
|
|
191
|
+
# Verify LLM is configured through the model config
|
|
192
|
+
model_config = component.get_config("model", {})
|
|
193
|
+
|
|
194
|
+
llm_model = None
|
|
195
|
+
if isinstance(model_config, dict):
|
|
196
|
+
llm_model = model_config.get("model")
|
|
197
|
+
|
|
198
|
+
if llm_model:
|
|
199
|
+
feature_enablement["promptAIAssisted"] = True
|
|
200
|
+
log.debug("%s promptAIAssisted feature flag is enabled.", log_prefix)
|
|
201
|
+
else:
|
|
202
|
+
feature_enablement["promptAIAssisted"] = False
|
|
203
|
+
log.warning(
|
|
204
|
+
"%s AI-assisted prompts disabled: model not configured",
|
|
205
|
+
log_prefix
|
|
206
|
+
)
|
|
207
|
+
else:
|
|
208
|
+
feature_enablement["promptAIAssisted"] = False
|
|
209
|
+
|
|
210
|
+
# Check version history sub-feature (only if parent is enabled)
|
|
211
|
+
version_history_config = prompt_library_config.get("version_history", {})
|
|
212
|
+
version_history_enabled = version_history_config.get("enabled", True)
|
|
213
|
+
|
|
214
|
+
if version_history_enabled:
|
|
215
|
+
feature_enablement["promptVersionHistory"] = True
|
|
216
|
+
log.debug("%s promptVersionHistory feature flag is enabled.", log_prefix)
|
|
217
|
+
else:
|
|
218
|
+
feature_enablement["promptVersionHistory"] = False
|
|
219
|
+
|
|
220
|
+
# Check prompt sharing sub-feature (only if parent is enabled)
|
|
221
|
+
sharing_config = prompt_library_config.get("sharing", {})
|
|
222
|
+
sharing_enabled = sharing_config.get("enabled", False)
|
|
223
|
+
|
|
224
|
+
if sharing_enabled:
|
|
225
|
+
feature_enablement["promptSharing"] = True
|
|
226
|
+
log.debug("%s promptSharing feature flag is enabled.", log_prefix)
|
|
227
|
+
else:
|
|
228
|
+
feature_enablement["promptSharing"] = False
|
|
229
|
+
else:
|
|
230
|
+
# Explicitly set to false when disabled
|
|
231
|
+
feature_enablement["promptLibrary"] = False
|
|
232
|
+
feature_enablement["promptAIAssisted"] = False
|
|
233
|
+
feature_enablement["promptVersionHistory"] = False
|
|
234
|
+
feature_enablement["promptSharing"] = False
|
|
235
|
+
log.info("%s Prompt library feature is explicitly disabled.", log_prefix)
|
|
236
|
+
|
|
99
237
|
# Determine if feedback should be enabled
|
|
100
238
|
# Feedback requires SQL session storage for persistence
|
|
101
239
|
feedback_enabled = component.get_config("frontend_collect_feedback", False)
|
|
@@ -119,24 +257,111 @@ async def get_app_config(
|
|
|
119
257
|
log.debug("%s Projects feature flag is enabled.", log_prefix)
|
|
120
258
|
else:
|
|
121
259
|
log.debug("%s Projects feature flag is disabled.", log_prefix)
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
# Determine if background tasks should be enabled
|
|
263
|
+
background_tasks_enabled = _determine_background_tasks_enabled(component, log_prefix)
|
|
264
|
+
feature_enablement["background_tasks"] = background_tasks_enabled
|
|
265
|
+
if background_tasks_enabled:
|
|
266
|
+
log.debug("%s Background tasks feature flag is enabled.", log_prefix)
|
|
267
|
+
else:
|
|
268
|
+
log.debug("%s Background tasks feature flag is disabled.", log_prefix)
|
|
269
|
+
|
|
270
|
+
# Check tool configuration status
|
|
271
|
+
tool_config_status = {}
|
|
272
|
+
|
|
273
|
+
# Check TTS configuration from component config (not environment variables)
|
|
274
|
+
speech_config = component.get_config("speech", {})
|
|
275
|
+
tts_config = speech_config.get("tts", {})
|
|
276
|
+
|
|
277
|
+
# Check if speech/TTS section is defined in config
|
|
278
|
+
# If not defined, disable TTS even if keys might be present elsewhere
|
|
279
|
+
if not speech_config or not tts_config:
|
|
280
|
+
log.debug("%s TTS disabled: speech.tts section not configured", log_prefix)
|
|
281
|
+
tts_configured = False
|
|
282
|
+
tts_provider = "gemini" # Default fallback
|
|
283
|
+
else:
|
|
284
|
+
# Get provider from config (with fallback to default)
|
|
285
|
+
preferred_provider = tts_config.get("provider", "gemini").lower()
|
|
286
|
+
|
|
287
|
+
# Check which providers are configured
|
|
288
|
+
gemini_config = tts_config.get("gemini", {})
|
|
289
|
+
azure_config = tts_config.get("azure", {})
|
|
290
|
+
polly_config = tts_config.get("polly", {})
|
|
291
|
+
|
|
292
|
+
gemini_key = gemini_config.get("api_key")
|
|
293
|
+
azure_speech_key = azure_config.get("api_key")
|
|
294
|
+
azure_speech_region = azure_config.get("region")
|
|
295
|
+
aws_access_key = polly_config.get("aws_access_key_id")
|
|
296
|
+
aws_secret_key = polly_config.get("aws_secret_access_key")
|
|
297
|
+
|
|
298
|
+
# Determine which providers are available
|
|
299
|
+
gemini_available = bool(gemini_key)
|
|
300
|
+
azure_available = bool(azure_speech_key and azure_speech_region)
|
|
301
|
+
polly_available = bool(aws_access_key and aws_secret_key)
|
|
302
|
+
tts_configured = gemini_available or azure_available or polly_available
|
|
303
|
+
tool_config_status["text_to_speech"] = tts_configured
|
|
304
|
+
|
|
305
|
+
# Determine TTS provider based on preference and availability
|
|
306
|
+
if preferred_provider == "azure" and azure_available:
|
|
307
|
+
tts_provider = "azure"
|
|
308
|
+
elif preferred_provider == "gemini" and gemini_available:
|
|
309
|
+
tts_provider = "gemini"
|
|
310
|
+
elif preferred_provider == "polly" and polly_available:
|
|
311
|
+
tts_provider = "polly"
|
|
312
|
+
elif gemini_available:
|
|
313
|
+
# Default to Gemini if available
|
|
314
|
+
tts_provider = "gemini"
|
|
315
|
+
elif azure_available:
|
|
316
|
+
# Fall back to Azure if Gemini not available
|
|
317
|
+
tts_provider = "azure"
|
|
318
|
+
elif polly_available:
|
|
319
|
+
# Fall back to Polly if others not available
|
|
320
|
+
tts_provider = "polly"
|
|
321
|
+
else:
|
|
322
|
+
# No provider available, default to gemini (will use browser fallback)
|
|
323
|
+
tts_provider = "gemini"
|
|
324
|
+
|
|
325
|
+
if tts_configured:
|
|
326
|
+
log.debug("%s TTS is configured (API keys present, provider: %s)", log_prefix, tts_provider)
|
|
327
|
+
if preferred_provider and preferred_provider != tts_provider:
|
|
328
|
+
log.warning(
|
|
329
|
+
"%s TTS_PROVIDER set to '%s' but using '%s' (preferred provider not available)",
|
|
330
|
+
log_prefix, preferred_provider, tts_provider
|
|
331
|
+
)
|
|
332
|
+
else:
|
|
333
|
+
log.debug("%s TTS not configured (no API keys found)", log_prefix)
|
|
334
|
+
|
|
335
|
+
# TTS settings - enable if API keys are present
|
|
336
|
+
tts_settings = {
|
|
337
|
+
"textToSpeech": tts_configured,
|
|
338
|
+
"engineTTS": "external" if tts_configured else "browser",
|
|
339
|
+
"ttsProvider": tts_provider,
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
platform_config = component.get_config("platform_service", {})
|
|
343
|
+
platform_service_url = platform_config.get("url", "")
|
|
122
344
|
|
|
123
345
|
config_data = {
|
|
124
|
-
"frontend_server_url":
|
|
346
|
+
"frontend_server_url": component.frontend_server_url,
|
|
347
|
+
"frontend_platform_server_url": platform_service_url,
|
|
125
348
|
"frontend_auth_login_url": component.get_config(
|
|
126
349
|
"frontend_auth_login_url", ""
|
|
127
350
|
),
|
|
128
|
-
"frontend_use_authorization": component.get_config(
|
|
129
|
-
"frontend_use_authorization", False
|
|
130
|
-
),
|
|
351
|
+
"frontend_use_authorization": component.get_config("frontend_use_authorization", False),
|
|
131
352
|
"frontend_welcome_message": component.get_config(
|
|
132
353
|
"frontend_welcome_message", ""
|
|
133
354
|
),
|
|
134
355
|
"frontend_redirect_url": component.get_config("frontend_redirect_url", ""),
|
|
135
356
|
"frontend_collect_feedback": feedback_enabled,
|
|
136
357
|
"frontend_bot_name": component.get_config("frontend_bot_name", "A2A Agent"),
|
|
358
|
+
"frontend_logo_url": component.get_config("frontend_logo_url", ""),
|
|
137
359
|
"frontend_feature_enablement": feature_enablement,
|
|
138
360
|
"persistence_enabled": api_config.get("persistence_enabled", False),
|
|
139
|
-
"validation_limits": _get_validation_limits(),
|
|
361
|
+
"validation_limits": _get_validation_limits(component),
|
|
362
|
+
"tool_config_status": tool_config_status,
|
|
363
|
+
"tts_settings": tts_settings,
|
|
364
|
+
"background_tasks_config": _get_background_tasks_config(component, log_prefix),
|
|
140
365
|
}
|
|
141
366
|
log.debug("%sReturning frontend configuration.", log_prefix)
|
|
142
367
|
return config_data
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Project export/import DTOs.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from typing import Optional, List, Dict, Any
|
|
6
|
+
from pydantic import BaseModel, Field
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class ArtifactMetadata(BaseModel):
|
|
10
|
+
"""Metadata for an artifact in export"""
|
|
11
|
+
filename: str
|
|
12
|
+
mime_type: str = Field(alias="mimeType")
|
|
13
|
+
size: int
|
|
14
|
+
metadata: Dict[str, Any] = {}
|
|
15
|
+
|
|
16
|
+
model_config = {"populate_by_name": True}
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class ProjectExportMetadata(BaseModel):
|
|
20
|
+
"""Metadata for exported project"""
|
|
21
|
+
original_created_at: int = Field(alias="originalCreatedAt")
|
|
22
|
+
artifact_count: int = Field(alias="artifactCount")
|
|
23
|
+
total_size_bytes: int = Field(alias="totalSizeBytes")
|
|
24
|
+
|
|
25
|
+
model_config = {"populate_by_name": True}
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class ProjectExportData(BaseModel):
|
|
29
|
+
"""Project data in export format"""
|
|
30
|
+
name: str
|
|
31
|
+
description: Optional[str] = None
|
|
32
|
+
system_prompt: Optional[str] = Field(default=None, alias="systemPrompt")
|
|
33
|
+
default_agent_id: Optional[str] = Field(default=None, alias="defaultAgentId")
|
|
34
|
+
metadata: ProjectExportMetadata
|
|
35
|
+
|
|
36
|
+
model_config = {"populate_by_name": True}
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
class ProjectExportFormat(BaseModel):
|
|
40
|
+
"""Complete export format"""
|
|
41
|
+
version: str = "1.0"
|
|
42
|
+
exported_at: int = Field(alias="exportedAt")
|
|
43
|
+
project: ProjectExportData
|
|
44
|
+
artifacts: List[ArtifactMetadata] = []
|
|
45
|
+
|
|
46
|
+
model_config = {"populate_by_name": True}
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
class ProjectImportOptions(BaseModel):
|
|
50
|
+
"""Options for project import"""
|
|
51
|
+
preserve_name: bool = Field(default=False, alias="preserveName")
|
|
52
|
+
custom_name: Optional[str] = Field(default=None, alias="customName")
|
|
53
|
+
|
|
54
|
+
model_config = {"populate_by_name": True}
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
class ProjectImportRequest(BaseModel):
|
|
58
|
+
"""Request for importing project"""
|
|
59
|
+
options: ProjectImportOptions
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
class ProjectImportResponse(BaseModel):
|
|
63
|
+
"""Response after importing project"""
|
|
64
|
+
project_id: str = Field(alias="projectId")
|
|
65
|
+
name: str
|
|
66
|
+
artifacts_imported: int = Field(alias="artifactsImported")
|
|
67
|
+
warnings: List[str] = []
|
|
68
|
+
|
|
69
|
+
model_config = {"populate_by_name": True}
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Pydantic models for prompt library API.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from typing import Any, Dict, List, Optional
|
|
6
|
+
from pydantic import BaseModel, Field
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class PromptBase(BaseModel):
|
|
10
|
+
"""Base schema for Prompt"""
|
|
11
|
+
prompt_text: str = Field(
|
|
12
|
+
...,
|
|
13
|
+
min_length=1,
|
|
14
|
+
max_length=10000,
|
|
15
|
+
description="The prompt text content",
|
|
16
|
+
alias="promptText"
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
class Config:
|
|
20
|
+
populate_by_name = True
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class PromptCreate(PromptBase):
|
|
24
|
+
"""Schema for creating a new prompt version"""
|
|
25
|
+
pass
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class PromptResponse(PromptBase):
|
|
29
|
+
"""Schema for prompt response"""
|
|
30
|
+
id: str
|
|
31
|
+
group_id: str = Field(alias="groupId")
|
|
32
|
+
user_id: str = Field(alias="userId")
|
|
33
|
+
version: int
|
|
34
|
+
# Versioned metadata fields
|
|
35
|
+
name: Optional[str] = Field(None, description="Prompt name at this version")
|
|
36
|
+
description: Optional[str] = Field(None, description="Prompt description at this version")
|
|
37
|
+
category: Optional[str] = Field(None, description="Prompt category at this version")
|
|
38
|
+
command: Optional[str] = Field(None, description="Prompt command at this version")
|
|
39
|
+
created_at: int = Field(alias="createdAt") # epoch milliseconds
|
|
40
|
+
updated_at: int = Field(alias="updatedAt") # epoch milliseconds
|
|
41
|
+
|
|
42
|
+
class Config:
|
|
43
|
+
from_attributes = True
|
|
44
|
+
populate_by_name = True
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
class PromptGroupBase(BaseModel):
|
|
48
|
+
"""Base schema for PromptGroup"""
|
|
49
|
+
name: str = Field(
|
|
50
|
+
...,
|
|
51
|
+
min_length=1,
|
|
52
|
+
max_length=255,
|
|
53
|
+
description="Name of the prompt group"
|
|
54
|
+
)
|
|
55
|
+
description: Optional[str] = Field(
|
|
56
|
+
None,
|
|
57
|
+
max_length=1000,
|
|
58
|
+
description="Short description"
|
|
59
|
+
)
|
|
60
|
+
category: Optional[str] = Field(
|
|
61
|
+
None,
|
|
62
|
+
max_length=100,
|
|
63
|
+
description="Category for organization"
|
|
64
|
+
)
|
|
65
|
+
command: Optional[str] = Field(
|
|
66
|
+
None,
|
|
67
|
+
min_length=1,
|
|
68
|
+
max_length=50,
|
|
69
|
+
pattern="^[a-zA-Z0-9_-]+$",
|
|
70
|
+
description="Shorthand command (alphanumeric, dash, underscore only)"
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
class PromptGroupCreate(PromptGroupBase):
|
|
75
|
+
"""Schema for creating a new prompt group"""
|
|
76
|
+
initial_prompt: str = Field(
|
|
77
|
+
...,
|
|
78
|
+
min_length=1,
|
|
79
|
+
max_length=10000,
|
|
80
|
+
description="Initial prompt text"
|
|
81
|
+
)
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
class PromptGroupUpdate(BaseModel):
|
|
85
|
+
"""Schema for updating a prompt group"""
|
|
86
|
+
name: Optional[str] = Field(None, min_length=1, max_length=255)
|
|
87
|
+
description: Optional[str] = Field(None, max_length=1000)
|
|
88
|
+
category: Optional[str] = Field(None, max_length=100)
|
|
89
|
+
command: Optional[str] = Field(
|
|
90
|
+
None,
|
|
91
|
+
min_length=1,
|
|
92
|
+
max_length=50,
|
|
93
|
+
pattern="^[a-zA-Z0-9_-]+$"
|
|
94
|
+
)
|
|
95
|
+
initial_prompt: Optional[str] = Field(
|
|
96
|
+
None,
|
|
97
|
+
min_length=1,
|
|
98
|
+
max_length=10000,
|
|
99
|
+
description="Updated prompt text (creates new version if changed)"
|
|
100
|
+
)
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
class PromptGroupResponse(PromptGroupBase):
|
|
104
|
+
"""Schema for prompt group response"""
|
|
105
|
+
id: str
|
|
106
|
+
user_id: str = Field(alias="userId")
|
|
107
|
+
author_name: Optional[str] = Field(None, alias="authorName")
|
|
108
|
+
production_prompt_id: Optional[str] = Field(None, alias="productionPromptId")
|
|
109
|
+
is_shared: bool = Field(alias="isShared")
|
|
110
|
+
is_pinned: bool = Field(alias="isPinned")
|
|
111
|
+
created_at: int = Field(alias="createdAt") # epoch milliseconds
|
|
112
|
+
updated_at: int = Field(alias="updatedAt") # epoch milliseconds
|
|
113
|
+
|
|
114
|
+
# Include production prompt if available
|
|
115
|
+
production_prompt: Optional[PromptResponse] = Field(None, alias="productionPrompt")
|
|
116
|
+
|
|
117
|
+
class Config:
|
|
118
|
+
from_attributes = True
|
|
119
|
+
populate_by_name = True
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
class PromptGroupListResponse(BaseModel):
|
|
123
|
+
"""Schema for paginated prompt group list"""
|
|
124
|
+
groups: List[PromptGroupResponse]
|
|
125
|
+
total: int
|
|
126
|
+
skip: int
|
|
127
|
+
limit: int
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
# AI-Assisted Prompt Builder Models
|
|
131
|
+
|
|
132
|
+
class ChatMessage(BaseModel):
|
|
133
|
+
"""Schema for a chat message"""
|
|
134
|
+
role: str = Field(
|
|
135
|
+
...,
|
|
136
|
+
pattern="^(user|assistant)$",
|
|
137
|
+
description="Message role"
|
|
138
|
+
)
|
|
139
|
+
content: str = Field(..., min_length=1, description="Message content")
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
class PromptBuilderChatRequest(BaseModel):
|
|
143
|
+
"""Schema for prompt builder chat request"""
|
|
144
|
+
message: str = Field(
|
|
145
|
+
...,
|
|
146
|
+
min_length=1,
|
|
147
|
+
max_length=200000,
|
|
148
|
+
description="User message (supports long conversation histories for template creation)"
|
|
149
|
+
)
|
|
150
|
+
conversation_history: List[ChatMessage] = Field(
|
|
151
|
+
default_factory=list,
|
|
152
|
+
description="Previous messages"
|
|
153
|
+
)
|
|
154
|
+
current_template: Optional[Dict[str, Any]] = Field(
|
|
155
|
+
None,
|
|
156
|
+
description="Current template state"
|
|
157
|
+
)
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
class PromptBuilderChatResponse(BaseModel):
|
|
161
|
+
"""Schema for prompt builder chat response"""
|
|
162
|
+
message: str = Field(..., description="Assistant's response message")
|
|
163
|
+
template_updates: Dict[str, Any] = Field(
|
|
164
|
+
default_factory=dict,
|
|
165
|
+
description="Updates to template config"
|
|
166
|
+
)
|
|
167
|
+
confidence: float = Field(
|
|
168
|
+
0.0,
|
|
169
|
+
ge=0.0,
|
|
170
|
+
le=1.0,
|
|
171
|
+
description="Confidence score"
|
|
172
|
+
)
|
|
173
|
+
ready_to_save: bool = Field(
|
|
174
|
+
False,
|
|
175
|
+
description="Whether template is ready to save"
|
|
176
|
+
)
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
# Export/Import Models
|
|
180
|
+
|
|
181
|
+
class PromptExportMetadata(BaseModel):
|
|
182
|
+
"""Metadata for exported prompt"""
|
|
183
|
+
author_name: Optional[str] = Field(None, alias="authorName")
|
|
184
|
+
original_version: int = Field(alias="originalVersion")
|
|
185
|
+
original_created_at: int = Field(alias="originalCreatedAt")
|
|
186
|
+
|
|
187
|
+
class Config:
|
|
188
|
+
populate_by_name = True
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
class PromptExportData(BaseModel):
|
|
192
|
+
"""Data structure for exported prompt"""
|
|
193
|
+
name: str
|
|
194
|
+
description: Optional[str] = None
|
|
195
|
+
category: Optional[str] = None
|
|
196
|
+
command: Optional[str] = None
|
|
197
|
+
prompt_text: str = Field(alias="promptText")
|
|
198
|
+
metadata: PromptExportMetadata
|
|
199
|
+
|
|
200
|
+
class Config:
|
|
201
|
+
populate_by_name = True
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
class PromptExportResponse(BaseModel):
|
|
205
|
+
"""Schema for exported prompt file"""
|
|
206
|
+
version: str = "1.0"
|
|
207
|
+
exported_at: int = Field(alias="exportedAt")
|
|
208
|
+
prompt: PromptExportData
|
|
209
|
+
|
|
210
|
+
class Config:
|
|
211
|
+
populate_by_name = True
|
|
212
|
+
by_alias = True
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
class PromptImportOptions(BaseModel):
|
|
216
|
+
"""Options for importing a prompt"""
|
|
217
|
+
preserve_command: bool = Field(
|
|
218
|
+
False,
|
|
219
|
+
alias="preserveCommand",
|
|
220
|
+
description="If true, attempt to keep original command (may be modified if conflict exists)"
|
|
221
|
+
)
|
|
222
|
+
preserve_category: bool = Field(
|
|
223
|
+
True,
|
|
224
|
+
alias="preserveCategory",
|
|
225
|
+
description="If true, keep the original category"
|
|
226
|
+
)
|
|
227
|
+
|
|
228
|
+
class Config:
|
|
229
|
+
populate_by_name = True
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
class PromptImportRequest(BaseModel):
|
|
233
|
+
"""Schema for importing a prompt"""
|
|
234
|
+
prompt_data: Dict[str, Any] = Field(
|
|
235
|
+
...,
|
|
236
|
+
description="The exported prompt JSON data"
|
|
237
|
+
)
|
|
238
|
+
options: Optional[PromptImportOptions] = Field(
|
|
239
|
+
default_factory=PromptImportOptions,
|
|
240
|
+
description="Import options"
|
|
241
|
+
)
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
class PromptImportResponse(BaseModel):
|
|
245
|
+
"""Schema for import response"""
|
|
246
|
+
success: bool
|
|
247
|
+
prompt_group_id: str = Field(alias="promptGroupId")
|
|
248
|
+
warnings: List[str] = Field(
|
|
249
|
+
default_factory=list,
|
|
250
|
+
description="Any warnings generated during import (e.g., command conflicts)"
|
|
251
|
+
)
|
|
252
|
+
|
|
253
|
+
class Config:
|
|
254
|
+
populate_by_name = True
|
|
255
|
+
by_alias = True
|
|
@@ -17,6 +17,7 @@ class ProjectResponse(BaseTimestampResponse):
|
|
|
17
17
|
description: Optional[str] = None
|
|
18
18
|
system_prompt: Optional[str] = Field(default=None, alias="systemPrompt")
|
|
19
19
|
default_agent_id: Optional[str] = Field(default=None, alias="defaultAgentId")
|
|
20
|
+
artifact_count: Optional[int] = Field(default=None, alias="artifactCount")
|
|
20
21
|
created_at: int = Field(alias="createdAt")
|
|
21
22
|
updated_at: Optional[int] = Field(default=None, alias="updatedAt")
|
|
22
23
|
|
|
@@ -4,8 +4,8 @@ Session-related response DTOs.
|
|
|
4
4
|
|
|
5
5
|
from pydantic import BaseModel, ConfigDict, Field
|
|
6
6
|
|
|
7
|
-
from
|
|
8
|
-
from
|
|
7
|
+
from solace_agent_mesh.shared.api.pagination import PaginationMeta
|
|
8
|
+
from solace_agent_mesh.shared.utils.types import SessionId, UserId
|
|
9
9
|
from .base_responses import BaseTimestampResponse
|
|
10
10
|
|
|
11
11
|
|
|
@@ -18,6 +18,7 @@ class SessionResponse(BaseTimestampResponse):
|
|
|
18
18
|
agent_id: str | None = Field(default=None, alias="agentId")
|
|
19
19
|
project_id: str | None = Field(default=None, alias="projectId")
|
|
20
20
|
project_name: str | None = Field(default=None, alias="projectName")
|
|
21
|
+
has_running_background_task: bool = Field(default=False, alias="hasRunningBackgroundTask")
|
|
21
22
|
created_time: int = Field(alias="createdTime")
|
|
22
23
|
updated_time: int | None = Field(default=None, alias="updatedTime")
|
|
23
24
|
|