crewai-cli 1.14.8a2.dev20260623__tar.gz → 1.14.8a3__tar.gz

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 (148) hide show
  1. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/PKG-INFO +2 -2
  2. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/pyproject.toml +1 -1
  3. crewai_cli-1.14.8a3/src/crewai_cli/__init__.py +1 -0
  4. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/run_declarative_flow.py +24 -55
  5. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/templates/crew/pyproject.toml +1 -1
  6. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/templates/declarative_flow/pyproject.toml +1 -1
  7. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/templates/flow/pyproject.toml +1 -1
  8. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/templates/tool/pyproject.toml +1 -1
  9. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/tests/test_run_declarative_flow.py +37 -0
  10. crewai_cli-1.14.8a2.dev20260623/src/crewai_cli/__init__.py +0 -1
  11. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/.gitignore +0 -0
  12. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/README.md +0 -0
  13. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/add_crew_to_flow.py +0 -0
  14. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/authentication/__init__.py +0 -0
  15. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/authentication/constants.py +0 -0
  16. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/authentication/main.py +0 -0
  17. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/authentication/providers/__init__.py +0 -0
  18. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/authentication/providers/auth0.py +0 -0
  19. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/authentication/providers/base_provider.py +0 -0
  20. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/authentication/providers/entra_id.py +0 -0
  21. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/authentication/providers/keycloak.py +0 -0
  22. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/authentication/providers/okta.py +0 -0
  23. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/authentication/providers/workos.py +0 -0
  24. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/authentication/token.py +0 -0
  25. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/authentication/utils.py +0 -0
  26. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/checkpoint_cli.py +0 -0
  27. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/checkpoint_tui.py +0 -0
  28. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/cli.py +0 -0
  29. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/command.py +0 -0
  30. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/config.py +0 -0
  31. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/constants.py +0 -0
  32. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/create_crew.py +0 -0
  33. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/create_flow.py +0 -0
  34. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/create_json_crew.py +0 -0
  35. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/crew_chat.py +0 -0
  36. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/crew_run_tui.py +0 -0
  37. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/deploy/__init__.py +0 -0
  38. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/deploy/archive.py +0 -0
  39. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/deploy/main.py +0 -0
  40. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/deploy/validate.py +0 -0
  41. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/enterprise/__init__.py +0 -0
  42. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/enterprise/main.py +0 -0
  43. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/evaluate_crew.py +0 -0
  44. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/experimental/__init__.py +0 -0
  45. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/experimental/skills/__init__.py +0 -0
  46. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/experimental/skills/main.py +0 -0
  47. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/git.py +0 -0
  48. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/install_crew.py +0 -0
  49. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/memory_tui.py +0 -0
  50. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/organization/__init__.py +0 -0
  51. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/organization/main.py +0 -0
  52. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/plot_flow.py +0 -0
  53. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/plus_api.py +0 -0
  54. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/provider.py +0 -0
  55. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/py.typed +0 -0
  56. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/remote_template/__init__.py +0 -0
  57. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/remote_template/main.py +0 -0
  58. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/replay_from_task.py +0 -0
  59. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/reset_memories_command.py +0 -0
  60. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/run_crew.py +0 -0
  61. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/settings/__init__.py +0 -0
  62. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/settings/main.py +0 -0
  63. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/shared/__init__.py +0 -0
  64. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/shared/token_manager.py +0 -0
  65. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/task_outputs.py +0 -0
  66. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/templates/AGENTS.md +0 -0
  67. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/templates/__init__.py +0 -0
  68. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/templates/crew/.gitignore +0 -0
  69. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/templates/crew/README.md +0 -0
  70. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/templates/crew/__init__.py +0 -0
  71. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/templates/crew/config/agents.yaml +0 -0
  72. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/templates/crew/config/tasks.yaml +0 -0
  73. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/templates/crew/crew.py +0 -0
  74. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/templates/crew/knowledge/user_preference.txt +0 -0
  75. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/templates/crew/main.py +0 -0
  76. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/templates/crew/skills/.gitkeep +0 -0
  77. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/templates/crew/tools/__init__.py +0 -0
  78. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/templates/crew/tools/custom_tool.py +0 -0
  79. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/templates/declarative_flow/.gitignore +0 -0
  80. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/templates/declarative_flow/README.md +0 -0
  81. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/templates/declarative_flow/flow.yaml +0 -0
  82. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/templates/flow/.gitignore +0 -0
  83. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/templates/flow/README.md +0 -0
  84. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/templates/flow/__init__.py +0 -0
  85. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/templates/flow/crews/content_crew/config/agents.yaml +0 -0
  86. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/templates/flow/crews/content_crew/config/tasks.yaml +0 -0
  87. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/templates/flow/crews/content_crew/content_crew.py +0 -0
  88. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/templates/flow/main.py +0 -0
  89. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/templates/flow/skills/.gitkeep +0 -0
  90. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/templates/flow/tools/__init__.py +0 -0
  91. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/templates/flow/tools/custom_tool.py +0 -0
  92. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/templates/tool/.gitignore +0 -0
  93. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/templates/tool/README.md +0 -0
  94. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/templates/tool/src/{{folder_name}}/__init__.py +0 -0
  95. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/templates/tool/src/{{folder_name}}/tool.py +0 -0
  96. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/tools/__init__.py +0 -0
  97. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/tools/main.py +0 -0
  98. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/train_crew.py +0 -0
  99. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/triggers/__init__.py +0 -0
  100. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/triggers/main.py +0 -0
  101. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/tui_picker.py +0 -0
  102. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/update_crew.py +0 -0
  103. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/user_data.py +0 -0
  104. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/utils.py +0 -0
  105. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/src/crewai_cli/version.py +0 -0
  106. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/tests/__init__.py +0 -0
  107. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/tests/authentication/__init__.py +0 -0
  108. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/tests/authentication/providers/__init__.py +0 -0
  109. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/tests/authentication/providers/test_auth0.py +0 -0
  110. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/tests/authentication/providers/test_entra_id.py +0 -0
  111. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/tests/authentication/providers/test_keycloak.py +0 -0
  112. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/tests/authentication/providers/test_okta.py +0 -0
  113. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/tests/authentication/providers/test_workos.py +0 -0
  114. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/tests/authentication/test_auth_main.py +0 -0
  115. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/tests/authentication/test_utils.py +0 -0
  116. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/tests/deploy/__init__.py +0 -0
  117. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/tests/deploy/test_archive.py +0 -0
  118. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/tests/deploy/test_deploy_main.py +0 -0
  119. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/tests/deploy/test_validate.py +0 -0
  120. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/tests/enterprise/__init__.py +0 -0
  121. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/tests/enterprise/test_main.py +0 -0
  122. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/tests/experimental/__init__.py +0 -0
  123. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/tests/experimental/skills/__init__.py +0 -0
  124. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/tests/experimental/skills/test_main.py +0 -0
  125. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/tests/organization/__init__.py +0 -0
  126. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/tests/organization/test_main.py +0 -0
  127. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/tests/skills/__init__.py +0 -0
  128. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/tests/test_cli.py +0 -0
  129. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/tests/test_click_compatibility.py +0 -0
  130. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/tests/test_config.py +0 -0
  131. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/tests/test_constants.py +0 -0
  132. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/tests/test_create_crew.py +0 -0
  133. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/tests/test_create_flow.py +0 -0
  134. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/tests/test_crew_run_tui.py +0 -0
  135. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/tests/test_crew_test.py +0 -0
  136. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/tests/test_flow_commands.py +0 -0
  137. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/tests/test_git.py +0 -0
  138. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/tests/test_install_crew.py +0 -0
  139. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/tests/test_plus_api.py +0 -0
  140. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/tests/test_run_crew.py +0 -0
  141. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/tests/test_settings_command.py +0 -0
  142. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/tests/test_token_manager.py +0 -0
  143. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/tests/test_train_crew.py +0 -0
  144. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/tests/test_utils.py +0 -0
  145. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/tests/test_version.py +0 -0
  146. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/tests/tools/__init__.py +0 -0
  147. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/tests/tools/test_main.py +0 -0
  148. {crewai_cli-1.14.8a2.dev20260623 → crewai_cli-1.14.8a3}/tests/triggers/test_main.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: crewai-cli
3
- Version: 1.14.8a2.dev20260623
3
+ Version: 1.14.8a3
4
4
  Summary: CLI for CrewAI — scaffold, run, deploy and manage AI agent crews.
5
5
  Project-URL: Homepage, https://crewai.com
6
6
  Project-URL: Documentation, https://docs.crewai.com
@@ -10,7 +10,7 @@ Requires-Python: <3.14,>=3.10
10
10
  Requires-Dist: appdirs~=1.4.4
11
11
  Requires-Dist: certifi
12
12
  Requires-Dist: click<9,>=8.1.7
13
- Requires-Dist: crewai-core==1.14.8a2.dev20260623
13
+ Requires-Dist: crewai-core==1.14.8a3
14
14
  Requires-Dist: cryptography>=42.0
15
15
  Requires-Dist: httpx~=0.28.1
16
16
  Requires-Dist: packaging>=23.0
@@ -8,7 +8,7 @@ authors = [
8
8
  ]
9
9
  requires-python = ">=3.10, <3.14"
10
10
  dependencies = [
11
- "crewai-core==1.14.8a2.dev20260623",
11
+ "crewai-core==1.14.8a3",
12
12
  "click>=8.1.7,<9",
13
13
  "pydantic>=2.11.9,<2.13",
14
14
  "pydantic-settings~=2.10.1",
@@ -0,0 +1 @@
1
+ __version__ = "1.14.8a3"
@@ -6,6 +6,7 @@ import subprocess
6
6
  from typing import Any
7
7
 
8
8
  import click
9
+ from pydantic import ValidationError
9
10
 
10
11
  from crewai_cli.utils import build_env_with_all_tool_credentials
11
12
 
@@ -65,7 +66,6 @@ def load_declarative_flow(definition: str) -> Any:
65
66
  """Load a declarative Flow instance from a definition path."""
66
67
  try:
67
68
  from crewai.flow.flow import Flow
68
- from crewai.flow.flow_definition import FlowDefinition
69
69
  except ImportError as exc:
70
70
  click.echo(
71
71
  "Running declarative flows requires the full crewai package.",
@@ -74,14 +74,30 @@ def load_declarative_flow(definition: str) -> Any:
74
74
  raise SystemExit(1) from exc
75
75
 
76
76
  definition_path = Path(definition).expanduser()
77
- definition_source = _read_declarative_flow_source(definition_path, definition)
77
+ try:
78
+ if not definition_path.is_file():
79
+ if definition_path.exists():
80
+ click.echo(
81
+ f"Invalid --definition path: {definition} is not a file.",
82
+ err=True,
83
+ )
84
+ raise SystemExit(1)
85
+ click.echo(
86
+ f"Invalid --definition path: {definition} does not exist.", err=True
87
+ )
88
+ raise SystemExit(1)
89
+ except OSError as exc:
90
+ click.echo(f"Invalid --definition path: {definition} ({exc})", err=True)
91
+ raise SystemExit(1) from exc
78
92
 
79
- flow_definition = _parse_declarative_flow(
80
- FlowDefinition,
81
- definition_source,
82
- source_path=definition_path,
83
- )
84
- return Flow.from_definition(flow_definition)
93
+ try:
94
+ return Flow.from_declaration(path=definition_path)
95
+ except (OSError, UnicodeError, ValueError, ValidationError) as exc:
96
+ click.echo(
97
+ f"Unable to read --definition path {definition_path}: {exc}",
98
+ err=True,
99
+ )
100
+ raise SystemExit(1) from exc
85
101
 
86
102
 
87
103
  def configured_project_declarative_flow(
@@ -154,53 +170,6 @@ def _parse_inputs(inputs: str | None) -> dict[str, Any] | None:
154
170
  return parsed
155
171
 
156
172
 
157
- def _read_declarative_flow_source(path: Path, definition: str) -> str:
158
- try:
159
- if path.is_file():
160
- source = _read_declarative_flow_file(path)
161
- elif path.exists():
162
- click.echo(
163
- f"Invalid --definition path: {definition} is not a file.", err=True
164
- )
165
- raise SystemExit(1)
166
- else:
167
- click.echo(
168
- f"Invalid --definition path: {definition} does not exist.", err=True
169
- )
170
- raise SystemExit(1)
171
- except OSError as exc:
172
- click.echo(f"Invalid --definition path: {definition} ({exc})", err=True)
173
- raise SystemExit(1) from exc
174
-
175
- return source
176
-
177
-
178
- def _read_declarative_flow_file(path: Path) -> str:
179
- try:
180
- source = path.read_text(encoding="utf-8")
181
- except (OSError, UnicodeError) as exc:
182
- click.echo(
183
- f"Unable to read --definition path {path}: {exc}",
184
- err=True,
185
- )
186
- raise SystemExit(1) from exc
187
- return source
188
-
189
-
190
- def _parse_declarative_flow(
191
- flow_definition_cls: type[Any], source: str, *, source_path: Path
192
- ) -> Any:
193
- if _looks_like_json(source):
194
- return flow_definition_cls.from_json(source, source_path=source_path)
195
-
196
- return flow_definition_cls.from_yaml(source, source_path=source_path)
197
-
198
-
199
- def _looks_like_json(source: str) -> bool:
200
- stripped = source.lstrip()
201
- return stripped.startswith("{")
202
-
203
-
204
173
  def _format_result(result: Any) -> str:
205
174
  raw_result = getattr(result, "raw", result)
206
175
  if isinstance(raw_result, str):
@@ -5,7 +5,7 @@ description = "{{name}} using crewAI"
5
5
  authors = [{ name = "Your Name", email = "you@example.com" }]
6
6
  requires-python = ">=3.10,<3.14"
7
7
  dependencies = [
8
- "crewai[tools]==1.14.8a2"
8
+ "crewai[tools]==1.14.8a3"
9
9
  ]
10
10
 
11
11
  [project.scripts]
@@ -5,7 +5,7 @@ description = "{{name}} using crewAI"
5
5
  authors = [{ name = "Your Name", email = "you@example.com" }]
6
6
  requires-python = ">=3.10,<3.14"
7
7
  dependencies = [
8
- "crewai[tools]==1.14.8a2"
8
+ "crewai[tools]==1.14.8a3"
9
9
  ]
10
10
 
11
11
  [build-system]
@@ -5,7 +5,7 @@ description = "{{name}} using crewAI"
5
5
  authors = [{ name = "Your Name", email = "you@example.com" }]
6
6
  requires-python = ">=3.10,<3.14"
7
7
  dependencies = [
8
- "crewai[tools]==1.14.8a2"
8
+ "crewai[tools]==1.14.8a3"
9
9
  ]
10
10
 
11
11
  [project.scripts]
@@ -5,7 +5,7 @@ description = "Power up your crews with {{folder_name}}"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10,<3.14"
7
7
  dependencies = [
8
- "crewai[tools]==1.14.8a2"
8
+ "crewai[tools]==1.14.8a3"
9
9
  ]
10
10
 
11
11
  [tool.crewai]
@@ -60,6 +60,43 @@ def test_run_declarative_flow_reports_missing_file(
60
60
  )
61
61
 
62
62
 
63
+ def test_run_declarative_flow_reports_empty_file(
64
+ tmp_path: Path, capsys: pytest.CaptureFixture[str]
65
+ ) -> None:
66
+ definition_path = tmp_path / "flow.yaml"
67
+ definition_path.write_text(" \n", encoding="utf-8")
68
+
69
+ with pytest.raises(SystemExit):
70
+ run_declarative_flow_module.run_declarative_flow(str(definition_path))
71
+
72
+ assert "Flow declaration file is empty" in capsys.readouterr().err
73
+
74
+
75
+ @pytest.mark.parametrize(
76
+ "contents, expected_error",
77
+ [
78
+ ("[]\n", "Flow declaration must contain a mapping"),
79
+ ("schema: crewai.flow/v1\nmethods: {}\n", "Field required"),
80
+ ],
81
+ )
82
+ def test_load_declarative_flow_reports_invalid_declarations(
83
+ tmp_path: Path,
84
+ capsys: pytest.CaptureFixture[str],
85
+ contents: str,
86
+ expected_error: str,
87
+ ) -> None:
88
+ definition_path = tmp_path / "flow.yaml"
89
+ definition_path.write_text(contents, encoding="utf-8")
90
+
91
+ with pytest.raises(SystemExit) as exc_info:
92
+ run_declarative_flow_module.load_declarative_flow(str(definition_path))
93
+
94
+ assert exc_info.value.code == 1
95
+ stderr = capsys.readouterr().err
96
+ assert f"Unable to read --definition path {definition_path}:" in stderr
97
+ assert expected_error in stderr
98
+
99
+
63
100
  def test_run_declarative_flow_in_project_env_uses_uv(
64
101
  monkeypatch: pytest.MonkeyPatch, tmp_path: Path
65
102
  ) -> None:
@@ -1 +0,0 @@
1
- __version__ = "1.14.8a2.dev20260623"