PraisonAI 3.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- praisonai/__init__.py +54 -0
- praisonai/__main__.py +15 -0
- praisonai/acp/__init__.py +54 -0
- praisonai/acp/config.py +159 -0
- praisonai/acp/server.py +587 -0
- praisonai/acp/session.py +219 -0
- praisonai/adapters/__init__.py +50 -0
- praisonai/adapters/readers.py +395 -0
- praisonai/adapters/rerankers.py +315 -0
- praisonai/adapters/retrievers.py +394 -0
- praisonai/adapters/vector_stores.py +409 -0
- praisonai/agent_scheduler.py +337 -0
- praisonai/agents_generator.py +903 -0
- praisonai/api/call.py +292 -0
- praisonai/auto.py +1197 -0
- praisonai/capabilities/__init__.py +275 -0
- praisonai/capabilities/a2a.py +140 -0
- praisonai/capabilities/assistants.py +283 -0
- praisonai/capabilities/audio.py +320 -0
- praisonai/capabilities/batches.py +469 -0
- praisonai/capabilities/completions.py +336 -0
- praisonai/capabilities/container_files.py +155 -0
- praisonai/capabilities/containers.py +93 -0
- praisonai/capabilities/embeddings.py +158 -0
- praisonai/capabilities/files.py +467 -0
- praisonai/capabilities/fine_tuning.py +293 -0
- praisonai/capabilities/guardrails.py +182 -0
- praisonai/capabilities/images.py +330 -0
- praisonai/capabilities/mcp.py +190 -0
- praisonai/capabilities/messages.py +270 -0
- praisonai/capabilities/moderations.py +154 -0
- praisonai/capabilities/ocr.py +217 -0
- praisonai/capabilities/passthrough.py +204 -0
- praisonai/capabilities/rag.py +207 -0
- praisonai/capabilities/realtime.py +160 -0
- praisonai/capabilities/rerank.py +165 -0
- praisonai/capabilities/responses.py +266 -0
- praisonai/capabilities/search.py +109 -0
- praisonai/capabilities/skills.py +133 -0
- praisonai/capabilities/vector_store_files.py +334 -0
- praisonai/capabilities/vector_stores.py +304 -0
- praisonai/capabilities/videos.py +141 -0
- praisonai/chainlit_ui.py +304 -0
- praisonai/chat/__init__.py +106 -0
- praisonai/chat/app.py +125 -0
- praisonai/cli/__init__.py +26 -0
- praisonai/cli/app.py +213 -0
- praisonai/cli/commands/__init__.py +75 -0
- praisonai/cli/commands/acp.py +70 -0
- praisonai/cli/commands/completion.py +333 -0
- praisonai/cli/commands/config.py +166 -0
- praisonai/cli/commands/debug.py +142 -0
- praisonai/cli/commands/diag.py +55 -0
- praisonai/cli/commands/doctor.py +166 -0
- praisonai/cli/commands/environment.py +179 -0
- praisonai/cli/commands/lsp.py +112 -0
- praisonai/cli/commands/mcp.py +210 -0
- praisonai/cli/commands/profile.py +457 -0
- praisonai/cli/commands/run.py +228 -0
- praisonai/cli/commands/schedule.py +150 -0
- praisonai/cli/commands/serve.py +97 -0
- praisonai/cli/commands/session.py +212 -0
- praisonai/cli/commands/traces.py +145 -0
- praisonai/cli/commands/version.py +101 -0
- praisonai/cli/configuration/__init__.py +18 -0
- praisonai/cli/configuration/loader.py +353 -0
- praisonai/cli/configuration/paths.py +114 -0
- praisonai/cli/configuration/schema.py +164 -0
- praisonai/cli/features/__init__.py +268 -0
- praisonai/cli/features/acp.py +236 -0
- praisonai/cli/features/action_orchestrator.py +546 -0
- praisonai/cli/features/agent_scheduler.py +773 -0
- praisonai/cli/features/agent_tools.py +474 -0
- praisonai/cli/features/agents.py +375 -0
- praisonai/cli/features/at_mentions.py +471 -0
- praisonai/cli/features/auto_memory.py +182 -0
- praisonai/cli/features/autonomy_mode.py +490 -0
- praisonai/cli/features/background.py +356 -0
- praisonai/cli/features/base.py +168 -0
- praisonai/cli/features/capabilities.py +1326 -0
- praisonai/cli/features/checkpoints.py +338 -0
- praisonai/cli/features/code_intelligence.py +652 -0
- praisonai/cli/features/compaction.py +294 -0
- praisonai/cli/features/compare.py +534 -0
- praisonai/cli/features/cost_tracker.py +514 -0
- praisonai/cli/features/debug.py +810 -0
- praisonai/cli/features/deploy.py +517 -0
- praisonai/cli/features/diag.py +289 -0
- praisonai/cli/features/doctor/__init__.py +63 -0
- praisonai/cli/features/doctor/checks/__init__.py +24 -0
- praisonai/cli/features/doctor/checks/acp_checks.py +240 -0
- praisonai/cli/features/doctor/checks/config_checks.py +366 -0
- praisonai/cli/features/doctor/checks/db_checks.py +366 -0
- praisonai/cli/features/doctor/checks/env_checks.py +543 -0
- praisonai/cli/features/doctor/checks/lsp_checks.py +199 -0
- praisonai/cli/features/doctor/checks/mcp_checks.py +349 -0
- praisonai/cli/features/doctor/checks/memory_checks.py +268 -0
- praisonai/cli/features/doctor/checks/network_checks.py +251 -0
- praisonai/cli/features/doctor/checks/obs_checks.py +328 -0
- praisonai/cli/features/doctor/checks/performance_checks.py +235 -0
- praisonai/cli/features/doctor/checks/permissions_checks.py +259 -0
- praisonai/cli/features/doctor/checks/selftest_checks.py +322 -0
- praisonai/cli/features/doctor/checks/serve_checks.py +426 -0
- praisonai/cli/features/doctor/checks/skills_checks.py +231 -0
- praisonai/cli/features/doctor/checks/tools_checks.py +371 -0
- praisonai/cli/features/doctor/engine.py +266 -0
- praisonai/cli/features/doctor/formatters.py +310 -0
- praisonai/cli/features/doctor/handler.py +397 -0
- praisonai/cli/features/doctor/models.py +264 -0
- praisonai/cli/features/doctor/registry.py +239 -0
- praisonai/cli/features/endpoints.py +1019 -0
- praisonai/cli/features/eval.py +560 -0
- praisonai/cli/features/external_agents.py +231 -0
- praisonai/cli/features/fast_context.py +410 -0
- praisonai/cli/features/flow_display.py +566 -0
- praisonai/cli/features/git_integration.py +651 -0
- praisonai/cli/features/guardrail.py +171 -0
- praisonai/cli/features/handoff.py +185 -0
- praisonai/cli/features/hooks.py +583 -0
- praisonai/cli/features/image.py +384 -0
- praisonai/cli/features/interactive_runtime.py +585 -0
- praisonai/cli/features/interactive_tools.py +380 -0
- praisonai/cli/features/interactive_tui.py +603 -0
- praisonai/cli/features/jobs.py +632 -0
- praisonai/cli/features/knowledge.py +531 -0
- praisonai/cli/features/lite.py +244 -0
- praisonai/cli/features/lsp_cli.py +225 -0
- praisonai/cli/features/mcp.py +169 -0
- praisonai/cli/features/message_queue.py +587 -0
- praisonai/cli/features/metrics.py +211 -0
- praisonai/cli/features/n8n.py +673 -0
- praisonai/cli/features/observability.py +293 -0
- praisonai/cli/features/ollama.py +361 -0
- praisonai/cli/features/output_style.py +273 -0
- praisonai/cli/features/package.py +631 -0
- praisonai/cli/features/performance.py +308 -0
- praisonai/cli/features/persistence.py +636 -0
- praisonai/cli/features/profile.py +226 -0
- praisonai/cli/features/profiler/__init__.py +81 -0
- praisonai/cli/features/profiler/core.py +558 -0
- praisonai/cli/features/profiler/optimizations.py +652 -0
- praisonai/cli/features/profiler/suite.py +386 -0
- praisonai/cli/features/profiling.py +350 -0
- praisonai/cli/features/queue/__init__.py +73 -0
- praisonai/cli/features/queue/manager.py +395 -0
- praisonai/cli/features/queue/models.py +286 -0
- praisonai/cli/features/queue/persistence.py +564 -0
- praisonai/cli/features/queue/scheduler.py +484 -0
- praisonai/cli/features/queue/worker.py +372 -0
- praisonai/cli/features/recipe.py +1723 -0
- praisonai/cli/features/recipes.py +449 -0
- praisonai/cli/features/registry.py +229 -0
- praisonai/cli/features/repo_map.py +860 -0
- praisonai/cli/features/router.py +466 -0
- praisonai/cli/features/sandbox_executor.py +515 -0
- praisonai/cli/features/serve.py +829 -0
- praisonai/cli/features/session.py +222 -0
- praisonai/cli/features/skills.py +856 -0
- praisonai/cli/features/slash_commands.py +650 -0
- praisonai/cli/features/telemetry.py +179 -0
- praisonai/cli/features/templates.py +1384 -0
- praisonai/cli/features/thinking.py +305 -0
- praisonai/cli/features/todo.py +334 -0
- praisonai/cli/features/tools.py +680 -0
- praisonai/cli/features/tui/__init__.py +83 -0
- praisonai/cli/features/tui/app.py +580 -0
- praisonai/cli/features/tui/cli.py +566 -0
- praisonai/cli/features/tui/debug.py +511 -0
- praisonai/cli/features/tui/events.py +99 -0
- praisonai/cli/features/tui/mock_provider.py +328 -0
- praisonai/cli/features/tui/orchestrator.py +652 -0
- praisonai/cli/features/tui/screens/__init__.py +50 -0
- praisonai/cli/features/tui/screens/main.py +245 -0
- praisonai/cli/features/tui/screens/queue.py +174 -0
- praisonai/cli/features/tui/screens/session.py +124 -0
- praisonai/cli/features/tui/screens/settings.py +148 -0
- praisonai/cli/features/tui/widgets/__init__.py +56 -0
- praisonai/cli/features/tui/widgets/chat.py +261 -0
- praisonai/cli/features/tui/widgets/composer.py +224 -0
- praisonai/cli/features/tui/widgets/queue_panel.py +200 -0
- praisonai/cli/features/tui/widgets/status.py +167 -0
- praisonai/cli/features/tui/widgets/tool_panel.py +248 -0
- praisonai/cli/features/workflow.py +720 -0
- praisonai/cli/legacy.py +236 -0
- praisonai/cli/main.py +5559 -0
- praisonai/cli/schedule_cli.py +54 -0
- praisonai/cli/state/__init__.py +31 -0
- praisonai/cli/state/identifiers.py +161 -0
- praisonai/cli/state/sessions.py +313 -0
- praisonai/code/__init__.py +93 -0
- praisonai/code/agent_tools.py +344 -0
- praisonai/code/diff/__init__.py +21 -0
- praisonai/code/diff/diff_strategy.py +432 -0
- praisonai/code/tools/__init__.py +27 -0
- praisonai/code/tools/apply_diff.py +221 -0
- praisonai/code/tools/execute_command.py +275 -0
- praisonai/code/tools/list_files.py +274 -0
- praisonai/code/tools/read_file.py +206 -0
- praisonai/code/tools/search_replace.py +248 -0
- praisonai/code/tools/write_file.py +217 -0
- praisonai/code/utils/__init__.py +46 -0
- praisonai/code/utils/file_utils.py +307 -0
- praisonai/code/utils/ignore_utils.py +308 -0
- praisonai/code/utils/text_utils.py +276 -0
- praisonai/db/__init__.py +64 -0
- praisonai/db/adapter.py +531 -0
- praisonai/deploy/__init__.py +62 -0
- praisonai/deploy/api.py +231 -0
- praisonai/deploy/docker.py +454 -0
- praisonai/deploy/doctor.py +367 -0
- praisonai/deploy/main.py +327 -0
- praisonai/deploy/models.py +179 -0
- praisonai/deploy/providers/__init__.py +33 -0
- praisonai/deploy/providers/aws.py +331 -0
- praisonai/deploy/providers/azure.py +358 -0
- praisonai/deploy/providers/base.py +101 -0
- praisonai/deploy/providers/gcp.py +314 -0
- praisonai/deploy/schema.py +208 -0
- praisonai/deploy.py +185 -0
- praisonai/endpoints/__init__.py +53 -0
- praisonai/endpoints/a2u_server.py +410 -0
- praisonai/endpoints/discovery.py +165 -0
- praisonai/endpoints/providers/__init__.py +28 -0
- praisonai/endpoints/providers/a2a.py +253 -0
- praisonai/endpoints/providers/a2u.py +208 -0
- praisonai/endpoints/providers/agents_api.py +171 -0
- praisonai/endpoints/providers/base.py +231 -0
- praisonai/endpoints/providers/mcp.py +263 -0
- praisonai/endpoints/providers/recipe.py +206 -0
- praisonai/endpoints/providers/tools_mcp.py +150 -0
- praisonai/endpoints/registry.py +131 -0
- praisonai/endpoints/server.py +161 -0
- praisonai/inbuilt_tools/__init__.py +24 -0
- praisonai/inbuilt_tools/autogen_tools.py +117 -0
- praisonai/inc/__init__.py +2 -0
- praisonai/inc/config.py +96 -0
- praisonai/inc/models.py +155 -0
- praisonai/integrations/__init__.py +56 -0
- praisonai/integrations/base.py +303 -0
- praisonai/integrations/claude_code.py +270 -0
- praisonai/integrations/codex_cli.py +255 -0
- praisonai/integrations/cursor_cli.py +195 -0
- praisonai/integrations/gemini_cli.py +222 -0
- praisonai/jobs/__init__.py +67 -0
- praisonai/jobs/executor.py +425 -0
- praisonai/jobs/models.py +230 -0
- praisonai/jobs/router.py +314 -0
- praisonai/jobs/server.py +186 -0
- praisonai/jobs/store.py +203 -0
- praisonai/llm/__init__.py +66 -0
- praisonai/llm/registry.py +382 -0
- praisonai/mcp_server/__init__.py +152 -0
- praisonai/mcp_server/adapters/__init__.py +74 -0
- praisonai/mcp_server/adapters/agents.py +128 -0
- praisonai/mcp_server/adapters/capabilities.py +168 -0
- praisonai/mcp_server/adapters/cli_tools.py +568 -0
- praisonai/mcp_server/adapters/extended_capabilities.py +462 -0
- praisonai/mcp_server/adapters/knowledge.py +93 -0
- praisonai/mcp_server/adapters/memory.py +104 -0
- praisonai/mcp_server/adapters/prompts.py +306 -0
- praisonai/mcp_server/adapters/resources.py +124 -0
- praisonai/mcp_server/adapters/tools_bridge.py +280 -0
- praisonai/mcp_server/auth/__init__.py +48 -0
- praisonai/mcp_server/auth/api_key.py +291 -0
- praisonai/mcp_server/auth/oauth.py +460 -0
- praisonai/mcp_server/auth/oidc.py +289 -0
- praisonai/mcp_server/auth/scopes.py +260 -0
- praisonai/mcp_server/cli.py +852 -0
- praisonai/mcp_server/elicitation.py +445 -0
- praisonai/mcp_server/icons.py +302 -0
- praisonai/mcp_server/recipe_adapter.py +573 -0
- praisonai/mcp_server/recipe_cli.py +824 -0
- praisonai/mcp_server/registry.py +703 -0
- praisonai/mcp_server/sampling.py +422 -0
- praisonai/mcp_server/server.py +490 -0
- praisonai/mcp_server/tasks.py +443 -0
- praisonai/mcp_server/transports/__init__.py +18 -0
- praisonai/mcp_server/transports/http_stream.py +376 -0
- praisonai/mcp_server/transports/stdio.py +132 -0
- praisonai/persistence/__init__.py +84 -0
- praisonai/persistence/config.py +238 -0
- praisonai/persistence/conversation/__init__.py +25 -0
- praisonai/persistence/conversation/async_mysql.py +427 -0
- praisonai/persistence/conversation/async_postgres.py +410 -0
- praisonai/persistence/conversation/async_sqlite.py +371 -0
- praisonai/persistence/conversation/base.py +151 -0
- praisonai/persistence/conversation/json_store.py +250 -0
- praisonai/persistence/conversation/mysql.py +387 -0
- praisonai/persistence/conversation/postgres.py +401 -0
- praisonai/persistence/conversation/singlestore.py +240 -0
- praisonai/persistence/conversation/sqlite.py +341 -0
- praisonai/persistence/conversation/supabase.py +203 -0
- praisonai/persistence/conversation/surrealdb.py +287 -0
- praisonai/persistence/factory.py +301 -0
- praisonai/persistence/hooks/__init__.py +18 -0
- praisonai/persistence/hooks/agent_hooks.py +297 -0
- praisonai/persistence/knowledge/__init__.py +26 -0
- praisonai/persistence/knowledge/base.py +144 -0
- praisonai/persistence/knowledge/cassandra.py +232 -0
- praisonai/persistence/knowledge/chroma.py +295 -0
- praisonai/persistence/knowledge/clickhouse.py +242 -0
- praisonai/persistence/knowledge/cosmosdb_vector.py +438 -0
- praisonai/persistence/knowledge/couchbase.py +286 -0
- praisonai/persistence/knowledge/lancedb.py +216 -0
- praisonai/persistence/knowledge/langchain_adapter.py +291 -0
- praisonai/persistence/knowledge/lightrag_adapter.py +212 -0
- praisonai/persistence/knowledge/llamaindex_adapter.py +256 -0
- praisonai/persistence/knowledge/milvus.py +277 -0
- praisonai/persistence/knowledge/mongodb_vector.py +306 -0
- praisonai/persistence/knowledge/pgvector.py +335 -0
- praisonai/persistence/knowledge/pinecone.py +253 -0
- praisonai/persistence/knowledge/qdrant.py +301 -0
- praisonai/persistence/knowledge/redis_vector.py +291 -0
- praisonai/persistence/knowledge/singlestore_vector.py +299 -0
- praisonai/persistence/knowledge/surrealdb_vector.py +309 -0
- praisonai/persistence/knowledge/upstash_vector.py +266 -0
- praisonai/persistence/knowledge/weaviate.py +223 -0
- praisonai/persistence/migrations/__init__.py +10 -0
- praisonai/persistence/migrations/manager.py +251 -0
- praisonai/persistence/orchestrator.py +406 -0
- praisonai/persistence/state/__init__.py +21 -0
- praisonai/persistence/state/async_mongodb.py +200 -0
- praisonai/persistence/state/base.py +107 -0
- praisonai/persistence/state/dynamodb.py +226 -0
- praisonai/persistence/state/firestore.py +175 -0
- praisonai/persistence/state/gcs.py +155 -0
- praisonai/persistence/state/memory.py +245 -0
- praisonai/persistence/state/mongodb.py +158 -0
- praisonai/persistence/state/redis.py +190 -0
- praisonai/persistence/state/upstash.py +144 -0
- praisonai/persistence/tests/__init__.py +3 -0
- praisonai/persistence/tests/test_all_backends.py +633 -0
- praisonai/profiler.py +1214 -0
- praisonai/recipe/__init__.py +134 -0
- praisonai/recipe/bridge.py +278 -0
- praisonai/recipe/core.py +893 -0
- praisonai/recipe/exceptions.py +54 -0
- praisonai/recipe/history.py +402 -0
- praisonai/recipe/models.py +266 -0
- praisonai/recipe/operations.py +440 -0
- praisonai/recipe/policy.py +422 -0
- praisonai/recipe/registry.py +849 -0
- praisonai/recipe/runtime.py +214 -0
- praisonai/recipe/security.py +711 -0
- praisonai/recipe/serve.py +859 -0
- praisonai/recipe/server.py +613 -0
- praisonai/scheduler/__init__.py +45 -0
- praisonai/scheduler/agent_scheduler.py +552 -0
- praisonai/scheduler/base.py +124 -0
- praisonai/scheduler/daemon_manager.py +225 -0
- praisonai/scheduler/state_manager.py +155 -0
- praisonai/scheduler/yaml_loader.py +193 -0
- praisonai/scheduler.py +194 -0
- praisonai/setup/__init__.py +1 -0
- praisonai/setup/build.py +21 -0
- praisonai/setup/post_install.py +23 -0
- praisonai/setup/setup_conda_env.py +25 -0
- praisonai/setup.py +16 -0
- praisonai/templates/__init__.py +116 -0
- praisonai/templates/cache.py +364 -0
- praisonai/templates/dependency_checker.py +358 -0
- praisonai/templates/discovery.py +391 -0
- praisonai/templates/loader.py +564 -0
- praisonai/templates/registry.py +511 -0
- praisonai/templates/resolver.py +206 -0
- praisonai/templates/security.py +327 -0
- praisonai/templates/tool_override.py +498 -0
- praisonai/templates/tools_doctor.py +256 -0
- praisonai/test.py +105 -0
- praisonai/train.py +562 -0
- praisonai/train_vision.py +306 -0
- praisonai/ui/agents.py +824 -0
- praisonai/ui/callbacks.py +57 -0
- praisonai/ui/chainlit_compat.py +246 -0
- praisonai/ui/chat.py +532 -0
- praisonai/ui/code.py +717 -0
- praisonai/ui/colab.py +474 -0
- praisonai/ui/colab_chainlit.py +81 -0
- praisonai/ui/components/aicoder.py +284 -0
- praisonai/ui/context.py +283 -0
- praisonai/ui/database_config.py +56 -0
- praisonai/ui/db.py +294 -0
- praisonai/ui/realtime.py +488 -0
- praisonai/ui/realtimeclient/__init__.py +756 -0
- praisonai/ui/realtimeclient/tools.py +242 -0
- praisonai/ui/sql_alchemy.py +710 -0
- praisonai/upload_vision.py +140 -0
- praisonai/version.py +1 -0
- praisonai-3.0.0.dist-info/METADATA +3493 -0
- praisonai-3.0.0.dist-info/RECORD +393 -0
- praisonai-3.0.0.dist-info/WHEEL +5 -0
- praisonai-3.0.0.dist-info/entry_points.txt +4 -0
- praisonai-3.0.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
"""
|
|
2
|
+
MCP Prompts Adapter
|
|
3
|
+
|
|
4
|
+
Registers MCP prompts for PraisonAI:
|
|
5
|
+
- deep-research
|
|
6
|
+
- code-review
|
|
7
|
+
- workflow-auto
|
|
8
|
+
- guardrail-check
|
|
9
|
+
- context-engineering
|
|
10
|
+
- eval-criteria
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
import logging
|
|
14
|
+
|
|
15
|
+
from ..registry import register_prompt
|
|
16
|
+
|
|
17
|
+
logger = logging.getLogger(__name__)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def register_mcp_prompts() -> None:
|
|
21
|
+
"""Register MCP prompts."""
|
|
22
|
+
|
|
23
|
+
@register_prompt(
|
|
24
|
+
"deep-research",
|
|
25
|
+
description="Generate a deep research prompt for comprehensive topic analysis",
|
|
26
|
+
arguments=[
|
|
27
|
+
{"name": "topic", "description": "Research topic", "required": True},
|
|
28
|
+
{"name": "depth", "description": "Research depth (shallow/medium/deep)", "required": False},
|
|
29
|
+
{"name": "focus_areas", "description": "Specific areas to focus on", "required": False},
|
|
30
|
+
],
|
|
31
|
+
)
|
|
32
|
+
def deep_research_prompt(
|
|
33
|
+
topic: str,
|
|
34
|
+
depth: str = "medium",
|
|
35
|
+
focus_areas: str = "",
|
|
36
|
+
) -> list:
|
|
37
|
+
"""Generate deep research prompt."""
|
|
38
|
+
depth_instructions = {
|
|
39
|
+
"shallow": "Provide a brief overview with key points.",
|
|
40
|
+
"medium": "Conduct thorough research with multiple perspectives and sources.",
|
|
41
|
+
"deep": "Perform exhaustive research covering all aspects, historical context, current state, and future implications.",
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
focus_text = f"\n\nFocus particularly on: {focus_areas}" if focus_areas else ""
|
|
45
|
+
|
|
46
|
+
return [
|
|
47
|
+
{
|
|
48
|
+
"role": "user",
|
|
49
|
+
"content": {
|
|
50
|
+
"type": "text",
|
|
51
|
+
"text": f"""Research the following topic comprehensively:
|
|
52
|
+
|
|
53
|
+
Topic: {topic}
|
|
54
|
+
|
|
55
|
+
Research Depth: {depth}
|
|
56
|
+
{depth_instructions.get(depth, depth_instructions["medium"])}
|
|
57
|
+
{focus_text}
|
|
58
|
+
|
|
59
|
+
Please provide:
|
|
60
|
+
1. Executive Summary
|
|
61
|
+
2. Key Findings
|
|
62
|
+
3. Detailed Analysis
|
|
63
|
+
4. Sources and References
|
|
64
|
+
5. Conclusions and Recommendations"""
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
]
|
|
68
|
+
|
|
69
|
+
@register_prompt(
|
|
70
|
+
"code-review",
|
|
71
|
+
description="Generate a code review prompt for analyzing code quality",
|
|
72
|
+
arguments=[
|
|
73
|
+
{"name": "code", "description": "Code to review", "required": True},
|
|
74
|
+
{"name": "language", "description": "Programming language", "required": False},
|
|
75
|
+
{"name": "focus", "description": "Review focus (security/performance/style/all)", "required": False},
|
|
76
|
+
],
|
|
77
|
+
)
|
|
78
|
+
def code_review_prompt(
|
|
79
|
+
code: str,
|
|
80
|
+
language: str = "auto",
|
|
81
|
+
focus: str = "all",
|
|
82
|
+
) -> list:
|
|
83
|
+
"""Generate code review prompt."""
|
|
84
|
+
focus_areas = {
|
|
85
|
+
"security": "Focus on security vulnerabilities, input validation, and potential exploits.",
|
|
86
|
+
"performance": "Focus on performance optimizations, algorithmic efficiency, and resource usage.",
|
|
87
|
+
"style": "Focus on code style, readability, naming conventions, and best practices.",
|
|
88
|
+
"all": "Review all aspects: security, performance, style, and correctness.",
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
return [
|
|
92
|
+
{
|
|
93
|
+
"role": "user",
|
|
94
|
+
"content": {
|
|
95
|
+
"type": "text",
|
|
96
|
+
"text": f"""Please review the following {language} code:
|
|
97
|
+
|
|
98
|
+
```{language}
|
|
99
|
+
{code}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Review Focus: {focus}
|
|
103
|
+
{focus_areas.get(focus, focus_areas["all"])}
|
|
104
|
+
|
|
105
|
+
Please provide:
|
|
106
|
+
1. Overall Assessment
|
|
107
|
+
2. Issues Found (with severity: critical/major/minor)
|
|
108
|
+
3. Suggestions for Improvement
|
|
109
|
+
4. Positive Aspects
|
|
110
|
+
5. Refactored Code (if applicable)"""
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
]
|
|
114
|
+
|
|
115
|
+
@register_prompt(
|
|
116
|
+
"workflow-auto",
|
|
117
|
+
description="Generate a workflow auto-generation prompt",
|
|
118
|
+
arguments=[
|
|
119
|
+
{"name": "task", "description": "Task description", "required": True},
|
|
120
|
+
{"name": "pattern", "description": "Workflow pattern (sequential/parallel/routing)", "required": False},
|
|
121
|
+
{"name": "agents_count", "description": "Number of agents to use", "required": False},
|
|
122
|
+
],
|
|
123
|
+
)
|
|
124
|
+
def workflow_auto_prompt(
|
|
125
|
+
task: str,
|
|
126
|
+
pattern: str = "sequential",
|
|
127
|
+
agents_count: str = "auto",
|
|
128
|
+
) -> list:
|
|
129
|
+
"""Generate workflow auto-generation prompt."""
|
|
130
|
+
return [
|
|
131
|
+
{
|
|
132
|
+
"role": "user",
|
|
133
|
+
"content": {
|
|
134
|
+
"type": "text",
|
|
135
|
+
"text": f"""Generate a PraisonAI workflow configuration for the following task:
|
|
136
|
+
|
|
137
|
+
Task: {task}
|
|
138
|
+
|
|
139
|
+
Workflow Pattern: {pattern}
|
|
140
|
+
Number of Agents: {agents_count}
|
|
141
|
+
|
|
142
|
+
Please generate a YAML configuration that includes:
|
|
143
|
+
1. Framework specification
|
|
144
|
+
2. Topic/goal definition
|
|
145
|
+
3. Agent roles with:
|
|
146
|
+
- Role name
|
|
147
|
+
- Goal
|
|
148
|
+
- Backstory
|
|
149
|
+
- Tasks with descriptions and expected outputs
|
|
150
|
+
4. Appropriate tools for each agent
|
|
151
|
+
|
|
152
|
+
Output the complete agents.yaml configuration."""
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
]
|
|
156
|
+
|
|
157
|
+
@register_prompt(
|
|
158
|
+
"guardrail-check",
|
|
159
|
+
description="Generate a guardrail check prompt for content safety",
|
|
160
|
+
arguments=[
|
|
161
|
+
{"name": "content", "description": "Content to check", "required": True},
|
|
162
|
+
{"name": "rules", "description": "Specific rules to enforce", "required": False},
|
|
163
|
+
],
|
|
164
|
+
)
|
|
165
|
+
def guardrail_check_prompt(
|
|
166
|
+
content: str,
|
|
167
|
+
rules: str = "",
|
|
168
|
+
) -> list:
|
|
169
|
+
"""Generate guardrail check prompt."""
|
|
170
|
+
rules_text = f"\n\nAdditional Rules:\n{rules}" if rules else ""
|
|
171
|
+
|
|
172
|
+
return [
|
|
173
|
+
{
|
|
174
|
+
"role": "user",
|
|
175
|
+
"content": {
|
|
176
|
+
"type": "text",
|
|
177
|
+
"text": f"""Analyze the following content for safety and policy compliance:
|
|
178
|
+
|
|
179
|
+
Content:
|
|
180
|
+
{content}
|
|
181
|
+
{rules_text}
|
|
182
|
+
|
|
183
|
+
Please check for:
|
|
184
|
+
1. Harmful or dangerous content
|
|
185
|
+
2. Personal information exposure
|
|
186
|
+
3. Inappropriate language
|
|
187
|
+
4. Policy violations
|
|
188
|
+
5. Factual accuracy concerns
|
|
189
|
+
|
|
190
|
+
Provide:
|
|
191
|
+
- Safety Score (1-10)
|
|
192
|
+
- Issues Found
|
|
193
|
+
- Recommendations
|
|
194
|
+
- Modified Safe Version (if needed)"""
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
]
|
|
198
|
+
|
|
199
|
+
@register_prompt(
|
|
200
|
+
"context-engineering",
|
|
201
|
+
description="Generate a context engineering prompt for optimal LLM interaction",
|
|
202
|
+
arguments=[
|
|
203
|
+
{"name": "goal", "description": "What you want to achieve", "required": True},
|
|
204
|
+
{"name": "constraints", "description": "Any constraints or requirements", "required": False},
|
|
205
|
+
],
|
|
206
|
+
)
|
|
207
|
+
def context_engineering_prompt(
|
|
208
|
+
goal: str,
|
|
209
|
+
constraints: str = "",
|
|
210
|
+
) -> list:
|
|
211
|
+
"""Generate context engineering prompt."""
|
|
212
|
+
constraints_text = f"\n\nConstraints:\n{constraints}" if constraints else ""
|
|
213
|
+
|
|
214
|
+
return [
|
|
215
|
+
{
|
|
216
|
+
"role": "user",
|
|
217
|
+
"content": {
|
|
218
|
+
"type": "text",
|
|
219
|
+
"text": f"""Help me engineer an optimal prompt/context for the following goal:
|
|
220
|
+
|
|
221
|
+
Goal: {goal}
|
|
222
|
+
{constraints_text}
|
|
223
|
+
|
|
224
|
+
Please provide:
|
|
225
|
+
1. Optimal System Prompt
|
|
226
|
+
2. User Prompt Template
|
|
227
|
+
3. Few-shot Examples (if helpful)
|
|
228
|
+
4. Recommended Model Settings (temperature, etc.)
|
|
229
|
+
5. Expected Output Format
|
|
230
|
+
6. Potential Edge Cases to Handle"""
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
]
|
|
234
|
+
|
|
235
|
+
@register_prompt(
|
|
236
|
+
"eval-criteria",
|
|
237
|
+
description="Generate evaluation criteria for agent output assessment",
|
|
238
|
+
arguments=[
|
|
239
|
+
{"name": "task_type", "description": "Type of task being evaluated", "required": True},
|
|
240
|
+
{"name": "output_format", "description": "Expected output format", "required": False},
|
|
241
|
+
],
|
|
242
|
+
)
|
|
243
|
+
def eval_criteria_prompt(
|
|
244
|
+
task_type: str,
|
|
245
|
+
output_format: str = "text",
|
|
246
|
+
) -> list:
|
|
247
|
+
"""Generate evaluation criteria prompt."""
|
|
248
|
+
return [
|
|
249
|
+
{
|
|
250
|
+
"role": "user",
|
|
251
|
+
"content": {
|
|
252
|
+
"type": "text",
|
|
253
|
+
"text": f"""Generate comprehensive evaluation criteria for the following:
|
|
254
|
+
|
|
255
|
+
Task Type: {task_type}
|
|
256
|
+
Expected Output Format: {output_format}
|
|
257
|
+
|
|
258
|
+
Please provide:
|
|
259
|
+
1. Accuracy Criteria (what makes output correct)
|
|
260
|
+
2. Quality Metrics (completeness, clarity, relevance)
|
|
261
|
+
3. Format Compliance Checks
|
|
262
|
+
4. Edge Case Handling Assessment
|
|
263
|
+
5. Scoring Rubric (1-10 scale with descriptions)
|
|
264
|
+
6. Example Good/Bad Outputs"""
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
]
|
|
268
|
+
|
|
269
|
+
@register_prompt(
|
|
270
|
+
"agent-instructions",
|
|
271
|
+
description="Generate optimal agent instructions for a specific role",
|
|
272
|
+
arguments=[
|
|
273
|
+
{"name": "role", "description": "Agent role/persona", "required": True},
|
|
274
|
+
{"name": "capabilities", "description": "Available capabilities/tools", "required": False},
|
|
275
|
+
],
|
|
276
|
+
)
|
|
277
|
+
def agent_instructions_prompt(
|
|
278
|
+
role: str,
|
|
279
|
+
capabilities: str = "",
|
|
280
|
+
) -> list:
|
|
281
|
+
"""Generate agent instructions prompt."""
|
|
282
|
+
caps_text = f"\n\nAvailable Capabilities:\n{capabilities}" if capabilities else ""
|
|
283
|
+
|
|
284
|
+
return [
|
|
285
|
+
{
|
|
286
|
+
"role": "user",
|
|
287
|
+
"content": {
|
|
288
|
+
"type": "text",
|
|
289
|
+
"text": f"""Generate optimal instructions for an AI agent with the following role:
|
|
290
|
+
|
|
291
|
+
Role: {role}
|
|
292
|
+
{caps_text}
|
|
293
|
+
|
|
294
|
+
Please provide:
|
|
295
|
+
1. Core Identity Statement
|
|
296
|
+
2. Primary Objectives
|
|
297
|
+
3. Behavioral Guidelines
|
|
298
|
+
4. Communication Style
|
|
299
|
+
5. Decision-Making Framework
|
|
300
|
+
6. Error Handling Approach
|
|
301
|
+
7. Collaboration Guidelines (if working with other agents)"""
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
]
|
|
305
|
+
|
|
306
|
+
logger.info("Registered MCP prompts")
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
"""
|
|
2
|
+
MCP Resources Adapter
|
|
3
|
+
|
|
4
|
+
Registers MCP resources for PraisonAI:
|
|
5
|
+
- praisonai://memory/sessions
|
|
6
|
+
- praisonai://memory/{session_id}
|
|
7
|
+
- praisonai://workflows
|
|
8
|
+
- praisonai://tools
|
|
9
|
+
- praisonai://agents
|
|
10
|
+
- praisonai://knowledge/sources
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
import logging
|
|
14
|
+
|
|
15
|
+
from ..registry import register_resource
|
|
16
|
+
|
|
17
|
+
logger = logging.getLogger(__name__)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def register_mcp_resources() -> None:
|
|
21
|
+
"""Register MCP resources."""
|
|
22
|
+
|
|
23
|
+
@register_resource("praisonai://memory/sessions")
|
|
24
|
+
def memory_sessions_resource() -> dict:
|
|
25
|
+
"""List all memory sessions."""
|
|
26
|
+
try:
|
|
27
|
+
from praisonaiagents.memory import Memory
|
|
28
|
+
memory = Memory()
|
|
29
|
+
sessions = memory.list_sessions()
|
|
30
|
+
return {"sessions": sessions}
|
|
31
|
+
except ImportError:
|
|
32
|
+
return {"error": "Memory module not available", "sessions": []}
|
|
33
|
+
except Exception as e:
|
|
34
|
+
return {"error": str(e), "sessions": []}
|
|
35
|
+
|
|
36
|
+
@register_resource("praisonai://workflows")
|
|
37
|
+
def workflows_resource() -> dict:
|
|
38
|
+
"""List available workflows in current directory."""
|
|
39
|
+
try:
|
|
40
|
+
import os
|
|
41
|
+
import glob
|
|
42
|
+
workflows = []
|
|
43
|
+
for pattern in ["*.yaml", "*.yml"]:
|
|
44
|
+
for f in glob.glob(pattern):
|
|
45
|
+
if "agent" in f.lower() or "workflow" in f.lower():
|
|
46
|
+
workflows.append(f)
|
|
47
|
+
return {"workflows": workflows, "cwd": os.getcwd()}
|
|
48
|
+
except Exception as e:
|
|
49
|
+
return {"error": str(e), "workflows": []}
|
|
50
|
+
|
|
51
|
+
@register_resource("praisonai://tools")
|
|
52
|
+
def tools_resource() -> dict:
|
|
53
|
+
"""List available tools."""
|
|
54
|
+
try:
|
|
55
|
+
from ..registry import get_tool_registry
|
|
56
|
+
registry = get_tool_registry()
|
|
57
|
+
tools = registry.list_schemas()
|
|
58
|
+
return {"tools": [t["name"] for t in tools], "count": len(tools)}
|
|
59
|
+
except Exception as e:
|
|
60
|
+
return {"error": str(e), "tools": []}
|
|
61
|
+
|
|
62
|
+
@register_resource("praisonai://agents")
|
|
63
|
+
def agents_resource() -> dict:
|
|
64
|
+
"""List agent configurations."""
|
|
65
|
+
try:
|
|
66
|
+
import os
|
|
67
|
+
import yaml
|
|
68
|
+
agents = []
|
|
69
|
+
for f in ["agents.yaml", "agents.yml"]:
|
|
70
|
+
if os.path.exists(f):
|
|
71
|
+
with open(f, 'r') as file:
|
|
72
|
+
config = yaml.safe_load(file)
|
|
73
|
+
if config and "roles" in config:
|
|
74
|
+
agents.extend(list(config["roles"].keys()))
|
|
75
|
+
return {"agents": agents}
|
|
76
|
+
except Exception as e:
|
|
77
|
+
return {"error": str(e), "agents": []}
|
|
78
|
+
|
|
79
|
+
@register_resource("praisonai://knowledge/sources")
|
|
80
|
+
def knowledge_sources_resource() -> dict:
|
|
81
|
+
"""List knowledge sources."""
|
|
82
|
+
try:
|
|
83
|
+
from praisonaiagents.knowledge import Knowledge
|
|
84
|
+
knowledge = Knowledge()
|
|
85
|
+
sources = knowledge.list_sources()
|
|
86
|
+
return {"sources": sources}
|
|
87
|
+
except ImportError:
|
|
88
|
+
return {"error": "Knowledge module not available", "sources": []}
|
|
89
|
+
except Exception as e:
|
|
90
|
+
return {"error": str(e), "sources": []}
|
|
91
|
+
|
|
92
|
+
@register_resource("praisonai://config")
|
|
93
|
+
def config_resource() -> dict:
|
|
94
|
+
"""Get current configuration."""
|
|
95
|
+
try:
|
|
96
|
+
import os
|
|
97
|
+
config = {
|
|
98
|
+
"openai_api_key_set": bool(os.environ.get("OPENAI_API_KEY")),
|
|
99
|
+
"anthropic_api_key_set": bool(os.environ.get("ANTHROPIC_API_KEY")),
|
|
100
|
+
"google_api_key_set": bool(os.environ.get("GOOGLE_API_KEY")),
|
|
101
|
+
"cwd": os.getcwd(),
|
|
102
|
+
}
|
|
103
|
+
return config
|
|
104
|
+
except Exception as e:
|
|
105
|
+
return {"error": str(e)}
|
|
106
|
+
|
|
107
|
+
@register_resource("praisonai://mcp/status")
|
|
108
|
+
def mcp_status_resource() -> dict:
|
|
109
|
+
"""Get MCP server status."""
|
|
110
|
+
try:
|
|
111
|
+
from ..registry import get_tool_registry, get_resource_registry, get_prompt_registry
|
|
112
|
+
from ..server import PROTOCOL_VERSION
|
|
113
|
+
|
|
114
|
+
return {
|
|
115
|
+
"protocol_version": PROTOCOL_VERSION,
|
|
116
|
+
"tools_count": len(get_tool_registry().list_all()),
|
|
117
|
+
"resources_count": len(get_resource_registry().list_all()),
|
|
118
|
+
"prompts_count": len(get_prompt_registry().list_all()),
|
|
119
|
+
"status": "healthy",
|
|
120
|
+
}
|
|
121
|
+
except Exception as e:
|
|
122
|
+
return {"error": str(e), "status": "error"}
|
|
123
|
+
|
|
124
|
+
logger.info("Registered MCP resources")
|