ara-cli 0.1.9.96__tar.gz → 0.1.10.7__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 (211) hide show
  1. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/PKG-INFO +33 -1
  2. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/README.md +29 -0
  3. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/__init__.py +1 -2
  4. ara_cli-0.1.10.7/ara_cli/__main__.py +258 -0
  5. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/ara_command_action.py +65 -7
  6. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/ara_config.py +118 -94
  7. ara_cli-0.1.10.7/ara_cli/ara_subcommands/autofix.py +26 -0
  8. ara_cli-0.1.10.7/ara_cli/ara_subcommands/chat.py +27 -0
  9. ara_cli-0.1.10.7/ara_cli/ara_subcommands/classifier_directory.py +16 -0
  10. ara_cli-0.1.10.7/ara_cli/ara_subcommands/common.py +100 -0
  11. ara_cli-0.1.10.7/ara_cli/ara_subcommands/create.py +75 -0
  12. ara_cli-0.1.10.7/ara_cli/ara_subcommands/delete.py +22 -0
  13. ara_cli-0.1.10.7/ara_cli/ara_subcommands/extract.py +22 -0
  14. ara_cli-0.1.10.7/ara_cli/ara_subcommands/fetch_templates.py +14 -0
  15. ara_cli-0.1.10.7/ara_cli/ara_subcommands/list.py +65 -0
  16. ara_cli-0.1.10.7/ara_cli/ara_subcommands/list_tags.py +25 -0
  17. ara_cli-0.1.10.7/ara_cli/ara_subcommands/load.py +48 -0
  18. ara_cli-0.1.10.7/ara_cli/ara_subcommands/prompt.py +136 -0
  19. ara_cli-0.1.10.7/ara_cli/ara_subcommands/read.py +47 -0
  20. ara_cli-0.1.10.7/ara_cli/ara_subcommands/read_status.py +20 -0
  21. ara_cli-0.1.10.7/ara_cli/ara_subcommands/read_user.py +20 -0
  22. ara_cli-0.1.10.7/ara_cli/ara_subcommands/reconnect.py +27 -0
  23. ara_cli-0.1.10.7/ara_cli/ara_subcommands/rename.py +22 -0
  24. ara_cli-0.1.10.7/ara_cli/ara_subcommands/scan.py +14 -0
  25. ara_cli-0.1.10.7/ara_cli/ara_subcommands/set_status.py +22 -0
  26. ara_cli-0.1.10.7/ara_cli/ara_subcommands/set_user.py +22 -0
  27. ara_cli-0.1.10.7/ara_cli/ara_subcommands/template.py +16 -0
  28. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/artefact_autofix.py +44 -6
  29. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/artefact_models/artefact_model.py +106 -25
  30. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/artefact_models/artefact_templates.py +20 -10
  31. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/artefact_models/epic_artefact_model.py +11 -2
  32. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/artefact_models/feature_artefact_model.py +31 -1
  33. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/artefact_models/userstory_artefact_model.py +15 -3
  34. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/artefact_scan.py +2 -2
  35. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/chat.py +320 -153
  36. ara_cli-0.1.10.7/ara_cli/chat_agent/agent_communicator.py +62 -0
  37. ara_cli-0.1.10.7/ara_cli/chat_agent/agent_process_manager.py +211 -0
  38. ara_cli-0.1.10.7/ara_cli/chat_agent/agent_status_manager.py +73 -0
  39. ara_cli-0.1.10.7/ara_cli/chat_agent/agent_workspace_manager.py +76 -0
  40. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/commands/read_command.py +17 -4
  41. ara_cli-0.1.10.7/ara_cli/completers.py +144 -0
  42. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/directory_navigator.py +37 -4
  43. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/file_loaders/text_file_loader.py +2 -2
  44. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/global_file_lister.py +5 -15
  45. ara_cli-0.1.10.7/ara_cli/prompt_extractor.py +338 -0
  46. ara_cli-0.1.10.7/ara_cli/prompt_handler.py +826 -0
  47. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/tag_extractor.py +38 -18
  48. ara_cli-0.1.10.7/ara_cli/template_loader.py +245 -0
  49. ara_cli-0.1.10.7/ara_cli/templates/prompt-modules/blueprints/pytest_unittest_prompt.blueprint.md +32 -0
  50. ara_cli-0.1.10.7/ara_cli/templates/specification_breakdown_files/template.step.exploration.md +0 -0
  51. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/version.py +1 -1
  52. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli.egg-info/PKG-INFO +33 -1
  53. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli.egg-info/SOURCES.txt +31 -1
  54. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli.egg-info/requires.txt +3 -0
  55. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/docker/base/requirements.txt +5 -1
  56. ara_cli-0.1.10.7/tests/__init__.py +0 -0
  57. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/tests/test_artefact_scan.py +1 -1
  58. ara_cli-0.1.10.7/tests/test_chat.py +2635 -0
  59. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/tests/test_global_file_lister.py +1 -1
  60. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/tests/test_prompt_handler.py +52 -8
  61. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/tests/test_tag_extractor.py +19 -13
  62. ara_cli-0.1.10.7/tests/test_template_loader.py +192 -0
  63. ara_cli-0.1.9.96/ara_cli/__main__.py +0 -127
  64. ara_cli-0.1.9.96/ara_cli/ara_command_parser.py +0 -565
  65. ara_cli-0.1.9.96/ara_cli/prompt_extractor.py +0 -230
  66. ara_cli-0.1.9.96/ara_cli/prompt_handler.py +0 -584
  67. ara_cli-0.1.9.96/tests/test_chat.py +0 -1369
  68. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/MANIFEST.in +0 -0
  69. {ara_cli-0.1.9.96/ara_cli/artefact_models → ara_cli-0.1.10.7/ara_cli/ara_subcommands}/__init__.py +0 -0
  70. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/artefact_creator.py +0 -0
  71. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/artefact_deleter.py +0 -0
  72. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/artefact_fuzzy_search.py +0 -0
  73. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/artefact_link_updater.py +0 -0
  74. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/artefact_lister.py +0 -0
  75. {ara_cli-0.1.9.96/ara_cli/commands → ara_cli-0.1.10.7/ara_cli/artefact_models}/__init__.py +0 -0
  76. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/artefact_models/artefact_data_retrieval.py +0 -0
  77. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/artefact_models/artefact_load.py +0 -0
  78. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/artefact_models/artefact_mapping.py +0 -0
  79. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/artefact_models/businessgoal_artefact_model.py +0 -0
  80. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/artefact_models/capability_artefact_model.py +0 -0
  81. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/artefact_models/example_artefact_model.py +0 -0
  82. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/artefact_models/issue_artefact_model.py +0 -0
  83. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/artefact_models/keyfeature_artefact_model.py +0 -0
  84. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/artefact_models/serialize_helper.py +0 -0
  85. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/artefact_models/task_artefact_model.py +0 -0
  86. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/artefact_models/vision_artefact_model.py +0 -0
  87. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/artefact_reader.py +0 -0
  88. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/artefact_renamer.py +0 -0
  89. {ara_cli-0.1.9.96/ara_cli/file_loaders → ara_cli-0.1.10.7/ara_cli/chat_agent}/__init__.py +0 -0
  90. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/classifier.py +0 -0
  91. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/codefusionretriever.py +0 -0
  92. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/codehierachieretriever.py +0 -0
  93. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/commandline_completer.py +0 -0
  94. {ara_cli-0.1.9.96/tests → ara_cli-0.1.10.7/ara_cli/commands}/__init__.py +0 -0
  95. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/commands/command.py +0 -0
  96. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/commands/extract_command.py +0 -0
  97. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/commands/load_command.py +0 -0
  98. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/commands/load_image_command.py +0 -0
  99. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/error_handler.py +0 -0
  100. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/file_classifier.py +0 -0
  101. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/file_lister.py +0 -0
  102. /ara_cli-0.1.9.96/ara_cli/templates/prompt-modules/blueprints/empty.blueprint.md → /ara_cli-0.1.10.7/ara_cli/file_loaders/__init__.py +0 -0
  103. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/file_loaders/binary_file_loader.py +0 -0
  104. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/file_loaders/document_file_loader.py +0 -0
  105. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/file_loaders/document_reader.py +0 -0
  106. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/file_loaders/document_readers.py +0 -0
  107. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/file_loaders/file_loader.py +0 -0
  108. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/file_loaders/file_loaders.py +0 -0
  109. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/file_loaders/image_processor.py +0 -0
  110. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/file_loaders/markdown_reader.py +0 -0
  111. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/filename_validator.py +0 -0
  112. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/list_filter.py +0 -0
  113. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/output_suppressor.py +0 -0
  114. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/prompt_chat.py +0 -0
  115. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/prompt_rag.py +0 -0
  116. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/run_file_lister.py +0 -0
  117. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/template_manager.py +0 -0
  118. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/agile.artefacts +0 -0
  119. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/prompt-modules/blueprints/complete_pytest_unittest.blueprint.md +0 -0
  120. /ara_cli-0.1.9.96/ara_cli/templates/specification_breakdown_files/template.step.exploration.md → /ara_cli-0.1.10.7/ara_cli/templates/prompt-modules/blueprints/empty.blueprint.md +0 -0
  121. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/prompt-modules/blueprints/task_todo_list_C4_architecture_analysis.blueprint.md +0 -0
  122. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/prompt-modules/blueprints/task_todo_list_implement_feature_BDD_way.blueprint.md +0 -0
  123. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/prompt-modules/commands/architecture_C4_analysis.commands.md +0 -0
  124. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/prompt-modules/commands/architecture_radon_cc_score.commands.md +0 -0
  125. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/prompt-modules/commands/architecture_radon_halstead_v.commands.md +0 -0
  126. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/prompt-modules/commands/architecture_radon_maintainability_score.commands.md +0 -0
  127. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/prompt-modules/commands/artefact_classification.commands.md +0 -0
  128. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/prompt-modules/commands/artefact_extension.commands.md +0 -0
  129. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/prompt-modules/commands/artefact_formulation.commands.md +0 -0
  130. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/prompt-modules/commands/behave_step_generation.commands.md +0 -0
  131. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/prompt-modules/commands/code_generation_complex.commands.md +0 -0
  132. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/prompt-modules/commands/code_generation_simple.commands.md +0 -0
  133. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/prompt-modules/commands/empty.commands.md +0 -0
  134. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/prompt-modules/commands/error_fixing.commands.md +0 -0
  135. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/prompt-modules/commands/feature_file_update.commands.md +0 -0
  136. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/prompt-modules/commands/feature_formulation.commands.md +0 -0
  137. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/prompt-modules/commands/js_code_generation_simple.commands.md +0 -0
  138. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/prompt-modules/commands/refactoring.commands.md +0 -0
  139. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/prompt-modules/commands/refactoring_analysis.commands.md +0 -0
  140. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/prompt-modules/commands/reverse_engineer_feature_file.commands.md +0 -0
  141. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/prompt-modules/commands/reverse_engineer_program_flow.commands.md +0 -0
  142. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/prompt-modules/intentions/classify_task.intention.md +0 -0
  143. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/prompt-modules/intentions/empty.intention.md +0 -0
  144. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/prompt-modules/intentions/error_fixing.intention.md +0 -0
  145. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/prompt-modules/intentions/feature_fix_steps_for_scenario.intention.md +0 -0
  146. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/prompt-modules/intentions/feature_formulation.intention.md +0 -0
  147. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/prompt-modules/intentions/feature_reverse_formulation_from_code.intention.md +0 -0
  148. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/prompt-modules/intentions/feature_scenario_implementation.intention.md +0 -0
  149. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/prompt-modules/intentions/feature_scenario_implementation_update.intention.md +0 -0
  150. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/prompt-modules/intentions/feature_scenario_outline_extension.intention.md +0 -0
  151. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/prompt-modules/intentions/feature_update_formulation.intention.md +0 -0
  152. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/prompt-modules/intentions/fibonacci_example_implementation.intention.md +0 -0
  153. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/prompt-modules/intentions/js_implementation_from_task_description.intention.md +0 -0
  154. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/prompt-modules/intentions/js_steps_implementation.intention.md +0 -0
  155. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/prompt-modules/intentions/python_cli_implementation_with_test.intention.md +0 -0
  156. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/prompt-modules/intentions/python_code_understanding.intention.md +0 -0
  157. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/prompt-modules/intentions/task_implementation.intention.md +0 -0
  158. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/prompt-modules/intentions/task_prompt_control_by_status.intention.md +0 -0
  159. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/prompt-modules/intentions/task_stepwise_implementation_by_number.intention.md +0 -0
  160. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/prompt-modules/intentions/task_stepwise_implementation_by_status.intention.md +0 -0
  161. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/prompt-modules/rules/architecture_analyst.rules.md +0 -0
  162. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/prompt-modules/rules/code_analyst.rules.md +0 -0
  163. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/prompt-modules/rules/empty.rules.md +0 -0
  164. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/prompt-modules/rules/error_analyst.rules.md +0 -0
  165. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/prompt-modules/rules/gherkin_expert.rules.md +0 -0
  166. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/prompt-modules/rules/js_expert_developer.rules.md +0 -0
  167. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/prompt-modules/rules/product_owner.rules.md +0 -0
  168. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/prompt-modules/rules/python_behave.rules.md +0 -0
  169. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/prompt-modules/rules/python_developer.rules.md +0 -0
  170. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/specification_breakdown_files/template.concept.exploration.md +0 -0
  171. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/specification_breakdown_files/template.concept.md +0 -0
  172. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/specification_breakdown_files/template.customer.exploration.md +0 -0
  173. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/specification_breakdown_files/template.customer.md +0 -0
  174. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/specification_breakdown_files/template.persona.exploration.md +0 -0
  175. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/specification_breakdown_files/template.persona.md +0 -0
  176. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/specification_breakdown_files/template.step.md +0 -0
  177. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/specification_breakdown_files/template.technology.exploration.md +0 -0
  178. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/specification_breakdown_files/template.technology.md +0 -0
  179. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/template.businessgoal.prompt_log.md +0 -0
  180. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/template.capability.prompt_log.md +0 -0
  181. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/template.epic.prompt_log.md +0 -0
  182. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/template.example.prompt_log.md +0 -0
  183. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/template.feature.prompt_log.md +0 -0
  184. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/template.issue.prompt_log.md +0 -0
  185. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/template.keyfeature.prompt_log.md +0 -0
  186. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/template.steps.prompt_log.md +0 -0
  187. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/template.task.prompt_log.md +0 -0
  188. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/template.userstory.prompt_log.md +0 -0
  189. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/templates/template.vision.prompt_log.md +0 -0
  190. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli/update_config_prompt.py +0 -0
  191. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli.egg-info/dependency_links.txt +0 -0
  192. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli.egg-info/entry_points.txt +0 -0
  193. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/ara_cli.egg-info/top_level.txt +0 -0
  194. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/setup.cfg +0 -0
  195. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/setup.py +0 -0
  196. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/tests/test_ara_command_action.py +0 -0
  197. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/tests/test_ara_config.py +0 -0
  198. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/tests/test_artefact_autofix.py +0 -0
  199. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/tests/test_artefact_fuzzy_search.py +0 -0
  200. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/tests/test_artefact_link_updater.py +0 -0
  201. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/tests/test_artefact_lister.py +0 -0
  202. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/tests/test_artefact_reader.py +0 -0
  203. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/tests/test_artefact_renamer.py +0 -0
  204. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/tests/test_classifier.py +0 -0
  205. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/tests/test_directory_navigator.py +0 -0
  206. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/tests/test_file_classifier.py +0 -0
  207. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/tests/test_file_creator.py +0 -0
  208. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/tests/test_file_lister.py +0 -0
  209. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/tests/test_list_filter.py +0 -0
  210. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/tests/test_template_manager.py +0 -0
  211. {ara_cli-0.1.9.96 → ara_cli-0.1.10.7}/tests/test_update_config_prompt.py +0 -0
@@ -1,8 +1,9 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ara_cli
3
- Version: 0.1.9.96
3
+ Version: 0.1.10.7
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
+ Requires-Dist: langfuse
6
7
  Requires-Dist: litellm
7
8
  Requires-Dist: llama-index
8
9
  Requires-Dist: llama-index-llms-openai
@@ -18,6 +19,8 @@ Requires-Dist: pydantic
18
19
  Requires-Dist: pydantic_ai
19
20
  Requires-Dist: python-docx
20
21
  Requires-Dist: pymupdf4llm
22
+ Requires-Dist: typer
23
+ Requires-Dist: psutil
21
24
  Dynamic: description
22
25
  Dynamic: description-content-type
23
26
  Dynamic: requires-dist
@@ -128,6 +131,35 @@ ara autofix
128
131
 
129
132
  See `ara -h` for the complete list of commands and usage examples.
130
133
 
134
+ ---
135
+ ## Agent Commands
136
+
137
+ `ara-cli` includes powerful agent-based capabilities that can be accessed through the interactive chat. These agents can perform complex, multi-step tasks, such as conducting interviews or automating coding workflows.
138
+
139
+ To use the agent commands, first start an interactive chat session:
140
+
141
+ ```bash
142
+ ara prompt chat <artefact_classifier> <artefact_name>
143
+ ```
144
+
145
+ Once inside the chat, you can use the following commands to manage agents:
146
+
147
+ | Command | Shortcut | Description |
148
+ | ---------------- | -------- | ------------------------------------------------- |
149
+ | `AGENT_RUN` | `a` | Run an agent by name. |
150
+ | `AGENT_STOP` | `as` | Stop the currently running agent. |
151
+ | `AGENT_CONTINUE` | `ac` | Continue the agent's operation without new input. |
152
+ | `AGENT_STATUS` | `astat` | Show the status of the current agent. |
153
+ | `exit` | | Exit from agent interfacto back to chat. |
154
+
155
+ **Example:**
156
+
157
+ ```bash
158
+ ara> a interview_agent
159
+ ```
160
+
161
+ **Important:** The agent functionality requires the `ara-agents` package to be installed separately. If you do not have `ara-agents` installed, please contact the Talsen Team for assistance.
162
+
131
163
  ---
132
164
 
133
165
  ## Artefact Structure
@@ -103,6 +103,35 @@ ara autofix
103
103
 
104
104
  See `ara -h` for the complete list of commands and usage examples.
105
105
 
106
+ ---
107
+ ## Agent Commands
108
+
109
+ `ara-cli` includes powerful agent-based capabilities that can be accessed through the interactive chat. These agents can perform complex, multi-step tasks, such as conducting interviews or automating coding workflows.
110
+
111
+ To use the agent commands, first start an interactive chat session:
112
+
113
+ ```bash
114
+ ara prompt chat <artefact_classifier> <artefact_name>
115
+ ```
116
+
117
+ Once inside the chat, you can use the following commands to manage agents:
118
+
119
+ | Command | Shortcut | Description |
120
+ | ---------------- | -------- | ------------------------------------------------- |
121
+ | `AGENT_RUN` | `a` | Run an agent by name. |
122
+ | `AGENT_STOP` | `as` | Stop the currently running agent. |
123
+ | `AGENT_CONTINUE` | `ac` | Continue the agent's operation without new input. |
124
+ | `AGENT_STATUS` | `astat` | Show the status of the current agent. |
125
+ | `exit` | | Exit from agent interfacto back to chat. |
126
+
127
+ **Example:**
128
+
129
+ ```bash
130
+ ara> a interview_agent
131
+ ```
132
+
133
+ **Important:** The agent functionality requires the `ara-agents` package to be installed separately. If you do not have `ara-agents` installed, please contact the Talsen Team for assistance.
134
+
106
135
  ---
107
136
 
108
137
  ## Artefact Structure
@@ -4,7 +4,6 @@ from .error_handler import ErrorHandler
4
4
 
5
5
  whitelisted_commands = ["RERUN", "SEND", "EXTRACT", "LOAD_IMAGE", "CHOOSE_MODEL", "CHOOSE_EXTRACTION_MODEL", "CURRENT_MODEL", "CURRENT_EXTRACTION_MODEL", "LIST_MODELS"]
6
6
 
7
-
8
7
  error_handler = ErrorHandler()
9
8
 
10
9
 
@@ -14,7 +13,7 @@ RESET = '\033[0m'
14
13
 
15
14
 
16
15
  def format_warning(message, category, *args, **kwargs):
17
- return f'{YELLOW}{category.__name__}: {message}{RESET}\n'
16
+ return f'{YELLOW}[WARNING] {category.__name__}: {message}{RESET}\n'
18
17
 
19
18
 
20
19
  warnings.formatwarning = format_warning
@@ -0,0 +1,258 @@
1
+ import typer
2
+ import os
3
+ from typing import Optional
4
+ from os import getenv
5
+ from ara_cli.version import __version__
6
+ from ara_cli import error_handler
7
+ from ara_cli.ara_subcommands.create import register as register_create_cli
8
+ from ara_cli.ara_subcommands.delete import register as register_delete_cli
9
+ from ara_cli.ara_subcommands.rename import register as register_rename_cli
10
+ from ara_cli.ara_subcommands.list import register as register_list_cli
11
+ from ara_cli.ara_subcommands.list_tags import register as register_list_tags_cli
12
+ from ara_cli.ara_subcommands.prompt import register as register_prompt_cli
13
+ from ara_cli.ara_subcommands.chat import register as register_chat_cli
14
+ from ara_cli.ara_subcommands.template import register as register_template_cli
15
+ from ara_cli.ara_subcommands.fetch_templates import register as register_fetch_templates_cli
16
+ from ara_cli.ara_subcommands.read import register as register_read_cli
17
+ from ara_cli.ara_subcommands.reconnect import register as register_reconnect_cli
18
+ from ara_cli.ara_subcommands.read_status import register as register_read_status_cli
19
+ from ara_cli.ara_subcommands.read_user import register as register_read_user_cli
20
+ from ara_cli.ara_subcommands.set_status import register as register_set_status_cli
21
+ from ara_cli.ara_subcommands.set_user import register as register_set_user_cli
22
+ from ara_cli.ara_subcommands.classifier_directory import register as register_classifier_directory_cli
23
+ from ara_cli.ara_subcommands.scan import register as register_scan_cli
24
+ from ara_cli.ara_subcommands.autofix import register as register_autofix_cli
25
+ from ara_cli.ara_subcommands.extract import register as register_extract_cli
26
+ from ara_cli.ara_subcommands.load import register as register_load_cli
27
+
28
+ from ara_cli.directory_navigator import DirectoryNavigator
29
+
30
+
31
+ def version_callback(value: bool):
32
+ if value:
33
+ typer.echo(f"ara {__version__}")
34
+ raise typer.Exit()
35
+
36
+
37
+ def is_debug_mode_enabled():
38
+ """Check if debug mode is enabled via environment variable."""
39
+ return getenv('ARA_DEBUG', '').lower() in ('1', 'true', 'yes')
40
+
41
+
42
+ def configure_debug_mode(debug: bool, env_debug_mode: bool):
43
+ """Configure debug mode based on arguments and environment."""
44
+ if debug or env_debug_mode:
45
+ error_handler.debug_mode = True
46
+
47
+
48
+ def check_ara_directory_exists():
49
+ """Check if ara directory exists or if we're inside ara directory tree."""
50
+ return DirectoryNavigator.find_ara_directory_root() is not None
51
+
52
+
53
+ def prompt_create_ara_directory():
54
+ """Prompt user to create ara directory and create it if confirmed."""
55
+ # Print the prompt message
56
+ print("No 'ara' directory found. Create one in the current directory? (Y/n)",
57
+ end=" ", flush=True)
58
+
59
+ # Read user input
60
+ try:
61
+ response = input().strip()
62
+ except (EOFError, KeyboardInterrupt):
63
+ typer.echo("\nOperation cancelled.")
64
+ raise typer.Exit(1)
65
+
66
+ if response.lower() in ('y', 'yes', ''):
67
+ current_dir = os.getcwd()
68
+ ara_path = os.path.join(current_dir, 'ara')
69
+
70
+ # Create ara directory structure
71
+ subdirectories = [
72
+ 'businessgoals',
73
+ 'capabilities',
74
+ 'epics',
75
+ 'examples',
76
+ 'features',
77
+ 'keyfeatures',
78
+ 'tasks',
79
+ 'userstories',
80
+ 'vision'
81
+ ]
82
+
83
+ try:
84
+ # Create main ara directory
85
+ os.makedirs(ara_path, exist_ok=True)
86
+
87
+ # Create subdirectories for artefact types
88
+ for subdir in subdirectories:
89
+ os.makedirs(os.path.join(ara_path, subdir), exist_ok=True)
90
+
91
+ # Create .araconfig directory
92
+ araconfig_path = os.path.join(ara_path, '.araconfig')
93
+ os.makedirs(araconfig_path, exist_ok=True)
94
+
95
+ # Create default ara_config.json using ConfigManager
96
+ from ara_cli.ara_config import ConfigManager, ARAconfig
97
+ config_file_path = os.path.join(araconfig_path, 'ara_config.json')
98
+
99
+ # Reset ConfigManager to ensure clean state
100
+ ConfigManager.reset()
101
+
102
+ # Create default config and save it
103
+ default_config = ARAconfig()
104
+ from ara_cli.ara_config import save_data
105
+ save_data(config_file_path, default_config)
106
+
107
+ typer.echo(f"Created ara directory structure at {ara_path}")
108
+ typer.echo(f"Created default configuration at {config_file_path}")
109
+ return True
110
+
111
+ except OSError as e:
112
+ typer.echo(f"Error creating ara directory: {e}", err=True)
113
+ raise typer.Exit(1)
114
+ except Exception as e:
115
+ typer.echo(f"Error creating configuration file: {e}", err=True)
116
+ raise typer.Exit(1)
117
+ else:
118
+ typer.echo("Ara directory creation cancelled.")
119
+ raise typer.Exit(0)
120
+
121
+
122
+ def requires_ara_directory():
123
+ """Check if ara directory exists and prompt to create if not."""
124
+ if not check_ara_directory_exists():
125
+ return prompt_create_ara_directory()
126
+ return True
127
+
128
+
129
+ def create_app():
130
+ app = typer.Typer(
131
+ help="""The ara cli terminal tool is a management tool for classified ara artefacts.
132
+
133
+ Valid classified artefacts are: businessgoal, vision, capability, keyfeature, feature, epic, userstory, example, feature, task.
134
+
135
+ The default ara directory structure of classified artefact of the ara cli tool is:
136
+ .
137
+ └── ara
138
+ ├── businessgoals
139
+ ├── capabilities
140
+ ├── epics
141
+ ├── examples
142
+ ├── features
143
+ ├── keyfeatures
144
+ ├── tasks
145
+ ├── userstories
146
+ └── vision
147
+
148
+ ara artefact handling examples:
149
+ > create a new artefact for e.g. a feature: ara create feature {feature_name}
150
+ > create a new artefact for e.g. a feature that contributes to an userstory: ara create feature {feature_name} contributes-to userstory {story_name}
151
+ > read an artefact and return the content as terminal output, for eg. of a task: ara read task {task_name}
152
+ > read an artefact and its full chain of contributions to its parents and return
153
+ the content as terminal output, for eg. of a task: ara read task {task_name} --branch
154
+ > delete an artefact for e.g. feature: ara delete feature {feature_name}
155
+ > rename artefact and artefact data directory for e.g. a feature: ara rename feature {initial_feature_name} {new_feature_name}
156
+ > create additional templates for a specific aspect (valid aspects are: customer,
157
+ persona, concept, technology) related to an existing artefact like a feature: ara create feature {feature_name} aspect {aspect_name}
158
+ > list artefact data with .md file extension ara list --data {classifier} {artefact_name} --include-extension .md
159
+ > list artefact data with .md and .json file extensions ara list --data {classifier} {artefact_name} --include-extension .md .json
160
+ > list everything but userstories ara list --exclude-extension .userstory
161
+ > list all existing features: ara list --include-extension .feature
162
+ > list all child artefacts contributing value to a parent artefact: ara list --include-content "Contributes to {name_of_parent_artefact} {ara classifier_of_parent_artefact}"
163
+ > list tasks which contain 'example content' ara list --include-extension .task --include-content "example content"
164
+ > list children artefacts of a userstory ara list --children userstory {name_of_userstory}
165
+ > list parent artefacts of a userstory ara list --branch userstory {name_of_userstory}
166
+ > list parent businessgoal artefact of a userstory ara list --branch userstory {name_of_userstory} --include-extension .businessgoal
167
+ > print any artefact template for e.g. a feature file template in the terminal: ara template feature
168
+
169
+ ara prompt templates examples:
170
+ > get and copy all prompt templates (blueprints, rules, intentions, commands
171
+ in the ara/.araconfig/global-prompt-modules directory: ara fetch-templates
172
+
173
+ ara chat examples:
174
+ > chat with ara and save the default chat.md file in the working directory: ara chat
175
+ > chat with ara and save the default task_chat.md file in the task.data directory: ara prompt chat task {task_name}
176
+
177
+ > initialize a macro prompt for a task: ara prompt init task {task_name}
178
+ > load selected templates in config_prompt_templates.md for the task {task_name}: ara prompt load task {task_name}
179
+ > create and send configured prompt of the task {task_name} to the configured LLM: ara prompt send task {task_name}
180
+ > extract the selected LLM response in task.exploration.md and save to disk: ara prompt extract task {task_name}
181
+ """,
182
+ no_args_is_help=True,
183
+ add_completion=True,
184
+ rich_markup_mode="rich"
185
+ )
186
+
187
+ @app.callback(invoke_without_command=True)
188
+ def main(
189
+ ctx: typer.Context,
190
+ version: Optional[bool] = typer.Option(
191
+ None, "--version", "-v",
192
+ callback=version_callback,
193
+ is_eager=True,
194
+ help="Show version and exit"
195
+ ),
196
+ debug: bool = typer.Option(
197
+ False, "--debug",
198
+ help="Enable debug mode for detailed error output"
199
+ )
200
+ ):
201
+ """The ara cli terminal tool is a management tool for classified ara artefacts."""
202
+ debug_mode = is_debug_mode_enabled()
203
+ configure_debug_mode(debug, debug_mode)
204
+
205
+ # Only show help if no subcommand is invoked
206
+ if ctx.invoked_subcommand is None:
207
+ ctx.get_help()
208
+ ctx.exit()
209
+
210
+ # Check for ara directory before executing any command
211
+ # Skip check for commands that don't require ara directory
212
+ commands_requiring_ara = {
213
+ 'create', 'delete', 'rename', 'list', 'list-tags', 'prompt',
214
+ 'read', 'reconnect', 'read-status', 'read-user', 'set-status',
215
+ 'set-user', 'classifier-directory', 'scan', 'autofix'
216
+ }
217
+
218
+ if ctx.invoked_subcommand in commands_requiring_ara:
219
+ requires_ara_directory()
220
+
221
+ # Register all commands
222
+ register_create_cli(app)
223
+ register_delete_cli(app)
224
+ register_rename_cli(app)
225
+ register_list_cli(app)
226
+ register_list_tags_cli(app)
227
+ register_prompt_cli(app)
228
+ register_chat_cli(app)
229
+ register_template_cli(app)
230
+ register_fetch_templates_cli(app)
231
+ register_read_cli(app)
232
+ register_reconnect_cli(app)
233
+ register_read_status_cli(app)
234
+ register_read_user_cli(app)
235
+ register_set_status_cli(app)
236
+ register_set_user_cli(app)
237
+ register_classifier_directory_cli(app)
238
+ register_scan_cli(app)
239
+ register_autofix_cli(app)
240
+ register_extract_cli(app)
241
+ register_load_cli(app)
242
+
243
+ return app
244
+
245
+
246
+ def cli():
247
+ app = create_app()
248
+ try:
249
+ app()
250
+ except KeyboardInterrupt:
251
+ typer.echo("\n[INFO] Operation cancelled by user", err=True)
252
+ raise typer.Exit(130) # Standard exit code for Ctrl+C
253
+ except Exception as e:
254
+ error_handler.handle_error(e, context="cli")
255
+
256
+
257
+ if __name__ == "__main__":
258
+ cli()
@@ -130,9 +130,6 @@ def list_action(args):
130
130
  )
131
131
  return
132
132
 
133
- if (args.tags):
134
- artefact_lister.list_files(tags=args.tags, list_filter=list_filter)
135
- return
136
133
  artefact_lister.list_files(list_filter=list_filter)
137
134
 
138
135
 
@@ -147,17 +144,25 @@ def list_tags_action(args):
147
144
  )
148
145
 
149
146
  tag_extractor = TagExtractor()
150
- tags = tag_extractor.extract_tags(
147
+ tag_groups = tag_extractor.extract_tags(
151
148
  filtered_extra_column=getattr(args, "filtered_extra_column", False),
152
149
  list_filter=list_filter
153
150
  )
154
151
 
155
152
  if args.json:
156
- output = json.dumps({"tags": tags})
153
+ all_tags = []
154
+ for group in tag_groups.values():
155
+ all_tags.extend(group)
156
+ output = json.dumps({"tags": sorted(all_tags)})
157
157
  print(output)
158
158
  return
159
159
 
160
- output = "\n".join(f"- {tag}" for tag in tags)
160
+ output_lines = []
161
+ for key in sorted(tag_groups.keys()):
162
+ line = " ".join(sorted(list(tag_groups[key])))
163
+ output_lines.append(line)
164
+
165
+ output = "\n".join(f"- {tag}" for tag in output_lines)
161
166
  print(output)
162
167
 
163
168
 
@@ -261,6 +266,59 @@ def chat_action(args):
261
266
  chat.start()
262
267
 
263
268
 
269
+ def _find_chat_file(chat_name: str) -> str | None:
270
+ """Resolves the chat file path based on common naming conventions."""
271
+ # Logic from setup_chat for finding existing files.
272
+ if os.path.exists(chat_name) and os.path.isfile(chat_name):
273
+ return chat_name
274
+
275
+ chat_name_md = f"{chat_name}.md"
276
+ if os.path.exists(chat_name_md) and os.path.isfile(chat_name_md):
277
+ return chat_name_md
278
+
279
+ chat_name_chat_md = f"{chat_name}_chat.md"
280
+ if os.path.exists(chat_name_chat_md) and os.path.isfile(chat_name_chat_md):
281
+ return chat_name_chat_md
282
+
283
+ return None
284
+
285
+
286
+ @handle_errors(context="load action", error_handler=error_handler)
287
+ def load_action(args):
288
+ from ara_cli.template_loader import TemplateLoader
289
+
290
+ chat_name = args.chat_name
291
+ template_type = args.template_type
292
+ template_name = args.template_name
293
+
294
+ chat_file_path = _find_chat_file(chat_name)
295
+
296
+ if not chat_file_path:
297
+ raise AraError(f"Chat file for '{chat_name}' not found.")
298
+
299
+ default_patterns = {
300
+ "rules": "*.rules.md",
301
+ "intention": "*.intention.md",
302
+ "commands": "*.commands.md"
303
+ }
304
+
305
+ default_pattern = default_patterns.get(template_type)
306
+
307
+ if not template_name and not default_pattern:
308
+ raise AraError(f"A template name is required for template type '{template_type}'.")
309
+
310
+ loader = TemplateLoader() # No chat instance for CLI context
311
+ success = loader.load_template(
312
+ template_name=template_name,
313
+ template_type=template_type,
314
+ chat_file_path=chat_file_path,
315
+ default_pattern=default_pattern
316
+ )
317
+
318
+ if not success:
319
+ sys.exit(1)
320
+
321
+
264
322
  @handle_errors(context="template action", error_handler=error_handler)
265
323
  def template_action(args):
266
324
  from ara_cli.classifier import Classifier
@@ -615,4 +673,4 @@ def extract_action(args):
615
673
  write=write,
616
674
  output=lambda msg: print(msg, file=sys.stdout)
617
675
  )
618
- command.execute()
676
+ command.execute()