solace-agent-mesh 1.11.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.
- solace_agent_mesh/__init__.py +0 -0
- solace_agent_mesh/agent/__init__.py +0 -0
- solace_agent_mesh/agent/adk/__init__.py +0 -0
- solace_agent_mesh/agent/adk/adk_llm.txt +226 -0
- solace_agent_mesh/agent/adk/adk_llm_detail.txt +566 -0
- solace_agent_mesh/agent/adk/alembic/README +74 -0
- solace_agent_mesh/agent/adk/alembic/env.py +77 -0
- solace_agent_mesh/agent/adk/alembic/script.py.mako +28 -0
- solace_agent_mesh/agent/adk/alembic/versions/e2902798564d_adk_session_db_upgrade.py +52 -0
- solace_agent_mesh/agent/adk/alembic.ini +112 -0
- solace_agent_mesh/agent/adk/app_llm_agent.py +52 -0
- solace_agent_mesh/agent/adk/artifacts/__init__.py +1 -0
- solace_agent_mesh/agent/adk/artifacts/artifacts_llm.txt +171 -0
- solace_agent_mesh/agent/adk/artifacts/filesystem_artifact_service.py +545 -0
- solace_agent_mesh/agent/adk/artifacts/s3_artifact_service.py +609 -0
- solace_agent_mesh/agent/adk/callbacks.py +2318 -0
- solace_agent_mesh/agent/adk/embed_resolving_mcp_toolset.py +406 -0
- solace_agent_mesh/agent/adk/intelligent_mcp_callbacks.py +415 -0
- solace_agent_mesh/agent/adk/mcp_content_processor.py +666 -0
- solace_agent_mesh/agent/adk/models/lite_llm.py +1026 -0
- solace_agent_mesh/agent/adk/models/models_llm.txt +189 -0
- solace_agent_mesh/agent/adk/models/oauth2_token_manager.py +132 -0
- solace_agent_mesh/agent/adk/runner.py +390 -0
- solace_agent_mesh/agent/adk/schema_migration.py +88 -0
- solace_agent_mesh/agent/adk/services.py +468 -0
- solace_agent_mesh/agent/adk/setup.py +1325 -0
- solace_agent_mesh/agent/adk/stream_parser.py +415 -0
- solace_agent_mesh/agent/adk/tool_wrapper.py +165 -0
- solace_agent_mesh/agent/agent_llm.txt +369 -0
- solace_agent_mesh/agent/agent_llm_detail.txt +1702 -0
- solace_agent_mesh/agent/protocol/__init__.py +0 -0
- solace_agent_mesh/agent/protocol/event_handlers.py +2041 -0
- solace_agent_mesh/agent/protocol/protocol_llm.txt +81 -0
- solace_agent_mesh/agent/protocol/protocol_llm_detail.txt +92 -0
- solace_agent_mesh/agent/proxies/__init__.py +0 -0
- solace_agent_mesh/agent/proxies/a2a/__init__.py +3 -0
- solace_agent_mesh/agent/proxies/a2a/a2a_llm.txt +190 -0
- solace_agent_mesh/agent/proxies/a2a/app.py +56 -0
- solace_agent_mesh/agent/proxies/a2a/component.py +1585 -0
- solace_agent_mesh/agent/proxies/a2a/config.py +216 -0
- solace_agent_mesh/agent/proxies/a2a/oauth_token_cache.py +104 -0
- solace_agent_mesh/agent/proxies/base/__init__.py +3 -0
- solace_agent_mesh/agent/proxies/base/app.py +100 -0
- solace_agent_mesh/agent/proxies/base/base_llm.txt +148 -0
- solace_agent_mesh/agent/proxies/base/component.py +816 -0
- solace_agent_mesh/agent/proxies/base/config.py +85 -0
- solace_agent_mesh/agent/proxies/base/proxy_task_context.py +19 -0
- solace_agent_mesh/agent/proxies/proxies_llm.txt +283 -0
- solace_agent_mesh/agent/sac/__init__.py +0 -0
- solace_agent_mesh/agent/sac/app.py +595 -0
- solace_agent_mesh/agent/sac/component.py +3668 -0
- solace_agent_mesh/agent/sac/patch_adk.py +103 -0
- solace_agent_mesh/agent/sac/sac_llm.txt +189 -0
- solace_agent_mesh/agent/sac/sac_llm_detail.txt +200 -0
- solace_agent_mesh/agent/sac/task_execution_context.py +415 -0
- solace_agent_mesh/agent/testing/__init__.py +3 -0
- solace_agent_mesh/agent/testing/debug_utils.py +135 -0
- solace_agent_mesh/agent/testing/testing_llm.txt +58 -0
- solace_agent_mesh/agent/testing/testing_llm_detail.txt +68 -0
- solace_agent_mesh/agent/tools/__init__.py +16 -0
- solace_agent_mesh/agent/tools/audio_tools.py +1740 -0
- solace_agent_mesh/agent/tools/builtin_artifact_tools.py +2500 -0
- solace_agent_mesh/agent/tools/builtin_data_analysis_tools.py +244 -0
- solace_agent_mesh/agent/tools/dynamic_tool.py +396 -0
- solace_agent_mesh/agent/tools/general_agent_tools.py +572 -0
- solace_agent_mesh/agent/tools/image_tools.py +1185 -0
- solace_agent_mesh/agent/tools/peer_agent_tool.py +363 -0
- solace_agent_mesh/agent/tools/registry.py +38 -0
- solace_agent_mesh/agent/tools/test_tools.py +136 -0
- solace_agent_mesh/agent/tools/time_tools.py +126 -0
- solace_agent_mesh/agent/tools/tool_config_types.py +93 -0
- solace_agent_mesh/agent/tools/tool_definition.py +53 -0
- solace_agent_mesh/agent/tools/tools_llm.txt +276 -0
- solace_agent_mesh/agent/tools/tools_llm_detail.txt +275 -0
- solace_agent_mesh/agent/tools/web_tools.py +392 -0
- solace_agent_mesh/agent/utils/__init__.py +0 -0
- solace_agent_mesh/agent/utils/artifact_helpers.py +1353 -0
- solace_agent_mesh/agent/utils/config_parser.py +49 -0
- solace_agent_mesh/agent/utils/context_helpers.py +77 -0
- solace_agent_mesh/agent/utils/utils_llm.txt +152 -0
- solace_agent_mesh/agent/utils/utils_llm_detail.txt +149 -0
- solace_agent_mesh/assets/docs/404.html +16 -0
- solace_agent_mesh/assets/docs/assets/css/styles.8162edfb.css +1 -0
- solace_agent_mesh/assets/docs/assets/images/Solace_AI_Framework_With_Broker-85f0a306a9bcdd20b390b7a949f6d862.png +0 -0
- solace_agent_mesh/assets/docs/assets/images/sam-enterprise-credentials-b269f095349473118b2b33bdfcc40122.png +0 -0
- solace_agent_mesh/assets/docs/assets/js/032c2d61.f3d37824.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/05749d90.19ac4f35.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/0bcf40b7.c019ad46.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/1001.0182a8bd.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/1039.0bd46aa1.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/149.b797a808.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/15ba94aa.92fea363.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/15e40e79.434bb30f.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/165.6a39807d.js +2 -0
- solace_agent_mesh/assets/docs/assets/js/165.6a39807d.js.LICENSE.txt +9 -0
- solace_agent_mesh/assets/docs/assets/js/17896441.e612dfb4.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/2130.ab9fd314.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/2131ec11.5c7a1f6e.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/2237.5e477fc6.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/2279.550aa580.js +2 -0
- solace_agent_mesh/assets/docs/assets/js/2279.550aa580.js.LICENSE.txt +13 -0
- solace_agent_mesh/assets/docs/assets/js/2334.1cf50a20.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/240a0364.9ad94d1b.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/2987107d.a80604f9.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/2e32b5e0.33f5d75b.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/3219.adc1d663.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/341393d4.0fac2613.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/3624.0eaa1fd0.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/375.708d48db.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/3834.b6cd790e.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/3a6c6137.f5940cfa.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/3ac1795d.28b7c67b.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/3ff0015d.2ddc75c0.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/41adc471.48b12a4e.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/4250.95455b28.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/4356.d169ab5b.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/4458.518e66fa.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/4488.c7cc3442.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/4494.6ee23046.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/4855.fc4444b6.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/4866.22daefc0.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/4950.ca4caeda.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/509e993c.a1fbf45a.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/5388.7a136447.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/547e15cc.2f7790c1.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/55b7b518.29d6e75d.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/5607.081356f8.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/5864.b0d0e9de.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/5c2bd65f.90a87880.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/5e95c892.558d5167.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6063ff4c.ef84f702.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/60702c0e.a8bdd79b.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6143.0a1464c9.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/631738c7.fa471607.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6395.e9c73649.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/64195356.c498c4d0.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/66d4869e.b77431fc.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6796.51d2c9b7.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6976.379be23b.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6978.ee0b945c.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6a520c9d.b6e3f2ce.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6aaedf65.7253541d.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6ad8f0bd.a5b36a60.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6d84eae0.fd23ba4a.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/6fdfefc7.99de744e.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/7040.cb436723.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/7195.412f418a.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/71da7b71.374b9d54.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/722f809d.965da774.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/7280.3fb73bdb.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/742f027b.46c07808.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/77cf947d.48cb18a2.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/7845.e33e7c4c.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/7900.69516146.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/8024126c.fa0e7186.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/81a99df0.2484b8d9.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/82fbfb93.161823a5.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/8356.8a379c04.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/8567.4732c6b7.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/8573.cb04eda5.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/8577.1d54e766.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/8591.5d015485.js +2 -0
- solace_agent_mesh/assets/docs/assets/js/8591.5d015485.js.LICENSE.txt +61 -0
- solace_agent_mesh/assets/docs/assets/js/8709.7ecd4047.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/8731.6c1dbf0c.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/8908.f9d1b506.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/8b032486.91a91afc.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/9157.b4093d07.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/924ffdeb.975e428a.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/9278.a4fd875d.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/945fb41e.6f4cdffd.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/94e8668d.16083b3f.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/9616.b75c2f6d.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/9793.c6d16376.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/9bb13469.b2333011.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/9e9d0a82.570c057b.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/a7bd4aaa.2204d2f7.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/a94703ab.3e5fbcb3.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/ab9708a8.245ae0ef.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/aba21aa0.c42a534c.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/ad71b5ed.af3ecfd1.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/ad87452a.9d73dad6.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/c198a0dc.8f31f867.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/ceb2a7a6.5d92d7d0.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/da0b5bad.b62f7b08.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/db5d6442.3daf1696.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/db924877.e98d12a1.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/dd817ffc.c37a755e.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/dd81e2b8.b682e9c2.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/de5f4c65.e8241890.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/de915948.44a432bc.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/e04b235d.52cb25ed.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/e1b6eeb4.b1068f9b.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/e3d9abda.1476f570.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/e6f9706b.4488e34c.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/e92d0134.3bda61dd.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/f284c35a.250993bf.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/ff4d71f2.74710fc1.js +1 -0
- solace_agent_mesh/assets/docs/assets/js/main.7acf7ace.js +2 -0
- solace_agent_mesh/assets/docs/assets/js/main.7acf7ace.js.LICENSE.txt +81 -0
- solace_agent_mesh/assets/docs/assets/js/runtime~main.9e0813a2.js +1 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/agents/index.html +154 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/artifact-management/index.html +99 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/audio-tools/index.html +90 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/data-analysis-tools/index.html +107 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/embeds/index.html +166 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/builtin-tools/index.html +101 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/cli/index.html +219 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/gateways/index.html +92 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/index.html +29 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/orchestrator/index.html +55 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/plugins/index.html +110 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/projects/index.html +182 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/prompts/index.html +147 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/proxies/index.html +345 -0
- solace_agent_mesh/assets/docs/docs/documentation/components/speech/index.html +52 -0
- solace_agent_mesh/assets/docs/docs/documentation/deploying/debugging/index.html +83 -0
- solace_agent_mesh/assets/docs/docs/documentation/deploying/deployment-options/index.html +84 -0
- solace_agent_mesh/assets/docs/docs/documentation/deploying/index.html +25 -0
- solace_agent_mesh/assets/docs/docs/documentation/deploying/kubernetes-deployment/index.html +47 -0
- solace_agent_mesh/assets/docs/docs/documentation/deploying/logging/index.html +85 -0
- solace_agent_mesh/assets/docs/docs/documentation/deploying/observability/index.html +60 -0
- 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 +144 -0
- solace_agent_mesh/assets/docs/docs/documentation/developing/create-gateways/index.html +191 -0
- solace_agent_mesh/assets/docs/docs/documentation/developing/creating-python-tools/index.html +128 -0
- solace_agent_mesh/assets/docs/docs/documentation/developing/creating-service-providers/index.html +54 -0
- solace_agent_mesh/assets/docs/docs/documentation/developing/evaluations/index.html +135 -0
- solace_agent_mesh/assets/docs/docs/documentation/developing/index.html +34 -0
- solace_agent_mesh/assets/docs/docs/documentation/developing/structure/index.html +55 -0
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/bedrock-agents/index.html +267 -0
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/custom-agent/index.html +142 -0
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/event-mesh-gateway/index.html +116 -0
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/mcp-integration/index.html +86 -0
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/mongodb-integration/index.html +164 -0
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/rag-integration/index.html +140 -0
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/rest-gateway/index.html +57 -0
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/slack-integration/index.html +72 -0
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/sql-database/index.html +102 -0
- solace_agent_mesh/assets/docs/docs/documentation/developing/tutorials/teams-integration/index.html +115 -0
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/agent-builder/index.html +86 -0
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/connectors/index.html +67 -0
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/index.html +37 -0
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/installation/index.html +86 -0
- 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 +247 -0
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/secure-user-delegated-access/index.html +440 -0
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/single-sign-on/index.html +184 -0
- solace_agent_mesh/assets/docs/docs/documentation/enterprise/wheel-installation/index.html +62 -0
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/architecture/index.html +75 -0
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/index.html +54 -0
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/introduction/index.html +85 -0
- solace_agent_mesh/assets/docs/docs/documentation/getting-started/try-agent-mesh/index.html +41 -0
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/artifact-storage/index.html +290 -0
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/configurations/index.html +78 -0
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/index.html +25 -0
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/installation/index.html +78 -0
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/large_language_models/index.html +160 -0
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/run-project/index.html +142 -0
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/session-storage/index.html +251 -0
- solace_agent_mesh/assets/docs/docs/documentation/installing-and-configuring/user-feedback/index.html +88 -0
- solace_agent_mesh/assets/docs/docs/documentation/migrations/a2a-upgrade/a2a-gateway-upgrade-to-0.3.0/index.html +100 -0
- solace_agent_mesh/assets/docs/docs/documentation/migrations/a2a-upgrade/a2a-technical-migration-map/index.html +52 -0
- solace_agent_mesh/assets/docs/img/Solace_AI_Framework_With_Broker.png +0 -0
- solace_agent_mesh/assets/docs/img/logo.png +0 -0
- solace_agent_mesh/assets/docs/img/sac-flows.png +0 -0
- solace_agent_mesh/assets/docs/img/sac_parts_of_a_component.png +0 -0
- solace_agent_mesh/assets/docs/img/sam-enterprise-credentials.png +0 -0
- solace_agent_mesh/assets/docs/img/solace-logo-text.svg +18 -0
- solace_agent_mesh/assets/docs/img/solace-logo.png +0 -0
- solace_agent_mesh/assets/docs/lunr-index-1765810064709.json +1 -0
- solace_agent_mesh/assets/docs/lunr-index.json +1 -0
- solace_agent_mesh/assets/docs/search-doc-1765810064709.json +1 -0
- solace_agent_mesh/assets/docs/search-doc.json +1 -0
- solace_agent_mesh/assets/docs/sitemap.xml +1 -0
- solace_agent_mesh/cli/__init__.py +1 -0
- solace_agent_mesh/cli/commands/__init__.py +0 -0
- solace_agent_mesh/cli/commands/add_cmd/__init__.py +15 -0
- solace_agent_mesh/cli/commands/add_cmd/add_cmd_llm.txt +250 -0
- solace_agent_mesh/cli/commands/add_cmd/agent_cmd.py +729 -0
- solace_agent_mesh/cli/commands/add_cmd/gateway_cmd.py +322 -0
- solace_agent_mesh/cli/commands/add_cmd/web_add_agent_step.py +102 -0
- solace_agent_mesh/cli/commands/add_cmd/web_add_gateway_step.py +114 -0
- solace_agent_mesh/cli/commands/docs_cmd.py +60 -0
- solace_agent_mesh/cli/commands/eval_cmd.py +46 -0
- solace_agent_mesh/cli/commands/init_cmd/__init__.py +439 -0
- solace_agent_mesh/cli/commands/init_cmd/broker_step.py +201 -0
- solace_agent_mesh/cli/commands/init_cmd/database_step.py +91 -0
- solace_agent_mesh/cli/commands/init_cmd/directory_step.py +28 -0
- solace_agent_mesh/cli/commands/init_cmd/env_step.py +238 -0
- solace_agent_mesh/cli/commands/init_cmd/init_cmd_llm.txt +365 -0
- solace_agent_mesh/cli/commands/init_cmd/orchestrator_step.py +464 -0
- solace_agent_mesh/cli/commands/init_cmd/project_files_step.py +38 -0
- solace_agent_mesh/cli/commands/init_cmd/web_init_step.py +119 -0
- solace_agent_mesh/cli/commands/init_cmd/webui_gateway_step.py +215 -0
- solace_agent_mesh/cli/commands/plugin_cmd/__init__.py +20 -0
- solace_agent_mesh/cli/commands/plugin_cmd/add_cmd.py +137 -0
- solace_agent_mesh/cli/commands/plugin_cmd/build_cmd.py +86 -0
- solace_agent_mesh/cli/commands/plugin_cmd/catalog_cmd.py +144 -0
- solace_agent_mesh/cli/commands/plugin_cmd/create_cmd.py +306 -0
- solace_agent_mesh/cli/commands/plugin_cmd/install_cmd.py +283 -0
- solace_agent_mesh/cli/commands/plugin_cmd/official_registry.py +175 -0
- solace_agent_mesh/cli/commands/plugin_cmd/plugin_cmd_llm.txt +305 -0
- solace_agent_mesh/cli/commands/run_cmd.py +215 -0
- solace_agent_mesh/cli/main.py +52 -0
- solace_agent_mesh/cli/utils.py +262 -0
- solace_agent_mesh/client/webui/frontend/static/assets/authCallback-Dj3JtK42.js +1 -0
- solace_agent_mesh/client/webui/frontend/static/assets/client-ZKk9kEJ5.js +25 -0
- solace_agent_mesh/client/webui/frontend/static/assets/favicon-BLgzUch9.ico +0 -0
- solace_agent_mesh/client/webui/frontend/static/assets/main-BcUaNZ-Q.css +1 -0
- solace_agent_mesh/client/webui/frontend/static/assets/main-vjch4RYc.js +435 -0
- solace_agent_mesh/client/webui/frontend/static/assets/vendor-BNV4kZN0.js +535 -0
- solace_agent_mesh/client/webui/frontend/static/auth-callback.html +15 -0
- solace_agent_mesh/client/webui/frontend/static/index.html +16 -0
- 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/__init__.py +1 -0
- solace_agent_mesh/common/a2a/__init__.py +241 -0
- solace_agent_mesh/common/a2a/a2a_llm.txt +175 -0
- solace_agent_mesh/common/a2a/a2a_llm_detail.txt +193 -0
- solace_agent_mesh/common/a2a/artifact.py +368 -0
- solace_agent_mesh/common/a2a/events.py +213 -0
- solace_agent_mesh/common/a2a/message.py +375 -0
- solace_agent_mesh/common/a2a/protocol.py +689 -0
- solace_agent_mesh/common/a2a/task.py +127 -0
- solace_agent_mesh/common/a2a/translation.py +655 -0
- solace_agent_mesh/common/a2a/types.py +55 -0
- solace_agent_mesh/common/a2a_spec/a2a.json +2576 -0
- solace_agent_mesh/common/a2a_spec/a2a_spec_llm.txt +445 -0
- solace_agent_mesh/common/a2a_spec/a2a_spec_llm_detail.txt +736 -0
- solace_agent_mesh/common/a2a_spec/schemas/agent_progress_update.json +18 -0
- solace_agent_mesh/common/a2a_spec/schemas/artifact_creation_progress.json +48 -0
- solace_agent_mesh/common/a2a_spec/schemas/feedback_event.json +51 -0
- solace_agent_mesh/common/a2a_spec/schemas/llm_invocation.json +41 -0
- solace_agent_mesh/common/a2a_spec/schemas/schemas_llm.txt +330 -0
- solace_agent_mesh/common/a2a_spec/schemas/tool_invocation_start.json +26 -0
- solace_agent_mesh/common/a2a_spec/schemas/tool_result.json +48 -0
- solace_agent_mesh/common/agent_registry.py +122 -0
- solace_agent_mesh/common/common_llm.txt +230 -0
- solace_agent_mesh/common/common_llm_detail.txt +2562 -0
- solace_agent_mesh/common/constants.py +6 -0
- solace_agent_mesh/common/data_parts.py +150 -0
- solace_agent_mesh/common/exceptions.py +49 -0
- solace_agent_mesh/common/middleware/__init__.py +12 -0
- solace_agent_mesh/common/middleware/config_resolver.py +132 -0
- solace_agent_mesh/common/middleware/middleware_llm.txt +174 -0
- solace_agent_mesh/common/middleware/middleware_llm_detail.txt +185 -0
- solace_agent_mesh/common/middleware/registry.py +127 -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/sac/__init__.py +0 -0
- solace_agent_mesh/common/sac/sac_llm.txt +71 -0
- solace_agent_mesh/common/sac/sac_llm_detail.txt +82 -0
- solace_agent_mesh/common/sac/sam_component_base.py +730 -0
- solace_agent_mesh/common/sam_events/__init__.py +9 -0
- solace_agent_mesh/common/sam_events/event_service.py +208 -0
- solace_agent_mesh/common/sam_events/sam_events_llm.txt +104 -0
- solace_agent_mesh/common/sam_events/sam_events_llm_detail.txt +115 -0
- solace_agent_mesh/common/services/__init__.py +4 -0
- solace_agent_mesh/common/services/employee_service.py +164 -0
- solace_agent_mesh/common/services/identity_service.py +134 -0
- solace_agent_mesh/common/services/providers/__init__.py +4 -0
- solace_agent_mesh/common/services/providers/local_file_identity_service.py +151 -0
- solace_agent_mesh/common/services/providers/providers_llm.txt +81 -0
- solace_agent_mesh/common/services/services_llm.txt +368 -0
- solace_agent_mesh/common/services/services_llm_detail.txt +459 -0
- solace_agent_mesh/common/utils/__init__.py +7 -0
- solace_agent_mesh/common/utils/artifact_utils.py +31 -0
- solace_agent_mesh/common/utils/asyncio_macos_fix.py +88 -0
- solace_agent_mesh/common/utils/embeds/__init__.py +33 -0
- solace_agent_mesh/common/utils/embeds/constants.py +56 -0
- solace_agent_mesh/common/utils/embeds/converter.py +447 -0
- solace_agent_mesh/common/utils/embeds/embeds_llm.txt +220 -0
- solace_agent_mesh/common/utils/embeds/evaluators.py +395 -0
- solace_agent_mesh/common/utils/embeds/modifiers.py +793 -0
- solace_agent_mesh/common/utils/embeds/resolver.py +967 -0
- solace_agent_mesh/common/utils/embeds/types.py +23 -0
- solace_agent_mesh/common/utils/in_memory_cache.py +108 -0
- solace_agent_mesh/common/utils/initializer.py +52 -0
- solace_agent_mesh/common/utils/log_formatters.py +64 -0
- solace_agent_mesh/common/utils/message_utils.py +80 -0
- solace_agent_mesh/common/utils/mime_helpers.py +172 -0
- solace_agent_mesh/common/utils/push_notification_auth.py +135 -0
- solace_agent_mesh/common/utils/pydantic_utils.py +159 -0
- 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/common/utils/type_utils.py +28 -0
- solace_agent_mesh/common/utils/utils_llm.txt +335 -0
- solace_agent_mesh/common/utils/utils_llm_detail.txt +572 -0
- solace_agent_mesh/config_portal/__init__.py +0 -0
- solace_agent_mesh/config_portal/backend/__init__.py +0 -0
- solace_agent_mesh/config_portal/backend/common.py +77 -0
- solace_agent_mesh/config_portal/backend/plugin_catalog/__init__.py +0 -0
- solace_agent_mesh/config_portal/backend/plugin_catalog/constants.py +24 -0
- solace_agent_mesh/config_portal/backend/plugin_catalog/models.py +49 -0
- solace_agent_mesh/config_portal/backend/plugin_catalog/registry_manager.py +166 -0
- solace_agent_mesh/config_portal/backend/plugin_catalog/scraper.py +521 -0
- solace_agent_mesh/config_portal/backend/plugin_catalog_server.py +217 -0
- solace_agent_mesh/config_portal/backend/server.py +644 -0
- solace_agent_mesh/config_portal/frontend/static/client/Solace_community_logo.png +0 -0
- solace_agent_mesh/config_portal/frontend/static/client/assets/_index-DiOiAjzL.js +103 -0
- solace_agent_mesh/config_portal/frontend/static/client/assets/components-Rk0n-9cK.js +140 -0
- solace_agent_mesh/config_portal/frontend/static/client/assets/entry.client-mvZjNKiz.js +19 -0
- solace_agent_mesh/config_portal/frontend/static/client/assets/index-DzNKzXrc.js +68 -0
- solace_agent_mesh/config_portal/frontend/static/client/assets/manifest-ba77705e.js +1 -0
- solace_agent_mesh/config_portal/frontend/static/client/assets/root-B17tZKK7.css +1 -0
- solace_agent_mesh/config_portal/frontend/static/client/assets/root-V2BeTIUc.js +10 -0
- solace_agent_mesh/config_portal/frontend/static/client/favicon.ico +0 -0
- solace_agent_mesh/config_portal/frontend/static/client/index.html +7 -0
- solace_agent_mesh/core_a2a/__init__.py +1 -0
- solace_agent_mesh/core_a2a/core_a2a_llm.txt +90 -0
- solace_agent_mesh/core_a2a/core_a2a_llm_detail.txt +101 -0
- solace_agent_mesh/core_a2a/service.py +307 -0
- solace_agent_mesh/evaluation/__init__.py +0 -0
- solace_agent_mesh/evaluation/evaluator.py +691 -0
- solace_agent_mesh/evaluation/message_organizer.py +553 -0
- solace_agent_mesh/evaluation/report/benchmark_info.html +35 -0
- solace_agent_mesh/evaluation/report/chart_section.html +141 -0
- solace_agent_mesh/evaluation/report/detailed_breakdown.html +28 -0
- solace_agent_mesh/evaluation/report/modal.html +59 -0
- solace_agent_mesh/evaluation/report/modal_chart_functions.js +411 -0
- solace_agent_mesh/evaluation/report/modal_script.js +296 -0
- solace_agent_mesh/evaluation/report/modal_styles.css +340 -0
- solace_agent_mesh/evaluation/report/performance_metrics_styles.css +93 -0
- solace_agent_mesh/evaluation/report/templates/footer.html +2 -0
- solace_agent_mesh/evaluation/report/templates/header.html +340 -0
- solace_agent_mesh/evaluation/report_data_processor.py +970 -0
- solace_agent_mesh/evaluation/report_generator.py +607 -0
- solace_agent_mesh/evaluation/run.py +954 -0
- solace_agent_mesh/evaluation/shared/__init__.py +92 -0
- solace_agent_mesh/evaluation/shared/constants.py +47 -0
- solace_agent_mesh/evaluation/shared/exceptions.py +50 -0
- solace_agent_mesh/evaluation/shared/helpers.py +35 -0
- solace_agent_mesh/evaluation/shared/test_case_loader.py +167 -0
- solace_agent_mesh/evaluation/shared/test_suite_loader.py +280 -0
- solace_agent_mesh/evaluation/subscriber.py +776 -0
- solace_agent_mesh/evaluation/summary_builder.py +880 -0
- solace_agent_mesh/gateway/__init__.py +0 -0
- solace_agent_mesh/gateway/adapter/__init__.py +1 -0
- solace_agent_mesh/gateway/adapter/base.py +143 -0
- solace_agent_mesh/gateway/adapter/types.py +221 -0
- solace_agent_mesh/gateway/base/__init__.py +1 -0
- solace_agent_mesh/gateway/base/app.py +345 -0
- solace_agent_mesh/gateway/base/base_llm.txt +226 -0
- solace_agent_mesh/gateway/base/base_llm_detail.txt +235 -0
- solace_agent_mesh/gateway/base/component.py +2030 -0
- solace_agent_mesh/gateway/base/task_context.py +75 -0
- solace_agent_mesh/gateway/gateway_llm.txt +369 -0
- solace_agent_mesh/gateway/gateway_llm_detail.txt +3885 -0
- solace_agent_mesh/gateway/generic/__init__.py +1 -0
- solace_agent_mesh/gateway/generic/app.py +50 -0
- solace_agent_mesh/gateway/generic/component.py +727 -0
- solace_agent_mesh/gateway/http_sse/__init__.py +0 -0
- solace_agent_mesh/gateway/http_sse/alembic/alembic_llm.txt +345 -0
- solace_agent_mesh/gateway/http_sse/alembic/env.py +87 -0
- solace_agent_mesh/gateway/http_sse/alembic/script.py.mako +28 -0
- solace_agent_mesh/gateway/http_sse/alembic/versions/20250910_d5b3f8f2e9a0_create_initial_database.py +58 -0
- solace_agent_mesh/gateway/http_sse/alembic/versions/20250911_b1c2d3e4f5g6_add_database_indexes.py +83 -0
- solace_agent_mesh/gateway/http_sse/alembic/versions/20250916_f6e7d8c9b0a1_convert_timestamps_to_epoch_and_align_columns.py +412 -0
- solace_agent_mesh/gateway/http_sse/alembic/versions/20251006_98882922fa59_add_tasks_events_feedback_chat_tasks.py +190 -0
- solace_agent_mesh/gateway/http_sse/alembic/versions/20251015_add_session_performance_indexes.py +70 -0
- solace_agent_mesh/gateway/http_sse/alembic/versions/20251023_add_project_users_table.py +72 -0
- solace_agent_mesh/gateway/http_sse/alembic/versions/20251023_add_soft_delete_and_search.py +109 -0
- solace_agent_mesh/gateway/http_sse/alembic/versions/20251024_add_default_agent_to_projects.py +26 -0
- solace_agent_mesh/gateway/http_sse/alembic/versions/20251024_add_projects_table.py +135 -0
- solace_agent_mesh/gateway/http_sse/alembic/versions/20251108_create_prompt_tables_with_sharing.py +154 -0
- solace_agent_mesh/gateway/http_sse/alembic/versions/20251115_add_parent_task_id.py +32 -0
- solace_agent_mesh/gateway/http_sse/alembic/versions/20251126_add_background_task_fields.py +47 -0
- solace_agent_mesh/gateway/http_sse/alembic/versions/20251202_add_versioned_fields_to_prompts.py +52 -0
- solace_agent_mesh/gateway/http_sse/alembic/versions/versions_llm.txt +161 -0
- solace_agent_mesh/gateway/http_sse/alembic.ini +109 -0
- solace_agent_mesh/gateway/http_sse/app.py +351 -0
- solace_agent_mesh/gateway/http_sse/component.py +2360 -0
- solace_agent_mesh/gateway/http_sse/components/__init__.py +7 -0
- solace_agent_mesh/gateway/http_sse/components/components_llm.txt +105 -0
- solace_agent_mesh/gateway/http_sse/components/task_logger_forwarder.py +109 -0
- solace_agent_mesh/gateway/http_sse/components/visualization_forwarder_component.py +110 -0
- solace_agent_mesh/gateway/http_sse/dependencies.py +653 -0
- solace_agent_mesh/gateway/http_sse/http_sse_llm.txt +299 -0
- solace_agent_mesh/gateway/http_sse/http_sse_llm_detail.txt +3278 -0
- solace_agent_mesh/gateway/http_sse/main.py +789 -0
- solace_agent_mesh/gateway/http_sse/repository/__init__.py +46 -0
- solace_agent_mesh/gateway/http_sse/repository/chat_task_repository.py +102 -0
- solace_agent_mesh/gateway/http_sse/repository/entities/__init__.py +11 -0
- solace_agent_mesh/gateway/http_sse/repository/entities/chat_task.py +75 -0
- solace_agent_mesh/gateway/http_sse/repository/entities/entities_llm.txt +221 -0
- solace_agent_mesh/gateway/http_sse/repository/entities/feedback.py +20 -0
- solace_agent_mesh/gateway/http_sse/repository/entities/project.py +81 -0
- solace_agent_mesh/gateway/http_sse/repository/entities/project_user.py +47 -0
- solace_agent_mesh/gateway/http_sse/repository/entities/session.py +66 -0
- solace_agent_mesh/gateway/http_sse/repository/entities/session_history.py +0 -0
- solace_agent_mesh/gateway/http_sse/repository/entities/task.py +32 -0
- solace_agent_mesh/gateway/http_sse/repository/entities/task_event.py +21 -0
- solace_agent_mesh/gateway/http_sse/repository/feedback_repository.py +125 -0
- solace_agent_mesh/gateway/http_sse/repository/interfaces.py +239 -0
- solace_agent_mesh/gateway/http_sse/repository/models/__init__.py +34 -0
- solace_agent_mesh/gateway/http_sse/repository/models/base.py +7 -0
- solace_agent_mesh/gateway/http_sse/repository/models/chat_task_model.py +31 -0
- solace_agent_mesh/gateway/http_sse/repository/models/feedback_model.py +21 -0
- solace_agent_mesh/gateway/http_sse/repository/models/models_llm.txt +257 -0
- solace_agent_mesh/gateway/http_sse/repository/models/project_model.py +51 -0
- solace_agent_mesh/gateway/http_sse/repository/models/project_user_model.py +75 -0
- solace_agent_mesh/gateway/http_sse/repository/models/prompt_model.py +159 -0
- solace_agent_mesh/gateway/http_sse/repository/models/session_model.py +53 -0
- solace_agent_mesh/gateway/http_sse/repository/models/task_event_model.py +25 -0
- solace_agent_mesh/gateway/http_sse/repository/models/task_model.py +39 -0
- solace_agent_mesh/gateway/http_sse/repository/project_repository.py +172 -0
- solace_agent_mesh/gateway/http_sse/repository/project_user_repository.py +186 -0
- solace_agent_mesh/gateway/http_sse/repository/repository_llm.txt +308 -0
- solace_agent_mesh/gateway/http_sse/repository/session_repository.py +268 -0
- solace_agent_mesh/gateway/http_sse/repository/task_repository.py +248 -0
- solace_agent_mesh/gateway/http_sse/routers/__init__.py +4 -0
- solace_agent_mesh/gateway/http_sse/routers/agent_cards.py +74 -0
- solace_agent_mesh/gateway/http_sse/routers/artifacts.py +1137 -0
- solace_agent_mesh/gateway/http_sse/routers/auth.py +311 -0
- solace_agent_mesh/gateway/http_sse/routers/config.py +371 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/__init__.py +10 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/dto_llm.txt +450 -0
- 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/__init__.py +15 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/requests/project_requests.py +48 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/requests/requests_llm.txt +133 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/requests/session_requests.py +33 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/requests/task_requests.py +58 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/responses/__init__.py +18 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/responses/base_responses.py +42 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/responses/project_responses.py +31 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/responses/responses_llm.txt +123 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/responses/session_responses.py +33 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/responses/task_responses.py +30 -0
- solace_agent_mesh/gateway/http_sse/routers/dto/responses/version_responses.py +31 -0
- solace_agent_mesh/gateway/http_sse/routers/feedback.py +168 -0
- solace_agent_mesh/gateway/http_sse/routers/people.py +38 -0
- solace_agent_mesh/gateway/http_sse/routers/projects.py +767 -0
- solace_agent_mesh/gateway/http_sse/routers/prompts.py +1415 -0
- solace_agent_mesh/gateway/http_sse/routers/routers_llm.txt +312 -0
- solace_agent_mesh/gateway/http_sse/routers/sessions.py +634 -0
- solace_agent_mesh/gateway/http_sse/routers/speech.py +355 -0
- solace_agent_mesh/gateway/http_sse/routers/sse.py +230 -0
- solace_agent_mesh/gateway/http_sse/routers/tasks.py +1089 -0
- solace_agent_mesh/gateway/http_sse/routers/users.py +83 -0
- solace_agent_mesh/gateway/http_sse/routers/version.py +343 -0
- solace_agent_mesh/gateway/http_sse/routers/visualization.py +1220 -0
- solace_agent_mesh/gateway/http_sse/services/__init__.py +4 -0
- solace_agent_mesh/gateway/http_sse/services/agent_card_service.py +71 -0
- 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 +273 -0
- solace_agent_mesh/gateway/http_sse/services/feedback_service.py +250 -0
- solace_agent_mesh/gateway/http_sse/services/people_service.py +78 -0
- solace_agent_mesh/gateway/http_sse/services/project_service.py +930 -0
- solace_agent_mesh/gateway/http_sse/services/prompt_builder_assistant.py +303 -0
- solace_agent_mesh/gateway/http_sse/services/services_llm.txt +303 -0
- solace_agent_mesh/gateway/http_sse/services/session_service.py +702 -0
- solace_agent_mesh/gateway/http_sse/services/task_logger_service.py +593 -0
- solace_agent_mesh/gateway/http_sse/services/task_service.py +119 -0
- solace_agent_mesh/gateway/http_sse/session_manager.py +219 -0
- solace_agent_mesh/gateway/http_sse/shared/__init__.py +146 -0
- solace_agent_mesh/gateway/http_sse/shared/auth_utils.py +29 -0
- solace_agent_mesh/gateway/http_sse/shared/base_repository.py +252 -0
- solace_agent_mesh/gateway/http_sse/shared/database_exceptions.py +274 -0
- solace_agent_mesh/gateway/http_sse/shared/database_helpers.py +43 -0
- solace_agent_mesh/gateway/http_sse/shared/enums.py +40 -0
- solace_agent_mesh/gateway/http_sse/shared/error_dto.py +107 -0
- solace_agent_mesh/gateway/http_sse/shared/exception_handlers.py +217 -0
- solace_agent_mesh/gateway/http_sse/shared/exceptions.py +192 -0
- solace_agent_mesh/gateway/http_sse/shared/pagination.py +138 -0
- solace_agent_mesh/gateway/http_sse/shared/response_utils.py +134 -0
- solace_agent_mesh/gateway/http_sse/shared/shared_llm.txt +319 -0
- solace_agent_mesh/gateway/http_sse/shared/timestamp_utils.py +97 -0
- solace_agent_mesh/gateway/http_sse/shared/types.py +50 -0
- solace_agent_mesh/gateway/http_sse/shared/utils.py +22 -0
- solace_agent_mesh/gateway/http_sse/sse_event_buffer.py +88 -0
- solace_agent_mesh/gateway/http_sse/sse_manager.py +491 -0
- solace_agent_mesh/gateway/http_sse/utils/__init__.py +1 -0
- solace_agent_mesh/gateway/http_sse/utils/artifact_copy_utils.py +370 -0
- solace_agent_mesh/gateway/http_sse/utils/stim_utils.py +72 -0
- solace_agent_mesh/gateway/http_sse/utils/utils_llm.txt +47 -0
- solace_agent_mesh/llm.txt +228 -0
- solace_agent_mesh/llm_detail.txt +2835 -0
- solace_agent_mesh/services/__init__.py +0 -0
- solace_agent_mesh/services/platform/__init__.py +18 -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 +147 -0
- solace_agent_mesh/services/platform/api/main.py +280 -0
- solace_agent_mesh/services/platform/api/middleware.py +51 -0
- solace_agent_mesh/services/platform/api/routers/__init__.py +24 -0
- solace_agent_mesh/services/platform/app.py +114 -0
- solace_agent_mesh/services/platform/component.py +235 -0
- solace_agent_mesh/solace_agent_mesh_llm.txt +362 -0
- solace_agent_mesh/solace_agent_mesh_llm_detail.txt +8599 -0
- solace_agent_mesh/templates/agent_template.yaml +53 -0
- solace_agent_mesh/templates/eval_backend_template.yaml +54 -0
- solace_agent_mesh/templates/gateway_app_template.py +75 -0
- solace_agent_mesh/templates/gateway_component_template.py +484 -0
- solace_agent_mesh/templates/gateway_config_template.yaml +38 -0
- solace_agent_mesh/templates/logging_config_template.yaml +48 -0
- solace_agent_mesh/templates/main_orchestrator.yaml +66 -0
- solace_agent_mesh/templates/plugin_agent_config_template.yaml +122 -0
- solace_agent_mesh/templates/plugin_custom_config_template.yaml +27 -0
- solace_agent_mesh/templates/plugin_custom_template.py +10 -0
- solace_agent_mesh/templates/plugin_gateway_config_template.yaml +60 -0
- solace_agent_mesh/templates/plugin_pyproject_template.toml +32 -0
- solace_agent_mesh/templates/plugin_readme_template.md +12 -0
- solace_agent_mesh/templates/plugin_tool_config_template.yaml +109 -0
- solace_agent_mesh/templates/plugin_tools_template.py +224 -0
- solace_agent_mesh/templates/shared_config.yaml +112 -0
- solace_agent_mesh/templates/templates_llm.txt +147 -0
- solace_agent_mesh/templates/webui.yaml +177 -0
- solace_agent_mesh-1.11.2.dist-info/METADATA +504 -0
- solace_agent_mesh-1.11.2.dist-info/RECORD +624 -0
- solace_agent_mesh-1.11.2.dist-info/WHEEL +4 -0
- solace_agent_mesh-1.11.2.dist-info/entry_points.txt +3 -0
- solace_agent_mesh-1.11.2.dist-info/licenses/LICENSE +201 -0
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
## Quick Summary
|
|
2
|
+
This directory contains SQLAlchemy ORM models and Pydantic schemas for database persistence in the HTTP SSE gateway. It provides models for managing chat sessions, tasks, task events, and user feedback with proper relationships and database schema definitions.
|
|
3
|
+
|
|
4
|
+
## Files Overview
|
|
5
|
+
- `__init__.py` - Package initialization exposing all SQLAlchemy and Pydantic models
|
|
6
|
+
- `base.py` - SQLAlchemy declarative base configuration
|
|
7
|
+
- `chat_task_model.py` - ChatTaskModel for storing chat tasks with session relationships
|
|
8
|
+
- `feedback_model.py` - FeedbackModel for storing user feedback on tasks
|
|
9
|
+
- `session_model.py` - SessionModel and Pydantic schemas for managing chat sessions
|
|
10
|
+
- `task_event_model.py` - TaskEventModel for storing A2A task events with task relationships
|
|
11
|
+
- `task_model.py` - TaskModel for managing tasks with event relationships and token usage tracking
|
|
12
|
+
|
|
13
|
+
## Developer API Reference
|
|
14
|
+
|
|
15
|
+
### __init__.py
|
|
16
|
+
**Purpose:** Package entry point that exposes all SQLAlchemy models and Pydantic schemas
|
|
17
|
+
**Import:** `from solace_agent_mesh.gateway.http_sse.repository.models import Base, ChatTaskModel, FeedbackModel, SessionModel, CreateSessionModel, UpdateSessionModel, TaskEventModel, TaskModel`
|
|
18
|
+
|
|
19
|
+
**Constants/Variables:**
|
|
20
|
+
- `__all__: List[str]` - Public API exports including all models and schemas
|
|
21
|
+
|
|
22
|
+
### base.py
|
|
23
|
+
**Purpose:** Provides the SQLAlchemy declarative base for all models
|
|
24
|
+
**Import:** `from solace_agent_mesh.gateway.http_sse.repository.models.base import Base`
|
|
25
|
+
|
|
26
|
+
**Constants/Variables:**
|
|
27
|
+
- `Base: DeclarativeMeta` - SQLAlchemy declarative base class for all models
|
|
28
|
+
|
|
29
|
+
**Usage Examples:**
|
|
30
|
+
```python
|
|
31
|
+
from solace_agent_mesh.gateway.http_sse.repository.models.base import Base
|
|
32
|
+
from sqlalchemy import create_engine
|
|
33
|
+
|
|
34
|
+
# Create all tables
|
|
35
|
+
engine = create_engine("sqlite:///example.db")
|
|
36
|
+
Base.metadata.create_all(engine)
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### chat_task_model.py
|
|
40
|
+
**Purpose:** SQLAlchemy model for storing chat tasks with session relationships
|
|
41
|
+
**Import:** `from solace_agent_mesh.gateway.http_sse.repository.models.chat_task_model import ChatTaskModel`
|
|
42
|
+
|
|
43
|
+
**Classes:**
|
|
44
|
+
- `ChatTaskModel(Base)` - SQLAlchemy model for chat tasks
|
|
45
|
+
- `id: Column[String]` - Primary key task identifier
|
|
46
|
+
- `session_id: Column[String]` - Foreign key to sessions table with CASCADE delete (indexed)
|
|
47
|
+
- `user_id: Column[String]` - User identifier (indexed)
|
|
48
|
+
- `user_message: Column[Text]` - Optional user message content
|
|
49
|
+
- `message_bubbles: Column[Text]` - Required message bubbles data
|
|
50
|
+
- `task_metadata: Column[Text]` - Optional task metadata
|
|
51
|
+
- `created_time: Column[BigInteger]` - Creation timestamp in epoch milliseconds (indexed)
|
|
52
|
+
- `updated_time: Column[BigInteger]` - Optional update timestamp
|
|
53
|
+
- `session: relationship` - SQLAlchemy relationship to SessionModel
|
|
54
|
+
|
|
55
|
+
**Usage Examples:**
|
|
56
|
+
```python
|
|
57
|
+
from solace_agent_mesh.gateway.http_sse.repository.models.chat_task_model import ChatTaskModel
|
|
58
|
+
from sqlalchemy.orm import sessionmaker
|
|
59
|
+
|
|
60
|
+
# Create a chat task
|
|
61
|
+
chat_task = ChatTaskModel(
|
|
62
|
+
id="task_123",
|
|
63
|
+
session_id="session_456",
|
|
64
|
+
user_id="user_789",
|
|
65
|
+
user_message="Hello, how can you help me?",
|
|
66
|
+
message_bubbles='[{"type": "user", "content": "Hello"}]',
|
|
67
|
+
task_metadata='{"priority": "high"}',
|
|
68
|
+
created_time=1640995200000,
|
|
69
|
+
updated_time=1640995260000
|
|
70
|
+
)
|
|
71
|
+
|
|
72
|
+
# Add to database
|
|
73
|
+
Session = sessionmaker(bind=engine)
|
|
74
|
+
db_session = Session()
|
|
75
|
+
db_session.add(chat_task)
|
|
76
|
+
db_session.commit()
|
|
77
|
+
|
|
78
|
+
# Access related session
|
|
79
|
+
session = chat_task.session
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### feedback_model.py
|
|
83
|
+
**Purpose:** SQLAlchemy model for storing user feedback on tasks
|
|
84
|
+
**Import:** `from solace_agent_mesh.gateway.http_sse.repository.models.feedback_model import FeedbackModel`
|
|
85
|
+
|
|
86
|
+
**Classes:**
|
|
87
|
+
- `FeedbackModel(Base)` - SQLAlchemy model for user feedback
|
|
88
|
+
- `id: Column[String]` - Primary key feedback identifier
|
|
89
|
+
- `session_id: Column[String]` - Session identifier
|
|
90
|
+
- `task_id: Column[String]` - Task identifier (indexed)
|
|
91
|
+
- `user_id: Column[String]` - User identifier (indexed)
|
|
92
|
+
- `rating: Column[String]` - Feedback rating (e.g., 'up', 'down')
|
|
93
|
+
- `comment: Column[Text]` - Optional feedback comment
|
|
94
|
+
- `created_time: Column[BigInteger]` - Creation timestamp in epoch milliseconds
|
|
95
|
+
|
|
96
|
+
**Usage Examples:**
|
|
97
|
+
```python
|
|
98
|
+
from solace_agent_mesh.gateway.http_sse.repository.models.feedback_model import FeedbackModel
|
|
99
|
+
from sqlalchemy.orm import sessionmaker
|
|
100
|
+
|
|
101
|
+
# Create feedback
|
|
102
|
+
feedback = FeedbackModel(
|
|
103
|
+
id="feedback_123",
|
|
104
|
+
session_id="session_456",
|
|
105
|
+
task_id="task_789",
|
|
106
|
+
user_id="user_123",
|
|
107
|
+
rating="up",
|
|
108
|
+
comment="Great response!",
|
|
109
|
+
created_time=1640995200000
|
|
110
|
+
)
|
|
111
|
+
|
|
112
|
+
# Add to database
|
|
113
|
+
Session = sessionmaker(bind=engine)
|
|
114
|
+
db_session = Session()
|
|
115
|
+
db_session.add(feedback)
|
|
116
|
+
db_session.commit()
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### session_model.py
|
|
120
|
+
**Purpose:** SQLAlchemy model and Pydantic schemas for managing chat sessions with chat task relationships
|
|
121
|
+
**Import:** `from solace_agent_mesh.gateway.http_sse.repository.models.session_model import SessionModel, CreateSessionModel, UpdateSessionModel`
|
|
122
|
+
|
|
123
|
+
**Classes:**
|
|
124
|
+
- `SessionModel(Base)` - SQLAlchemy model for chat sessions
|
|
125
|
+
- `id: Column[String]` - Primary key session identifier
|
|
126
|
+
- `name: Column[String]` - Optional session name
|
|
127
|
+
- `user_id: Column[String]` - Required user identifier
|
|
128
|
+
- `agent_id: Column[String]` - Optional agent identifier
|
|
129
|
+
- `created_time: Column[BigInteger]` - Creation timestamp (auto-generated)
|
|
130
|
+
- `updated_time: Column[BigInteger]` - Last update timestamp (auto-updated)
|
|
131
|
+
- `chat_tasks: relationship` - SQLAlchemy relationship to ChatTaskModel with cascade delete
|
|
132
|
+
|
|
133
|
+
- `CreateSessionModel(BaseModel)` - Pydantic model for creating sessions
|
|
134
|
+
- `id: str` - Session identifier
|
|
135
|
+
- `name: str | None` - Optional session name
|
|
136
|
+
- `user_id: str` - User identifier
|
|
137
|
+
- `agent_id: str | None` - Optional agent identifier
|
|
138
|
+
- `created_time: int` - Creation timestamp
|
|
139
|
+
- `updated_time: int` - Update timestamp
|
|
140
|
+
|
|
141
|
+
- `UpdateSessionModel(BaseModel)` - Pydantic model for updating sessions
|
|
142
|
+
- `name: str | None` - Optional updated session name
|
|
143
|
+
- `agent_id: str | None` - Optional updated agent identifier
|
|
144
|
+
- `updated_time: int` - Update timestamp
|
|
145
|
+
|
|
146
|
+
**Usage Examples:**
|
|
147
|
+
```python
|
|
148
|
+
from solace_agent_mesh.gateway.http_sse.repository.models.session_model import SessionModel, CreateSessionModel
|
|
149
|
+
from sqlalchemy.orm import sessionmaker
|
|
150
|
+
|
|
151
|
+
# Create using SQLAlchemy model
|
|
152
|
+
session = SessionModel(
|
|
153
|
+
id="session_123",
|
|
154
|
+
name="My Chat Session",
|
|
155
|
+
user_id="user_456",
|
|
156
|
+
agent_id="agent_789"
|
|
157
|
+
)
|
|
158
|
+
|
|
159
|
+
# Create using Pydantic model
|
|
160
|
+
create_data = CreateSessionModel(
|
|
161
|
+
id="session_124",
|
|
162
|
+
name="Another Session",
|
|
163
|
+
user_id="user_456",
|
|
164
|
+
agent_id="agent_789",
|
|
165
|
+
created_time=1640995200000,
|
|
166
|
+
updated_time=1640995200000
|
|
167
|
+
)
|
|
168
|
+
|
|
169
|
+
# Access related chat tasks
|
|
170
|
+
chat_tasks = session.chat_tasks # Returns list of ChatTaskModel instances
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
### task_event_model.py
|
|
174
|
+
**Purpose:** SQLAlchemy model for storing A2A task events with task relationships
|
|
175
|
+
**Import:** `from solace_agent_mesh.gateway.http_sse.repository.models.task_event_model import TaskEventModel`
|
|
176
|
+
|
|
177
|
+
**Classes:**
|
|
178
|
+
- `TaskEventModel(Base)` - SQLAlchemy model for A2A task events
|
|
179
|
+
- `id: Column[String]` - Primary key event identifier
|
|
180
|
+
- `task_id: Column[String]` - Foreign key to tasks table with CASCADE delete (indexed)
|
|
181
|
+
- `user_id: Column[String]` - Optional user identifier (indexed)
|
|
182
|
+
- `created_time: Column[BigInteger]` - Creation timestamp in epoch milliseconds
|
|
183
|
+
- `topic: Column[Text]` - Event topic
|
|
184
|
+
- `direction: Column[String]` - Event direction (max 50 chars)
|
|
185
|
+
- `payload: Column[JSON]` - Event payload as JSON
|
|
186
|
+
- `task: relationship` - SQLAlchemy relationship to TaskModel
|
|
187
|
+
|
|
188
|
+
**Usage Examples:**
|
|
189
|
+
```python
|
|
190
|
+
from solace_agent_mesh.gateway.http_sse.repository.models.task_event_model import TaskEventModel
|
|
191
|
+
from sqlalchemy.orm import sessionmaker
|
|
192
|
+
|
|
193
|
+
# Create a task event
|
|
194
|
+
event = TaskEventModel(
|
|
195
|
+
id="event_123",
|
|
196
|
+
task_id="task_456",
|
|
197
|
+
user_id="user_789",
|
|
198
|
+
created_time=1640995200000,
|
|
199
|
+
topic="agent/response",
|
|
200
|
+
direction="inbound",
|
|
201
|
+
payload={"message": "Task completed", "status": "success"}
|
|
202
|
+
)
|
|
203
|
+
|
|
204
|
+
# Add to database
|
|
205
|
+
Session = sessionmaker(bind=engine)
|
|
206
|
+
db_session = Session()
|
|
207
|
+
db_session.add(event)
|
|
208
|
+
db_session.commit()
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
### task_model.py
|
|
212
|
+
**Purpose:** SQLAlchemy model for managing tasks with event relationships and token usage tracking
|
|
213
|
+
**Import:** `from solace_agent_mesh.gateway.http_sse.repository.models.task_model import TaskModel`
|
|
214
|
+
|
|
215
|
+
**Classes:**
|
|
216
|
+
- `TaskModel(Base)` - SQLAlchemy model for tasks
|
|
217
|
+
- `id: Column[String]` - Primary key task identifier
|
|
218
|
+
- `user_id: Column[String]` - User identifier (indexed)
|
|
219
|
+
- `start_time: Column[BigInteger]` - Task start timestamp in epoch milliseconds
|
|
220
|
+
- `end_time: Column[BigInteger]` - Optional task end timestamp
|
|
221
|
+
- `status: Column[String]` - Optional task status
|
|
222
|
+
- `initial_request_text: Column[Text]` - Optional initial request text (indexed)
|
|
223
|
+
- `total_input_tokens: Column[Integer]` - Optional total input tokens used
|
|
224
|
+
- `total_output_tokens: Column[Integer]` - Optional total output tokens used
|
|
225
|
+
- `total_cached_input_tokens: Column[Integer]` - Optional total cached input tokens
|
|
226
|
+
- `token_usage_details: Column[JSON]` - Optional detailed token usage information
|
|
227
|
+
- `events: relationship` - SQLAlchemy relationship to TaskEventModel with cascade delete
|
|
228
|
+
|
|
229
|
+
**Usage Examples:**
|
|
230
|
+
```python
|
|
231
|
+
from solace_agent_mesh.gateway.http_sse.repository.models.task_model import TaskModel
|
|
232
|
+
from sqlalchemy.orm import sessionmaker
|
|
233
|
+
|
|
234
|
+
# Create a new task with token tracking
|
|
235
|
+
task = TaskModel(
|
|
236
|
+
id="task_123",
|
|
237
|
+
user_id="user_456",
|
|
238
|
+
start_time=1640995200000,
|
|
239
|
+
status="in_progress",
|
|
240
|
+
initial_request_text="Please help me with this task",
|
|
241
|
+
total_input_tokens=150,
|
|
242
|
+
total_output_tokens=300,
|
|
243
|
+
total_cached_input_tokens=50,
|
|
244
|
+
token_usage_details={"model": "gpt-4", "breakdown": {"reasoning": 200, "response": 100}}
|
|
245
|
+
)
|
|
246
|
+
|
|
247
|
+
# Add to database
|
|
248
|
+
Session = sessionmaker(bind=engine)
|
|
249
|
+
db_session = Session()
|
|
250
|
+
db_session.add(task)
|
|
251
|
+
db_session.commit()
|
|
252
|
+
|
|
253
|
+
# Access related events
|
|
254
|
+
events = task.events # Returns list of TaskEventModel instances
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
# content_hash: 65d43bc49dd561efb9955aae2fc39945567e4302c406eea9718ce797d083646c
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"""
|
|
2
|
+
SQLAlchemy model for project data.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from sqlalchemy import Column, String, Boolean, BigInteger, Text
|
|
6
|
+
from sqlalchemy.orm import relationship
|
|
7
|
+
from pydantic import BaseModel
|
|
8
|
+
|
|
9
|
+
from .base import Base
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class ProjectModel(Base):
|
|
13
|
+
"""SQLAlchemy model for projects."""
|
|
14
|
+
|
|
15
|
+
__tablename__ = "projects"
|
|
16
|
+
|
|
17
|
+
id = Column(String, primary_key=True)
|
|
18
|
+
name = Column(String, nullable=False)
|
|
19
|
+
user_id = Column(String, nullable=False)
|
|
20
|
+
description = Column(Text, nullable=True)
|
|
21
|
+
system_prompt = Column(Text, nullable=True)
|
|
22
|
+
default_agent_id = Column(String, nullable=True)
|
|
23
|
+
created_at = Column(BigInteger, nullable=False)
|
|
24
|
+
updated_at = Column(BigInteger, nullable=True)
|
|
25
|
+
deleted_at = Column(BigInteger, nullable=True)
|
|
26
|
+
deleted_by = Column(String, nullable=True)
|
|
27
|
+
|
|
28
|
+
# Relationships
|
|
29
|
+
sessions = relationship("SessionModel", back_populates="project")
|
|
30
|
+
project_users = relationship("ProjectUserModel", back_populates="project", cascade="all, delete-orphan")
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
class CreateProjectModel(BaseModel):
|
|
34
|
+
"""Pydantic model for creating a project."""
|
|
35
|
+
id: str
|
|
36
|
+
name: str
|
|
37
|
+
user_id: str | None = None
|
|
38
|
+
description: str | None = None
|
|
39
|
+
system_prompt: str | None = None
|
|
40
|
+
default_agent_id: str | None = None
|
|
41
|
+
created_at: int
|
|
42
|
+
updated_at: int | None = None
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
class UpdateProjectModel(BaseModel):
|
|
46
|
+
"""Pydantic model for updating a project."""
|
|
47
|
+
name: str | None = None
|
|
48
|
+
description: str | None = None
|
|
49
|
+
system_prompt: str | None = None
|
|
50
|
+
default_agent_id: str | None = None
|
|
51
|
+
updated_at: int
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"""
|
|
2
|
+
SQLAlchemy model for project user access (junction table).
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from enum import Enum
|
|
6
|
+
from sqlalchemy import Column, String, BigInteger, ForeignKey, UniqueConstraint, Enum as SQLEnum
|
|
7
|
+
from sqlalchemy.orm import relationship
|
|
8
|
+
from pydantic import BaseModel, field_validator
|
|
9
|
+
from typing import Literal
|
|
10
|
+
|
|
11
|
+
from .base import Base
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class ProjectRole(str, Enum):
|
|
15
|
+
"""Valid roles for project users."""
|
|
16
|
+
OWNER = "owner"
|
|
17
|
+
EDITOR = "editor"
|
|
18
|
+
VIEWER = "viewer"
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class ProjectUserModel(Base):
|
|
22
|
+
"""
|
|
23
|
+
SQLAlchemy model for project user access.
|
|
24
|
+
|
|
25
|
+
This junction table tracks which users have access to which projects,
|
|
26
|
+
enabling multi-user collaboration on projects.
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
__tablename__ = "project_users"
|
|
30
|
+
|
|
31
|
+
id = Column(String, primary_key=True)
|
|
32
|
+
project_id = Column(String, ForeignKey("projects.id", ondelete="CASCADE"), nullable=False)
|
|
33
|
+
user_id = Column(String, nullable=False)
|
|
34
|
+
role = Column(SQLEnum(ProjectRole), nullable=False, default=ProjectRole.VIEWER)
|
|
35
|
+
added_at = Column(BigInteger, nullable=False) # Epoch timestamp in milliseconds
|
|
36
|
+
added_by_user_id = Column(String, nullable=False) # User who granted access
|
|
37
|
+
|
|
38
|
+
# Ensure a user can only be added once per project
|
|
39
|
+
__table_args__ = (
|
|
40
|
+
UniqueConstraint('project_id', 'user_id', name='uq_project_user'),
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
# Relationships
|
|
44
|
+
project = relationship("ProjectModel", back_populates="project_users")
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
class CreateProjectUserModel(BaseModel):
|
|
48
|
+
"""Pydantic model for creating a project user access record."""
|
|
49
|
+
id: str
|
|
50
|
+
project_id: str
|
|
51
|
+
user_id: str
|
|
52
|
+
role: Literal["owner", "editor", "viewer"] = "viewer"
|
|
53
|
+
added_at: int
|
|
54
|
+
added_by_user_id: str
|
|
55
|
+
|
|
56
|
+
@field_validator('role')
|
|
57
|
+
@classmethod
|
|
58
|
+
def validate_role(cls, v: str) -> str:
|
|
59
|
+
"""Validate that role is one of the allowed values."""
|
|
60
|
+
if v not in [role.value for role in ProjectRole]:
|
|
61
|
+
raise ValueError(f"Role must be one of: {', '.join([role.value for role in ProjectRole])}")
|
|
62
|
+
return v
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
class UpdateProjectUserModel(BaseModel):
|
|
66
|
+
"""Pydantic model for updating a project user access record."""
|
|
67
|
+
role: Literal["owner", "editor", "viewer"] | None = None
|
|
68
|
+
|
|
69
|
+
@field_validator('role')
|
|
70
|
+
@classmethod
|
|
71
|
+
def validate_role(cls, v: str | None) -> str | None:
|
|
72
|
+
"""Validate that role is one of the allowed values."""
|
|
73
|
+
if v is not None and v not in [role.value for role in ProjectRole]:
|
|
74
|
+
raise ValueError(f"Role must be one of: {', '.join([role.value for role in ProjectRole])}")
|
|
75
|
+
return v
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Prompt SQLAlchemy models for prompt library feature.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from enum import Enum
|
|
6
|
+
from sqlalchemy import BigInteger, Column, String, Text, Integer, Boolean, ForeignKey, UniqueConstraint, Enum as SQLEnum
|
|
7
|
+
from sqlalchemy.orm import relationship
|
|
8
|
+
|
|
9
|
+
from ...shared import now_epoch_ms
|
|
10
|
+
from .base import Base
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class PromptGroupRole(str, Enum):
|
|
14
|
+
"""Valid roles for prompt group users."""
|
|
15
|
+
OWNER = "owner"
|
|
16
|
+
EDITOR = "editor"
|
|
17
|
+
VIEWER = "viewer"
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class PromptGroupModel(Base):
|
|
21
|
+
"""SQLAlchemy model for prompt groups"""
|
|
22
|
+
|
|
23
|
+
__tablename__ = "prompt_groups"
|
|
24
|
+
|
|
25
|
+
# Primary key - String type (not UUID)
|
|
26
|
+
id = Column(String, primary_key=True)
|
|
27
|
+
|
|
28
|
+
# Core fields
|
|
29
|
+
name = Column(String(255), nullable=False, index=True)
|
|
30
|
+
description = Column(Text, nullable=True)
|
|
31
|
+
category = Column(String(100), nullable=True, index=True)
|
|
32
|
+
command = Column(String(50), nullable=True, unique=True, index=True)
|
|
33
|
+
|
|
34
|
+
# Ownership
|
|
35
|
+
user_id = Column(String, nullable=False, index=True)
|
|
36
|
+
author_name = Column(String(255), nullable=True)
|
|
37
|
+
|
|
38
|
+
# Production prompt reference
|
|
39
|
+
production_prompt_id = Column(
|
|
40
|
+
String,
|
|
41
|
+
ForeignKey("prompts.id", ondelete="SET NULL"),
|
|
42
|
+
nullable=True
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
# Sharing (optional - for future enhancement)
|
|
46
|
+
is_shared = Column(Boolean, default=False, nullable=False)
|
|
47
|
+
|
|
48
|
+
# User preferences
|
|
49
|
+
is_pinned = Column(Boolean, default=False, nullable=False, index=True)
|
|
50
|
+
|
|
51
|
+
# Timestamps - BigInteger (epoch milliseconds) to match SAM convention
|
|
52
|
+
created_at = Column(BigInteger, nullable=False, default=now_epoch_ms)
|
|
53
|
+
updated_at = Column(
|
|
54
|
+
BigInteger,
|
|
55
|
+
nullable=False,
|
|
56
|
+
default=now_epoch_ms,
|
|
57
|
+
onupdate=now_epoch_ms
|
|
58
|
+
)
|
|
59
|
+
|
|
60
|
+
# Relationships
|
|
61
|
+
prompts = relationship(
|
|
62
|
+
"PromptModel",
|
|
63
|
+
back_populates="group",
|
|
64
|
+
foreign_keys="PromptModel.group_id",
|
|
65
|
+
cascade="all, delete-orphan"
|
|
66
|
+
)
|
|
67
|
+
production_prompt = relationship(
|
|
68
|
+
"PromptModel",
|
|
69
|
+
foreign_keys=[production_prompt_id],
|
|
70
|
+
post_update=True
|
|
71
|
+
)
|
|
72
|
+
prompt_group_users = relationship(
|
|
73
|
+
"PromptGroupUserModel",
|
|
74
|
+
back_populates="prompt_group",
|
|
75
|
+
cascade="all, delete-orphan"
|
|
76
|
+
)
|
|
77
|
+
|
|
78
|
+
def __repr__(self):
|
|
79
|
+
return f"<PromptGroupModel(id={self.id}, name={self.name}, command={self.command})>"
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
class PromptModel(Base):
|
|
83
|
+
"""SQLAlchemy model for individual prompt versions"""
|
|
84
|
+
|
|
85
|
+
__tablename__ = "prompts"
|
|
86
|
+
|
|
87
|
+
# Primary key - String type (not UUID)
|
|
88
|
+
id = Column(String, primary_key=True)
|
|
89
|
+
|
|
90
|
+
# Content
|
|
91
|
+
prompt_text = Column(Text, nullable=False)
|
|
92
|
+
|
|
93
|
+
# Versioned metadata fields (copied from group at version creation time)
|
|
94
|
+
name = Column(String(255), nullable=True)
|
|
95
|
+
description = Column(Text, nullable=True)
|
|
96
|
+
category = Column(String(100), nullable=True)
|
|
97
|
+
command = Column(String(50), nullable=True)
|
|
98
|
+
|
|
99
|
+
# Group relationship
|
|
100
|
+
group_id = Column(
|
|
101
|
+
String,
|
|
102
|
+
ForeignKey("prompt_groups.id", ondelete="CASCADE"),
|
|
103
|
+
nullable=False,
|
|
104
|
+
index=True
|
|
105
|
+
)
|
|
106
|
+
|
|
107
|
+
# Ownership
|
|
108
|
+
user_id = Column(String, nullable=False, index=True)
|
|
109
|
+
|
|
110
|
+
# Versioning
|
|
111
|
+
version = Column(Integer, default=1, nullable=False)
|
|
112
|
+
|
|
113
|
+
# Timestamps - BigInteger (epoch milliseconds)
|
|
114
|
+
created_at = Column(BigInteger, nullable=False, default=now_epoch_ms)
|
|
115
|
+
updated_at = Column(
|
|
116
|
+
BigInteger,
|
|
117
|
+
nullable=False,
|
|
118
|
+
default=now_epoch_ms,
|
|
119
|
+
onupdate=now_epoch_ms
|
|
120
|
+
)
|
|
121
|
+
|
|
122
|
+
# Relationships
|
|
123
|
+
group = relationship(
|
|
124
|
+
"PromptGroupModel",
|
|
125
|
+
back_populates="prompts",
|
|
126
|
+
foreign_keys=[group_id]
|
|
127
|
+
)
|
|
128
|
+
|
|
129
|
+
def __repr__(self):
|
|
130
|
+
return f"<PromptModel(id={self.id}, group_id={self.group_id}, version={self.version})>"
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
class PromptGroupUserModel(Base):
|
|
134
|
+
"""
|
|
135
|
+
SQLAlchemy model for prompt group user access.
|
|
136
|
+
|
|
137
|
+
This junction table tracks which users have access to which prompt groups,
|
|
138
|
+
enabling multi-user collaboration on prompts with role-based permissions.
|
|
139
|
+
"""
|
|
140
|
+
|
|
141
|
+
__tablename__ = "prompt_group_users"
|
|
142
|
+
|
|
143
|
+
id = Column(String, primary_key=True)
|
|
144
|
+
prompt_group_id = Column(String, ForeignKey("prompt_groups.id", ondelete="CASCADE"), nullable=False)
|
|
145
|
+
user_id = Column(String, nullable=False)
|
|
146
|
+
role = Column(SQLEnum(PromptGroupRole), nullable=False, default=PromptGroupRole.VIEWER)
|
|
147
|
+
added_at = Column(BigInteger, nullable=False) # Epoch timestamp in milliseconds
|
|
148
|
+
added_by_user_id = Column(String, nullable=False) # User who granted access
|
|
149
|
+
|
|
150
|
+
# Ensure a user can only be added once per prompt group
|
|
151
|
+
__table_args__ = (
|
|
152
|
+
UniqueConstraint('prompt_group_id', 'user_id', name='uq_prompt_group_user'),
|
|
153
|
+
)
|
|
154
|
+
|
|
155
|
+
# Relationships
|
|
156
|
+
prompt_group = relationship("PromptGroupModel", back_populates="prompt_group_users")
|
|
157
|
+
|
|
158
|
+
def __repr__(self):
|
|
159
|
+
return f"<PromptGroupUserModel(id={self.id}, prompt_group_id={self.prompt_group_id}, user_id={self.user_id}, role={self.role})>"
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Session SQLAlchemy model and Pydantic models for strongly-typed operations.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from sqlalchemy import BigInteger, Column, String, ForeignKey
|
|
6
|
+
from pydantic import BaseModel
|
|
7
|
+
from sqlalchemy.orm import relationship
|
|
8
|
+
|
|
9
|
+
from ...shared import now_epoch_ms
|
|
10
|
+
from .base import Base
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class SessionModel(Base):
|
|
14
|
+
"""SQLAlchemy model for sessions."""
|
|
15
|
+
|
|
16
|
+
__tablename__ = "sessions"
|
|
17
|
+
|
|
18
|
+
id = Column(String, primary_key=True)
|
|
19
|
+
name = Column(String, nullable=True)
|
|
20
|
+
user_id = Column(String, nullable=False)
|
|
21
|
+
agent_id = Column(String, nullable=True)
|
|
22
|
+
project_id = Column(String, ForeignKey("projects.id"), nullable=True)
|
|
23
|
+
created_time = Column(BigInteger, nullable=False, default=now_epoch_ms)
|
|
24
|
+
updated_time = Column(
|
|
25
|
+
BigInteger, nullable=False, default=now_epoch_ms, onupdate=now_epoch_ms
|
|
26
|
+
)
|
|
27
|
+
deleted_at = Column(BigInteger, nullable=True)
|
|
28
|
+
deleted_by = Column(String, nullable=True)
|
|
29
|
+
|
|
30
|
+
# Relationship to chat tasks
|
|
31
|
+
chat_tasks = relationship(
|
|
32
|
+
"ChatTaskModel", back_populates="session", cascade="all, delete-orphan"
|
|
33
|
+
)
|
|
34
|
+
project = relationship("ProjectModel", back_populates="sessions")
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
class CreateSessionModel(BaseModel):
|
|
38
|
+
"""Pydantic model for creating a session."""
|
|
39
|
+
id: str
|
|
40
|
+
name: str | None
|
|
41
|
+
user_id: str
|
|
42
|
+
agent_id: str | None
|
|
43
|
+
project_id: str | None = None
|
|
44
|
+
created_time: int
|
|
45
|
+
updated_time: int
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
class UpdateSessionModel(BaseModel):
|
|
49
|
+
"""Pydantic model for updating a session."""
|
|
50
|
+
name: str | None = None
|
|
51
|
+
agent_id: str | None = None
|
|
52
|
+
project_id: str | None = None
|
|
53
|
+
updated_time: int
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Task Event SQLAlchemy model.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from sqlalchemy import JSON, BigInteger, Column, ForeignKey, String, Text
|
|
6
|
+
from sqlalchemy.orm import relationship
|
|
7
|
+
|
|
8
|
+
from .base import Base
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class TaskEventModel(Base):
|
|
12
|
+
"""SQLAlchemy model for A2A task events."""
|
|
13
|
+
|
|
14
|
+
__tablename__ = "task_events"
|
|
15
|
+
|
|
16
|
+
id = Column(String, primary_key=True)
|
|
17
|
+
task_id = Column(String, ForeignKey("tasks.id", ondelete="CASCADE"), index=True)
|
|
18
|
+
user_id = Column(String, nullable=True, index=True)
|
|
19
|
+
created_time = Column(BigInteger, nullable=False)
|
|
20
|
+
topic = Column(Text, nullable=False)
|
|
21
|
+
direction = Column(String(50), nullable=False)
|
|
22
|
+
payload = Column(JSON, nullable=False)
|
|
23
|
+
|
|
24
|
+
# Relationship to task
|
|
25
|
+
task = relationship("TaskModel", back_populates="events")
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Task SQLAlchemy model.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from sqlalchemy import BigInteger, Boolean, Column, Integer, JSON, String, Text
|
|
6
|
+
from sqlalchemy.orm import relationship
|
|
7
|
+
|
|
8
|
+
from .base import Base
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class TaskModel(Base):
|
|
12
|
+
"""SQLAlchemy model for tasks."""
|
|
13
|
+
|
|
14
|
+
__tablename__ = "tasks"
|
|
15
|
+
|
|
16
|
+
id = Column(String, primary_key=True)
|
|
17
|
+
user_id = Column(String, nullable=False, index=True)
|
|
18
|
+
parent_task_id = Column(String, nullable=True, index=True)
|
|
19
|
+
start_time = Column(BigInteger, nullable=False)
|
|
20
|
+
end_time = Column(BigInteger, nullable=True)
|
|
21
|
+
status = Column(String, nullable=True)
|
|
22
|
+
initial_request_text = Column(Text, nullable=True, index=True)
|
|
23
|
+
|
|
24
|
+
# Token usage columns
|
|
25
|
+
total_input_tokens = Column(Integer, nullable=True)
|
|
26
|
+
total_output_tokens = Column(Integer, nullable=True)
|
|
27
|
+
total_cached_input_tokens = Column(Integer, nullable=True)
|
|
28
|
+
token_usage_details = Column(JSON, nullable=True)
|
|
29
|
+
|
|
30
|
+
# Background task execution columns
|
|
31
|
+
execution_mode = Column(String(20), nullable=True, default="foreground", index=True)
|
|
32
|
+
last_activity_time = Column(BigInteger, nullable=True, index=True)
|
|
33
|
+
background_execution_enabled = Column(Boolean, nullable=True, default=False)
|
|
34
|
+
max_execution_time_ms = Column(BigInteger, nullable=True)
|
|
35
|
+
|
|
36
|
+
# Relationship to events
|
|
37
|
+
events = relationship(
|
|
38
|
+
"TaskEventModel", back_populates="task", cascade="all, delete-orphan"
|
|
39
|
+
)
|