kubiya-control-plane-api 0.9.15__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.
- control_plane_api/LICENSE +676 -0
- control_plane_api/README.md +350 -0
- control_plane_api/__init__.py +4 -0
- control_plane_api/__version__.py +8 -0
- control_plane_api/alembic/README +1 -0
- control_plane_api/alembic/env.py +121 -0
- control_plane_api/alembic/script.py.mako +28 -0
- control_plane_api/alembic/versions/2613c65c3dbe_initial_database_setup.py +32 -0
- control_plane_api/alembic/versions/2df520d4927d_merge_heads.py +28 -0
- control_plane_api/alembic/versions/43abf98d6a01_add_paused_status_to_executions.py +73 -0
- control_plane_api/alembic/versions/6289854264cb_merge_multiple_heads.py +28 -0
- control_plane_api/alembic/versions/6a4d4dc3d8dc_generate_execution_transitions.py +50 -0
- control_plane_api/alembic/versions/87d11cf0a783_add_disconnected_status_to_worker_.py +44 -0
- control_plane_api/alembic/versions/add_ephemeral_queue_support.py +85 -0
- control_plane_api/alembic/versions/add_model_type_to_llm_models.py +31 -0
- control_plane_api/alembic/versions/add_plan_executions_table.py +114 -0
- control_plane_api/alembic/versions/add_trace_span_tables.py +154 -0
- control_plane_api/alembic/versions/add_user_info_to_traces.py +36 -0
- control_plane_api/alembic/versions/adjusting_foreign_keys.py +32 -0
- control_plane_api/alembic/versions/b4983d976db2_initial_tables.py +1128 -0
- control_plane_api/alembic/versions/d181a3b40e71_rename_custom_metadata_to_metadata_in_.py +50 -0
- control_plane_api/alembic/versions/df9117888e82_add_missing_columns.py +82 -0
- control_plane_api/alembic/versions/f25de6ad895a_missing_migrations.py +34 -0
- control_plane_api/alembic/versions/f71305fb69b9_fix_ephemeral_queue_deletion_foreign_key.py +54 -0
- control_plane_api/alembic/versions/mark_local_exec_queues_as_ephemeral.py +68 -0
- control_plane_api/alembic.ini +148 -0
- control_plane_api/api/index.py +12 -0
- control_plane_api/app/__init__.py +11 -0
- control_plane_api/app/activities/__init__.py +20 -0
- control_plane_api/app/activities/agent_activities.py +384 -0
- control_plane_api/app/activities/plan_generation_activities.py +499 -0
- control_plane_api/app/activities/team_activities.py +424 -0
- control_plane_api/app/activities/temporal_cloud_activities.py +588 -0
- control_plane_api/app/config/__init__.py +35 -0
- control_plane_api/app/config/api_config.py +469 -0
- control_plane_api/app/config/config_loader.py +224 -0
- control_plane_api/app/config/model_pricing.py +323 -0
- control_plane_api/app/config/storage_config.py +159 -0
- control_plane_api/app/config.py +115 -0
- control_plane_api/app/controllers/__init__.py +0 -0
- control_plane_api/app/controllers/execution_environment_controller.py +1315 -0
- control_plane_api/app/database.py +135 -0
- control_plane_api/app/exceptions.py +408 -0
- control_plane_api/app/lib/__init__.py +11 -0
- control_plane_api/app/lib/environment.py +65 -0
- control_plane_api/app/lib/event_bus/__init__.py +17 -0
- control_plane_api/app/lib/event_bus/base.py +136 -0
- control_plane_api/app/lib/event_bus/manager.py +335 -0
- control_plane_api/app/lib/event_bus/providers/__init__.py +6 -0
- control_plane_api/app/lib/event_bus/providers/http_provider.py +166 -0
- control_plane_api/app/lib/event_bus/providers/nats_provider.py +324 -0
- control_plane_api/app/lib/event_bus/providers/redis_provider.py +233 -0
- control_plane_api/app/lib/event_bus/providers/websocket_provider.py +497 -0
- control_plane_api/app/lib/job_executor.py +330 -0
- control_plane_api/app/lib/kubiya_client.py +293 -0
- control_plane_api/app/lib/litellm_pricing.py +166 -0
- control_plane_api/app/lib/mcp_validation.py +163 -0
- control_plane_api/app/lib/nats/__init__.py +13 -0
- control_plane_api/app/lib/nats/credentials_manager.py +288 -0
- control_plane_api/app/lib/nats/listener.py +374 -0
- control_plane_api/app/lib/planning_prompt_builder.py +153 -0
- control_plane_api/app/lib/planning_tools/__init__.py +41 -0
- control_plane_api/app/lib/planning_tools/agents.py +409 -0
- control_plane_api/app/lib/planning_tools/agno_toolkit.py +836 -0
- control_plane_api/app/lib/planning_tools/base.py +119 -0
- control_plane_api/app/lib/planning_tools/cognitive_memory_tools.py +403 -0
- control_plane_api/app/lib/planning_tools/context_graph_tools.py +545 -0
- control_plane_api/app/lib/planning_tools/environments.py +218 -0
- control_plane_api/app/lib/planning_tools/knowledge.py +204 -0
- control_plane_api/app/lib/planning_tools/models.py +93 -0
- control_plane_api/app/lib/planning_tools/planning_service.py +646 -0
- control_plane_api/app/lib/planning_tools/resources.py +242 -0
- control_plane_api/app/lib/planning_tools/teams.py +334 -0
- control_plane_api/app/lib/policy_enforcer_client.py +1016 -0
- control_plane_api/app/lib/redis_client.py +803 -0
- control_plane_api/app/lib/sqlalchemy_utils.py +486 -0
- control_plane_api/app/lib/state_transition_tools/__init__.py +7 -0
- control_plane_api/app/lib/state_transition_tools/execution_context.py +388 -0
- control_plane_api/app/lib/storage/__init__.py +20 -0
- control_plane_api/app/lib/storage/base_provider.py +274 -0
- control_plane_api/app/lib/storage/provider_factory.py +157 -0
- control_plane_api/app/lib/storage/vercel_blob_provider.py +468 -0
- control_plane_api/app/lib/supabase.py +71 -0
- control_plane_api/app/lib/supabase_utils.py +138 -0
- control_plane_api/app/lib/task_planning/__init__.py +138 -0
- control_plane_api/app/lib/task_planning/agent_factory.py +308 -0
- control_plane_api/app/lib/task_planning/agents.py +389 -0
- control_plane_api/app/lib/task_planning/cache.py +218 -0
- control_plane_api/app/lib/task_planning/entity_resolver.py +273 -0
- control_plane_api/app/lib/task_planning/helpers.py +293 -0
- control_plane_api/app/lib/task_planning/hooks.py +474 -0
- control_plane_api/app/lib/task_planning/models.py +503 -0
- control_plane_api/app/lib/task_planning/plan_validator.py +166 -0
- control_plane_api/app/lib/task_planning/planning_workflow.py +2911 -0
- control_plane_api/app/lib/task_planning/runner.py +656 -0
- control_plane_api/app/lib/task_planning/streaming_hook.py +213 -0
- control_plane_api/app/lib/task_planning/workflow.py +424 -0
- control_plane_api/app/lib/templating/__init__.py +88 -0
- control_plane_api/app/lib/templating/compiler.py +278 -0
- control_plane_api/app/lib/templating/engine.py +178 -0
- control_plane_api/app/lib/templating/parsers/__init__.py +29 -0
- control_plane_api/app/lib/templating/parsers/base.py +96 -0
- control_plane_api/app/lib/templating/parsers/env.py +85 -0
- control_plane_api/app/lib/templating/parsers/graph.py +112 -0
- control_plane_api/app/lib/templating/parsers/secret.py +87 -0
- control_plane_api/app/lib/templating/parsers/simple.py +81 -0
- control_plane_api/app/lib/templating/resolver.py +366 -0
- control_plane_api/app/lib/templating/types.py +214 -0
- control_plane_api/app/lib/templating/validator.py +201 -0
- control_plane_api/app/lib/temporal_client.py +232 -0
- control_plane_api/app/lib/temporal_credentials_cache.py +178 -0
- control_plane_api/app/lib/temporal_credentials_service.py +203 -0
- control_plane_api/app/lib/validation/__init__.py +24 -0
- control_plane_api/app/lib/validation/runtime_validation.py +388 -0
- control_plane_api/app/main.py +531 -0
- control_plane_api/app/middleware/__init__.py +10 -0
- control_plane_api/app/middleware/auth.py +645 -0
- control_plane_api/app/middleware/exception_handler.py +267 -0
- control_plane_api/app/middleware/prometheus_middleware.py +173 -0
- control_plane_api/app/middleware/rate_limiting.py +384 -0
- control_plane_api/app/middleware/request_id.py +202 -0
- control_plane_api/app/models/__init__.py +40 -0
- control_plane_api/app/models/agent.py +90 -0
- control_plane_api/app/models/analytics.py +206 -0
- control_plane_api/app/models/associations.py +107 -0
- control_plane_api/app/models/auth_user.py +73 -0
- control_plane_api/app/models/context.py +161 -0
- control_plane_api/app/models/custom_integration.py +99 -0
- control_plane_api/app/models/environment.py +64 -0
- control_plane_api/app/models/execution.py +125 -0
- control_plane_api/app/models/execution_transition.py +50 -0
- control_plane_api/app/models/job.py +159 -0
- control_plane_api/app/models/llm_model.py +78 -0
- control_plane_api/app/models/orchestration.py +66 -0
- control_plane_api/app/models/plan_execution.py +102 -0
- control_plane_api/app/models/presence.py +49 -0
- control_plane_api/app/models/project.py +61 -0
- control_plane_api/app/models/project_management.py +85 -0
- control_plane_api/app/models/session.py +29 -0
- control_plane_api/app/models/skill.py +155 -0
- control_plane_api/app/models/system_tables.py +43 -0
- control_plane_api/app/models/task_planning.py +372 -0
- control_plane_api/app/models/team.py +86 -0
- control_plane_api/app/models/trace.py +257 -0
- control_plane_api/app/models/user_profile.py +54 -0
- control_plane_api/app/models/worker.py +221 -0
- control_plane_api/app/models/workflow.py +161 -0
- control_plane_api/app/models/workspace.py +50 -0
- control_plane_api/app/observability/__init__.py +177 -0
- control_plane_api/app/observability/context_logging.py +475 -0
- control_plane_api/app/observability/decorators.py +337 -0
- control_plane_api/app/observability/local_span_processor.py +702 -0
- control_plane_api/app/observability/metrics.py +303 -0
- control_plane_api/app/observability/middleware.py +246 -0
- control_plane_api/app/observability/optional.py +115 -0
- control_plane_api/app/observability/tracing.py +382 -0
- control_plane_api/app/policies/README.md +149 -0
- control_plane_api/app/policies/approved_users.rego +62 -0
- control_plane_api/app/policies/business_hours.rego +51 -0
- control_plane_api/app/policies/rate_limiting.rego +100 -0
- control_plane_api/app/policies/tool_enforcement/README.md +336 -0
- control_plane_api/app/policies/tool_enforcement/bash_command_validation.rego +71 -0
- control_plane_api/app/policies/tool_enforcement/business_hours_enforcement.rego +82 -0
- control_plane_api/app/policies/tool_enforcement/mcp_tool_allowlist.rego +58 -0
- control_plane_api/app/policies/tool_enforcement/production_safeguards.rego +80 -0
- control_plane_api/app/policies/tool_enforcement/role_based_tool_access.rego +44 -0
- control_plane_api/app/policies/tool_restrictions.rego +86 -0
- control_plane_api/app/routers/__init__.py +4 -0
- control_plane_api/app/routers/agents.py +382 -0
- control_plane_api/app/routers/agents_v2.py +1598 -0
- control_plane_api/app/routers/analytics.py +1310 -0
- control_plane_api/app/routers/auth.py +59 -0
- control_plane_api/app/routers/client_config.py +57 -0
- control_plane_api/app/routers/context_graph.py +561 -0
- control_plane_api/app/routers/context_manager.py +577 -0
- control_plane_api/app/routers/custom_integrations.py +490 -0
- control_plane_api/app/routers/enforcer.py +132 -0
- control_plane_api/app/routers/environment_context.py +252 -0
- control_plane_api/app/routers/environments.py +761 -0
- control_plane_api/app/routers/execution_environment.py +847 -0
- control_plane_api/app/routers/executions/__init__.py +28 -0
- control_plane_api/app/routers/executions/router.py +286 -0
- control_plane_api/app/routers/executions/services/__init__.py +22 -0
- control_plane_api/app/routers/executions/services/demo_worker_health.py +156 -0
- control_plane_api/app/routers/executions/services/status_service.py +420 -0
- control_plane_api/app/routers/executions/services/test_worker_health.py +480 -0
- control_plane_api/app/routers/executions/services/worker_health.py +514 -0
- control_plane_api/app/routers/executions/streaming/__init__.py +22 -0
- control_plane_api/app/routers/executions/streaming/deduplication.py +352 -0
- control_plane_api/app/routers/executions/streaming/event_buffer.py +353 -0
- control_plane_api/app/routers/executions/streaming/event_formatter.py +964 -0
- control_plane_api/app/routers/executions/streaming/history_loader.py +588 -0
- control_plane_api/app/routers/executions/streaming/live_source.py +693 -0
- control_plane_api/app/routers/executions/streaming/streamer.py +849 -0
- control_plane_api/app/routers/executions.py +4888 -0
- control_plane_api/app/routers/health.py +165 -0
- control_plane_api/app/routers/health_v2.py +394 -0
- control_plane_api/app/routers/integration_templates.py +496 -0
- control_plane_api/app/routers/integrations.py +287 -0
- control_plane_api/app/routers/jobs.py +1809 -0
- control_plane_api/app/routers/metrics.py +517 -0
- control_plane_api/app/routers/models.py +82 -0
- control_plane_api/app/routers/models_v2.py +628 -0
- control_plane_api/app/routers/plan_executions.py +1481 -0
- control_plane_api/app/routers/plan_generation_async.py +304 -0
- control_plane_api/app/routers/policies.py +669 -0
- control_plane_api/app/routers/presence.py +234 -0
- control_plane_api/app/routers/projects.py +987 -0
- control_plane_api/app/routers/runners.py +379 -0
- control_plane_api/app/routers/runtimes.py +172 -0
- control_plane_api/app/routers/secrets.py +171 -0
- control_plane_api/app/routers/skills.py +1010 -0
- control_plane_api/app/routers/skills_definitions.py +140 -0
- control_plane_api/app/routers/storage.py +456 -0
- control_plane_api/app/routers/task_planning.py +611 -0
- control_plane_api/app/routers/task_queues.py +650 -0
- control_plane_api/app/routers/team_context.py +274 -0
- control_plane_api/app/routers/teams.py +1747 -0
- control_plane_api/app/routers/templates.py +248 -0
- control_plane_api/app/routers/traces.py +571 -0
- control_plane_api/app/routers/websocket_client.py +479 -0
- control_plane_api/app/routers/websocket_executions_status.py +437 -0
- control_plane_api/app/routers/websocket_gateway.py +323 -0
- control_plane_api/app/routers/websocket_traces.py +576 -0
- control_plane_api/app/routers/worker_queues.py +2555 -0
- control_plane_api/app/routers/worker_websocket.py +419 -0
- control_plane_api/app/routers/workers.py +1004 -0
- control_plane_api/app/routers/workflows.py +204 -0
- control_plane_api/app/runtimes/__init__.py +6 -0
- control_plane_api/app/runtimes/validation.py +344 -0
- control_plane_api/app/schemas/__init__.py +1 -0
- control_plane_api/app/schemas/job_schemas.py +302 -0
- control_plane_api/app/schemas/mcp_schemas.py +311 -0
- control_plane_api/app/schemas/template_schemas.py +133 -0
- control_plane_api/app/schemas/trace_schemas.py +168 -0
- control_plane_api/app/schemas/worker_queue_observability_schemas.py +165 -0
- control_plane_api/app/services/__init__.py +1 -0
- control_plane_api/app/services/agno_planning_strategy.py +233 -0
- control_plane_api/app/services/agno_service.py +838 -0
- control_plane_api/app/services/claude_code_planning_service.py +203 -0
- control_plane_api/app/services/context_graph_client.py +224 -0
- control_plane_api/app/services/custom_integration_service.py +415 -0
- control_plane_api/app/services/integration_resolution_service.py +345 -0
- control_plane_api/app/services/litellm_service.py +394 -0
- control_plane_api/app/services/plan_generator.py +79 -0
- control_plane_api/app/services/planning_strategy.py +66 -0
- control_plane_api/app/services/planning_strategy_factory.py +118 -0
- control_plane_api/app/services/policy_service.py +615 -0
- control_plane_api/app/services/state_transition_service.py +755 -0
- control_plane_api/app/services/storage_service.py +593 -0
- control_plane_api/app/services/temporal_cloud_provisioning.py +150 -0
- control_plane_api/app/services/toolsets/context_graph_skill.py +432 -0
- control_plane_api/app/services/trace_retention.py +354 -0
- control_plane_api/app/services/worker_queue_metrics_service.py +190 -0
- control_plane_api/app/services/workflow_cancellation_manager.py +135 -0
- control_plane_api/app/services/workflow_operations_service.py +611 -0
- control_plane_api/app/skills/__init__.py +100 -0
- control_plane_api/app/skills/base.py +239 -0
- control_plane_api/app/skills/builtin/__init__.py +37 -0
- control_plane_api/app/skills/builtin/agent_communication/__init__.py +8 -0
- control_plane_api/app/skills/builtin/agent_communication/skill.py +246 -0
- control_plane_api/app/skills/builtin/code_ingestion/__init__.py +4 -0
- control_plane_api/app/skills/builtin/code_ingestion/skill.py +267 -0
- control_plane_api/app/skills/builtin/cognitive_memory/__init__.py +4 -0
- control_plane_api/app/skills/builtin/cognitive_memory/skill.py +174 -0
- control_plane_api/app/skills/builtin/contextual_awareness/__init__.py +4 -0
- control_plane_api/app/skills/builtin/contextual_awareness/skill.py +387 -0
- control_plane_api/app/skills/builtin/data_visualization/__init__.py +4 -0
- control_plane_api/app/skills/builtin/data_visualization/skill.py +154 -0
- control_plane_api/app/skills/builtin/docker/__init__.py +4 -0
- control_plane_api/app/skills/builtin/docker/skill.py +104 -0
- control_plane_api/app/skills/builtin/file_generation/__init__.py +4 -0
- control_plane_api/app/skills/builtin/file_generation/skill.py +94 -0
- control_plane_api/app/skills/builtin/file_system/__init__.py +4 -0
- control_plane_api/app/skills/builtin/file_system/skill.py +110 -0
- control_plane_api/app/skills/builtin/knowledge_api/__init__.py +5 -0
- control_plane_api/app/skills/builtin/knowledge_api/skill.py +124 -0
- control_plane_api/app/skills/builtin/python/__init__.py +4 -0
- control_plane_api/app/skills/builtin/python/skill.py +92 -0
- control_plane_api/app/skills/builtin/remote_filesystem/__init__.py +5 -0
- control_plane_api/app/skills/builtin/remote_filesystem/skill.py +170 -0
- control_plane_api/app/skills/builtin/shell/__init__.py +4 -0
- control_plane_api/app/skills/builtin/shell/skill.py +161 -0
- control_plane_api/app/skills/builtin/slack/__init__.py +3 -0
- control_plane_api/app/skills/builtin/slack/skill.py +302 -0
- control_plane_api/app/skills/builtin/workflow_executor/__init__.py +4 -0
- control_plane_api/app/skills/builtin/workflow_executor/skill.py +469 -0
- control_plane_api/app/skills/business_intelligence.py +189 -0
- control_plane_api/app/skills/config.py +63 -0
- control_plane_api/app/skills/loaders/__init__.py +14 -0
- control_plane_api/app/skills/loaders/base.py +73 -0
- control_plane_api/app/skills/loaders/filesystem_loader.py +199 -0
- control_plane_api/app/skills/registry.py +125 -0
- control_plane_api/app/utils/helpers.py +12 -0
- control_plane_api/app/utils/workflow_executor.py +354 -0
- control_plane_api/app/workflows/__init__.py +11 -0
- control_plane_api/app/workflows/agent_execution.py +520 -0
- control_plane_api/app/workflows/agent_execution_with_skills.py +223 -0
- control_plane_api/app/workflows/namespace_provisioning.py +326 -0
- control_plane_api/app/workflows/plan_generation.py +254 -0
- control_plane_api/app/workflows/team_execution.py +442 -0
- control_plane_api/scripts/seed_models.py +240 -0
- control_plane_api/scripts/validate_existing_tool_names.py +492 -0
- control_plane_api/shared/__init__.py +8 -0
- control_plane_api/shared/version.py +17 -0
- control_plane_api/test_deduplication.py +274 -0
- control_plane_api/test_executor_deduplication_e2e.py +309 -0
- control_plane_api/test_job_execution_e2e.py +283 -0
- control_plane_api/test_real_integration.py +193 -0
- control_plane_api/version.py +38 -0
- control_plane_api/worker/__init__.py +0 -0
- control_plane_api/worker/activities/__init__.py +0 -0
- control_plane_api/worker/activities/agent_activities.py +1585 -0
- control_plane_api/worker/activities/approval_activities.py +234 -0
- control_plane_api/worker/activities/job_activities.py +199 -0
- control_plane_api/worker/activities/runtime_activities.py +1167 -0
- control_plane_api/worker/activities/skill_activities.py +282 -0
- control_plane_api/worker/activities/team_activities.py +479 -0
- control_plane_api/worker/agent_runtime_server.py +370 -0
- control_plane_api/worker/binary_manager.py +333 -0
- control_plane_api/worker/config/__init__.py +31 -0
- control_plane_api/worker/config/worker_config.py +273 -0
- control_plane_api/worker/control_plane_client.py +1491 -0
- control_plane_api/worker/examples/analytics_integration_example.py +362 -0
- control_plane_api/worker/health_monitor.py +159 -0
- control_plane_api/worker/metrics.py +237 -0
- control_plane_api/worker/models/__init__.py +1 -0
- control_plane_api/worker/models/error_events.py +105 -0
- control_plane_api/worker/models/inputs.py +89 -0
- control_plane_api/worker/runtimes/__init__.py +35 -0
- control_plane_api/worker/runtimes/agent_runtime/runtime.py +485 -0
- control_plane_api/worker/runtimes/agno/__init__.py +34 -0
- control_plane_api/worker/runtimes/agno/config.py +248 -0
- control_plane_api/worker/runtimes/agno/hooks.py +385 -0
- control_plane_api/worker/runtimes/agno/mcp_builder.py +195 -0
- control_plane_api/worker/runtimes/agno/runtime.py +1063 -0
- control_plane_api/worker/runtimes/agno/utils.py +163 -0
- control_plane_api/worker/runtimes/base.py +979 -0
- control_plane_api/worker/runtimes/claude_code/__init__.py +38 -0
- control_plane_api/worker/runtimes/claude_code/cleanup.py +184 -0
- control_plane_api/worker/runtimes/claude_code/client_pool.py +529 -0
- control_plane_api/worker/runtimes/claude_code/config.py +829 -0
- control_plane_api/worker/runtimes/claude_code/hooks.py +482 -0
- control_plane_api/worker/runtimes/claude_code/litellm_proxy.py +1702 -0
- control_plane_api/worker/runtimes/claude_code/mcp_builder.py +467 -0
- control_plane_api/worker/runtimes/claude_code/mcp_discovery.py +558 -0
- control_plane_api/worker/runtimes/claude_code/runtime.py +1546 -0
- control_plane_api/worker/runtimes/claude_code/tool_mapper.py +403 -0
- control_plane_api/worker/runtimes/claude_code/utils.py +149 -0
- control_plane_api/worker/runtimes/factory.py +173 -0
- control_plane_api/worker/runtimes/model_utils.py +107 -0
- control_plane_api/worker/runtimes/validation.py +93 -0
- control_plane_api/worker/services/__init__.py +1 -0
- control_plane_api/worker/services/agent_communication_tools.py +908 -0
- control_plane_api/worker/services/agent_executor.py +485 -0
- control_plane_api/worker/services/agent_executor_v2.py +793 -0
- control_plane_api/worker/services/analytics_collector.py +457 -0
- control_plane_api/worker/services/analytics_service.py +464 -0
- control_plane_api/worker/services/approval_tools.py +310 -0
- control_plane_api/worker/services/approval_tools_agno.py +207 -0
- control_plane_api/worker/services/cancellation_manager.py +177 -0
- control_plane_api/worker/services/code_ingestion_tools.py +465 -0
- control_plane_api/worker/services/contextual_awareness_tools.py +405 -0
- control_plane_api/worker/services/data_visualization.py +834 -0
- control_plane_api/worker/services/event_publisher.py +531 -0
- control_plane_api/worker/services/jira_tools.py +257 -0
- control_plane_api/worker/services/remote_filesystem_tools.py +498 -0
- control_plane_api/worker/services/runtime_analytics.py +328 -0
- control_plane_api/worker/services/session_service.py +365 -0
- control_plane_api/worker/services/skill_context_enhancement.py +181 -0
- control_plane_api/worker/services/skill_factory.py +471 -0
- control_plane_api/worker/services/system_prompt_enhancement.py +410 -0
- control_plane_api/worker/services/team_executor.py +715 -0
- control_plane_api/worker/services/team_executor_v2.py +1866 -0
- control_plane_api/worker/services/tool_enforcement.py +254 -0
- control_plane_api/worker/services/workflow_executor/__init__.py +52 -0
- control_plane_api/worker/services/workflow_executor/event_processor.py +287 -0
- control_plane_api/worker/services/workflow_executor/event_publisher.py +210 -0
- control_plane_api/worker/services/workflow_executor/executors/__init__.py +15 -0
- control_plane_api/worker/services/workflow_executor/executors/base.py +270 -0
- control_plane_api/worker/services/workflow_executor/executors/json_executor.py +50 -0
- control_plane_api/worker/services/workflow_executor/executors/python_executor.py +50 -0
- control_plane_api/worker/services/workflow_executor/models.py +142 -0
- control_plane_api/worker/services/workflow_executor_tools.py +1748 -0
- control_plane_api/worker/skills/__init__.py +12 -0
- control_plane_api/worker/skills/builtin/context_graph_search/README.md +213 -0
- control_plane_api/worker/skills/builtin/context_graph_search/__init__.py +5 -0
- control_plane_api/worker/skills/builtin/context_graph_search/agno_impl.py +808 -0
- control_plane_api/worker/skills/builtin/context_graph_search/skill.yaml +67 -0
- control_plane_api/worker/skills/builtin/contextual_awareness/__init__.py +4 -0
- control_plane_api/worker/skills/builtin/contextual_awareness/agno_impl.py +62 -0
- control_plane_api/worker/skills/builtin/data_visualization/agno_impl.py +18 -0
- control_plane_api/worker/skills/builtin/data_visualization/skill.yaml +84 -0
- control_plane_api/worker/skills/builtin/docker/agno_impl.py +65 -0
- control_plane_api/worker/skills/builtin/docker/skill.yaml +60 -0
- control_plane_api/worker/skills/builtin/file_generation/agno_impl.py +47 -0
- control_plane_api/worker/skills/builtin/file_generation/skill.yaml +64 -0
- control_plane_api/worker/skills/builtin/file_system/agno_impl.py +32 -0
- control_plane_api/worker/skills/builtin/file_system/skill.yaml +54 -0
- control_plane_api/worker/skills/builtin/knowledge_api/__init__.py +4 -0
- control_plane_api/worker/skills/builtin/knowledge_api/agno_impl.py +50 -0
- control_plane_api/worker/skills/builtin/knowledge_api/skill.yaml +66 -0
- control_plane_api/worker/skills/builtin/python/agno_impl.py +25 -0
- control_plane_api/worker/skills/builtin/python/skill.yaml +60 -0
- control_plane_api/worker/skills/builtin/schema_fix_mixin.py +260 -0
- control_plane_api/worker/skills/builtin/shell/agno_impl.py +31 -0
- control_plane_api/worker/skills/builtin/shell/skill.yaml +60 -0
- control_plane_api/worker/skills/builtin/slack/__init__.py +3 -0
- control_plane_api/worker/skills/builtin/slack/agno_impl.py +1282 -0
- control_plane_api/worker/skills/builtin/slack/skill.yaml +276 -0
- control_plane_api/worker/skills/builtin/workflow_executor/agno_impl.py +62 -0
- control_plane_api/worker/skills/builtin/workflow_executor/skill.yaml +79 -0
- control_plane_api/worker/skills/loaders/__init__.py +5 -0
- control_plane_api/worker/skills/loaders/base.py +23 -0
- control_plane_api/worker/skills/loaders/filesystem_loader.py +357 -0
- control_plane_api/worker/skills/registry.py +208 -0
- control_plane_api/worker/tests/__init__.py +1 -0
- control_plane_api/worker/tests/conftest.py +12 -0
- control_plane_api/worker/tests/e2e/__init__.py +0 -0
- control_plane_api/worker/tests/e2e/test_context_graph_real_api.py +338 -0
- control_plane_api/worker/tests/e2e/test_context_graph_templates_e2e.py +523 -0
- control_plane_api/worker/tests/e2e/test_enforcement_e2e.py +344 -0
- control_plane_api/worker/tests/e2e/test_execution_flow.py +571 -0
- control_plane_api/worker/tests/e2e/test_single_execution_mode.py +656 -0
- control_plane_api/worker/tests/integration/__init__.py +0 -0
- control_plane_api/worker/tests/integration/test_builtin_skills_fixes.py +245 -0
- control_plane_api/worker/tests/integration/test_context_graph_search_integration.py +365 -0
- control_plane_api/worker/tests/integration/test_control_plane_integration.py +308 -0
- control_plane_api/worker/tests/integration/test_hook_enforcement_integration.py +579 -0
- control_plane_api/worker/tests/integration/test_scheduled_job_workflow.py +237 -0
- control_plane_api/worker/tests/integration/test_system_prompt_enhancement_integration.py +343 -0
- control_plane_api/worker/tests/unit/__init__.py +0 -0
- control_plane_api/worker/tests/unit/test_builtin_skill_autoload.py +396 -0
- control_plane_api/worker/tests/unit/test_context_graph_search.py +450 -0
- control_plane_api/worker/tests/unit/test_context_graph_templates.py +403 -0
- control_plane_api/worker/tests/unit/test_control_plane_client.py +401 -0
- control_plane_api/worker/tests/unit/test_control_plane_client_jobs.py +345 -0
- control_plane_api/worker/tests/unit/test_job_activities.py +353 -0
- control_plane_api/worker/tests/unit/test_skill_context_enhancement.py +321 -0
- control_plane_api/worker/tests/unit/test_system_prompt_enhancement.py +415 -0
- control_plane_api/worker/tests/unit/test_tool_enforcement.py +324 -0
- control_plane_api/worker/utils/__init__.py +1 -0
- control_plane_api/worker/utils/chunk_batcher.py +330 -0
- control_plane_api/worker/utils/environment.py +65 -0
- control_plane_api/worker/utils/error_publisher.py +260 -0
- control_plane_api/worker/utils/event_batcher.py +256 -0
- control_plane_api/worker/utils/logging_config.py +335 -0
- control_plane_api/worker/utils/logging_helper.py +326 -0
- control_plane_api/worker/utils/parameter_validator.py +120 -0
- control_plane_api/worker/utils/retry_utils.py +60 -0
- control_plane_api/worker/utils/streaming_utils.py +665 -0
- control_plane_api/worker/utils/tool_validation.py +332 -0
- control_plane_api/worker/utils/workspace_manager.py +163 -0
- control_plane_api/worker/websocket_client.py +393 -0
- control_plane_api/worker/worker.py +1297 -0
- control_plane_api/worker/workflows/__init__.py +0 -0
- control_plane_api/worker/workflows/agent_execution.py +909 -0
- control_plane_api/worker/workflows/scheduled_job_wrapper.py +332 -0
- control_plane_api/worker/workflows/team_execution.py +611 -0
- kubiya_control_plane_api-0.9.15.dist-info/METADATA +354 -0
- kubiya_control_plane_api-0.9.15.dist-info/RECORD +479 -0
- kubiya_control_plane_api-0.9.15.dist-info/WHEEL +5 -0
- kubiya_control_plane_api-0.9.15.dist-info/entry_points.txt +5 -0
- kubiya_control_plane_api-0.9.15.dist-info/licenses/LICENSE +676 -0
- kubiya_control_plane_api-0.9.15.dist-info/top_level.txt +3 -0
- scripts/__init__.py +1 -0
- scripts/migrations.py +39 -0
- scripts/seed_worker_queues.py +128 -0
- scripts/setup_agent_runtime.py +142 -0
- worker_internal/__init__.py +1 -0
- worker_internal/planner/__init__.py +1 -0
- worker_internal/planner/activities.py +1499 -0
- worker_internal/planner/agent_tools.py +197 -0
- worker_internal/planner/event_models.py +148 -0
- worker_internal/planner/event_publisher.py +67 -0
- worker_internal/planner/models.py +199 -0
- worker_internal/planner/retry_logic.py +134 -0
- worker_internal/planner/worker.py +300 -0
- worker_internal/planner/workflows.py +970 -0
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Pydantic schemas for template API endpoints.
|
|
3
|
+
|
|
4
|
+
Defines request and response models for template compilation and validation.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from pydantic import BaseModel, Field
|
|
8
|
+
from typing import Dict, List, Any, Optional
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class TemplateVariableSchema(BaseModel):
|
|
12
|
+
"""Schema for a template variable."""
|
|
13
|
+
name: str = Field(..., description="Variable name (e.g., 'api_key' or 'secret.github_token')")
|
|
14
|
+
type: str = Field(..., description="Variable type: 'simple', 'secret', or 'env'")
|
|
15
|
+
raw: str = Field(..., description="Raw template string (e.g., '{{.secret.api_key}}')")
|
|
16
|
+
start: int = Field(..., description="Start position in template")
|
|
17
|
+
end: int = Field(..., description="End position in template")
|
|
18
|
+
display_name: str = Field(..., description="Display name without type prefix")
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class ValidationErrorSchema(BaseModel):
|
|
22
|
+
"""Schema for a validation error."""
|
|
23
|
+
message: str = Field(..., description="Human-readable error message")
|
|
24
|
+
variable: Optional[TemplateVariableSchema] = Field(None, description="Variable that caused the error")
|
|
25
|
+
position: Optional[int] = Field(None, description="Character position in template")
|
|
26
|
+
code: Optional[str] = Field(None, description="Machine-readable error code")
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class TemplateCompileRequest(BaseModel):
|
|
30
|
+
"""Request schema for template compilation endpoint."""
|
|
31
|
+
template: str = Field(..., description="Template string with {{variable}} syntax", min_length=1)
|
|
32
|
+
context: Optional[Dict[str, Any]] = Field(
|
|
33
|
+
default_factory=dict,
|
|
34
|
+
description="Context for compilation (variables, secrets, env_vars)"
|
|
35
|
+
)
|
|
36
|
+
validate_only: bool = Field(
|
|
37
|
+
False,
|
|
38
|
+
description="Only validate syntax without compiling"
|
|
39
|
+
)
|
|
40
|
+
environment_id: Optional[str] = Field(
|
|
41
|
+
None,
|
|
42
|
+
description="Environment ID for secret validation"
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
class Config:
|
|
46
|
+
json_schema_extra = {
|
|
47
|
+
"example": {
|
|
48
|
+
"template": "http://api.example.com:{{.env.PORT}}/auth?key={{.secret.api_key}}",
|
|
49
|
+
"context": {
|
|
50
|
+
"variables": {},
|
|
51
|
+
"secrets": {"api_key": "secret-value"},
|
|
52
|
+
"env_vars": {"PORT": "8080"}
|
|
53
|
+
},
|
|
54
|
+
"validate_only": False,
|
|
55
|
+
"environment_id": "env-123"
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
class TemplateCompileResponse(BaseModel):
|
|
61
|
+
"""Response schema for template compilation endpoint."""
|
|
62
|
+
valid: bool = Field(..., description="Whether the template is valid")
|
|
63
|
+
compiled: Optional[str] = Field(None, description="Compiled template (if valid and context provided)")
|
|
64
|
+
variables: List[TemplateVariableSchema] = Field(default_factory=list, description="Variables found in template")
|
|
65
|
+
errors: List[ValidationErrorSchema] = Field(default_factory=list, description="Validation/compilation errors")
|
|
66
|
+
warnings: List[str] = Field(default_factory=list, description="Non-fatal warnings")
|
|
67
|
+
|
|
68
|
+
class Config:
|
|
69
|
+
json_schema_extra = {
|
|
70
|
+
"example": {
|
|
71
|
+
"valid": True,
|
|
72
|
+
"compiled": "http://api.example.com:8080/auth?key=secret-value",
|
|
73
|
+
"variables": [
|
|
74
|
+
{
|
|
75
|
+
"name": "env.PORT",
|
|
76
|
+
"type": "env",
|
|
77
|
+
"raw": "{{.env.PORT}}",
|
|
78
|
+
"start": 25,
|
|
79
|
+
"end": 38,
|
|
80
|
+
"display_name": "PORT"
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"name": "secret.api_key",
|
|
84
|
+
"type": "secret",
|
|
85
|
+
"raw": "{{.secret.api_key}}",
|
|
86
|
+
"start": 48,
|
|
87
|
+
"end": 68,
|
|
88
|
+
"display_name": "api_key"
|
|
89
|
+
}
|
|
90
|
+
],
|
|
91
|
+
"errors": [],
|
|
92
|
+
"warnings": []
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
class TemplateExtractVariablesRequest(BaseModel):
|
|
98
|
+
"""Request schema for extracting variables from a template."""
|
|
99
|
+
template: str = Field(..., description="Template string to analyze", min_length=1)
|
|
100
|
+
|
|
101
|
+
class Config:
|
|
102
|
+
json_schema_extra = {
|
|
103
|
+
"example": {
|
|
104
|
+
"template": "User {{user}} accessing {{.secret.database}} on {{.env.HOST}}"
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
class TemplateExtractVariablesResponse(BaseModel):
|
|
110
|
+
"""Response schema for variable extraction endpoint."""
|
|
111
|
+
variables: List[TemplateVariableSchema] = Field(..., description="All variables found in template")
|
|
112
|
+
secrets: List[str] = Field(default_factory=list, description="Secret names required")
|
|
113
|
+
env_vars: List[str] = Field(default_factory=list, description="Environment variable names required")
|
|
114
|
+
simple_vars: List[str] = Field(default_factory=list, description="Simple variable names required")
|
|
115
|
+
|
|
116
|
+
class Config:
|
|
117
|
+
json_schema_extra = {
|
|
118
|
+
"example": {
|
|
119
|
+
"variables": [
|
|
120
|
+
{
|
|
121
|
+
"name": "user",
|
|
122
|
+
"type": "simple",
|
|
123
|
+
"raw": "{{user}}",
|
|
124
|
+
"start": 5,
|
|
125
|
+
"end": 13,
|
|
126
|
+
"display_name": "user"
|
|
127
|
+
}
|
|
128
|
+
],
|
|
129
|
+
"secrets": ["database"],
|
|
130
|
+
"env_vars": ["HOST"],
|
|
131
|
+
"simple_vars": ["user"]
|
|
132
|
+
}
|
|
133
|
+
}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Pydantic schemas for trace API endpoints.
|
|
3
|
+
|
|
4
|
+
These schemas define the request/response models for the traces REST API.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from pydantic import BaseModel, Field
|
|
8
|
+
from typing import Optional, List, Dict, Any
|
|
9
|
+
from datetime import datetime
|
|
10
|
+
from enum import Enum
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class TraceStatus(str, Enum):
|
|
14
|
+
"""Trace status enum"""
|
|
15
|
+
SUCCESS = "success"
|
|
16
|
+
ERROR = "error"
|
|
17
|
+
RUNNING = "running"
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class SpanKind(str, Enum):
|
|
21
|
+
"""OTEL span kind enum"""
|
|
22
|
+
INTERNAL = "INTERNAL"
|
|
23
|
+
SERVER = "SERVER"
|
|
24
|
+
CLIENT = "CLIENT"
|
|
25
|
+
PRODUCER = "PRODUCER"
|
|
26
|
+
CONSUMER = "CONSUMER"
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class SpanStatusCode(str, Enum):
|
|
30
|
+
"""OTEL span status code enum"""
|
|
31
|
+
UNSET = "UNSET"
|
|
32
|
+
OK = "OK"
|
|
33
|
+
ERROR = "ERROR"
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
# Response schemas
|
|
37
|
+
|
|
38
|
+
class SpanResponse(BaseModel):
|
|
39
|
+
"""Span response schema"""
|
|
40
|
+
id: str
|
|
41
|
+
trace_id: str
|
|
42
|
+
span_id: str
|
|
43
|
+
parent_span_id: Optional[str] = None
|
|
44
|
+
organization_id: str
|
|
45
|
+
name: str
|
|
46
|
+
kind: SpanKind
|
|
47
|
+
status_code: SpanStatusCode
|
|
48
|
+
status_message: Optional[str] = None
|
|
49
|
+
start_time_unix_nano: int
|
|
50
|
+
end_time_unix_nano: Optional[int] = None
|
|
51
|
+
duration_ns: Optional[int] = None
|
|
52
|
+
duration_ms: Optional[float] = None
|
|
53
|
+
attributes: Dict[str, Any] = Field(default_factory=dict)
|
|
54
|
+
resource_attributes: Dict[str, Any] = Field(default_factory=dict)
|
|
55
|
+
events: List[Dict[str, Any]] = Field(default_factory=list)
|
|
56
|
+
links: List[Dict[str, Any]] = Field(default_factory=list)
|
|
57
|
+
created_at: datetime
|
|
58
|
+
|
|
59
|
+
# Nested children for tree structure
|
|
60
|
+
children: List["SpanResponse"] = Field(default_factory=list)
|
|
61
|
+
|
|
62
|
+
class Config:
|
|
63
|
+
from_attributes = True
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
class TraceListItem(BaseModel):
|
|
67
|
+
"""Trace list item for list view"""
|
|
68
|
+
id: str
|
|
69
|
+
trace_id: str
|
|
70
|
+
organization_id: str
|
|
71
|
+
name: str
|
|
72
|
+
service_name: Optional[str] = None
|
|
73
|
+
status: TraceStatus
|
|
74
|
+
execution_id: Optional[str] = None
|
|
75
|
+
execution_type: Optional[str] = None
|
|
76
|
+
user_id: Optional[str] = None
|
|
77
|
+
user_email: Optional[str] = None
|
|
78
|
+
user_name: Optional[str] = None
|
|
79
|
+
user_avatar: Optional[str] = None
|
|
80
|
+
started_at: datetime
|
|
81
|
+
ended_at: Optional[datetime] = None
|
|
82
|
+
duration_ms: Optional[int] = None
|
|
83
|
+
span_count: int = 0
|
|
84
|
+
error_count: int = 0
|
|
85
|
+
created_at: datetime
|
|
86
|
+
updated_at: Optional[datetime] = None
|
|
87
|
+
|
|
88
|
+
class Config:
|
|
89
|
+
from_attributes = True
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
class TraceDetailResponse(BaseModel):
|
|
93
|
+
"""Detailed trace response with spans"""
|
|
94
|
+
id: str
|
|
95
|
+
trace_id: str
|
|
96
|
+
organization_id: str
|
|
97
|
+
name: str
|
|
98
|
+
service_name: Optional[str] = None
|
|
99
|
+
status: TraceStatus
|
|
100
|
+
execution_id: Optional[str] = None
|
|
101
|
+
execution_type: Optional[str] = None
|
|
102
|
+
user_id: Optional[str] = None
|
|
103
|
+
user_email: Optional[str] = None
|
|
104
|
+
user_name: Optional[str] = None
|
|
105
|
+
user_avatar: Optional[str] = None
|
|
106
|
+
started_at: datetime
|
|
107
|
+
ended_at: Optional[datetime] = None
|
|
108
|
+
duration_ms: Optional[int] = None
|
|
109
|
+
span_count: int = 0
|
|
110
|
+
error_count: int = 0
|
|
111
|
+
created_at: datetime
|
|
112
|
+
updated_at: Optional[datetime] = None
|
|
113
|
+
|
|
114
|
+
# Spans as tree structure (root spans with nested children)
|
|
115
|
+
spans: List[SpanResponse] = Field(default_factory=list)
|
|
116
|
+
|
|
117
|
+
class Config:
|
|
118
|
+
from_attributes = True
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
class TraceListResponse(BaseModel):
|
|
122
|
+
"""Paginated trace list response"""
|
|
123
|
+
items: List[TraceListItem]
|
|
124
|
+
total: int
|
|
125
|
+
page: int
|
|
126
|
+
page_size: int
|
|
127
|
+
total_pages: int
|
|
128
|
+
has_next: bool
|
|
129
|
+
has_previous: bool
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
class TraceStatsResponse(BaseModel):
|
|
133
|
+
"""Trace statistics response"""
|
|
134
|
+
total_traces: int
|
|
135
|
+
success_count: int
|
|
136
|
+
error_count: int
|
|
137
|
+
running_count: int
|
|
138
|
+
error_rate: float
|
|
139
|
+
avg_duration_ms: Optional[float] = None
|
|
140
|
+
total_spans: int
|
|
141
|
+
# Stats by time period
|
|
142
|
+
period_start: Optional[datetime] = None
|
|
143
|
+
period_end: Optional[datetime] = None
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
class DeleteTraceResponse(BaseModel):
|
|
147
|
+
"""Delete trace response"""
|
|
148
|
+
trace_id: str
|
|
149
|
+
deleted: bool
|
|
150
|
+
message: str
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
# Request/Query schemas
|
|
154
|
+
|
|
155
|
+
class TraceFilters(BaseModel):
|
|
156
|
+
"""Query filters for trace list"""
|
|
157
|
+
status: Optional[TraceStatus] = None
|
|
158
|
+
time_from: Optional[datetime] = None
|
|
159
|
+
time_to: Optional[datetime] = None
|
|
160
|
+
search: Optional[str] = None
|
|
161
|
+
execution_id: Optional[str] = None
|
|
162
|
+
service_name: Optional[str] = None
|
|
163
|
+
user_id: Optional[str] = None
|
|
164
|
+
has_errors: Optional[bool] = None
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
# Allow forward references for self-referencing SpanResponse
|
|
168
|
+
SpanResponse.model_rebuild()
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Pydantic schemas for Worker Queue Observability API.
|
|
3
|
+
|
|
4
|
+
This module defines request/response schemas for worker queue metrics,
|
|
5
|
+
workflow tracking, and activity tracing.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from pydantic import BaseModel, Field
|
|
9
|
+
from typing import Optional, List, Dict, Any
|
|
10
|
+
from datetime import datetime
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class WorkerQueueMetricsResponse(BaseModel):
|
|
14
|
+
"""Comprehensive metrics for a worker queue"""
|
|
15
|
+
queue_id: str = Field(..., description="Worker queue UUID")
|
|
16
|
+
|
|
17
|
+
# Worker Health
|
|
18
|
+
active_workers: int = Field(..., description="Number of active workers")
|
|
19
|
+
idle_workers: int = Field(..., description="Number of idle workers")
|
|
20
|
+
busy_workers: int = Field(..., description="Number of busy workers")
|
|
21
|
+
total_workers: int = Field(..., description="Total number of workers")
|
|
22
|
+
|
|
23
|
+
# Task Metrics (24h window)
|
|
24
|
+
tasks_processed_24h: int = Field(..., description="Tasks completed in last 24 hours")
|
|
25
|
+
tasks_failed_24h: int = Field(..., description="Tasks failed in last 24 hours")
|
|
26
|
+
tasks_pending: int = Field(..., description="Tasks currently pending")
|
|
27
|
+
avg_task_duration_ms: float = Field(..., description="Average task duration in milliseconds")
|
|
28
|
+
|
|
29
|
+
# Error Tracking
|
|
30
|
+
error_rate_percent: float = Field(..., description="Error rate percentage")
|
|
31
|
+
last_error_at: Optional[datetime] = Field(None, description="Timestamp of last error")
|
|
32
|
+
|
|
33
|
+
# Temporal Queue Metrics
|
|
34
|
+
task_queue_backlog: int = Field(0, description="Number of tasks in backlog")
|
|
35
|
+
task_queue_pollers: int = Field(0, description="Number of active pollers")
|
|
36
|
+
|
|
37
|
+
# Timing
|
|
38
|
+
last_activity_at: Optional[datetime] = Field(None, description="Last activity timestamp")
|
|
39
|
+
updated_at: datetime = Field(..., description="Metrics update timestamp")
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
class WorkflowListItem(BaseModel):
|
|
43
|
+
"""Workflow list item for queue workflows"""
|
|
44
|
+
workflow_id: str = Field(..., description="Temporal workflow ID")
|
|
45
|
+
run_id: str = Field(..., description="Temporal run ID")
|
|
46
|
+
task_queue: str = Field(..., description="Task queue name")
|
|
47
|
+
worker_id: Optional[str] = Field(None, description="Worker ID processing this workflow")
|
|
48
|
+
status: str = Field(..., description="Workflow status")
|
|
49
|
+
execution_id: str = Field(..., description="Execution entity ID")
|
|
50
|
+
started_at: Optional[datetime] = Field(None, description="Workflow start time")
|
|
51
|
+
close_time: Optional[datetime] = Field(None, description="Workflow completion time")
|
|
52
|
+
workflow_type: str = Field(..., description="Workflow type")
|
|
53
|
+
attempt: int = Field(1, description="Execution attempt number")
|
|
54
|
+
history_length: int = Field(0, description="Workflow history event count")
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
class WorkflowsListResponse(BaseModel):
|
|
58
|
+
"""Response for list queue workflows"""
|
|
59
|
+
workflows: List[WorkflowListItem] = Field(..., description="List of workflows")
|
|
60
|
+
total: int = Field(..., description="Total number of workflows")
|
|
61
|
+
pending_count: int = Field(0, description="Number of pending workflows")
|
|
62
|
+
running_count: int = Field(0, description="Number of running workflows")
|
|
63
|
+
completed_count: int = Field(0, description="Number of completed workflows")
|
|
64
|
+
failed_count: int = Field(0, description="Number of failed workflows")
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
class WorkflowEvent(BaseModel):
|
|
68
|
+
"""Individual workflow history event"""
|
|
69
|
+
event_id: int = Field(..., description="Event ID")
|
|
70
|
+
event_type: str = Field(..., description="Event type")
|
|
71
|
+
event_time: datetime = Field(..., description="Event timestamp")
|
|
72
|
+
details: Dict[str, Any] = Field(default_factory=dict, description="Event details")
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
class ActivityExecution(BaseModel):
|
|
76
|
+
"""Individual activity execution within a workflow"""
|
|
77
|
+
activity_id: str = Field(..., description="Activity ID")
|
|
78
|
+
activity_type: str = Field(..., description="Activity type/name")
|
|
79
|
+
status: str = Field(..., description="Activity status: scheduled, started, completed, failed, timed_out")
|
|
80
|
+
scheduled_time: datetime = Field(..., description="Activity scheduled timestamp")
|
|
81
|
+
started_time: Optional[datetime] = Field(None, description="Activity start timestamp")
|
|
82
|
+
completed_time: Optional[datetime] = Field(None, description="Activity completion timestamp")
|
|
83
|
+
duration_ms: Optional[float] = Field(None, description="Activity duration in milliseconds")
|
|
84
|
+
attempt: int = Field(1, description="Attempt number")
|
|
85
|
+
worker_identity: Optional[str] = Field(None, description="Worker that executed this activity")
|
|
86
|
+
failure_message: Optional[str] = Field(None, description="Failure message if activity failed")
|
|
87
|
+
input: Optional[Dict[str, Any]] = Field(None, description="Activity input data")
|
|
88
|
+
result: Optional[Dict[str, Any]] = Field(None, description="Activity result data")
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
class WorkflowTrace(BaseModel):
|
|
92
|
+
"""Execution trace with activities and timeline"""
|
|
93
|
+
activities: List[ActivityExecution] = Field(..., description="List of activity executions")
|
|
94
|
+
timeline: List[Dict[str, Any]] = Field(..., description="Timeline events for visualization")
|
|
95
|
+
total_activities: int = Field(..., description="Total number of activities")
|
|
96
|
+
completed_activities: int = Field(0, description="Number of completed activities")
|
|
97
|
+
failed_activities: int = Field(0, description="Number of failed activities")
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
class WorkflowDetailsResponse(BaseModel):
|
|
101
|
+
"""Detailed workflow information"""
|
|
102
|
+
workflow_id: str = Field(..., description="Temporal workflow ID")
|
|
103
|
+
run_id: str = Field(..., description="Temporal run ID")
|
|
104
|
+
status: str = Field(..., description="Workflow status")
|
|
105
|
+
|
|
106
|
+
# Execution Info
|
|
107
|
+
execution_id: str = Field(..., description="Execution entity ID")
|
|
108
|
+
execution_status: str = Field(..., description="Execution status from DB")
|
|
109
|
+
|
|
110
|
+
# Timing
|
|
111
|
+
start_time: Optional[datetime] = Field(None, description="Workflow start time")
|
|
112
|
+
close_time: Optional[datetime] = Field(None, description="Workflow close time")
|
|
113
|
+
execution_duration_ms: float = Field(0, description="Execution duration in milliseconds")
|
|
114
|
+
|
|
115
|
+
# Temporal Details
|
|
116
|
+
task_queue: str = Field(..., description="Task queue name")
|
|
117
|
+
workflow_type: str = Field(..., description="Workflow type")
|
|
118
|
+
attempt: int = Field(1, description="Execution attempt number")
|
|
119
|
+
history_length: int = Field(0, description="History event count")
|
|
120
|
+
history_size_bytes: int = Field(0, description="History size in bytes")
|
|
121
|
+
|
|
122
|
+
# Input
|
|
123
|
+
input: Optional[Dict[str, Any]] = Field(None, description="Workflow input data")
|
|
124
|
+
|
|
125
|
+
# Links
|
|
126
|
+
temporal_web_url: str = Field(..., description="Temporal Web UI URL")
|
|
127
|
+
|
|
128
|
+
# Events and Trace
|
|
129
|
+
recent_events: List[WorkflowEvent] = Field(default_factory=list, description="Recent workflow events")
|
|
130
|
+
trace: WorkflowTrace = Field(..., description="Workflow execution trace")
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
class TerminateWorkflowRequest(BaseModel):
|
|
134
|
+
"""Request to terminate a running workflow"""
|
|
135
|
+
reason: str = Field(..., min_length=1, max_length=500, description="Termination reason")
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
class TerminateWorkflowResponse(BaseModel):
|
|
139
|
+
"""Response after terminating a workflow"""
|
|
140
|
+
success: bool = Field(..., description="Whether termination was successful")
|
|
141
|
+
workflow_id: str = Field(..., description="Workflow ID that was terminated")
|
|
142
|
+
terminated_at: datetime = Field(..., description="Termination timestamp")
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
class BatchTerminateRequest(BaseModel):
|
|
146
|
+
"""Request to terminate multiple executions"""
|
|
147
|
+
execution_ids: List[str] = Field(..., min_length=1, max_length=100, description="List of execution IDs to terminate")
|
|
148
|
+
reason: str = Field(..., min_length=1, max_length=500, description="Termination reason")
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
class BatchTerminateResult(BaseModel):
|
|
152
|
+
"""Result for a single execution in batch termination"""
|
|
153
|
+
execution_id: str = Field(..., description="Execution ID")
|
|
154
|
+
success: bool = Field(..., description="Whether termination was successful")
|
|
155
|
+
workflow_id: Optional[str] = Field(None, description="Workflow ID if successful")
|
|
156
|
+
error: Optional[str] = Field(None, description="Error message if failed")
|
|
157
|
+
terminated_at: Optional[datetime] = Field(None, description="Termination timestamp if successful")
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
class BatchTerminateResponse(BaseModel):
|
|
161
|
+
"""Response after batch terminating executions"""
|
|
162
|
+
total_requested: int = Field(..., description="Total number of executions requested for termination")
|
|
163
|
+
total_succeeded: int = Field(..., description="Number of successfully terminated executions")
|
|
164
|
+
total_failed: int = Field(..., description="Number of failed terminations")
|
|
165
|
+
results: List[BatchTerminateResult] = Field(..., description="Results for each execution")
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# Services
|