ara-cli 0.1.9.86__tar.gz → 0.1.9.89__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.

Potentially problematic release.


This version of ara-cli might be problematic. Click here for more details.

Files changed (168) hide show
  1. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/PKG-INFO +1 -1
  2. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/ara_config.py +69 -114
  3. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/prompt_handler.py +2 -5
  4. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/version.py +1 -1
  5. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli.egg-info/PKG-INFO +1 -1
  6. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli.egg-info/SOURCES.txt +1 -0
  7. ara_cli-0.1.9.89/tests/test_ara_config.py +336 -0
  8. ara_cli-0.1.9.89/tests/test_prompt_handler.py +306 -0
  9. ara_cli-0.1.9.86/tests/test_ara_config.py +0 -443
  10. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/MANIFEST.in +0 -0
  11. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/README.md +0 -0
  12. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/__init__.py +0 -0
  13. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/__main__.py +0 -0
  14. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/ara_command_action.py +0 -0
  15. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/ara_command_parser.py +0 -0
  16. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/artefact_autofix.py +0 -0
  17. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/artefact_creator.py +0 -0
  18. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/artefact_deleter.py +0 -0
  19. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/artefact_fuzzy_search.py +0 -0
  20. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/artefact_link_updater.py +0 -0
  21. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/artefact_lister.py +0 -0
  22. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/artefact_models/__init__.py +0 -0
  23. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/artefact_models/artefact_load.py +0 -0
  24. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/artefact_models/artefact_mapping.py +0 -0
  25. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/artefact_models/artefact_model.py +0 -0
  26. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/artefact_models/artefact_templates.py +0 -0
  27. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/artefact_models/businessgoal_artefact_model.py +0 -0
  28. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/artefact_models/capability_artefact_model.py +0 -0
  29. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/artefact_models/epic_artefact_model.py +0 -0
  30. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/artefact_models/example_artefact_model.py +0 -0
  31. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/artefact_models/feature_artefact_model.py +0 -0
  32. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/artefact_models/issue_artefact_model.py +0 -0
  33. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/artefact_models/keyfeature_artefact_model.py +0 -0
  34. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/artefact_models/serialize_helper.py +0 -0
  35. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/artefact_models/task_artefact_model.py +0 -0
  36. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/artefact_models/userstory_artefact_model.py +0 -0
  37. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/artefact_models/vision_artefact_model.py +0 -0
  38. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/artefact_reader.py +0 -0
  39. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/artefact_renamer.py +0 -0
  40. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/artefact_scan.py +0 -0
  41. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/chat.py +0 -0
  42. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/classifier.py +0 -0
  43. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/codefusionretriever.py +0 -0
  44. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/codehierachieretriever.py +0 -0
  45. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/commandline_completer.py +0 -0
  46. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/commands/__init__.py +0 -0
  47. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/commands/command.py +0 -0
  48. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/commands/extract_command.py +0 -0
  49. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/commands/load_command.py +0 -0
  50. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/commands/load_image_command.py +0 -0
  51. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/directory_navigator.py +0 -0
  52. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/file_classifier.py +0 -0
  53. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/file_lister.py +0 -0
  54. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/file_loaders/__init__.py +0 -0
  55. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/file_loaders/binary_file_loader.py +0 -0
  56. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/file_loaders/document_file_loader.py +0 -0
  57. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/file_loaders/document_reader.py +0 -0
  58. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/file_loaders/file_loader.py +0 -0
  59. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/file_loaders/text_file_loader.py +0 -0
  60. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/filename_validator.py +0 -0
  61. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/list_filter.py +0 -0
  62. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/output_suppressor.py +0 -0
  63. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/prompt_chat.py +0 -0
  64. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/prompt_extractor.py +0 -0
  65. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/prompt_rag.py +0 -0
  66. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/run_file_lister.py +0 -0
  67. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/tag_extractor.py +0 -0
  68. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/template_manager.py +0 -0
  69. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/agile.artefacts +0 -0
  70. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/prompt-modules/blueprints/complete_pytest_unittest.blueprint.md +0 -0
  71. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/prompt-modules/blueprints/empty.blueprint.md +0 -0
  72. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/prompt-modules/blueprints/task_todo_list_C4_architecture_analysis.blueprint.md +0 -0
  73. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/prompt-modules/blueprints/task_todo_list_implement_feature_BDD_way.blueprint.md +0 -0
  74. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/prompt-modules/commands/architecture_C4_analysis.commands.md +0 -0
  75. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/prompt-modules/commands/architecture_radon_cc_score.commands.md +0 -0
  76. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/prompt-modules/commands/architecture_radon_halstead_v.commands.md +0 -0
  77. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/prompt-modules/commands/architecture_radon_maintainability_score.commands.md +0 -0
  78. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/prompt-modules/commands/artefact_classification.commands.md +0 -0
  79. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/prompt-modules/commands/artefact_extension.commands.md +0 -0
  80. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/prompt-modules/commands/artefact_formulation.commands.md +0 -0
  81. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/prompt-modules/commands/behave_step_generation.commands.md +0 -0
  82. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/prompt-modules/commands/code_generation_complex.commands.md +0 -0
  83. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/prompt-modules/commands/code_generation_simple.commands.md +0 -0
  84. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/prompt-modules/commands/empty.commands.md +0 -0
  85. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/prompt-modules/commands/error_fixing.commands.md +0 -0
  86. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/prompt-modules/commands/feature_file_update.commands.md +0 -0
  87. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/prompt-modules/commands/feature_formulation.commands.md +0 -0
  88. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/prompt-modules/commands/js_code_generation_simple.commands.md +0 -0
  89. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/prompt-modules/commands/refactoring.commands.md +0 -0
  90. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/prompt-modules/commands/refactoring_analysis.commands.md +0 -0
  91. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/prompt-modules/commands/reverse_engineer_feature_file.commands.md +0 -0
  92. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/prompt-modules/commands/reverse_engineer_program_flow.commands.md +0 -0
  93. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/prompt-modules/intentions/classify_task.intention.md +0 -0
  94. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/prompt-modules/intentions/empty.intention.md +0 -0
  95. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/prompt-modules/intentions/error_fixing.intention.md +0 -0
  96. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/prompt-modules/intentions/feature_fix_steps_for_scenario.intention.md +0 -0
  97. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/prompt-modules/intentions/feature_formulation.intention.md +0 -0
  98. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/prompt-modules/intentions/feature_reverse_formulation_from_code.intention.md +0 -0
  99. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/prompt-modules/intentions/feature_scenario_implementation.intention.md +0 -0
  100. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/prompt-modules/intentions/feature_scenario_implementation_update.intention.md +0 -0
  101. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/prompt-modules/intentions/feature_scenario_outline_extension.intention.md +0 -0
  102. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/prompt-modules/intentions/feature_update_formulation.intention.md +0 -0
  103. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/prompt-modules/intentions/fibonacci_example_implementation.intention.md +0 -0
  104. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/prompt-modules/intentions/js_implementation_from_task_description.intention.md +0 -0
  105. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/prompt-modules/intentions/js_steps_implementation.intention.md +0 -0
  106. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/prompt-modules/intentions/python_cli_implementation_with_test.intention.md +0 -0
  107. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/prompt-modules/intentions/python_code_understanding.intention.md +0 -0
  108. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/prompt-modules/intentions/task_implementation.intention.md +0 -0
  109. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/prompt-modules/intentions/task_prompt_control_by_status.intention.md +0 -0
  110. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/prompt-modules/intentions/task_stepwise_implementation_by_number.intention.md +0 -0
  111. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/prompt-modules/intentions/task_stepwise_implementation_by_status.intention.md +0 -0
  112. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/prompt-modules/rules/architecture_analyst.rules.md +0 -0
  113. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/prompt-modules/rules/code_analyst.rules.md +0 -0
  114. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/prompt-modules/rules/empty.rules.md +0 -0
  115. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/prompt-modules/rules/error_analyst.rules.md +0 -0
  116. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/prompt-modules/rules/gherkin_expert.rules.md +0 -0
  117. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/prompt-modules/rules/js_expert_developer.rules.md +0 -0
  118. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/prompt-modules/rules/product_owner.rules.md +0 -0
  119. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/prompt-modules/rules/python_behave.rules.md +0 -0
  120. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/prompt-modules/rules/python_developer.rules.md +0 -0
  121. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/specification_breakdown_files/template.concept.exploration.md +0 -0
  122. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/specification_breakdown_files/template.concept.md +0 -0
  123. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/specification_breakdown_files/template.customer.exploration.md +0 -0
  124. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/specification_breakdown_files/template.customer.md +0 -0
  125. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/specification_breakdown_files/template.persona.exploration.md +0 -0
  126. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/specification_breakdown_files/template.persona.md +0 -0
  127. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/specification_breakdown_files/template.step.exploration.md +0 -0
  128. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/specification_breakdown_files/template.step.md +0 -0
  129. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/specification_breakdown_files/template.technology.exploration.md +0 -0
  130. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/specification_breakdown_files/template.technology.md +0 -0
  131. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/template.businessgoal.prompt_log.md +0 -0
  132. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/template.capability.prompt_log.md +0 -0
  133. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/template.epic.prompt_log.md +0 -0
  134. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/template.example.prompt_log.md +0 -0
  135. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/template.feature.prompt_log.md +0 -0
  136. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/template.issue.prompt_log.md +0 -0
  137. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/template.keyfeature.prompt_log.md +0 -0
  138. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/template.steps.prompt_log.md +0 -0
  139. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/template.task.prompt_log.md +0 -0
  140. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/template.userstory.prompt_log.md +0 -0
  141. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/templates/template.vision.prompt_log.md +0 -0
  142. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli/update_config_prompt.py +0 -0
  143. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli.egg-info/dependency_links.txt +0 -0
  144. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli.egg-info/entry_points.txt +0 -0
  145. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli.egg-info/requires.txt +0 -0
  146. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/ara_cli.egg-info/top_level.txt +0 -0
  147. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/docker/base/requirements.txt +0 -0
  148. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/setup.cfg +0 -0
  149. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/setup.py +0 -0
  150. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/tests/__init__.py +0 -0
  151. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/tests/test_ara_command_action.py +0 -0
  152. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/tests/test_artefact_autofix.py +0 -0
  153. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/tests/test_artefact_fuzzy_search.py +0 -0
  154. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/tests/test_artefact_link_updater.py +0 -0
  155. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/tests/test_artefact_lister.py +0 -0
  156. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/tests/test_artefact_reader.py +0 -0
  157. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/tests/test_artefact_renamer.py +0 -0
  158. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/tests/test_artefact_scan.py +0 -0
  159. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/tests/test_chat.py +0 -0
  160. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/tests/test_classifier.py +0 -0
  161. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/tests/test_directory_navigator.py +0 -0
  162. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/tests/test_file_classifier.py +0 -0
  163. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/tests/test_file_creator.py +0 -0
  164. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/tests/test_file_lister.py +0 -0
  165. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/tests/test_list_filter.py +0 -0
  166. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/tests/test_tag_extractor.py +0 -0
  167. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/tests/test_template_manager.py +0 -0
  168. {ara_cli-0.1.9.86 → ara_cli-0.1.9.89}/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.9.86
3
+ Version: 0.1.9.89
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: litellm
@@ -1,5 +1,5 @@
1
1
  from typing import List, Dict, Optional, Any
2
- from pydantic import BaseModel, ValidationError, Field, field_validator, model_validator
2
+ from pydantic import BaseModel, ValidationError, Field, model_validator
3
3
  import json
4
4
  import os
5
5
  from os.path import exists, dirname
@@ -14,23 +14,12 @@ class LLMConfigItem(BaseModel):
14
14
  model: str
15
15
  temperature: float = Field(ge=0.0, le=1.0)
16
16
  max_tokens: Optional[int] = None
17
-
18
- @field_validator('temperature')
19
- @classmethod
20
- def validate_temperature(cls, v: float, info) -> float:
21
- if not 0.0 <= v <= 1.0:
22
- print(f"Warning: Temperature is outside the 0.0 to 1.0 range")
23
- # Return a valid default
24
- return 0.8
25
- return v
26
-
27
- class ExtCodeDirItem(BaseModel):
28
- source_dir: str
17
+ max_completion_tokens: Optional[int] = None
29
18
 
30
19
  class ARAconfig(BaseModel):
31
- ext_code_dirs: List[ExtCodeDirItem] = Field(default_factory=lambda: [
32
- ExtCodeDirItem(source_dir="./src"),
33
- ExtCodeDirItem(source_dir="./tests")
20
+ ext_code_dirs: List[Dict[str, str]] = Field(default_factory=lambda: [
21
+ {"source_dir": "./src"},
22
+ {"source_dir": "./tests"}
34
23
  ])
35
24
  glossary_dir: str = "./glossary"
36
25
  doc_dir: str = "./docs"
@@ -54,71 +43,71 @@ class ARAconfig(BaseModel):
54
43
  "*.jpeg",
55
44
  ])
56
45
  llm_config: Dict[str, LLMConfigItem] = Field(default_factory=lambda: {
46
+ "gpt-5": LLMConfigItem(
47
+ provider="openai",
48
+ model="openai/gpt-5",
49
+ temperature=1,
50
+ max_completion_tokens=16000
51
+ ),
57
52
  "gpt-4o": LLMConfigItem(
58
53
  provider="openai",
59
54
  model="openai/gpt-4o",
60
55
  temperature=0.8,
61
- max_tokens=16384
56
+ max_tokens=16000
62
57
  ),
63
58
  "gpt-4.1": LLMConfigItem(
64
59
  provider="openai",
65
60
  model="openai/gpt-4.1",
66
61
  temperature=0.8,
67
- max_tokens=1024
62
+ max_tokens=16000
68
63
  ),
69
64
  "o3-mini": LLMConfigItem(
70
65
  provider="openai",
71
66
  model="openai/o3-mini",
72
67
  temperature=1.0,
73
- max_tokens=1024
68
+ max_tokens=8000
74
69
  ),
75
70
  "opus-4": LLMConfigItem(
76
71
  provider="anthropic",
77
72
  model="anthropic/claude-opus-4-20250514",
78
- temperature=0.8,
73
+ temperature=0.5,
79
74
  max_tokens=32000
80
75
  ),
81
76
  "sonnet-4": LLMConfigItem(
82
77
  provider="anthropic",
83
78
  model="anthropic/claude-sonnet-4-20250514",
84
- temperature=0.8,
85
- max_tokens=1024
79
+ temperature=0.5,
80
+ max_tokens=32000
86
81
  ),
87
82
  "together-ai-llama-2": LLMConfigItem(
88
83
  provider="together_ai",
89
84
  model="together_ai/togethercomputer/llama-2-70b",
90
85
  temperature=0.8,
91
- max_tokens=1024
86
+ max_tokens=4000
92
87
  ),
93
88
  "groq-llama-3": LLMConfigItem(
94
89
  provider="groq",
95
90
  model="groq/llama3-70b-8192",
96
91
  temperature=0.8,
97
- max_tokens=1024
92
+ max_tokens=4000
98
93
  )
99
94
  })
100
- default_llm: Optional[str] = "gpt-4o"
101
-
102
- model_config = {
103
- "extra": "forbid" # This will help identify unrecognized keys
104
- }
95
+ default_llm: Optional[str] = "gpt-5"
105
96
 
106
97
  @model_validator(mode='after')
107
98
  def check_critical_fields(self) -> 'ARAconfig':
108
- """Check for empty critical fields and use defaults if needed"""
99
+ """Check for empty critical fields and use defaults if needed."""
109
100
  critical_fields = {
110
- 'ext_code_dirs': [ExtCodeDirItem(source_dir="./src"), ExtCodeDirItem(source_dir="./tests")],
101
+ 'ext_code_dirs': [{"source_dir": "./src"}, {"source_dir": "./tests"}],
111
102
  'local_ara_templates_dir': "./ara/.araconfig/templates/",
112
103
  'local_prompt_templates_dir': "./ara/.araconfig",
113
104
  'glossary_dir': "./glossary"
114
105
  }
115
-
106
+
116
107
  for field, default_value in critical_fields.items():
117
108
  current_value = getattr(self, field)
118
- if (not current_value or
119
- (isinstance(current_value, list) and len(current_value) == 0) or
120
- (isinstance(current_value, str) and current_value.strip() == "")):
121
- print(f"Warning: Value for '{field}' is missing or empty.")
109
+ if not current_value:
110
+ print(f"Warning: Value for '{field}' is missing or empty. Using default.")
122
111
  setattr(self, field, default_value)
123
112
 
124
113
  return self
@@ -126,109 +115,80 @@ class ARAconfig(BaseModel):
126
115
  # Function to ensure the necessary directories exist
127
116
  @lru_cache(maxsize=None)
128
117
  def ensure_directory_exists(directory: str):
118
+ """Creates a directory if it doesn't exist."""
129
119
  if not exists(directory):
130
120
  os.makedirs(directory)
131
121
  print(f"New directory created at {directory}")
132
122
  return directory
133
123
 
134
- def handle_unrecognized_keys(data: dict, known_fields: set) -> dict:
135
- """Remove unrecognized keys and warn the user"""
124
+ def handle_unrecognized_keys(data: dict) -> dict:
125
+ """Removes unrecognized keys from the data and warns the user."""
126
+ known_fields = set(ARAconfig.model_fields.keys())
136
127
  cleaned_data = {}
137
128
  for key, value in data.items():
138
129
  if key not in known_fields:
139
- print(f"Warning: {key} is not recognized as a valid configuration option.")
130
+ print(f"Warning: Unrecognized configuration key '{key}' will be ignored.")
140
131
  else:
141
132
  cleaned_data[key] = value
142
133
  return cleaned_data
143
134
 
144
- def fix_llm_temperatures(data: dict) -> dict:
145
- """Fix invalid temperatures in LLM configurations"""
146
- if 'llm_config' in data:
147
- for model_key, model_config in data['llm_config'].items():
148
- if isinstance(model_config, dict) and 'temperature' in model_config:
149
- temp = model_config['temperature']
150
- if not 0.0 <= temp <= 1.0:
151
- print(f"Warning: Temperature for model '{model_key}' is outside the 0.0 to 1.0 range")
152
- model_config['temperature'] = 0.8
153
- return data
154
-
155
- def validate_and_fix_config_data(filepath: str) -> dict:
156
- """Load, validate, and fix configuration data"""
157
- try:
158
- with open(filepath, "r", encoding="utf-8") as file:
159
- data = json.load(file)
160
-
161
- # Get known fields from the ARAconfig model
162
- known_fields = set(ARAconfig.model_fields.keys())
163
-
164
- # Handle unrecognized keys
165
- data = handle_unrecognized_keys(data, known_fields)
166
-
167
- # Fix LLM temperatures before validation
168
- data = fix_llm_temperatures(data)
169
-
170
- return data
171
- except json.JSONDecodeError as e:
172
- print(f"Error: Invalid JSON in configuration file: {e}")
173
- print("Creating new configuration with defaults...")
174
- return {}
175
- except Exception as e:
176
- print(f"Error reading configuration file: {e}")
177
- return {}
178
-
179
135
  # Function to read the JSON file and return an ARAconfig model
180
136
  @lru_cache(maxsize=1)
181
137
  def read_data(filepath: str) -> ARAconfig:
182
- # Ensure the directory for the config file exists
183
- config_dir = dirname(filepath)
184
- ensure_directory_exists(config_dir)
138
+ """
139
+ Reads, validates, and repairs the configuration file.
140
+ If the file doesn't exist, it creates a default one.
141
+ If the file is invalid, it corrects only the broken parts.
142
+ """
143
+ ensure_directory_exists(dirname(filepath))
185
144
 
186
145
  if not exists(filepath):
187
- # If the file does not exist, create it with default values
146
+ print(f"Configuration file not found. Creating a default one at '{filepath}'.")
188
147
  default_config = ARAconfig()
189
148
  save_data(filepath, default_config)
190
- print(
191
- f"ara-cli configuration file '{filepath}' created with default configuration."
192
- f" Please modify it as needed and re-run your command"
193
- )
194
- sys.exit(0) # Exit the application
149
+ print("Please review the default configuration and re-run your command.")
150
+ sys.exit(0)
151
+
152
+ try:
153
+ with open(filepath, "r", encoding="utf-8") as file:
154
+ data = json.load(file)
155
+ except json.JSONDecodeError as e:
156
+ print(f"Error: Invalid JSON in configuration file: {e}")
157
+ print("Creating a new configuration with defaults...")
158
+ default_config = ARAconfig()
159
+ save_data(filepath, default_config)
160
+ return default_config
161
+
162
+ data = handle_unrecognized_keys(data)
195
163
 
196
- # Validate and load the existing configuration
197
- data = validate_and_fix_config_data(filepath)
198
-
199
164
  try:
200
- # Try to create the config with the loaded data
201
165
  config = ARAconfig(**data)
202
-
203
- # Save the potentially fixed configuration back
204
166
  save_data(filepath, config)
205
-
206
167
  return config
207
168
  except ValidationError as e:
208
- print(f"ValidationError: {e}")
209
- print("Correcting configuration with default values...")
169
+ print("--- Configuration Error Detected ---")
170
+ print("Some settings in your configuration file are invalid. Attempting to fix them.")
210
171
 
211
- # Create a default config
212
- default_config = ARAconfig()
172
+ corrected_data = data.copy()
173
+ defaults = ARAconfig().model_dump()
213
174
 
214
- # Try to preserve valid fields from the original data
215
- for field_name, field_value in data.items():
216
- if field_name in ARAconfig.model_fields:
217
- try:
218
- # Attempt to set the field value
219
- setattr(default_config, field_name, field_value)
220
- except:
221
- # If it fails, keep the default
222
- pass
175
+ error_fields = {err['loc'][0] for err in e.errors() if err['loc']}
223
176
 
224
- # Save the corrected configuration
225
- save_data(filepath, default_config)
226
- print("Fixed configuration saved to file.")
177
+ for field_name in error_fields:
178
+ print(f"-> Field '{field_name}' is invalid and will be reverted to its default value.")
179
+ corrected_data[field_name] = defaults.get(field_name)
180
+
181
+ print("--- End of Error Report ---")
182
+
183
+ final_config = ARAconfig(**corrected_data)
184
+ save_data(filepath, final_config)
185
+ print(f"Configuration has been corrected and saved to '{filepath}'.")
227
186
 
228
- return default_config
187
+ return final_config
229
188
 
230
189
  # Function to save the modified configuration back to the JSON file
231
190
  def save_data(filepath: str, config: ARAconfig):
191
+ """Saves the Pydantic config model to a JSON file."""
232
192
  with open(filepath, "w", encoding="utf-8") as file:
233
193
  json.dump(config.model_dump(), file, indent=4)
234
194
 
@@ -237,18 +197,13 @@ class ConfigManager:
237
197
  _config_instance = None
238
198
 
239
199
  @classmethod
240
- def get_config(cls, filepath=DEFAULT_CONFIG_LOCATION):
200
+ def get_config(cls, filepath=DEFAULT_CONFIG_LOCATION) -> ARAconfig:
241
201
  if cls._config_instance is None:
242
- config_dir = dirname(filepath)
243
-
244
- if not exists(config_dir):
245
- makedirs(config_dir)
246
-
247
202
  cls._config_instance = read_data(filepath)
248
203
  return cls._config_instance
249
204
 
250
205
  @classmethod
251
206
  def reset(cls):
252
- """Reset the configuration instance (useful for testing)"""
207
+ """Reset the configuration instance (useful for testing)."""
253
208
  cls._config_instance = None
254
209
  read_data.cache_clear()
@@ -15,8 +15,6 @@ import glob
15
15
  import logging
16
16
 
17
17
 
18
-
19
-
20
18
  class LLMSingleton:
21
19
  _instance = None
22
20
  _model = None
@@ -27,8 +25,7 @@ class LLMSingleton:
27
25
 
28
26
  if not selected_config:
29
27
  raise ValueError(f"No configuration found for the model: {model_id}")
30
- if not isinstance(selected_config, LLMConfigItem):
31
- selected_config = LLMConfigItem(**selected_config)
28
+
32
29
  LLMSingleton._model = model_id
33
30
 
34
31
  # Typesafe for None values inside the config.
@@ -495,7 +492,7 @@ def generate_config_prompt_template_file(prompt_data_path, config_prompt_templat
495
492
  def generate_config_prompt_givens_file(prompt_data_path, config_prompt_givens_name, artefact_to_mark=None):
496
493
  config_prompt_givens_path = os.path.join(prompt_data_path, config_prompt_givens_name)
497
494
  config = ConfigManager.get_config()
498
- dir_list = ["ara"] + [ext.source_dir for ext in config.ext_code_dirs] + [config.doc_dir] + [config.glossary_dir]
495
+ dir_list = ["ara"] + [ext['source_dir'] for ext in config.ext_code_dirs] + [config.doc_dir] + [config.glossary_dir]
499
496
 
500
497
  print(f"used {dir_list} for prompt givens file listing")
501
498
  generate_markdown_listing(dir_list, config.ara_prompt_given_list_includes, config_prompt_givens_path)
@@ -1,2 +1,2 @@
1
1
  # version.py
2
- __version__ = "0.1.9.86" # fith parameter like .0 for local install test purposes only. official numbers should be 4 digit numbers
2
+ __version__ = "0.1.9.89" # fith parameter like .0 for local install test purposes only. official numbers should be 4 digit numbers
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ara_cli
3
- Version: 0.1.9.86
3
+ Version: 0.1.9.89
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: litellm
@@ -159,6 +159,7 @@ tests/test_file_classifier.py
159
159
  tests/test_file_creator.py
160
160
  tests/test_file_lister.py
161
161
  tests/test_list_filter.py
162
+ tests/test_prompt_handler.py
162
163
  tests/test_tag_extractor.py
163
164
  tests/test_template_manager.py
164
165
  tests/test_update_config_prompt.py