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.
Files changed (479) hide show
  1. control_plane_api/LICENSE +676 -0
  2. control_plane_api/README.md +350 -0
  3. control_plane_api/__init__.py +4 -0
  4. control_plane_api/__version__.py +8 -0
  5. control_plane_api/alembic/README +1 -0
  6. control_plane_api/alembic/env.py +121 -0
  7. control_plane_api/alembic/script.py.mako +28 -0
  8. control_plane_api/alembic/versions/2613c65c3dbe_initial_database_setup.py +32 -0
  9. control_plane_api/alembic/versions/2df520d4927d_merge_heads.py +28 -0
  10. control_plane_api/alembic/versions/43abf98d6a01_add_paused_status_to_executions.py +73 -0
  11. control_plane_api/alembic/versions/6289854264cb_merge_multiple_heads.py +28 -0
  12. control_plane_api/alembic/versions/6a4d4dc3d8dc_generate_execution_transitions.py +50 -0
  13. control_plane_api/alembic/versions/87d11cf0a783_add_disconnected_status_to_worker_.py +44 -0
  14. control_plane_api/alembic/versions/add_ephemeral_queue_support.py +85 -0
  15. control_plane_api/alembic/versions/add_model_type_to_llm_models.py +31 -0
  16. control_plane_api/alembic/versions/add_plan_executions_table.py +114 -0
  17. control_plane_api/alembic/versions/add_trace_span_tables.py +154 -0
  18. control_plane_api/alembic/versions/add_user_info_to_traces.py +36 -0
  19. control_plane_api/alembic/versions/adjusting_foreign_keys.py +32 -0
  20. control_plane_api/alembic/versions/b4983d976db2_initial_tables.py +1128 -0
  21. control_plane_api/alembic/versions/d181a3b40e71_rename_custom_metadata_to_metadata_in_.py +50 -0
  22. control_plane_api/alembic/versions/df9117888e82_add_missing_columns.py +82 -0
  23. control_plane_api/alembic/versions/f25de6ad895a_missing_migrations.py +34 -0
  24. control_plane_api/alembic/versions/f71305fb69b9_fix_ephemeral_queue_deletion_foreign_key.py +54 -0
  25. control_plane_api/alembic/versions/mark_local_exec_queues_as_ephemeral.py +68 -0
  26. control_plane_api/alembic.ini +148 -0
  27. control_plane_api/api/index.py +12 -0
  28. control_plane_api/app/__init__.py +11 -0
  29. control_plane_api/app/activities/__init__.py +20 -0
  30. control_plane_api/app/activities/agent_activities.py +384 -0
  31. control_plane_api/app/activities/plan_generation_activities.py +499 -0
  32. control_plane_api/app/activities/team_activities.py +424 -0
  33. control_plane_api/app/activities/temporal_cloud_activities.py +588 -0
  34. control_plane_api/app/config/__init__.py +35 -0
  35. control_plane_api/app/config/api_config.py +469 -0
  36. control_plane_api/app/config/config_loader.py +224 -0
  37. control_plane_api/app/config/model_pricing.py +323 -0
  38. control_plane_api/app/config/storage_config.py +159 -0
  39. control_plane_api/app/config.py +115 -0
  40. control_plane_api/app/controllers/__init__.py +0 -0
  41. control_plane_api/app/controllers/execution_environment_controller.py +1315 -0
  42. control_plane_api/app/database.py +135 -0
  43. control_plane_api/app/exceptions.py +408 -0
  44. control_plane_api/app/lib/__init__.py +11 -0
  45. control_plane_api/app/lib/environment.py +65 -0
  46. control_plane_api/app/lib/event_bus/__init__.py +17 -0
  47. control_plane_api/app/lib/event_bus/base.py +136 -0
  48. control_plane_api/app/lib/event_bus/manager.py +335 -0
  49. control_plane_api/app/lib/event_bus/providers/__init__.py +6 -0
  50. control_plane_api/app/lib/event_bus/providers/http_provider.py +166 -0
  51. control_plane_api/app/lib/event_bus/providers/nats_provider.py +324 -0
  52. control_plane_api/app/lib/event_bus/providers/redis_provider.py +233 -0
  53. control_plane_api/app/lib/event_bus/providers/websocket_provider.py +497 -0
  54. control_plane_api/app/lib/job_executor.py +330 -0
  55. control_plane_api/app/lib/kubiya_client.py +293 -0
  56. control_plane_api/app/lib/litellm_pricing.py +166 -0
  57. control_plane_api/app/lib/mcp_validation.py +163 -0
  58. control_plane_api/app/lib/nats/__init__.py +13 -0
  59. control_plane_api/app/lib/nats/credentials_manager.py +288 -0
  60. control_plane_api/app/lib/nats/listener.py +374 -0
  61. control_plane_api/app/lib/planning_prompt_builder.py +153 -0
  62. control_plane_api/app/lib/planning_tools/__init__.py +41 -0
  63. control_plane_api/app/lib/planning_tools/agents.py +409 -0
  64. control_plane_api/app/lib/planning_tools/agno_toolkit.py +836 -0
  65. control_plane_api/app/lib/planning_tools/base.py +119 -0
  66. control_plane_api/app/lib/planning_tools/cognitive_memory_tools.py +403 -0
  67. control_plane_api/app/lib/planning_tools/context_graph_tools.py +545 -0
  68. control_plane_api/app/lib/planning_tools/environments.py +218 -0
  69. control_plane_api/app/lib/planning_tools/knowledge.py +204 -0
  70. control_plane_api/app/lib/planning_tools/models.py +93 -0
  71. control_plane_api/app/lib/planning_tools/planning_service.py +646 -0
  72. control_plane_api/app/lib/planning_tools/resources.py +242 -0
  73. control_plane_api/app/lib/planning_tools/teams.py +334 -0
  74. control_plane_api/app/lib/policy_enforcer_client.py +1016 -0
  75. control_plane_api/app/lib/redis_client.py +803 -0
  76. control_plane_api/app/lib/sqlalchemy_utils.py +486 -0
  77. control_plane_api/app/lib/state_transition_tools/__init__.py +7 -0
  78. control_plane_api/app/lib/state_transition_tools/execution_context.py +388 -0
  79. control_plane_api/app/lib/storage/__init__.py +20 -0
  80. control_plane_api/app/lib/storage/base_provider.py +274 -0
  81. control_plane_api/app/lib/storage/provider_factory.py +157 -0
  82. control_plane_api/app/lib/storage/vercel_blob_provider.py +468 -0
  83. control_plane_api/app/lib/supabase.py +71 -0
  84. control_plane_api/app/lib/supabase_utils.py +138 -0
  85. control_plane_api/app/lib/task_planning/__init__.py +138 -0
  86. control_plane_api/app/lib/task_planning/agent_factory.py +308 -0
  87. control_plane_api/app/lib/task_planning/agents.py +389 -0
  88. control_plane_api/app/lib/task_planning/cache.py +218 -0
  89. control_plane_api/app/lib/task_planning/entity_resolver.py +273 -0
  90. control_plane_api/app/lib/task_planning/helpers.py +293 -0
  91. control_plane_api/app/lib/task_planning/hooks.py +474 -0
  92. control_plane_api/app/lib/task_planning/models.py +503 -0
  93. control_plane_api/app/lib/task_planning/plan_validator.py +166 -0
  94. control_plane_api/app/lib/task_planning/planning_workflow.py +2911 -0
  95. control_plane_api/app/lib/task_planning/runner.py +656 -0
  96. control_plane_api/app/lib/task_planning/streaming_hook.py +213 -0
  97. control_plane_api/app/lib/task_planning/workflow.py +424 -0
  98. control_plane_api/app/lib/templating/__init__.py +88 -0
  99. control_plane_api/app/lib/templating/compiler.py +278 -0
  100. control_plane_api/app/lib/templating/engine.py +178 -0
  101. control_plane_api/app/lib/templating/parsers/__init__.py +29 -0
  102. control_plane_api/app/lib/templating/parsers/base.py +96 -0
  103. control_plane_api/app/lib/templating/parsers/env.py +85 -0
  104. control_plane_api/app/lib/templating/parsers/graph.py +112 -0
  105. control_plane_api/app/lib/templating/parsers/secret.py +87 -0
  106. control_plane_api/app/lib/templating/parsers/simple.py +81 -0
  107. control_plane_api/app/lib/templating/resolver.py +366 -0
  108. control_plane_api/app/lib/templating/types.py +214 -0
  109. control_plane_api/app/lib/templating/validator.py +201 -0
  110. control_plane_api/app/lib/temporal_client.py +232 -0
  111. control_plane_api/app/lib/temporal_credentials_cache.py +178 -0
  112. control_plane_api/app/lib/temporal_credentials_service.py +203 -0
  113. control_plane_api/app/lib/validation/__init__.py +24 -0
  114. control_plane_api/app/lib/validation/runtime_validation.py +388 -0
  115. control_plane_api/app/main.py +531 -0
  116. control_plane_api/app/middleware/__init__.py +10 -0
  117. control_plane_api/app/middleware/auth.py +645 -0
  118. control_plane_api/app/middleware/exception_handler.py +267 -0
  119. control_plane_api/app/middleware/prometheus_middleware.py +173 -0
  120. control_plane_api/app/middleware/rate_limiting.py +384 -0
  121. control_plane_api/app/middleware/request_id.py +202 -0
  122. control_plane_api/app/models/__init__.py +40 -0
  123. control_plane_api/app/models/agent.py +90 -0
  124. control_plane_api/app/models/analytics.py +206 -0
  125. control_plane_api/app/models/associations.py +107 -0
  126. control_plane_api/app/models/auth_user.py +73 -0
  127. control_plane_api/app/models/context.py +161 -0
  128. control_plane_api/app/models/custom_integration.py +99 -0
  129. control_plane_api/app/models/environment.py +64 -0
  130. control_plane_api/app/models/execution.py +125 -0
  131. control_plane_api/app/models/execution_transition.py +50 -0
  132. control_plane_api/app/models/job.py +159 -0
  133. control_plane_api/app/models/llm_model.py +78 -0
  134. control_plane_api/app/models/orchestration.py +66 -0
  135. control_plane_api/app/models/plan_execution.py +102 -0
  136. control_plane_api/app/models/presence.py +49 -0
  137. control_plane_api/app/models/project.py +61 -0
  138. control_plane_api/app/models/project_management.py +85 -0
  139. control_plane_api/app/models/session.py +29 -0
  140. control_plane_api/app/models/skill.py +155 -0
  141. control_plane_api/app/models/system_tables.py +43 -0
  142. control_plane_api/app/models/task_planning.py +372 -0
  143. control_plane_api/app/models/team.py +86 -0
  144. control_plane_api/app/models/trace.py +257 -0
  145. control_plane_api/app/models/user_profile.py +54 -0
  146. control_plane_api/app/models/worker.py +221 -0
  147. control_plane_api/app/models/workflow.py +161 -0
  148. control_plane_api/app/models/workspace.py +50 -0
  149. control_plane_api/app/observability/__init__.py +177 -0
  150. control_plane_api/app/observability/context_logging.py +475 -0
  151. control_plane_api/app/observability/decorators.py +337 -0
  152. control_plane_api/app/observability/local_span_processor.py +702 -0
  153. control_plane_api/app/observability/metrics.py +303 -0
  154. control_plane_api/app/observability/middleware.py +246 -0
  155. control_plane_api/app/observability/optional.py +115 -0
  156. control_plane_api/app/observability/tracing.py +382 -0
  157. control_plane_api/app/policies/README.md +149 -0
  158. control_plane_api/app/policies/approved_users.rego +62 -0
  159. control_plane_api/app/policies/business_hours.rego +51 -0
  160. control_plane_api/app/policies/rate_limiting.rego +100 -0
  161. control_plane_api/app/policies/tool_enforcement/README.md +336 -0
  162. control_plane_api/app/policies/tool_enforcement/bash_command_validation.rego +71 -0
  163. control_plane_api/app/policies/tool_enforcement/business_hours_enforcement.rego +82 -0
  164. control_plane_api/app/policies/tool_enforcement/mcp_tool_allowlist.rego +58 -0
  165. control_plane_api/app/policies/tool_enforcement/production_safeguards.rego +80 -0
  166. control_plane_api/app/policies/tool_enforcement/role_based_tool_access.rego +44 -0
  167. control_plane_api/app/policies/tool_restrictions.rego +86 -0
  168. control_plane_api/app/routers/__init__.py +4 -0
  169. control_plane_api/app/routers/agents.py +382 -0
  170. control_plane_api/app/routers/agents_v2.py +1598 -0
  171. control_plane_api/app/routers/analytics.py +1310 -0
  172. control_plane_api/app/routers/auth.py +59 -0
  173. control_plane_api/app/routers/client_config.py +57 -0
  174. control_plane_api/app/routers/context_graph.py +561 -0
  175. control_plane_api/app/routers/context_manager.py +577 -0
  176. control_plane_api/app/routers/custom_integrations.py +490 -0
  177. control_plane_api/app/routers/enforcer.py +132 -0
  178. control_plane_api/app/routers/environment_context.py +252 -0
  179. control_plane_api/app/routers/environments.py +761 -0
  180. control_plane_api/app/routers/execution_environment.py +847 -0
  181. control_plane_api/app/routers/executions/__init__.py +28 -0
  182. control_plane_api/app/routers/executions/router.py +286 -0
  183. control_plane_api/app/routers/executions/services/__init__.py +22 -0
  184. control_plane_api/app/routers/executions/services/demo_worker_health.py +156 -0
  185. control_plane_api/app/routers/executions/services/status_service.py +420 -0
  186. control_plane_api/app/routers/executions/services/test_worker_health.py +480 -0
  187. control_plane_api/app/routers/executions/services/worker_health.py +514 -0
  188. control_plane_api/app/routers/executions/streaming/__init__.py +22 -0
  189. control_plane_api/app/routers/executions/streaming/deduplication.py +352 -0
  190. control_plane_api/app/routers/executions/streaming/event_buffer.py +353 -0
  191. control_plane_api/app/routers/executions/streaming/event_formatter.py +964 -0
  192. control_plane_api/app/routers/executions/streaming/history_loader.py +588 -0
  193. control_plane_api/app/routers/executions/streaming/live_source.py +693 -0
  194. control_plane_api/app/routers/executions/streaming/streamer.py +849 -0
  195. control_plane_api/app/routers/executions.py +4888 -0
  196. control_plane_api/app/routers/health.py +165 -0
  197. control_plane_api/app/routers/health_v2.py +394 -0
  198. control_plane_api/app/routers/integration_templates.py +496 -0
  199. control_plane_api/app/routers/integrations.py +287 -0
  200. control_plane_api/app/routers/jobs.py +1809 -0
  201. control_plane_api/app/routers/metrics.py +517 -0
  202. control_plane_api/app/routers/models.py +82 -0
  203. control_plane_api/app/routers/models_v2.py +628 -0
  204. control_plane_api/app/routers/plan_executions.py +1481 -0
  205. control_plane_api/app/routers/plan_generation_async.py +304 -0
  206. control_plane_api/app/routers/policies.py +669 -0
  207. control_plane_api/app/routers/presence.py +234 -0
  208. control_plane_api/app/routers/projects.py +987 -0
  209. control_plane_api/app/routers/runners.py +379 -0
  210. control_plane_api/app/routers/runtimes.py +172 -0
  211. control_plane_api/app/routers/secrets.py +171 -0
  212. control_plane_api/app/routers/skills.py +1010 -0
  213. control_plane_api/app/routers/skills_definitions.py +140 -0
  214. control_plane_api/app/routers/storage.py +456 -0
  215. control_plane_api/app/routers/task_planning.py +611 -0
  216. control_plane_api/app/routers/task_queues.py +650 -0
  217. control_plane_api/app/routers/team_context.py +274 -0
  218. control_plane_api/app/routers/teams.py +1747 -0
  219. control_plane_api/app/routers/templates.py +248 -0
  220. control_plane_api/app/routers/traces.py +571 -0
  221. control_plane_api/app/routers/websocket_client.py +479 -0
  222. control_plane_api/app/routers/websocket_executions_status.py +437 -0
  223. control_plane_api/app/routers/websocket_gateway.py +323 -0
  224. control_plane_api/app/routers/websocket_traces.py +576 -0
  225. control_plane_api/app/routers/worker_queues.py +2555 -0
  226. control_plane_api/app/routers/worker_websocket.py +419 -0
  227. control_plane_api/app/routers/workers.py +1004 -0
  228. control_plane_api/app/routers/workflows.py +204 -0
  229. control_plane_api/app/runtimes/__init__.py +6 -0
  230. control_plane_api/app/runtimes/validation.py +344 -0
  231. control_plane_api/app/schemas/__init__.py +1 -0
  232. control_plane_api/app/schemas/job_schemas.py +302 -0
  233. control_plane_api/app/schemas/mcp_schemas.py +311 -0
  234. control_plane_api/app/schemas/template_schemas.py +133 -0
  235. control_plane_api/app/schemas/trace_schemas.py +168 -0
  236. control_plane_api/app/schemas/worker_queue_observability_schemas.py +165 -0
  237. control_plane_api/app/services/__init__.py +1 -0
  238. control_plane_api/app/services/agno_planning_strategy.py +233 -0
  239. control_plane_api/app/services/agno_service.py +838 -0
  240. control_plane_api/app/services/claude_code_planning_service.py +203 -0
  241. control_plane_api/app/services/context_graph_client.py +224 -0
  242. control_plane_api/app/services/custom_integration_service.py +415 -0
  243. control_plane_api/app/services/integration_resolution_service.py +345 -0
  244. control_plane_api/app/services/litellm_service.py +394 -0
  245. control_plane_api/app/services/plan_generator.py +79 -0
  246. control_plane_api/app/services/planning_strategy.py +66 -0
  247. control_plane_api/app/services/planning_strategy_factory.py +118 -0
  248. control_plane_api/app/services/policy_service.py +615 -0
  249. control_plane_api/app/services/state_transition_service.py +755 -0
  250. control_plane_api/app/services/storage_service.py +593 -0
  251. control_plane_api/app/services/temporal_cloud_provisioning.py +150 -0
  252. control_plane_api/app/services/toolsets/context_graph_skill.py +432 -0
  253. control_plane_api/app/services/trace_retention.py +354 -0
  254. control_plane_api/app/services/worker_queue_metrics_service.py +190 -0
  255. control_plane_api/app/services/workflow_cancellation_manager.py +135 -0
  256. control_plane_api/app/services/workflow_operations_service.py +611 -0
  257. control_plane_api/app/skills/__init__.py +100 -0
  258. control_plane_api/app/skills/base.py +239 -0
  259. control_plane_api/app/skills/builtin/__init__.py +37 -0
  260. control_plane_api/app/skills/builtin/agent_communication/__init__.py +8 -0
  261. control_plane_api/app/skills/builtin/agent_communication/skill.py +246 -0
  262. control_plane_api/app/skills/builtin/code_ingestion/__init__.py +4 -0
  263. control_plane_api/app/skills/builtin/code_ingestion/skill.py +267 -0
  264. control_plane_api/app/skills/builtin/cognitive_memory/__init__.py +4 -0
  265. control_plane_api/app/skills/builtin/cognitive_memory/skill.py +174 -0
  266. control_plane_api/app/skills/builtin/contextual_awareness/__init__.py +4 -0
  267. control_plane_api/app/skills/builtin/contextual_awareness/skill.py +387 -0
  268. control_plane_api/app/skills/builtin/data_visualization/__init__.py +4 -0
  269. control_plane_api/app/skills/builtin/data_visualization/skill.py +154 -0
  270. control_plane_api/app/skills/builtin/docker/__init__.py +4 -0
  271. control_plane_api/app/skills/builtin/docker/skill.py +104 -0
  272. control_plane_api/app/skills/builtin/file_generation/__init__.py +4 -0
  273. control_plane_api/app/skills/builtin/file_generation/skill.py +94 -0
  274. control_plane_api/app/skills/builtin/file_system/__init__.py +4 -0
  275. control_plane_api/app/skills/builtin/file_system/skill.py +110 -0
  276. control_plane_api/app/skills/builtin/knowledge_api/__init__.py +5 -0
  277. control_plane_api/app/skills/builtin/knowledge_api/skill.py +124 -0
  278. control_plane_api/app/skills/builtin/python/__init__.py +4 -0
  279. control_plane_api/app/skills/builtin/python/skill.py +92 -0
  280. control_plane_api/app/skills/builtin/remote_filesystem/__init__.py +5 -0
  281. control_plane_api/app/skills/builtin/remote_filesystem/skill.py +170 -0
  282. control_plane_api/app/skills/builtin/shell/__init__.py +4 -0
  283. control_plane_api/app/skills/builtin/shell/skill.py +161 -0
  284. control_plane_api/app/skills/builtin/slack/__init__.py +3 -0
  285. control_plane_api/app/skills/builtin/slack/skill.py +302 -0
  286. control_plane_api/app/skills/builtin/workflow_executor/__init__.py +4 -0
  287. control_plane_api/app/skills/builtin/workflow_executor/skill.py +469 -0
  288. control_plane_api/app/skills/business_intelligence.py +189 -0
  289. control_plane_api/app/skills/config.py +63 -0
  290. control_plane_api/app/skills/loaders/__init__.py +14 -0
  291. control_plane_api/app/skills/loaders/base.py +73 -0
  292. control_plane_api/app/skills/loaders/filesystem_loader.py +199 -0
  293. control_plane_api/app/skills/registry.py +125 -0
  294. control_plane_api/app/utils/helpers.py +12 -0
  295. control_plane_api/app/utils/workflow_executor.py +354 -0
  296. control_plane_api/app/workflows/__init__.py +11 -0
  297. control_plane_api/app/workflows/agent_execution.py +520 -0
  298. control_plane_api/app/workflows/agent_execution_with_skills.py +223 -0
  299. control_plane_api/app/workflows/namespace_provisioning.py +326 -0
  300. control_plane_api/app/workflows/plan_generation.py +254 -0
  301. control_plane_api/app/workflows/team_execution.py +442 -0
  302. control_plane_api/scripts/seed_models.py +240 -0
  303. control_plane_api/scripts/validate_existing_tool_names.py +492 -0
  304. control_plane_api/shared/__init__.py +8 -0
  305. control_plane_api/shared/version.py +17 -0
  306. control_plane_api/test_deduplication.py +274 -0
  307. control_plane_api/test_executor_deduplication_e2e.py +309 -0
  308. control_plane_api/test_job_execution_e2e.py +283 -0
  309. control_plane_api/test_real_integration.py +193 -0
  310. control_plane_api/version.py +38 -0
  311. control_plane_api/worker/__init__.py +0 -0
  312. control_plane_api/worker/activities/__init__.py +0 -0
  313. control_plane_api/worker/activities/agent_activities.py +1585 -0
  314. control_plane_api/worker/activities/approval_activities.py +234 -0
  315. control_plane_api/worker/activities/job_activities.py +199 -0
  316. control_plane_api/worker/activities/runtime_activities.py +1167 -0
  317. control_plane_api/worker/activities/skill_activities.py +282 -0
  318. control_plane_api/worker/activities/team_activities.py +479 -0
  319. control_plane_api/worker/agent_runtime_server.py +370 -0
  320. control_plane_api/worker/binary_manager.py +333 -0
  321. control_plane_api/worker/config/__init__.py +31 -0
  322. control_plane_api/worker/config/worker_config.py +273 -0
  323. control_plane_api/worker/control_plane_client.py +1491 -0
  324. control_plane_api/worker/examples/analytics_integration_example.py +362 -0
  325. control_plane_api/worker/health_monitor.py +159 -0
  326. control_plane_api/worker/metrics.py +237 -0
  327. control_plane_api/worker/models/__init__.py +1 -0
  328. control_plane_api/worker/models/error_events.py +105 -0
  329. control_plane_api/worker/models/inputs.py +89 -0
  330. control_plane_api/worker/runtimes/__init__.py +35 -0
  331. control_plane_api/worker/runtimes/agent_runtime/runtime.py +485 -0
  332. control_plane_api/worker/runtimes/agno/__init__.py +34 -0
  333. control_plane_api/worker/runtimes/agno/config.py +248 -0
  334. control_plane_api/worker/runtimes/agno/hooks.py +385 -0
  335. control_plane_api/worker/runtimes/agno/mcp_builder.py +195 -0
  336. control_plane_api/worker/runtimes/agno/runtime.py +1063 -0
  337. control_plane_api/worker/runtimes/agno/utils.py +163 -0
  338. control_plane_api/worker/runtimes/base.py +979 -0
  339. control_plane_api/worker/runtimes/claude_code/__init__.py +38 -0
  340. control_plane_api/worker/runtimes/claude_code/cleanup.py +184 -0
  341. control_plane_api/worker/runtimes/claude_code/client_pool.py +529 -0
  342. control_plane_api/worker/runtimes/claude_code/config.py +829 -0
  343. control_plane_api/worker/runtimes/claude_code/hooks.py +482 -0
  344. control_plane_api/worker/runtimes/claude_code/litellm_proxy.py +1702 -0
  345. control_plane_api/worker/runtimes/claude_code/mcp_builder.py +467 -0
  346. control_plane_api/worker/runtimes/claude_code/mcp_discovery.py +558 -0
  347. control_plane_api/worker/runtimes/claude_code/runtime.py +1546 -0
  348. control_plane_api/worker/runtimes/claude_code/tool_mapper.py +403 -0
  349. control_plane_api/worker/runtimes/claude_code/utils.py +149 -0
  350. control_plane_api/worker/runtimes/factory.py +173 -0
  351. control_plane_api/worker/runtimes/model_utils.py +107 -0
  352. control_plane_api/worker/runtimes/validation.py +93 -0
  353. control_plane_api/worker/services/__init__.py +1 -0
  354. control_plane_api/worker/services/agent_communication_tools.py +908 -0
  355. control_plane_api/worker/services/agent_executor.py +485 -0
  356. control_plane_api/worker/services/agent_executor_v2.py +793 -0
  357. control_plane_api/worker/services/analytics_collector.py +457 -0
  358. control_plane_api/worker/services/analytics_service.py +464 -0
  359. control_plane_api/worker/services/approval_tools.py +310 -0
  360. control_plane_api/worker/services/approval_tools_agno.py +207 -0
  361. control_plane_api/worker/services/cancellation_manager.py +177 -0
  362. control_plane_api/worker/services/code_ingestion_tools.py +465 -0
  363. control_plane_api/worker/services/contextual_awareness_tools.py +405 -0
  364. control_plane_api/worker/services/data_visualization.py +834 -0
  365. control_plane_api/worker/services/event_publisher.py +531 -0
  366. control_plane_api/worker/services/jira_tools.py +257 -0
  367. control_plane_api/worker/services/remote_filesystem_tools.py +498 -0
  368. control_plane_api/worker/services/runtime_analytics.py +328 -0
  369. control_plane_api/worker/services/session_service.py +365 -0
  370. control_plane_api/worker/services/skill_context_enhancement.py +181 -0
  371. control_plane_api/worker/services/skill_factory.py +471 -0
  372. control_plane_api/worker/services/system_prompt_enhancement.py +410 -0
  373. control_plane_api/worker/services/team_executor.py +715 -0
  374. control_plane_api/worker/services/team_executor_v2.py +1866 -0
  375. control_plane_api/worker/services/tool_enforcement.py +254 -0
  376. control_plane_api/worker/services/workflow_executor/__init__.py +52 -0
  377. control_plane_api/worker/services/workflow_executor/event_processor.py +287 -0
  378. control_plane_api/worker/services/workflow_executor/event_publisher.py +210 -0
  379. control_plane_api/worker/services/workflow_executor/executors/__init__.py +15 -0
  380. control_plane_api/worker/services/workflow_executor/executors/base.py +270 -0
  381. control_plane_api/worker/services/workflow_executor/executors/json_executor.py +50 -0
  382. control_plane_api/worker/services/workflow_executor/executors/python_executor.py +50 -0
  383. control_plane_api/worker/services/workflow_executor/models.py +142 -0
  384. control_plane_api/worker/services/workflow_executor_tools.py +1748 -0
  385. control_plane_api/worker/skills/__init__.py +12 -0
  386. control_plane_api/worker/skills/builtin/context_graph_search/README.md +213 -0
  387. control_plane_api/worker/skills/builtin/context_graph_search/__init__.py +5 -0
  388. control_plane_api/worker/skills/builtin/context_graph_search/agno_impl.py +808 -0
  389. control_plane_api/worker/skills/builtin/context_graph_search/skill.yaml +67 -0
  390. control_plane_api/worker/skills/builtin/contextual_awareness/__init__.py +4 -0
  391. control_plane_api/worker/skills/builtin/contextual_awareness/agno_impl.py +62 -0
  392. control_plane_api/worker/skills/builtin/data_visualization/agno_impl.py +18 -0
  393. control_plane_api/worker/skills/builtin/data_visualization/skill.yaml +84 -0
  394. control_plane_api/worker/skills/builtin/docker/agno_impl.py +65 -0
  395. control_plane_api/worker/skills/builtin/docker/skill.yaml +60 -0
  396. control_plane_api/worker/skills/builtin/file_generation/agno_impl.py +47 -0
  397. control_plane_api/worker/skills/builtin/file_generation/skill.yaml +64 -0
  398. control_plane_api/worker/skills/builtin/file_system/agno_impl.py +32 -0
  399. control_plane_api/worker/skills/builtin/file_system/skill.yaml +54 -0
  400. control_plane_api/worker/skills/builtin/knowledge_api/__init__.py +4 -0
  401. control_plane_api/worker/skills/builtin/knowledge_api/agno_impl.py +50 -0
  402. control_plane_api/worker/skills/builtin/knowledge_api/skill.yaml +66 -0
  403. control_plane_api/worker/skills/builtin/python/agno_impl.py +25 -0
  404. control_plane_api/worker/skills/builtin/python/skill.yaml +60 -0
  405. control_plane_api/worker/skills/builtin/schema_fix_mixin.py +260 -0
  406. control_plane_api/worker/skills/builtin/shell/agno_impl.py +31 -0
  407. control_plane_api/worker/skills/builtin/shell/skill.yaml +60 -0
  408. control_plane_api/worker/skills/builtin/slack/__init__.py +3 -0
  409. control_plane_api/worker/skills/builtin/slack/agno_impl.py +1282 -0
  410. control_plane_api/worker/skills/builtin/slack/skill.yaml +276 -0
  411. control_plane_api/worker/skills/builtin/workflow_executor/agno_impl.py +62 -0
  412. control_plane_api/worker/skills/builtin/workflow_executor/skill.yaml +79 -0
  413. control_plane_api/worker/skills/loaders/__init__.py +5 -0
  414. control_plane_api/worker/skills/loaders/base.py +23 -0
  415. control_plane_api/worker/skills/loaders/filesystem_loader.py +357 -0
  416. control_plane_api/worker/skills/registry.py +208 -0
  417. control_plane_api/worker/tests/__init__.py +1 -0
  418. control_plane_api/worker/tests/conftest.py +12 -0
  419. control_plane_api/worker/tests/e2e/__init__.py +0 -0
  420. control_plane_api/worker/tests/e2e/test_context_graph_real_api.py +338 -0
  421. control_plane_api/worker/tests/e2e/test_context_graph_templates_e2e.py +523 -0
  422. control_plane_api/worker/tests/e2e/test_enforcement_e2e.py +344 -0
  423. control_plane_api/worker/tests/e2e/test_execution_flow.py +571 -0
  424. control_plane_api/worker/tests/e2e/test_single_execution_mode.py +656 -0
  425. control_plane_api/worker/tests/integration/__init__.py +0 -0
  426. control_plane_api/worker/tests/integration/test_builtin_skills_fixes.py +245 -0
  427. control_plane_api/worker/tests/integration/test_context_graph_search_integration.py +365 -0
  428. control_plane_api/worker/tests/integration/test_control_plane_integration.py +308 -0
  429. control_plane_api/worker/tests/integration/test_hook_enforcement_integration.py +579 -0
  430. control_plane_api/worker/tests/integration/test_scheduled_job_workflow.py +237 -0
  431. control_plane_api/worker/tests/integration/test_system_prompt_enhancement_integration.py +343 -0
  432. control_plane_api/worker/tests/unit/__init__.py +0 -0
  433. control_plane_api/worker/tests/unit/test_builtin_skill_autoload.py +396 -0
  434. control_plane_api/worker/tests/unit/test_context_graph_search.py +450 -0
  435. control_plane_api/worker/tests/unit/test_context_graph_templates.py +403 -0
  436. control_plane_api/worker/tests/unit/test_control_plane_client.py +401 -0
  437. control_plane_api/worker/tests/unit/test_control_plane_client_jobs.py +345 -0
  438. control_plane_api/worker/tests/unit/test_job_activities.py +353 -0
  439. control_plane_api/worker/tests/unit/test_skill_context_enhancement.py +321 -0
  440. control_plane_api/worker/tests/unit/test_system_prompt_enhancement.py +415 -0
  441. control_plane_api/worker/tests/unit/test_tool_enforcement.py +324 -0
  442. control_plane_api/worker/utils/__init__.py +1 -0
  443. control_plane_api/worker/utils/chunk_batcher.py +330 -0
  444. control_plane_api/worker/utils/environment.py +65 -0
  445. control_plane_api/worker/utils/error_publisher.py +260 -0
  446. control_plane_api/worker/utils/event_batcher.py +256 -0
  447. control_plane_api/worker/utils/logging_config.py +335 -0
  448. control_plane_api/worker/utils/logging_helper.py +326 -0
  449. control_plane_api/worker/utils/parameter_validator.py +120 -0
  450. control_plane_api/worker/utils/retry_utils.py +60 -0
  451. control_plane_api/worker/utils/streaming_utils.py +665 -0
  452. control_plane_api/worker/utils/tool_validation.py +332 -0
  453. control_plane_api/worker/utils/workspace_manager.py +163 -0
  454. control_plane_api/worker/websocket_client.py +393 -0
  455. control_plane_api/worker/worker.py +1297 -0
  456. control_plane_api/worker/workflows/__init__.py +0 -0
  457. control_plane_api/worker/workflows/agent_execution.py +909 -0
  458. control_plane_api/worker/workflows/scheduled_job_wrapper.py +332 -0
  459. control_plane_api/worker/workflows/team_execution.py +611 -0
  460. kubiya_control_plane_api-0.9.15.dist-info/METADATA +354 -0
  461. kubiya_control_plane_api-0.9.15.dist-info/RECORD +479 -0
  462. kubiya_control_plane_api-0.9.15.dist-info/WHEEL +5 -0
  463. kubiya_control_plane_api-0.9.15.dist-info/entry_points.txt +5 -0
  464. kubiya_control_plane_api-0.9.15.dist-info/licenses/LICENSE +676 -0
  465. kubiya_control_plane_api-0.9.15.dist-info/top_level.txt +3 -0
  466. scripts/__init__.py +1 -0
  467. scripts/migrations.py +39 -0
  468. scripts/seed_worker_queues.py +128 -0
  469. scripts/setup_agent_runtime.py +142 -0
  470. worker_internal/__init__.py +1 -0
  471. worker_internal/planner/__init__.py +1 -0
  472. worker_internal/planner/activities.py +1499 -0
  473. worker_internal/planner/agent_tools.py +197 -0
  474. worker_internal/planner/event_models.py +148 -0
  475. worker_internal/planner/event_publisher.py +67 -0
  476. worker_internal/planner/models.py +199 -0
  477. worker_internal/planner/retry_logic.py +134 -0
  478. worker_internal/planner/worker.py +300 -0
  479. worker_internal/planner/workflows.py +970 -0
@@ -0,0 +1,67 @@
1
+ apiVersion: kubiya.ai/v1
2
+ kind: Skill
3
+ metadata:
4
+ name: context-graph-search
5
+ version: 1.2.2
6
+ description: Complete memory system - store/recall memories, ingest knowledge, and search organizational context graph
7
+ author: Kubiya
8
+ icon: Brain
9
+ icon_type: lucide
10
+
11
+ spec:
12
+ type: context_graph_search
13
+
14
+ implementations:
15
+ agno:
16
+ module: agno_impl
17
+ class: ContextGraphSearchTools
18
+ claude_code:
19
+ # Claude Code will use same implementation converted to MCP server
20
+ module: agno_impl
21
+ class: ContextGraphSearchTools
22
+ default:
23
+ module: agno_impl
24
+ class: ContextGraphSearchTools
25
+
26
+ pythonDependencies:
27
+ - httpx>=0.24.0
28
+
29
+ systemRequirements:
30
+ supportedOS: [linux, darwin, win32]
31
+ minPythonVersion: "3.10"
32
+
33
+ environmentVariables:
34
+ - name: CONTEXT_GRAPH_API_BASE
35
+ required: false
36
+ description: Context Graph API base URL (auto-fetched from control plane)
37
+ default: "https://context-graph-api.dev.kubiya.ai"
38
+ - name: KUBIYA_API_KEY
39
+ required: true
40
+ description: Kubiya API key for authentication
41
+ - name: KUBIYA_ORG_ID
42
+ required: false
43
+ description: Kubiya organization ID
44
+ - name: MEMORY_DATASET_NAME
45
+ required: false
46
+ description: Dataset name for memory scoping (defaults to "default")
47
+ default: "default"
48
+
49
+ configSchema:
50
+ type: object
51
+ properties:
52
+ api_base:
53
+ type: string
54
+ description: Context Graph API base URL (auto-fetched from control plane)
55
+ default: "https://context-graph-api.dev.kubiya.ai"
56
+ timeout:
57
+ type: integer
58
+ description: Request timeout in seconds
59
+ default: 30
60
+ minimum: 5
61
+ maximum: 120
62
+ default_limit:
63
+ type: integer
64
+ description: Default result limit for queries
65
+ default: 100
66
+ minimum: 1
67
+ maximum: 1000
@@ -0,0 +1,4 @@
1
+ """Contextual Awareness skill worker implementation."""
2
+ from .agno_impl import ContextualAwarenessTools
3
+
4
+ __all__ = ["ContextualAwarenessTools"]
@@ -0,0 +1,62 @@
1
+ """Contextual Awareness skill implementation for agno runtime."""
2
+ from control_plane_api.worker.services.contextual_awareness_tools import (
3
+ ContextualAwarenessTools as BaseContextualAwarenessTools
4
+ )
5
+
6
+
7
+ class ContextualAwarenessTools(BaseContextualAwarenessTools):
8
+ """
9
+ Contextual Awareness tools using existing ContextualAwarenessTools.
10
+
11
+ Wraps the base contextual awareness implementation.
12
+ """
13
+
14
+ def __init__(
15
+ self,
16
+ predefined_nodes: list = None,
17
+ predefined_relationships: list = None,
18
+ allow_dynamic_search: bool = False,
19
+ allow_text_search: bool = True,
20
+ allow_subgraph_queries: bool = False,
21
+ allowed_integrations: list = None,
22
+ max_results: int = 100,
23
+ default_subgraph_depth: int = 1,
24
+ enable_caching: bool = True,
25
+ cache_ttl: int = 300,
26
+ control_plane_base_url: str = None,
27
+ kubiya_api_key: str = None,
28
+ **kwargs
29
+ ):
30
+ """
31
+ Initialize contextual awareness tools.
32
+
33
+ Args:
34
+ predefined_nodes: List of predefined node filters
35
+ predefined_relationships: List of predefined relationship filters
36
+ allow_dynamic_search: Allow dynamic searches and custom Cypher queries
37
+ allow_text_search: Allow text-based searches
38
+ allow_subgraph_queries: Allow subgraph queries
39
+ allowed_integrations: List of allowed integrations (None = all)
40
+ max_results: Maximum results per query
41
+ default_subgraph_depth: Default subgraph traversal depth
42
+ enable_caching: Enable result caching
43
+ cache_ttl: Cache TTL in seconds
44
+ control_plane_base_url: Control Plane API base URL
45
+ kubiya_api_key: Kubiya API key for authentication
46
+ **kwargs: Additional configuration
47
+ """
48
+ super().__init__(
49
+ predefined_nodes=predefined_nodes,
50
+ predefined_relationships=predefined_relationships,
51
+ allow_dynamic_search=allow_dynamic_search,
52
+ allow_text_search=allow_text_search,
53
+ allow_subgraph_queries=allow_subgraph_queries,
54
+ allowed_integrations=allowed_integrations,
55
+ max_results=max_results,
56
+ default_subgraph_depth=default_subgraph_depth,
57
+ enable_caching=enable_caching,
58
+ cache_ttl=cache_ttl,
59
+ control_plane_base_url=control_plane_base_url,
60
+ kubiya_api_key=kubiya_api_key,
61
+ **kwargs
62
+ )
@@ -0,0 +1,18 @@
1
+ """Data Visualization skill implementation for all runtimes."""
2
+ from control_plane_api.worker.services.data_visualization import DataVisualizationTools as BaseDataVisualizationTools
3
+
4
+
5
+ class DataVisualizationTools(BaseDataVisualizationTools):
6
+ """
7
+ Data visualization and diagramming tools using Mermaid syntax.
8
+
9
+ This wrapper imports the full implementation from services.data_visualization
10
+ and makes it available as a builtin skill.
11
+
12
+ For agno runtime: Used directly as agno.tools.Toolkit
13
+ For claude_code runtime: Automatically converted to MCP server
14
+
15
+ The class already extends agno.tools.Toolkit and has all tools registered,
16
+ so no additional wrapper logic is needed.
17
+ """
18
+ pass
@@ -0,0 +1,84 @@
1
+ apiVersion: kubiya.ai/v1
2
+ kind: Skill
3
+ metadata:
4
+ name: data-visualization
5
+ version: 1.0.0
6
+ description: Create diagrams and visualizations using Mermaid syntax
7
+ author: Kubiya
8
+ icon: BarChart3
9
+ icon_type: lucide
10
+
11
+ spec:
12
+ type: data_visualization
13
+
14
+ implementations:
15
+ agno:
16
+ module: agno_impl
17
+ class: DataVisualizationTools
18
+ claude_code:
19
+ # Claude Code will use same implementation converted to MCP server
20
+ # The agno Toolkit is automatically wrapped as an MCP server
21
+ module: agno_impl
22
+ class: DataVisualizationTools
23
+ default:
24
+ module: agno_impl
25
+ class: DataVisualizationTools
26
+
27
+ pythonDependencies:
28
+ - agno>=0.1.0
29
+
30
+ systemRequirements:
31
+ supportedOS: [linux, darwin, win32]
32
+ minPythonVersion: "3.10"
33
+
34
+ environmentVariables: []
35
+
36
+ configSchema:
37
+ type: object
38
+ properties:
39
+ enable_flowchart:
40
+ type: boolean
41
+ description: Enable flowchart diagrams
42
+ default: true
43
+ enable_sequence:
44
+ type: boolean
45
+ description: Enable sequence diagrams
46
+ default: true
47
+ enable_class_diagram:
48
+ type: boolean
49
+ description: Enable class diagrams
50
+ default: true
51
+ enable_er_diagram:
52
+ type: boolean
53
+ description: Enable ER diagrams
54
+ default: true
55
+ enable_gantt:
56
+ type: boolean
57
+ description: Enable Gantt charts
58
+ default: true
59
+ enable_pie_chart:
60
+ type: boolean
61
+ description: Enable pie charts
62
+ default: true
63
+ enable_state_diagram:
64
+ type: boolean
65
+ description: Enable state diagrams
66
+ default: true
67
+ enable_git_graph:
68
+ type: boolean
69
+ description: Enable git graphs
70
+ default: true
71
+ enable_user_journey:
72
+ type: boolean
73
+ description: Enable user journey diagrams
74
+ default: true
75
+ enable_quadrant_chart:
76
+ type: boolean
77
+ description: Enable quadrant charts
78
+ default: true
79
+ max_diagram_size:
80
+ type: integer
81
+ description: Maximum diagram size in characters
82
+ default: 50000
83
+ minimum: 1000
84
+ maximum: 100000
@@ -0,0 +1,65 @@
1
+ """Docker skill implementation for agno runtime."""
2
+ from agno.tools import Toolkit
3
+ import docker
4
+ from control_plane_api.worker.skills.builtin.schema_fix_mixin import SchemaFixMixin
5
+
6
+
7
+ class DockerTools(SchemaFixMixin, Toolkit):
8
+ """
9
+ Docker management tools.
10
+
11
+ Provides Docker container, image, volume, and network management.
12
+ """
13
+
14
+ def __init__(
15
+ self,
16
+ enable_container_management: bool = True,
17
+ enable_image_management: bool = False,
18
+ enable_volume_management: bool = False,
19
+ enable_network_management: bool = False,
20
+ docker_host: str = "unix:///var/run/docker.sock",
21
+ **kwargs
22
+ ):
23
+ """
24
+ Initialize Docker tools.
25
+
26
+ Args:
27
+ enable_container_management: Enable container operations
28
+ enable_image_management: Enable image operations
29
+ enable_volume_management: Enable volume operations
30
+ enable_network_management: Enable network operations
31
+ docker_host: Docker daemon socket
32
+ **kwargs: Additional configuration
33
+ """
34
+ super().__init__(name="docker")
35
+ self.client = docker.DockerClient(base_url=docker_host)
36
+ self.enable_containers = enable_container_management
37
+ self.enable_images = enable_image_management
38
+ self.enable_volumes = enable_volume_management
39
+ self.enable_networks = enable_network_management
40
+
41
+ # Register functions based on enabled features
42
+ if self.enable_containers:
43
+ self.register(self.list_containers)
44
+ self.register(self.start_container)
45
+ self.register(self.stop_container)
46
+
47
+ # Fix: Rebuild function schemas with proper parameters
48
+ self._rebuild_function_schemas()
49
+
50
+ def list_containers(self, all: bool = False) -> str:
51
+ """List Docker containers."""
52
+ containers = self.client.containers.list(all=all)
53
+ return "\\n".join([f"{c.id[:12]} {c.name} {c.status}" for c in containers])
54
+
55
+ def start_container(self, container_id: str) -> str:
56
+ """Start a Docker container."""
57
+ container = self.client.containers.get(container_id)
58
+ container.start()
59
+ return f"Container {container_id} started"
60
+
61
+ def stop_container(self, container_id: str) -> str:
62
+ """Stop a Docker container."""
63
+ container = self.client.containers.get(container_id)
64
+ container.stop()
65
+ return f"Container {container_id} stopped"
@@ -0,0 +1,60 @@
1
+ apiVersion: kubiya.ai/v1
2
+ kind: Skill
3
+ metadata:
4
+ name: docker
5
+ version: 1.0.0
6
+ description: Manage Docker containers, images, volumes, and networks
7
+ author: Kubiya
8
+ icon: FaDocker
9
+ icon_type: react-icon
10
+
11
+ spec:
12
+ type: docker
13
+
14
+ implementations:
15
+ agno:
16
+ module: agno_impl
17
+ class: DockerTools
18
+ claude_code:
19
+ # Claude Code executes Docker commands via Bash tool
20
+ # Docker CLI commands run through shell
21
+ builtin: true
22
+ tools: ["Bash"]
23
+ default:
24
+ module: agno_impl
25
+ class: DockerTools
26
+
27
+ pythonDependencies:
28
+ - docker>=6.0.0
29
+
30
+ systemRequirements:
31
+ supportedOS: [linux, darwin, win32]
32
+ minPythonVersion: "3.10"
33
+ externalDependencies:
34
+ - Docker daemon must be running
35
+
36
+ environmentVariables: []
37
+
38
+ configSchema:
39
+ type: object
40
+ properties:
41
+ enable_container_management:
42
+ type: boolean
43
+ description: Enable container operations
44
+ default: true
45
+ enable_image_management:
46
+ type: boolean
47
+ description: Enable image operations
48
+ default: false
49
+ enable_volume_management:
50
+ type: boolean
51
+ description: Enable volume operations
52
+ default: false
53
+ enable_network_management:
54
+ type: boolean
55
+ description: Enable network operations
56
+ default: false
57
+ docker_host:
58
+ type: string
59
+ description: Docker daemon socket
60
+ default: "unix:///var/run/docker.sock"
@@ -0,0 +1,47 @@
1
+ """File Generation skill implementation for agno runtime."""
2
+ from agno.tools.file import FileTools
3
+ from control_plane_api.worker.skills.builtin.schema_fix_mixin import SchemaFixMixin
4
+
5
+
6
+ class FileGenerationTools(SchemaFixMixin, FileTools):
7
+ """
8
+ File generation tools using agno FileTools.
9
+
10
+ Provides file generation capabilities for various formats.
11
+ """
12
+
13
+ def __init__(
14
+ self,
15
+ enable_json_generation: bool = True,
16
+ enable_csv_generation: bool = True,
17
+ enable_pdf_generation: bool = True,
18
+ enable_txt_generation: bool = True,
19
+ output_directory: str = "",
20
+ max_file_size: int = 10,
21
+ **kwargs
22
+ ):
23
+ """
24
+ Initialize file generation tools.
25
+
26
+ Args:
27
+ enable_json_generation: Enable JSON generation
28
+ enable_csv_generation: Enable CSV generation
29
+ enable_pdf_generation: Enable PDF generation
30
+ enable_txt_generation: Enable TXT generation
31
+ output_directory: Default output directory
32
+ max_file_size: Maximum file size in MB
33
+ **kwargs: Additional configuration
34
+ """
35
+ from pathlib import Path
36
+ base_dir = Path(output_directory) if output_directory else Path.cwd()
37
+ super().__init__(base_dir=base_dir)
38
+ self.config = {
39
+ "enable_json": enable_json_generation,
40
+ "enable_csv": enable_csv_generation,
41
+ "enable_pdf": enable_pdf_generation,
42
+ "enable_txt": enable_txt_generation,
43
+ "max_size": max_file_size,
44
+ }
45
+
46
+ # Fix: Rebuild function schemas with proper parameters
47
+ self._rebuild_function_schemas()
@@ -0,0 +1,64 @@
1
+ apiVersion: kubiya.ai/v1
2
+ kind: Skill
3
+ metadata:
4
+ name: file-generator
5
+ version: 1.0.0
6
+ description: Generate and save files in various formats (JSON, CSV, PDF, TXT)
7
+ author: Kubiya
8
+ icon: FileOutput
9
+ icon_type: lucide
10
+
11
+ spec:
12
+ type: file_generation
13
+
14
+ implementations:
15
+ agno:
16
+ module: agno_impl
17
+ class: FileGenerationTools
18
+ claude_code:
19
+ # Claude Code generates files via Write tool
20
+ # File generation handled by built-in Write tool
21
+ builtin: true
22
+ tools: ["Write"]
23
+ default:
24
+ module: agno_impl
25
+ class: FileGenerationTools
26
+
27
+ pythonDependencies:
28
+ - agno>=0.1.0
29
+
30
+ systemRequirements:
31
+ supportedOS: [linux, darwin, win32]
32
+ minPythonVersion: "3.10"
33
+
34
+ environmentVariables: []
35
+
36
+ configSchema:
37
+ type: object
38
+ properties:
39
+ enable_json_generation:
40
+ type: boolean
41
+ description: Enable JSON file generation
42
+ default: true
43
+ enable_csv_generation:
44
+ type: boolean
45
+ description: Enable CSV file generation
46
+ default: true
47
+ enable_pdf_generation:
48
+ type: boolean
49
+ description: Enable PDF file generation
50
+ default: true
51
+ enable_txt_generation:
52
+ type: boolean
53
+ description: Enable TXT file generation
54
+ default: true
55
+ output_directory:
56
+ type: string
57
+ description: Default output directory
58
+ default: ""
59
+ max_file_size:
60
+ type: integer
61
+ description: Maximum file size in MB
62
+ default: 10
63
+ minimum: 1
64
+ maximum: 100
@@ -0,0 +1,32 @@
1
+ """File System skill implementation for agno runtime."""
2
+ from pathlib import Path
3
+ from typing import Optional
4
+ from agno.tools.file import FileTools
5
+ from control_plane_api.worker.skills.builtin.schema_fix_mixin import SchemaFixMixin
6
+
7
+
8
+ class FileSystemTools(SchemaFixMixin, FileTools):
9
+ """
10
+ File system operations using agno FileTools.
11
+
12
+ Wraps agno's FileTools to provide file system access.
13
+ """
14
+
15
+ def __init__(self, base_directory: Optional[str] = None, **kwargs):
16
+ """
17
+ Initialize file system tools.
18
+
19
+ Args:
20
+ base_directory: Base directory for file operations.
21
+ If None and execution_id provided, uses .kubiya/workspaces/<execution-id>
22
+ If None and no execution_id, uses current working directory
23
+ If set explicitly, uses provided path (user override)
24
+ **kwargs: Additional configuration (read_only, max_file_size, etc.)
25
+ """
26
+ # Agno's FileTools handles None as current directory
27
+ base_dir_path = Path(base_directory) if base_directory else None
28
+ super().__init__(base_dir=base_dir_path)
29
+ self.config = kwargs
30
+
31
+ # Fix: Rebuild function schemas with proper parameters
32
+ self._rebuild_function_schemas()
@@ -0,0 +1,54 @@
1
+ apiVersion: kubiya.ai/v1
2
+ kind: Skill
3
+ metadata:
4
+ name: file-system
5
+ version: 1.0.0
6
+ description: Access and manipulate files on the local file system
7
+ author: Kubiya
8
+ icon: Folder
9
+ icon_type: lucide
10
+
11
+ spec:
12
+ type: file_system
13
+
14
+ implementations:
15
+ agno:
16
+ module: agno_impl
17
+ class: FileSystemTools
18
+ claude_code:
19
+ # Claude Code has built-in file tools (Read, Write, Edit, Glob, Grep)
20
+ # No implementation needed - mapped via ClaudeCodeRuntime._map_skills_to_tools()
21
+ builtin: true
22
+ tools: ["Read", "Write", "Edit", "Glob", "Grep"]
23
+ default:
24
+ module: agno_impl
25
+ class: FileSystemTools
26
+
27
+ pythonDependencies:
28
+ - agno>=0.1.0
29
+
30
+ systemRequirements:
31
+ supportedOS: [linux, darwin, win32]
32
+ minPythonVersion: "3.10"
33
+
34
+ environmentVariables: []
35
+
36
+ configSchema:
37
+ type: object
38
+ properties:
39
+ base_directory:
40
+ type: string
41
+ description: Base directory for file operations
42
+ default: "/workspace"
43
+ read_only:
44
+ type: boolean
45
+ description: Restrict to read-only operations
46
+ default: false
47
+ max_file_size:
48
+ type: integer
49
+ description: Maximum file size in MB
50
+ default: 10
51
+ minimum: 1
52
+ maximum: 1000
53
+ required:
54
+ - base_directory
@@ -0,0 +1,4 @@
1
+ """Knowledge API skill - opt-in semantic search for organization knowledge base."""
2
+ from .agno_impl import KnowledgeAPITools
3
+
4
+ __all__ = ['KnowledgeAPITools']
@@ -0,0 +1,50 @@
1
+ """
2
+ Knowledge API skill implementation for all runtimes.
3
+
4
+ This skill imports the KnowledgeAPITools implementation from the kubiya SDK package.
5
+ It provides semantic search capabilities across the organization's knowledge base.
6
+
7
+ NOTE: This is an opt-in skill that must be explicitly associated with agents/teams.
8
+ It is NOT auto-included like context_graph_search.
9
+ """
10
+
11
+ try:
12
+ from kubiya.tools import KnowledgeAPITools as SDKKnowledgeAPITools
13
+
14
+ class KnowledgeAPITools(SDKKnowledgeAPITools):
15
+ """
16
+ Knowledge API tools for semantic search.
17
+
18
+ This wrapper imports the implementation from kubiya SDK and makes it
19
+ available as a builtin skill that can be associated with agents/teams.
20
+
21
+ For agno runtime: Used directly as agno.tools.Toolkit
22
+ For claude_code runtime: Automatically converted to MCP server
23
+
24
+ The SDK class already extends agno.tools.Toolkit and has all tools registered.
25
+ """
26
+ pass
27
+
28
+ except ImportError as e:
29
+ # If kubiya SDK is not installed, provide a fallback that explains the issue
30
+ import structlog
31
+ from agno.tools import Toolkit
32
+
33
+ logger = structlog.get_logger()
34
+
35
+ class KnowledgeAPITools(Toolkit):
36
+ """
37
+ Fallback implementation when kubiya SDK is not available.
38
+
39
+ This will raise an error during instantiation to guide users.
40
+ """
41
+
42
+ def __init__(self, **kwargs):
43
+ super().__init__(name="knowledge_api")
44
+ error_msg = (
45
+ "KnowledgeAPITools requires kubiya SDK (kubiya>=2.0.3). "
46
+ f"Import error: {str(e)}. "
47
+ "Please ensure the kubiya SDK package is installed: pip install 'kubiya>=2.0.3'"
48
+ )
49
+ logger.error("knowledge_api_sdk_missing", error=error_msg, import_error=str(e))
50
+ raise ImportError(error_msg)
@@ -0,0 +1,66 @@
1
+ apiVersion: kubiya.ai/v1
2
+ kind: Skill
3
+ metadata:
4
+ name: knowledge-api
5
+ version: 1.0.0
6
+ description: Semantic search across organization's knowledge base
7
+ author: Kubiya
8
+ icon: Database
9
+ icon_type: lucide
10
+
11
+ spec:
12
+ type: knowledge_api
13
+
14
+ implementations:
15
+ agno:
16
+ module: agno_impl
17
+ class: KnowledgeAPITools
18
+ claude_code:
19
+ # Claude Code will use same implementation converted to MCP server
20
+ module: agno_impl
21
+ class: KnowledgeAPITools
22
+ default:
23
+ module: agno_impl
24
+ class: KnowledgeAPITools
25
+
26
+ pythonDependencies:
27
+ - kubiya>=2.0.3
28
+
29
+ systemRequirements:
30
+ supportedOS: [linux, darwin, win32]
31
+ minPythonVersion: "3.10"
32
+
33
+ environmentVariables:
34
+ - name: KUBIYA_API_KEY
35
+ required: true
36
+ description: Kubiya API key for authentication
37
+ - name: KUBIYA_ORCHESTRATOR_URL
38
+ required: false
39
+ description: Custom orchestrator URL
40
+ - name: KUBIYA_ORG_ID
41
+ required: false
42
+ description: Kubiya organization ID
43
+ - name: KUBIYA_USER_ID
44
+ required: false
45
+ description: Kubiya user ID
46
+
47
+ configSchema:
48
+ type: object
49
+ properties:
50
+ stream:
51
+ type: boolean
52
+ description: Use streaming mode for queries
53
+ default: true
54
+ auto_inject_user_context:
55
+ type: boolean
56
+ description: Automatically inject user_id and org_id
57
+ default: true
58
+ timeout:
59
+ type: integer
60
+ description: Request timeout in seconds
61
+ default: 60
62
+ minimum: 10
63
+ maximum: 300
64
+ orchestrator_url:
65
+ type: string
66
+ description: Custom orchestrator URL (optional)