ara-cli 0.1.10.7__tar.gz → 0.1.11.3__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 (245) hide show
  1. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/PKG-INFO +1 -1
  2. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/__main__.py +3 -1
  3. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/ara_config.py +3 -0
  4. ara_cli-0.1.11.3/ara_cli/ara_subcommands/fetch_scripts.py +8 -0
  5. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/chat.py +88 -0
  6. ara_cli-0.1.11.3/ara_cli/chat_script_runner/script_completer.py +23 -0
  7. ara_cli-0.1.11.3/ara_cli/chat_script_runner/script_finder.py +36 -0
  8. ara_cli-0.1.11.3/ara_cli/chat_script_runner/script_lister.py +33 -0
  9. ara_cli-0.1.11.3/ara_cli/chat_script_runner/script_runner.py +32 -0
  10. ara_cli-0.1.11.3/ara_cli/commands/fetch_scripts_command.py +43 -0
  11. ara_cli-0.1.11.3/ara_cli/templates/global-scripts/hello_global.py +1 -0
  12. ara_cli-0.1.11.3/ara_cli/templates/prompt-modules/commands/add_scenarios_for_new_behaviour.feature_creation_agent.commands.md +1 -0
  13. ara_cli-0.1.11.3/ara_cli/templates/prompt-modules/commands/align_feature_with_implementation_changes.interview_agent.commands.md +1 -0
  14. ara_cli-0.1.11.3/ara_cli/templates/prompt-modules/commands/analyze_codebase_and_plan_tasks.interview_agent.commands.md +1 -0
  15. ara_cli-0.1.11.3/ara_cli/templates/prompt-modules/commands/choose_best_parent_artefact.interview_agent.commands.md +1 -0
  16. ara_cli-0.1.11.3/ara_cli/templates/prompt-modules/commands/create_tasks_from_artefact_content.interview_agent.commands.md +1 -0
  17. ara_cli-0.1.11.3/ara_cli/templates/prompt-modules/commands/create_tests_for_uncovered_modules.test_generation_agent.commands.md +1 -0
  18. ara_cli-0.1.11.3/ara_cli/templates/prompt-modules/commands/derive_features_from_video_description.feature_creation_agent.commands.md +1 -0
  19. ara_cli-0.1.11.3/ara_cli/templates/prompt-modules/commands/describe_agent_capabilities.agent.commands.md +1 -0
  20. ara_cli-0.1.11.3/ara_cli/templates/prompt-modules/commands/empty.commands.md +4 -0
  21. ara_cli-0.1.11.3/ara_cli/templates/prompt-modules/commands/execute_scoped_todos_in_task.interview_agent.commands.md +1 -0
  22. ara_cli-0.1.11.3/ara_cli/templates/prompt-modules/commands/explain_single_file_purpose.interview_agent.commands.md +1 -0
  23. ara_cli-0.1.11.3/ara_cli/templates/prompt-modules/commands/extract_file_information_bullets.interview_agent.commands.md +1 -0
  24. ara_cli-0.1.11.3/ara_cli/templates/prompt-modules/commands/extract_general.commands.md +12 -0
  25. ara_cli-0.1.11.3/ara_cli/templates/prompt-modules/commands/extract_markdown.commands.md +11 -0
  26. ara_cli-0.1.11.3/ara_cli/templates/prompt-modules/commands/extract_python.commands.md +13 -0
  27. ara_cli-0.1.11.3/ara_cli/templates/prompt-modules/commands/feature_add_or_modifiy_specified_behavior.commands.md +36 -0
  28. ara_cli-0.1.11.3/ara_cli/templates/prompt-modules/commands/feature_generate_initial_specified_bevahior.commands.md +53 -0
  29. ara_cli-0.1.11.3/ara_cli/templates/prompt-modules/commands/fix_failing_behave_step_definitions.interview_agent.commands.md +1 -0
  30. ara_cli-0.1.11.3/ara_cli/templates/prompt-modules/commands/fix_failing_pytest_tests.interview_agent.commands.md +1 -0
  31. ara_cli-0.1.11.3/ara_cli/templates/prompt-modules/commands/general_instruction_policy.commands.md +47 -0
  32. ara_cli-0.1.11.3/ara_cli/templates/prompt-modules/commands/generate_and_fix_pytest_tests.test_generation_agent.commands.md +1 -0
  33. ara_cli-0.1.11.3/ara_cli/templates/prompt-modules/commands/prompt_template_tech_stack_transformer.commands.md +95 -0
  34. ara_cli-0.1.11.3/ara_cli/templates/prompt-modules/commands/python_bug_fixing_code.commands.md +34 -0
  35. ara_cli-0.1.11.3/ara_cli/templates/prompt-modules/commands/python_generate_code.commands.md +27 -0
  36. ara_cli-0.1.11.3/ara_cli/templates/prompt-modules/commands/python_refactoring_code.commands.md +39 -0
  37. ara_cli-0.1.11.3/ara_cli/templates/prompt-modules/commands/python_step_definitions_generation_and_fixing.commands.md +40 -0
  38. ara_cli-0.1.11.3/ara_cli/templates/prompt-modules/commands/python_unittest_generation_and_fixing.commands.md +48 -0
  39. ara_cli-0.1.11.3/ara_cli/templates/prompt-modules/commands/suggest_next_story_child_tasks.interview_agent.commands.md +1 -0
  40. ara_cli-0.1.11.3/ara_cli/templates/prompt-modules/commands/summarize_or_transcribe_media.interview_agent.commands.md +1 -0
  41. ara_cli-0.1.11.3/ara_cli/templates/prompt-modules/commands/update_feature_to_match_implementation.feature_creation_agent.commands.md +1 -0
  42. ara_cli-0.1.11.3/ara_cli/templates/prompt-modules/commands/update_user_story_with_requirements.interview_agent.commands.md +1 -0
  43. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/version.py +1 -1
  44. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli.egg-info/PKG-INFO +1 -1
  45. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli.egg-info/SOURCES.txt +38 -17
  46. ara_cli-0.1.11.3/tests/__init__.py +0 -0
  47. ara_cli-0.1.10.7/ara_cli/templates/prompt-modules/blueprints/complete_pytest_unittest.blueprint.md +0 -27
  48. ara_cli-0.1.10.7/ara_cli/templates/prompt-modules/blueprints/pytest_unittest_prompt.blueprint.md +0 -32
  49. ara_cli-0.1.10.7/ara_cli/templates/prompt-modules/blueprints/task_todo_list_implement_feature_BDD_way.blueprint.md +0 -30
  50. ara_cli-0.1.10.7/ara_cli/templates/prompt-modules/commands/artefact_classification.commands.md +0 -9
  51. ara_cli-0.1.10.7/ara_cli/templates/prompt-modules/commands/artefact_extension.commands.md +0 -17
  52. ara_cli-0.1.10.7/ara_cli/templates/prompt-modules/commands/artefact_formulation.commands.md +0 -14
  53. ara_cli-0.1.10.7/ara_cli/templates/prompt-modules/commands/behave_step_generation.commands.md +0 -102
  54. ara_cli-0.1.10.7/ara_cli/templates/prompt-modules/commands/code_generation_complex.commands.md +0 -20
  55. ara_cli-0.1.10.7/ara_cli/templates/prompt-modules/commands/code_generation_simple.commands.md +0 -13
  56. ara_cli-0.1.10.7/ara_cli/templates/prompt-modules/commands/empty.commands.md +0 -14
  57. ara_cli-0.1.10.7/ara_cli/templates/prompt-modules/commands/error_fixing.commands.md +0 -20
  58. ara_cli-0.1.10.7/ara_cli/templates/prompt-modules/commands/feature_file_update.commands.md +0 -18
  59. ara_cli-0.1.10.7/ara_cli/templates/prompt-modules/commands/feature_formulation.commands.md +0 -43
  60. ara_cli-0.1.10.7/ara_cli/templates/prompt-modules/commands/js_code_generation_simple.commands.md +0 -13
  61. ara_cli-0.1.10.7/ara_cli/templates/prompt-modules/commands/refactoring.commands.md +0 -15
  62. ara_cli-0.1.10.7/ara_cli/templates/prompt-modules/commands/refactoring_analysis.commands.md +0 -9
  63. ara_cli-0.1.10.7/ara_cli/templates/prompt-modules/commands/reverse_engineer_feature_file.commands.md +0 -15
  64. ara_cli-0.1.10.7/ara_cli/templates/prompt-modules/commands/reverse_engineer_program_flow.commands.md +0 -19
  65. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/MANIFEST.in +0 -0
  66. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/README.md +0 -0
  67. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/__init__.py +0 -0
  68. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/ara_command_action.py +0 -0
  69. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/ara_subcommands/__init__.py +0 -0
  70. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/ara_subcommands/autofix.py +0 -0
  71. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/ara_subcommands/chat.py +0 -0
  72. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/ara_subcommands/classifier_directory.py +0 -0
  73. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/ara_subcommands/common.py +0 -0
  74. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/ara_subcommands/create.py +0 -0
  75. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/ara_subcommands/delete.py +0 -0
  76. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/ara_subcommands/extract.py +0 -0
  77. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/ara_subcommands/fetch_templates.py +0 -0
  78. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/ara_subcommands/list.py +0 -0
  79. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/ara_subcommands/list_tags.py +0 -0
  80. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/ara_subcommands/load.py +0 -0
  81. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/ara_subcommands/prompt.py +0 -0
  82. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/ara_subcommands/read.py +0 -0
  83. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/ara_subcommands/read_status.py +0 -0
  84. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/ara_subcommands/read_user.py +0 -0
  85. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/ara_subcommands/reconnect.py +0 -0
  86. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/ara_subcommands/rename.py +0 -0
  87. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/ara_subcommands/scan.py +0 -0
  88. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/ara_subcommands/set_status.py +0 -0
  89. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/ara_subcommands/set_user.py +0 -0
  90. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/ara_subcommands/template.py +0 -0
  91. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/artefact_autofix.py +0 -0
  92. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/artefact_creator.py +0 -0
  93. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/artefact_deleter.py +0 -0
  94. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/artefact_fuzzy_search.py +0 -0
  95. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/artefact_link_updater.py +0 -0
  96. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/artefact_lister.py +0 -0
  97. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/artefact_models/__init__.py +0 -0
  98. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/artefact_models/artefact_data_retrieval.py +0 -0
  99. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/artefact_models/artefact_load.py +0 -0
  100. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/artefact_models/artefact_mapping.py +0 -0
  101. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/artefact_models/artefact_model.py +0 -0
  102. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/artefact_models/artefact_templates.py +0 -0
  103. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/artefact_models/businessgoal_artefact_model.py +0 -0
  104. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/artefact_models/capability_artefact_model.py +0 -0
  105. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/artefact_models/epic_artefact_model.py +0 -0
  106. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/artefact_models/example_artefact_model.py +0 -0
  107. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/artefact_models/feature_artefact_model.py +0 -0
  108. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/artefact_models/issue_artefact_model.py +0 -0
  109. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/artefact_models/keyfeature_artefact_model.py +0 -0
  110. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/artefact_models/serialize_helper.py +0 -0
  111. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/artefact_models/task_artefact_model.py +0 -0
  112. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/artefact_models/userstory_artefact_model.py +0 -0
  113. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/artefact_models/vision_artefact_model.py +0 -0
  114. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/artefact_reader.py +0 -0
  115. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/artefact_renamer.py +0 -0
  116. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/artefact_scan.py +0 -0
  117. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/chat_agent/__init__.py +0 -0
  118. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/chat_agent/agent_communicator.py +0 -0
  119. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/chat_agent/agent_process_manager.py +0 -0
  120. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/chat_agent/agent_status_manager.py +0 -0
  121. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/chat_agent/agent_workspace_manager.py +0 -0
  122. {ara_cli-0.1.10.7/ara_cli/commands → ara_cli-0.1.11.3/ara_cli/chat_script_runner}/__init__.py +0 -0
  123. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/classifier.py +0 -0
  124. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/codefusionretriever.py +0 -0
  125. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/codehierachieretriever.py +0 -0
  126. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/commandline_completer.py +0 -0
  127. {ara_cli-0.1.10.7/ara_cli/file_loaders → ara_cli-0.1.11.3/ara_cli/commands}/__init__.py +0 -0
  128. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/commands/command.py +0 -0
  129. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/commands/extract_command.py +0 -0
  130. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/commands/load_command.py +0 -0
  131. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/commands/load_image_command.py +0 -0
  132. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/commands/read_command.py +0 -0
  133. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/completers.py +0 -0
  134. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/directory_navigator.py +0 -0
  135. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/error_handler.py +0 -0
  136. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/file_classifier.py +0 -0
  137. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/file_lister.py +0 -0
  138. {ara_cli-0.1.10.7/tests → ara_cli-0.1.11.3/ara_cli/file_loaders}/__init__.py +0 -0
  139. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/file_loaders/binary_file_loader.py +0 -0
  140. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/file_loaders/document_file_loader.py +0 -0
  141. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/file_loaders/document_reader.py +0 -0
  142. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/file_loaders/document_readers.py +0 -0
  143. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/file_loaders/file_loader.py +0 -0
  144. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/file_loaders/file_loaders.py +0 -0
  145. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/file_loaders/image_processor.py +0 -0
  146. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/file_loaders/markdown_reader.py +0 -0
  147. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/file_loaders/text_file_loader.py +0 -0
  148. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/filename_validator.py +0 -0
  149. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/global_file_lister.py +0 -0
  150. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/list_filter.py +0 -0
  151. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/output_suppressor.py +0 -0
  152. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/prompt_chat.py +0 -0
  153. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/prompt_extractor.py +0 -0
  154. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/prompt_handler.py +0 -0
  155. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/prompt_rag.py +0 -0
  156. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/run_file_lister.py +0 -0
  157. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/tag_extractor.py +0 -0
  158. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/template_loader.py +0 -0
  159. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/template_manager.py +0 -0
  160. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/templates/agile.artefacts +0 -0
  161. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/templates/prompt-modules/blueprints/empty.blueprint.md +0 -0
  162. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/templates/prompt-modules/blueprints/task_todo_list_C4_architecture_analysis.blueprint.md +0 -0
  163. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/templates/prompt-modules/commands/architecture_C4_analysis.commands.md +0 -0
  164. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/templates/prompt-modules/commands/architecture_radon_cc_score.commands.md +0 -0
  165. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/templates/prompt-modules/commands/architecture_radon_halstead_v.commands.md +0 -0
  166. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/templates/prompt-modules/commands/architecture_radon_maintainability_score.commands.md +0 -0
  167. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/templates/prompt-modules/intentions/classify_task.intention.md +0 -0
  168. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/templates/prompt-modules/intentions/empty.intention.md +0 -0
  169. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/templates/prompt-modules/intentions/error_fixing.intention.md +0 -0
  170. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/templates/prompt-modules/intentions/feature_fix_steps_for_scenario.intention.md +0 -0
  171. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/templates/prompt-modules/intentions/feature_formulation.intention.md +0 -0
  172. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/templates/prompt-modules/intentions/feature_reverse_formulation_from_code.intention.md +0 -0
  173. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/templates/prompt-modules/intentions/feature_scenario_implementation.intention.md +0 -0
  174. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/templates/prompt-modules/intentions/feature_scenario_implementation_update.intention.md +0 -0
  175. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/templates/prompt-modules/intentions/feature_scenario_outline_extension.intention.md +0 -0
  176. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/templates/prompt-modules/intentions/feature_update_formulation.intention.md +0 -0
  177. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/templates/prompt-modules/intentions/fibonacci_example_implementation.intention.md +0 -0
  178. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/templates/prompt-modules/intentions/js_implementation_from_task_description.intention.md +0 -0
  179. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/templates/prompt-modules/intentions/js_steps_implementation.intention.md +0 -0
  180. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/templates/prompt-modules/intentions/python_cli_implementation_with_test.intention.md +0 -0
  181. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/templates/prompt-modules/intentions/python_code_understanding.intention.md +0 -0
  182. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/templates/prompt-modules/intentions/task_implementation.intention.md +0 -0
  183. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/templates/prompt-modules/intentions/task_prompt_control_by_status.intention.md +0 -0
  184. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/templates/prompt-modules/intentions/task_stepwise_implementation_by_number.intention.md +0 -0
  185. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/templates/prompt-modules/intentions/task_stepwise_implementation_by_status.intention.md +0 -0
  186. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/templates/prompt-modules/rules/architecture_analyst.rules.md +0 -0
  187. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/templates/prompt-modules/rules/code_analyst.rules.md +0 -0
  188. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/templates/prompt-modules/rules/empty.rules.md +0 -0
  189. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/templates/prompt-modules/rules/error_analyst.rules.md +0 -0
  190. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/templates/prompt-modules/rules/gherkin_expert.rules.md +0 -0
  191. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/templates/prompt-modules/rules/js_expert_developer.rules.md +0 -0
  192. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/templates/prompt-modules/rules/product_owner.rules.md +0 -0
  193. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/templates/prompt-modules/rules/python_behave.rules.md +0 -0
  194. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/templates/prompt-modules/rules/python_developer.rules.md +0 -0
  195. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/templates/specification_breakdown_files/template.concept.exploration.md +0 -0
  196. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/templates/specification_breakdown_files/template.concept.md +0 -0
  197. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/templates/specification_breakdown_files/template.customer.exploration.md +0 -0
  198. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/templates/specification_breakdown_files/template.customer.md +0 -0
  199. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/templates/specification_breakdown_files/template.persona.exploration.md +0 -0
  200. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/templates/specification_breakdown_files/template.persona.md +0 -0
  201. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/templates/specification_breakdown_files/template.step.exploration.md +0 -0
  202. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/templates/specification_breakdown_files/template.step.md +0 -0
  203. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/templates/specification_breakdown_files/template.technology.exploration.md +0 -0
  204. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/templates/specification_breakdown_files/template.technology.md +0 -0
  205. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/templates/template.businessgoal.prompt_log.md +0 -0
  206. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/templates/template.capability.prompt_log.md +0 -0
  207. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/templates/template.epic.prompt_log.md +0 -0
  208. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/templates/template.example.prompt_log.md +0 -0
  209. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/templates/template.feature.prompt_log.md +0 -0
  210. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/templates/template.issue.prompt_log.md +0 -0
  211. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/templates/template.keyfeature.prompt_log.md +0 -0
  212. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/templates/template.steps.prompt_log.md +0 -0
  213. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/templates/template.task.prompt_log.md +0 -0
  214. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/templates/template.userstory.prompt_log.md +0 -0
  215. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/templates/template.vision.prompt_log.md +0 -0
  216. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli/update_config_prompt.py +0 -0
  217. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli.egg-info/dependency_links.txt +0 -0
  218. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli.egg-info/entry_points.txt +0 -0
  219. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli.egg-info/requires.txt +0 -0
  220. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/ara_cli.egg-info/top_level.txt +0 -0
  221. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/docker/base/requirements.txt +0 -0
  222. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/setup.cfg +0 -0
  223. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/setup.py +0 -0
  224. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/tests/test_ara_command_action.py +0 -0
  225. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/tests/test_ara_config.py +0 -0
  226. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/tests/test_artefact_autofix.py +0 -0
  227. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/tests/test_artefact_fuzzy_search.py +0 -0
  228. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/tests/test_artefact_link_updater.py +0 -0
  229. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/tests/test_artefact_lister.py +0 -0
  230. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/tests/test_artefact_reader.py +0 -0
  231. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/tests/test_artefact_renamer.py +0 -0
  232. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/tests/test_artefact_scan.py +0 -0
  233. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/tests/test_chat.py +0 -0
  234. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/tests/test_classifier.py +0 -0
  235. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/tests/test_directory_navigator.py +0 -0
  236. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/tests/test_file_classifier.py +0 -0
  237. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/tests/test_file_creator.py +0 -0
  238. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/tests/test_file_lister.py +0 -0
  239. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/tests/test_global_file_lister.py +0 -0
  240. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/tests/test_list_filter.py +0 -0
  241. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/tests/test_prompt_handler.py +0 -0
  242. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/tests/test_tag_extractor.py +0 -0
  243. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/tests/test_template_loader.py +0 -0
  244. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/tests/test_template_manager.py +0 -0
  245. {ara_cli-0.1.10.7 → ara_cli-0.1.11.3}/tests/test_update_config_prompt.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ara_cli
3
- Version: 0.1.10.7
3
+ Version: 0.1.11.3
4
4
  Summary: Powerful, open source command-line tool for managing, structuring and automating software development artifacts in line with Business-Driven Development (BDD) and AI-assisted processes
5
5
  Description-Content-Type: text/markdown
6
6
  Requires-Dist: langfuse
@@ -13,6 +13,7 @@ from ara_cli.ara_subcommands.prompt import register as register_prompt_cli
13
13
  from ara_cli.ara_subcommands.chat import register as register_chat_cli
14
14
  from ara_cli.ara_subcommands.template import register as register_template_cli
15
15
  from ara_cli.ara_subcommands.fetch_templates import register as register_fetch_templates_cli
16
+ from ara_cli.ara_subcommands.fetch_scripts import register as register_fetch_scripts_cli
16
17
  from ara_cli.ara_subcommands.read import register as register_read_cli
17
18
  from ara_cli.ara_subcommands.reconnect import register as register_reconnect_cli
18
19
  from ara_cli.ara_subcommands.read_status import register as register_read_status_cli
@@ -212,7 +213,7 @@ ara chat examples:
212
213
  commands_requiring_ara = {
213
214
  'create', 'delete', 'rename', 'list', 'list-tags', 'prompt',
214
215
  'read', 'reconnect', 'read-status', 'read-user', 'set-status',
215
- 'set-user', 'classifier-directory', 'scan', 'autofix'
216
+ 'set-user', 'scan', 'autofix'
216
217
  }
217
218
 
218
219
  if ctx.invoked_subcommand in commands_requiring_ara:
@@ -228,6 +229,7 @@ ara chat examples:
228
229
  register_chat_cli(app)
229
230
  register_template_cli(app)
230
231
  register_fetch_templates_cli(app)
232
+ register_fetch_scripts_cli(app)
231
233
  register_read_cli(app)
232
234
  register_reconnect_cli(app)
233
235
  register_read_status_cli(app)
@@ -29,6 +29,8 @@ class ARAconfig(BaseModel):
29
29
  doc_dir: str = "./docs"
30
30
  local_prompt_templates_dir: str = "./ara/.araconfig"
31
31
  custom_prompt_templates_subdir: Optional[str] = "custom-prompt-modules"
32
+ local_scripts_dir: str = "./ara/.araconfig"
33
+ custom_scripts_subdir: Optional[str] = "custom-scripts"
32
34
  local_ara_templates_dir: str = "./ara/.araconfig/templates/"
33
35
  ara_prompt_given_list_includes: List[str] = Field(
34
36
  default_factory=lambda: [
@@ -113,6 +115,7 @@ class ARAconfig(BaseModel):
113
115
  "ext_code_dirs": [{"source_dir": "./src"}, {"source_dir": "./tests"}],
114
116
  "local_ara_templates_dir": "./ara/.araconfig/templates/",
115
117
  "local_prompt_templates_dir": "./ara/.araconfig",
118
+ "local_scripts_dir": "./ara/.araconfig",
116
119
  "glossary_dir": "./glossary",
117
120
  }
118
121
 
@@ -0,0 +1,8 @@
1
+ import typer
2
+ from ara_cli.commands.fetch_scripts_command import FetchScriptsCommand
3
+
4
+ def register(app: typer.Typer):
5
+ @app.command(name="fetch-scripts", help="Fetch global scripts into your config directory.")
6
+ def fetch_scripts():
7
+ command = FetchScriptsCommand()
8
+ command.execute()
@@ -1,6 +1,8 @@
1
1
  import os
2
2
  import argparse
3
3
  import cmd2
4
+ import tempfile
5
+ import time
4
6
 
5
7
  from ara_cli.prompt_handler import send_prompt
6
8
 
@@ -11,6 +13,9 @@ from ara_cli.file_loaders.document_file_loader import DocumentFileLoader
11
13
  from ara_cli.file_loaders.binary_file_loader import BinaryFileLoader
12
14
  from ara_cli.file_loaders.text_file_loader import TextFileLoader
13
15
  from ara_cli.chat_agent.agent_process_manager import AgentProcessManager
16
+ from ara_cli.chat_script_runner.script_runner import ScriptRunner
17
+ from ara_cli.chat_script_runner.script_completer import ScriptCompleter
18
+ from ara_cli.chat_script_runner.script_lister import ScriptLister
14
19
 
15
20
 
16
21
  extract_parser = argparse.ArgumentParser()
@@ -37,6 +42,7 @@ load_parser.add_argument(
37
42
  class Chat(cmd2.Cmd):
38
43
  CATEGORY_CHAT_CONTROL = "Chat control commands"
39
44
  CATEGORY_LLM_CONTROL = "Language model controls"
45
+ CATEGORY_SCRIPT_CONTROL = "Script control commands"
40
46
  CATEGORY_AGENT_CONTROL = "Agent control commands"
41
47
 
42
48
  INTRO = """/***************************************/
@@ -117,6 +123,9 @@ Start chatting (type 'HELP'/'h' for available commands, 'QUIT'/'q' to exit chat
117
123
  self.message_buffer = []
118
124
  self.config = self._retrieve_ara_config()
119
125
  self.template_loader = TemplateLoader(chat_instance=self)
126
+ self.script_runner = ScriptRunner(chat_instance=self)
127
+ self.script_lister = ScriptLister()
128
+ self.script_completer = ScriptCompleter()
120
129
 
121
130
  # Initialize agent process manager
122
131
  self.agent_manager = AgentProcessManager(self)
@@ -148,6 +157,7 @@ Start chatting (type 'HELP'/'h' for available commands, 'QUIT'/'q' to exit chat
148
157
  self.aliases["lg"] = "LOAD_GIVENS"
149
158
  self.aliases["lb"] = "LOAD_BLUEPRINT"
150
159
  self.aliases["lt"] = "LOAD_TEMPLATE"
160
+ self.aliases["rpy"] = "run_pyscript"
151
161
  # Agent control aliases
152
162
  self.aliases["a"] = "AGENT_RUN"
153
163
  self.aliases["as"] = "AGENT_STOP"
@@ -1117,6 +1127,84 @@ Start chatting (type 'HELP'/'h' for available commands, 'QUIT'/'q' to exit chat
1117
1127
  """Completer for the LOAD_BLUEPRINT command."""
1118
1128
  return self._template_completer(text, "blueprint")
1119
1129
 
1130
+ def _select_script_from_list(self, scripts: list[str], not_found_message: str, prompt: str) -> str | None:
1131
+ """Displays a list of scripts and prompts the user to select one."""
1132
+ if not scripts:
1133
+ self.poutput(not_found_message)
1134
+ return None
1135
+
1136
+ # Sort the scripts alphabetically by their basename for consistent display
1137
+ # Create a list of (basename, full_script_name) tuples for sorting and later retrieval
1138
+ scripts_with_basenames = [(os.path.basename(s), s) for s in scripts]
1139
+ scripts_with_basenames.sort(key=lambda x: x[0].lower()) # Sort by lowercase basename
1140
+
1141
+ for i, (basename, full_script_name) in enumerate(scripts_with_basenames):
1142
+ self.poutput(f"{i + 1}: {basename}")
1143
+
1144
+ try:
1145
+ choice = input(prompt)
1146
+ choice_index = int(choice) - 1
1147
+ if 0 <= choice_index < len(scripts_with_basenames):
1148
+ # Return the full script name from the sorted list
1149
+ return scripts_with_basenames[choice_index][1]
1150
+ else:
1151
+ self.poutput("Invalid choice. Aborting.")
1152
+ return None
1153
+ except (ValueError, EOFError):
1154
+ self.poutput("Invalid input. Aborting.")
1155
+ return None
1156
+
1157
+ @cmd2.with_category(CATEGORY_SCRIPT_CONTROL)
1158
+ def do_run_pyscript(self, arg_list: list):
1159
+ """Run a python script from the chat."""
1160
+
1161
+ if not arg_list:
1162
+ script_name = ""
1163
+ else:
1164
+ script_name = "".join(arg_list)
1165
+
1166
+ script_map = {
1167
+ "global/*": (self.script_lister.get_global_scripts, "No global scripts found. Have you run 'ara fetch-scripts'?", "global/"),
1168
+ "*": (self.script_lister.get_custom_scripts, "No custom scripts found.", ""),
1169
+ "": (self.script_lister.get_all_scripts, "No scripts found.", "")
1170
+ }
1171
+
1172
+ script_to_run = script_name
1173
+ if script_name in script_map:
1174
+ get_scripts, msg, prefix = script_map[script_name]
1175
+ scripts = get_scripts()
1176
+
1177
+ prompt = "Please choose a script to run (enter number): "
1178
+
1179
+ chosen_script = self._select_script_from_list(scripts, msg, prompt)
1180
+ if not chosen_script:
1181
+ return
1182
+
1183
+ if prefix:
1184
+ script_to_run = f"{prefix}{chosen_script}"
1185
+ else:
1186
+ script_to_run = chosen_script
1187
+
1188
+ if not script_to_run:
1189
+ return
1190
+
1191
+ output = self.script_runner.run_script(script_to_run)
1192
+ if output:
1193
+ self.poutput(output.strip())
1194
+
1195
+ def complete_run_pyscript(self, text, line, begidx, endidx):
1196
+ """Completer for the run_pyscript command."""
1197
+ # Get all scripts: ['custom.py', 'global/global.py']
1198
+ available_scripts = self.script_lister.get_all_scripts()
1199
+
1200
+ # Add special commands
1201
+ special_commands = ['*', 'global/*', 'global/']
1202
+
1203
+ possible_completions = sorted(list(set(available_scripts + special_commands)))
1204
+
1205
+ # Filter based on what the user has typed
1206
+ return [s for s in possible_completions if s.startswith(text)]
1207
+
1120
1208
  # ===== AGENT CONTROL COMMANDS =====
1121
1209
 
1122
1210
  @cmd2.with_category(CATEGORY_AGENT_CONTROL)
@@ -0,0 +1,23 @@
1
+ from ara_cli.chat_script_runner.script_lister import ScriptLister
2
+
3
+ class ScriptCompleter:
4
+ def __init__(self):
5
+ self.script_lister = ScriptLister()
6
+
7
+ def __call__(self, text, line, begidx, endidx):
8
+ if line.startswith("rpy global/"):
9
+ return self._complete_global_scripts(text)
10
+
11
+ return self._complete_all_scripts(text)
12
+
13
+ def _complete_all_scripts(self, text):
14
+ all_scripts = self.script_lister.get_all_scripts()
15
+ if not text:
16
+ return all_scripts
17
+ return [s for s in all_scripts if s.startswith(text)]
18
+
19
+ def _complete_global_scripts(self, text):
20
+ global_scripts = self.script_lister.get_global_scripts()
21
+ if not text:
22
+ return global_scripts
23
+ return [s for s in global_scripts if s.startswith(text)]
@@ -0,0 +1,36 @@
1
+ import os
2
+ from ara_cli.ara_config import ConfigManager
3
+
4
+
5
+ class ScriptFinder:
6
+ def __init__(self):
7
+ self.config = ConfigManager.get_config()
8
+
9
+ def get_custom_scripts_dir(self):
10
+ return os.path.join(self.config.local_prompt_templates_dir, "custom-scripts")
11
+
12
+ def get_global_scripts_dir(self):
13
+ return os.path.join(self.config.local_prompt_templates_dir, "global-scripts")
14
+
15
+ def find_script(self, script_name: str) -> str | None:
16
+ # Handle explicit global path for backward compatibility or specific cases
17
+ if script_name.startswith("global/"):
18
+ script_path = os.path.join(
19
+ self.get_global_scripts_dir(), script_name.replace("global/", ""))
20
+ if os.path.exists(script_path):
21
+ return script_path
22
+ return None
23
+
24
+ # 1. Search in custom-scripts first (allows overriding global scripts)
25
+ custom_script_path = os.path.join(
26
+ self.get_custom_scripts_dir(), script_name)
27
+ if os.path.exists(custom_script_path):
28
+ return custom_script_path
29
+
30
+ # 2. If not found in custom, fall back to global-scripts
31
+ global_script_path = os.path.join(
32
+ self.get_global_scripts_dir(), script_name)
33
+ if os.path.exists(global_script_path):
34
+ return global_script_path
35
+
36
+ return None
@@ -0,0 +1,33 @@
1
+ import os
2
+ import glob
3
+ from ara_cli.chat_script_runner.script_finder import ScriptFinder
4
+
5
+
6
+ class ScriptLister:
7
+ def __init__(self):
8
+ self.script_finder = ScriptFinder()
9
+
10
+ def get_all_scripts(self):
11
+ custom_scripts = self.get_custom_scripts()
12
+ global_scripts = self.get_global_scripts()
13
+
14
+ # Combine custom and global scripts for direct, unprefixed access
15
+ direct_access_scripts = set(custom_scripts + global_scripts)
16
+
17
+ # Add global scripts with the 'global/' prefix for explicit access / backward compatibility
18
+ prefixed_global_scripts = {f"global/{s}" for s in global_scripts}
19
+
20
+ # Return a single, sorted, and unique list for autocompletion
21
+ return sorted(list(direct_access_scripts.union(prefixed_global_scripts)))
22
+
23
+ def get_custom_scripts(self):
24
+ custom_scripts_dir = self.script_finder.get_custom_scripts_dir()
25
+ if not custom_scripts_dir or not os.path.isdir(custom_scripts_dir):
26
+ return []
27
+ return [os.path.basename(f) for f in glob.glob(os.path.join(custom_scripts_dir, "*.py"))]
28
+
29
+ def get_global_scripts(self):
30
+ global_scripts_dir = self.script_finder.get_global_scripts_dir()
31
+ if not global_scripts_dir or not os.path.isdir(global_scripts_dir):
32
+ return []
33
+ return [os.path.basename(f) for f in glob.glob(os.path.join(global_scripts_dir, "*.py"))]
@@ -0,0 +1,32 @@
1
+ import os
2
+ import subprocess
3
+ from ara_cli.chat_script_runner.script_finder import ScriptFinder
4
+ from ara_cli.chat_script_runner.script_lister import ScriptLister
5
+
6
+ class ScriptRunner:
7
+ def __init__(self, chat_instance):
8
+ self.chat_instance = chat_instance
9
+ self.script_finder = ScriptFinder()
10
+ self.script_lister = ScriptLister()
11
+
12
+ def run_script(self, script_name: str):
13
+ script_path = self.script_finder.find_script(script_name)
14
+ if not script_path:
15
+ return f"Script '{script_name}' not found."
16
+
17
+ try:
18
+ result = subprocess.run(
19
+ ["python", script_path],
20
+ capture_output=True,
21
+ text=True,
22
+ check=True,
23
+ )
24
+ return result.stdout
25
+ except subprocess.CalledProcessError as e:
26
+ return f"Error running script: {e}\n{e.stderr}"
27
+
28
+ def get_available_scripts(self):
29
+ return self.script_lister.get_all_scripts()
30
+
31
+ def get_global_scripts(self):
32
+ return self.script_lister.get_global_scripts()
@@ -0,0 +1,43 @@
1
+ import os
2
+ import shutil
3
+ from ara_cli.commands.command import Command
4
+ from ara_cli.ara_config import ConfigManager
5
+ from ara_cli.directory_navigator import DirectoryNavigator
6
+
7
+ class FetchScriptsCommand(Command):
8
+ def __init__(self, output=None):
9
+ self.output = output or print
10
+ self.config = ConfigManager.get_config()
11
+
12
+ def execute(self):
13
+ navigator = DirectoryNavigator()
14
+ original_directory = os.getcwd()
15
+ navigator.navigate_to_target()
16
+ os.chdir('..')
17
+
18
+ global_scripts_dir = self._get_global_scripts_dir()
19
+ global_scripts_config_dir = self._get_global_scripts_config_dir()
20
+
21
+ if not os.path.exists(global_scripts_dir):
22
+ self.output("Global scripts directory not found.")
23
+ os.chdir(original_directory)
24
+ return
25
+
26
+ if not os.path.exists(global_scripts_config_dir):
27
+ os.makedirs(global_scripts_config_dir)
28
+
29
+ for item in os.listdir(global_scripts_dir):
30
+ source = os.path.join(global_scripts_dir, item)
31
+ destination = os.path.join(global_scripts_config_dir, item)
32
+ if os.path.isfile(source):
33
+ shutil.copy2(source, destination)
34
+ self.output(f"Copied {item} to global scripts directory.")
35
+
36
+ os.chdir(original_directory)
37
+
38
+ def _get_global_scripts_dir(self):
39
+ base_path = os.path.dirname(os.path.dirname(__file__))
40
+ return os.path.join(base_path, "templates", "global-scripts")
41
+
42
+ def _get_global_scripts_config_dir(self):
43
+ return os.path.join(self.config.local_prompt_templates_dir, "global-scripts")
@@ -0,0 +1 @@
1
+ print('Hello Global')
@@ -0,0 +1 @@
1
+ Given the existing feature file {feature_file_path} and the implementation change described in {implementation_change_reference} (for example, a specific source file or change request), create new scenarios and update the feature file directly so that the new behaviour is fully covered.
@@ -0,0 +1 @@
1
+ I have changed the implementation file {updated_implementation_file_path} by adding new functionality after the existing comment markers. Update the related feature file {feature_file_path} so that the Then-steps match the new behaviour and, if needed, create additional scenarios to cover the new logic.
@@ -0,0 +1 @@
1
+ Analyse the codebase and all related feature files using the semantic search tool {codebase_collector_tool_name} (either codebase_collector_features or codebase_collector_frontend, depending on the project). Use a detailed semantic query {codebase_query_description} derived from the user story in {user_story_task_file_path}. Based on the retrieved context, list which new tasks are needed for code changes, tests, and documentation. Then, use the appropriate agents (autocoder_behavetests_agent, autocoder_agent, documentation_agent, feature_creation_agent, test_generation_agent, web_autocoder_agent) so that the necessary feature files and tests are created or updated according to your findings.
@@ -0,0 +1 @@
1
+ Using the find_the_best_suited_parent_artefact tool for the given artifact, determine which artefact is best suited to capture the value. Explain your reasoning and, if needed, propose concrete artefact names or formats.
@@ -0,0 +1 @@
1
+ From the artefact content at {example_artefact_file_path}, create a set of implementation tasks with the exact specified names and content and assign them logically to the responsible user {assignee_identifier}. Do not modify the provided task texts; just materialise them as individual task entries in the appropriate location.
@@ -0,0 +1 @@
1
+ Create pytest tests for all modules that currently have 0% coverage according to the coverage report at {coverage_report_path}. Generate test files for each uncovered module in {tests_output_directory}, ensuring that basic behaviour and key error cases are tested.
@@ -0,0 +1 @@
1
+ Based on the information provided in the video described in {video_description_source} (or the attached video), derive the matching feature files and their content under {features_directory_path}. Use the parent user story in {user_story_file_path} and the existing matching rules in {matching_rules_file_path}, then update existing feature files or create new ones so that all described behaviours are covered.
@@ -0,0 +1 @@
1
+ Describe in detail what this agent can do for the user. Focus on supported capabilities, limitations, and typical workflows, and output the description as user-facing documentation. Do not use any tools.
@@ -0,0 +1,4 @@
1
+ ### COMMANDS FOR ...
2
+ Your job is now:
3
+ * <main list for mandotory commands>
4
+ * ...
@@ -0,0 +1 @@
1
+ In the task file at {task_file_path}, there are multiple TODOs. Perform only the TODOs that relate to {todo_scope_description} (for example, Docker image builds, logging clean-up, or UI copy changes), implement the required changes, and then mark only those relevant TODOs as completed inside the task file.
@@ -0,0 +1 @@
1
+ What is this file about: {input_file_path}? Read the file using the appropriate tools and return a concise explanation of its purpose, structure, and key domain concepts.
@@ -0,0 +1 @@
1
+ Read the file at {input_file_path} and extract all key information into bullet points. Group the bullets by topic (for example: decisions, open questions, action items) and avoid repeating minor details.
@@ -0,0 +1,12 @@
1
+ # general file generation and file extract instructions
2
+ * return only full copy pastable file content using this markdown codeblock format with 5 backticks:
3
+ `````
4
+ # [ ] extract
5
+ # filename: <absolute filepath>/<filename>.<file_extension>
6
+ {valid file content depending on the given file_extension}
7
+ `````
8
+
9
+ * The extract and filename statements are only allowed once per markdown code block
10
+ * The first character of the first line inside your code block must be '#' and the first character of the second line inside your code block must be '#'
11
+ * replace the '# [ ] extract' statement of the template with '# [x] extract' in your response
12
+ * in case of files get deprecated give me a list of files that can be safely deleted
@@ -0,0 +1,11 @@
1
+ # general markdown file generation and file extract instructions
2
+ * return full copy pastable file content using a markdown code block with 5-backticks:
3
+ `````
4
+ # [ ] extract
5
+ # filename: <filepath>/<filename>.md
6
+ {markdown formatted text}
7
+ `````
8
+ * The extract and filename statements are only allowed once per markdown code block
9
+ * The first character of the first line inside your code block must be '#' and the first character of the second line inside your code block must be '#'
10
+ * replace the '# [ ] extract' statement of the template with '# [x] extract' in your response
11
+ * in case of files get deprecated give me a list of files that can be safely deleted
@@ -0,0 +1,13 @@
1
+ # general python code file generation and file extract instructions
2
+ * return only full copy pastable file content using this markdown codeblock format:
3
+
4
+ ```python
5
+ # [ ] extract
6
+ # filename: src/{filename}.py
7
+ {python code}
8
+
9
+ ```
10
+ * The extract and filename statements are only allowed once per markdown code block
11
+ * The first character of the first line inside your code block must be '#' and the first character of the second line inside your code block must be '#'
12
+ * replace the '# [ ] extract' statement of the template with '# [x] extract' in your response
13
+ * in case of files get deprecated give me a list of files that can be safely deleted
@@ -0,0 +1,36 @@
1
+ # COMMANDS FOR ADDING OR MODIFYING EXISTING SPECIFIED BEHAVIOR
2
+
3
+ **At first**:
4
+
5
+ Check if a set of feature files is given
6
+
7
+ * In case no feature files are given:
8
+ * Stop immediately and respond with: "Error in prompt context: no feature files are given as already specified application behavior"
9
+
10
+ * Else:
11
+ * Continue following the given instructions
12
+
13
+ # Instructions
14
+ Your job is now:
15
+ * Silently analyze the given feature files and the specified behavior.
16
+ * Silently analyze the additionally given information about new wanted behavior or changes of existing behavior
17
+ * Develop adaptation strategies that minimize feature file changes with respect to any given already existing feature files, prefer reusing and adapting existing formulations/scenarios and steps over completely new formulations
18
+ * Now formulate to fully cover the new or changed behavior (one, two or many changed or new feature files)
19
+
20
+ Follow these feature file quality rules:
21
+ * Each feature file should not consist of more than max 3 scenarios, each feature file should follow the single responsibility principle as well as the feature file formulations should follow the separation of concerns of feature files that fully cover the human user observable behavior described in the specification notes. Consider in your formulation of the Gherkin feature files that, when implementing the graphical user interfaces, the full functionality of the Python package Streamlit can be utilized.
22
+ * Follow strictly the given feature file format in order to structure your feature files.
23
+ * You are allowed to use scenario outlines where useful. But in case they are not helpful in order to increase the readability you can just use standard scenario formulations.
24
+
25
+ * Wrap and return the formulated feature files as full copy pastable file content in the following format as markdown code block:
26
+
27
+ ```artefact
28
+ # [ ] extract
29
+ # filename: ara/features/{filename}.feature
30
+ {formulation, with the valid feature file structure following the given feature files as reference}
31
+ ```
32
+
33
+ * The extract and filename statements are only allowed once per markdown code block
34
+ * The first character of the first line inside your code block must be '#' and the first character of the second line inside your code block must be '#'
35
+ * replace the '# [ ] extract' statement of the template with '# [x] extract' in your response
36
+ * in case of files get deprecated give me a list of files that can be safely deleted
@@ -0,0 +1,53 @@
1
+ # COMMANDS FOR INITIALLY SPECIFYING APPLICATION BEHAVIOR USING FEATURE FILES
2
+
3
+ * Given a description of the wanted application behavior as bullet point list, specification document, ...
4
+
5
+ * And given this feature template with placeholders in <...>
6
+
7
+ ```
8
+ @creator_Egermeier
9
+ Feature: <descriptive title>
10
+
11
+ As a <user>
12
+ I want to <do something | need something>
13
+ So that <I can achieve something>
14
+
15
+ Contributes to <here comes your parent artefact> <here comes your classifier of the parent artefact>
16
+
17
+ Description: <further optional description to understand
18
+ the rule, no format defined, the example artefact is only a placeholder>
19
+
20
+ Scenario: <descriptive scenario title>
21
+ Given <precondition>
22
+ When <action>
23
+ Then <expected result>
24
+
25
+ Scenario Outline: <descriptive scenario title>
26
+ Given <precondition>
27
+ When <action>
28
+ Then <expected result>
29
+
30
+ Examples:
31
+ | descriptive scenario title | precondition | action | expected result |
32
+ | <example title 1> | <example precond. 1> | <example action 1> | <example result 1> |
33
+ | <example title 2> | <example precond. 2> | <example action 2> | <example result 2> |
34
+ ```
35
+
36
+ # Instructions
37
+ * Now formulate a set (one, two or many, each feature file should not consist of more than max 3 scenarios
38
+ * Each feature file should follow the single responsibility principle as well as the feature file formulations should follow the separation of concerns) of feature files that fully cover the human user observable behavior described in the specification notes.
39
+ * Consider in your formulation of the Gherkin feature files when specifying the behavior of graphical user interfaces: Describe the behavior of the graphical user interfaces so that I can clearly imagine both how they work and their visual look and feel.
40
+ * Follow strictly the given template format in order to structure your feature files. You are allowed to use scenario outlines where useful. But in case they are not helpful in order to increase the readability you can just use standard scenario formulations.
41
+
42
+ * Wrap and return the formulated feature files as full copy pastable file content in the following format as markdown code block:
43
+
44
+ ```artefact
45
+ # [ ] extract
46
+ # filename: ara/features/{filename}.feature
47
+ {formulation, with the valid feature file structure as given by the feature gherkin template}
48
+ ```
49
+
50
+ * The extract and filename statements are only allowed once per markdown code block
51
+ * The first character of the first line inside your code block must be '#' and the first character of the second line inside your code block must be '#'
52
+ * replace the '# [ ] extract' statement of the template with '# [x] extract' in your response
53
+ * in case of files get deprecated give me a list of files that can be safely deleted
@@ -0,0 +1 @@
1
+ After the feature file {feature_file_path} was updated to reflect the changed functionality in {implementation_file_path}, the step definitions in {step_definitions_file_path} started failing. Run behave for this feature file, observe the failures, fix the step definitions, write the changes to disk, and repeat the cycle until all scenarios pass.
@@ -0,0 +1 @@
1
+ After the implementation file {implementation_file_path} was updated, the tests in {pytest_file_path} are failing. Run pytest for this test file, observe the results, fix the tests, write the changes to disk, and run pytest again. Continue the cycle until all tests pass.
@@ -0,0 +1,47 @@
1
+ You are to generate a response that may include Markdown, code blocks, or content that itself contains backticks.
2
+
3
+ To ensure correct rendering follow this fencing policy:
4
+
5
+ - Code files: wrap each file’s output in a triple-backtick fence labeled with the file extension (e.g., ```py, ```js, ```json).
6
+ - Markdown or plain-text files: wrap each file’s output in a five-backtick fence labeled with md or txt (e.g., `````md or `````txt).
7
+ - Do not use dynamic or variable-length fences. Only use:
8
+ - 3 backticks for code file types.
9
+ - 5 backticks for .md and .txt files.
10
+
11
+ File block structure (mandatory, exact)
12
+ - Each file must be returned in its own fenced block with this exact header format as the first two lines:
13
+ 1) "# [x] extract"
14
+ 2) "# filename: <absolute filepath>/<filename>.<extension>"
15
+ - After these two lines, include the exact file content.
16
+ - The first character of line 1 and line 2 inside the fence must be '#'.
17
+ - The "# [x] extract" and "# filename:" headers must appear exactly once per fenced block.
18
+
19
+ In case of nested code inside file contents
20
+ - If the file content itself needs code blocks:
21
+ - Use standard triple backticks (```) inside the file content and for the outer fence five backticks (`````).
22
+ - For Markdown/Text files, this is safe because the outer fence is five backticks.
23
+ - For Code files, avoid embedding literal triple-backtick sequences inside the file content to prevent fence collisions. If unavoidable, ask the user to approve an .md/.txt wrapper instead.
24
+
25
+ Template examples
26
+
27
+ Code file (e.g., Python):
28
+ ```py
29
+ # [x] extract
30
+ # filename: /abs/path/app.py
31
+ print("Hello")
32
+ ```
33
+
34
+ Markdown file:
35
+ `````md
36
+ # [x] extract
37
+ # filename: /abs/path/README.md
38
+ # Project Title
39
+ Some docs with a code block:
40
+
41
+ ```js
42
+ console.log("hi");
43
+ ```
44
+ `````
45
+
46
+
47
+
@@ -0,0 +1 @@
1
+ Generate pytest tests for the modules listed in {target_module_paths}, starting with {primary_module_name}. Aim for high coverage.