ara-cli 0.1.9.79__tar.gz → 0.1.9.80__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.
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/PKG-INFO +1 -1
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/__main__.py +2 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/ara_command_action.py +15 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/ara_command_parser.py +14 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/chat.py +17 -6
- ara_cli-0.1.9.80/ara_cli/commands/command.py +7 -0
- ara_cli-0.1.9.80/ara_cli/commands/extract_command.py +21 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/prompt_extractor.py +17 -12
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/version.py +1 -1
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli.egg-info/PKG-INFO +1 -1
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli.egg-info/SOURCES.txt +3 -0
- ara_cli-0.1.9.80/tests/__init__.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/tests/test_chat.py +1 -1
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/MANIFEST.in +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/README.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/__init__.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/ara_config.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/artefact_autofix.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/artefact_creator.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/artefact_deleter.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/artefact_fuzzy_search.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/artefact_link_updater.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/artefact_lister.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/artefact_models/__init__.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/artefact_models/artefact_load.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/artefact_models/artefact_mapping.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/artefact_models/artefact_model.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/artefact_models/artefact_templates.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/artefact_models/businessgoal_artefact_model.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/artefact_models/capability_artefact_model.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/artefact_models/epic_artefact_model.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/artefact_models/example_artefact_model.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/artefact_models/feature_artefact_model.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/artefact_models/issue_artefact_model.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/artefact_models/keyfeature_artefact_model.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/artefact_models/serialize_helper.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/artefact_models/task_artefact_model.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/artefact_models/userstory_artefact_model.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/artefact_models/vision_artefact_model.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/artefact_reader.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/artefact_renamer.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/artefact_scan.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/classifier.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/codefusionretriever.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/codehierachieretriever.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/commandline_completer.py +0 -0
- {ara_cli-0.1.9.79/tests → ara_cli-0.1.9.80/ara_cli/commands}/__init__.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/directory_navigator.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/file_classifier.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/file_lister.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/filename_validator.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/list_filter.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/output_suppressor.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/prompt_chat.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/prompt_handler.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/prompt_rag.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/run_file_lister.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/tag_extractor.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/template_manager.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/agile.artefacts +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/blueprints/complete_pytest_unittest.blueprint.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/blueprints/empty.blueprint.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/blueprints/task_todo_list_C4_architecture_analysis.blueprint.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/blueprints/task_todo_list_implement_feature_BDD_way.blueprint.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/commands/architecture_C4_analysis.commands.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/commands/architecture_radon_cc_score.commands.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/commands/architecture_radon_halstead_v.commands.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/commands/architecture_radon_maintainability_score.commands.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/commands/artefact_classification.commands.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/commands/artefact_extension.commands.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/commands/artefact_formulation.commands.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/commands/behave_step_generation.commands.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/commands/code_generation_complex.commands.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/commands/code_generation_simple.commands.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/commands/empty.commands.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/commands/error_fixing.commands.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/commands/feature_file_update.commands.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/commands/feature_formulation.commands.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/commands/js_code_generation_simple.commands.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/commands/refactoring.commands.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/commands/refactoring_analysis.commands.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/commands/reverse_engineer_feature_file.commands.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/commands/reverse_engineer_program_flow.commands.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/intentions/classify_task.intention.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/intentions/empty.intention.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/intentions/error_fixing.intention.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/intentions/feature_fix_steps_for_scenario.intention.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/intentions/feature_formulation.intention.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/intentions/feature_reverse_formulation_from_code.intention.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/intentions/feature_scenario_implementation.intention.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/intentions/feature_scenario_implementation_update.intention.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/intentions/feature_scenario_outline_extension.intention.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/intentions/feature_update_formulation.intention.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/intentions/fibonacci_example_implementation.intention.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/intentions/js_implementation_from_task_description.intention.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/intentions/js_steps_implementation.intention.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/intentions/python_cli_implementation_with_test.intention.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/intentions/python_code_understanding.intention.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/intentions/task_implementation.intention.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/intentions/task_prompt_control_by_status.intention.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/intentions/task_stepwise_implementation_by_number.intention.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/intentions/task_stepwise_implementation_by_status.intention.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/rules/architecture_analyst.rules.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/rules/code_analyst.rules.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/rules/empty.rules.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/rules/error_analyst.rules.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/rules/gherkin_expert.rules.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/rules/js_expert_developer.rules.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/rules/product_owner.rules.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/rules/python_behave.rules.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/rules/python_developer.rules.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/specification_breakdown_files/template.concept.exploration.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/specification_breakdown_files/template.concept.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/specification_breakdown_files/template.customer.exploration.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/specification_breakdown_files/template.customer.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/specification_breakdown_files/template.persona.exploration.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/specification_breakdown_files/template.persona.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/specification_breakdown_files/template.step.exploration.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/specification_breakdown_files/template.step.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/specification_breakdown_files/template.technology.exploration.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/specification_breakdown_files/template.technology.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/template.businessgoal.prompt_log.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/template.capability.prompt_log.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/template.epic.prompt_log.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/template.example.prompt_log.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/template.feature.prompt_log.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/template.issue.prompt_log.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/template.keyfeature.prompt_log.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/template.steps.prompt_log.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/template.task.prompt_log.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/template.userstory.prompt_log.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/template.vision.prompt_log.md +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/update_config_prompt.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli.egg-info/dependency_links.txt +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli.egg-info/entry_points.txt +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli.egg-info/requires.txt +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli.egg-info/top_level.txt +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/docker/base/requirements.txt +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/setup.cfg +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/setup.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/tests/test_ara_command_action.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/tests/test_ara_config.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/tests/test_artefact_autofix.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/tests/test_artefact_fuzzy_search.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/tests/test_artefact_link_updater.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/tests/test_artefact_lister.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/tests/test_artefact_reader.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/tests/test_artefact_renamer.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/tests/test_artefact_scan.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/tests/test_classifier.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/tests/test_directory_navigator.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/tests/test_file_classifier.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/tests/test_file_creator.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/tests/test_file_lister.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/tests/test_list_filter.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/tests/test_tag_extractor.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/tests/test_template_manager.py +0 -0
- {ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/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.
|
|
3
|
+
Version: 0.1.9.80
|
|
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
|
|
@@ -20,6 +20,7 @@ from ara_cli.ara_command_action import (
|
|
|
20
20
|
classifier_directory_action,
|
|
21
21
|
scan_action,
|
|
22
22
|
autofix_action,
|
|
23
|
+
extract_action
|
|
23
24
|
)
|
|
24
25
|
import argcomplete
|
|
25
26
|
import sys
|
|
@@ -45,6 +46,7 @@ def define_action_mapping():
|
|
|
45
46
|
"classifier-directory": classifier_directory_action,
|
|
46
47
|
"scan": scan_action,
|
|
47
48
|
"autofix": autofix_action,
|
|
49
|
+
"extract": extract_action
|
|
48
50
|
}
|
|
49
51
|
|
|
50
52
|
|
|
@@ -609,3 +609,18 @@ def autofix_action(args):
|
|
|
609
609
|
)
|
|
610
610
|
|
|
611
611
|
print("\nAutofix process completed. Please review the changes.")
|
|
612
|
+
|
|
613
|
+
|
|
614
|
+
def extract_action(args):
|
|
615
|
+
from ara_cli.commands.extract_command import ExtractCommand
|
|
616
|
+
|
|
617
|
+
filename = args.filename
|
|
618
|
+
skip_queries = args.skip_queries
|
|
619
|
+
print(file_name)
|
|
620
|
+
command = ExtractCommand(
|
|
621
|
+
file_name=filename,
|
|
622
|
+
skip_queries=skip_queries,
|
|
623
|
+
output=lambda msg: print(msg, file=sys.stdout),
|
|
624
|
+
error_output=lambda msg: print(msg, file=sys.stderr)
|
|
625
|
+
)
|
|
626
|
+
command.execute()
|
|
@@ -422,6 +422,19 @@ def autofix_parser(subparsers):
|
|
|
422
422
|
)
|
|
423
423
|
|
|
424
424
|
|
|
425
|
+
def extract_parser(subparsers):
|
|
426
|
+
extract_parser = subparsers.add_parser("extract", help="Extract blocks of marked content from a given file.")
|
|
427
|
+
extract_parser.add_argument(
|
|
428
|
+
"filename",
|
|
429
|
+
help="Input file to extract from."
|
|
430
|
+
)
|
|
431
|
+
extract_parser.add_argument(
|
|
432
|
+
"--skip-queries", "-s",
|
|
433
|
+
action="store_true",
|
|
434
|
+
help="Answer queries with yes when extracting."
|
|
435
|
+
)
|
|
436
|
+
|
|
437
|
+
|
|
425
438
|
class CustomHelpFormatter(argparse.HelpFormatter):
|
|
426
439
|
def __init__(self, *args, **kwargs):
|
|
427
440
|
self.add_examples = kwargs.pop("add_examples", False)
|
|
@@ -532,5 +545,6 @@ def action_parser():
|
|
|
532
545
|
classifier_directory_parser(subparsers)
|
|
533
546
|
scan_parser(subparsers)
|
|
534
547
|
autofix_parser(subparsers)
|
|
548
|
+
extract_parser(subparsers)
|
|
535
549
|
|
|
536
550
|
return parser
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
import os
|
|
2
2
|
import cmd2
|
|
3
|
+
import argparse
|
|
3
4
|
from ara_cli.prompt_handler import send_prompt
|
|
4
5
|
|
|
5
6
|
|
|
7
|
+
extract_parser = argparse.ArgumentParser()
|
|
8
|
+
extract_parser.add_argument('-s', '--skip-queries', action='store_true', help='Force extraction')
|
|
9
|
+
|
|
10
|
+
|
|
6
11
|
class Chat(cmd2.Cmd):
|
|
7
12
|
CATEGORY_CHAT_CONTROL = "Chat control commands"
|
|
8
13
|
CATEGORY_LLM_CONTROL = "Language model controls"
|
|
@@ -741,12 +746,18 @@ Start chatting (type 'HELP'/'h' for available commands, 'QUIT'/'q' to exit chat
|
|
|
741
746
|
self._load_template_from_global_or_local(template_name=template_name, template_type=template_type)
|
|
742
747
|
|
|
743
748
|
@cmd2.with_category(CATEGORY_CHAT_CONTROL)
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
749
|
+
@cmd2.with_argparser(extract_parser)
|
|
750
|
+
def do_EXTRACT(self, args):
|
|
751
|
+
"""Search for markdown code blocks containing "# [x] extract" as first line and "# filename: <path/filename>" as second line and copy the content of the code block to the specified file. The extracted code block is then marked with "# [v] extract"."""
|
|
752
|
+
from ara_cli.commands.extract_command import ExtractCommand
|
|
753
|
+
|
|
754
|
+
command = ExtractCommand(
|
|
755
|
+
file_name=self.chat_name,
|
|
756
|
+
skip_queries=args.skip_queries,
|
|
757
|
+
output=self.poutput,
|
|
758
|
+
error_output=self.perror
|
|
759
|
+
)
|
|
760
|
+
command.execute()
|
|
750
761
|
|
|
751
762
|
@cmd2.with_category(CATEGORY_CHAT_CONTROL)
|
|
752
763
|
def do_LOAD_GIVENS(self, file_name):
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
from ara_cli.commands.command import Command
|
|
2
|
+
from ara_cli.prompt_extractor import extract_responses
|
|
3
|
+
import os
|
|
4
|
+
|
|
5
|
+
class ExtractCommand(Command):
|
|
6
|
+
def __init__(self, file_name, skip_queries=False, output=None, error_output=None):
|
|
7
|
+
self.file_name = file_name
|
|
8
|
+
self.skip_queries = skip_queries
|
|
9
|
+
self.output = output # Callable for standard output (optional)
|
|
10
|
+
self.error_output = error_output # Callable for errors (optional)
|
|
11
|
+
|
|
12
|
+
def execute(self, *args, **kwargs):
|
|
13
|
+
try:
|
|
14
|
+
extract_responses(self.file_name, True, skip_queries=self.skip_queries)
|
|
15
|
+
if self.output:
|
|
16
|
+
self.output("End of extraction")
|
|
17
|
+
except Exception as e:
|
|
18
|
+
if self.error_output:
|
|
19
|
+
self.error_output(f"Extraction failed: {e}")
|
|
20
|
+
else:
|
|
21
|
+
raise
|
|
@@ -17,7 +17,7 @@ def extract_code_blocks_md(markdown_text):
|
|
|
17
17
|
return code_blocks
|
|
18
18
|
|
|
19
19
|
|
|
20
|
-
def extract_responses(document_path, relative_to_ara_root=False):
|
|
20
|
+
def extract_responses(document_path, relative_to_ara_root=False, skip_queries=False):
|
|
21
21
|
print(f"Debug: Starting extraction from {document_path}")
|
|
22
22
|
block_extraction_counter = 0
|
|
23
23
|
|
|
@@ -26,7 +26,6 @@ def extract_responses(document_path, relative_to_ara_root=False):
|
|
|
26
26
|
|
|
27
27
|
cwd = os.getcwd()
|
|
28
28
|
if relative_to_ara_root:
|
|
29
|
-
from ara_cli.directory_navigator import DirectoryNavigator
|
|
30
29
|
navigator = DirectoryNavigator()
|
|
31
30
|
navigator.navigate_to_target()
|
|
32
31
|
os.chdir('..')
|
|
@@ -52,7 +51,7 @@ def extract_responses(document_path, relative_to_ara_root=False):
|
|
|
52
51
|
block_lines = block_lines[1:] # Remove first line again after removing filename line
|
|
53
52
|
block = '\n'.join(block_lines)
|
|
54
53
|
|
|
55
|
-
handle_existing_file(file_path, block)
|
|
54
|
+
handle_existing_file(file_path, block, skip_queries)
|
|
56
55
|
block_extraction_counter += 1
|
|
57
56
|
|
|
58
57
|
# Update the markdown content
|
|
@@ -81,8 +80,7 @@ def extract_responses(document_path, relative_to_ara_root=False):
|
|
|
81
80
|
artefact_path = artefact.file_path
|
|
82
81
|
directory = os.path.dirname(artefact_path)
|
|
83
82
|
os.makedirs(directory, exist_ok=True)
|
|
84
|
-
|
|
85
|
-
file.write(serialized_artefact)
|
|
83
|
+
handle_existing_file(artefact_path, serialized_artefact, skip_queries)
|
|
86
84
|
|
|
87
85
|
os.chdir(original_directory)
|
|
88
86
|
|
|
@@ -127,12 +125,19 @@ def prompt_user_decision(prompt):
|
|
|
127
125
|
return input(prompt)
|
|
128
126
|
|
|
129
127
|
|
|
130
|
-
def
|
|
128
|
+
def determine_should_create(skip_query=False):
|
|
129
|
+
if skip_query:
|
|
130
|
+
return True
|
|
131
|
+
user_decision = prompt_user_decision("File does not exist. Create? (y/n): ")
|
|
132
|
+
if user_decision.lower() in ['y', 'yes']:
|
|
133
|
+
return True
|
|
134
|
+
return False
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
def create_file_if_not_exist(filename, content, skip_query=False):
|
|
131
138
|
try:
|
|
132
139
|
if not os.path.exists(filename):
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
if user_decision.lower() in ['y', 'yes']:
|
|
140
|
+
if determine_should_create(skip_query):
|
|
136
141
|
# Ensure the directory exists
|
|
137
142
|
os.makedirs(os.path.dirname(filename), exist_ok=True)
|
|
138
143
|
|
|
@@ -170,7 +175,7 @@ def create_prompt_for_file_modification(content_str, filename):
|
|
|
170
175
|
{{
|
|
171
176
|
"filename": "path/filename.filextension",
|
|
172
177
|
"content": "full content of the modified file in valid json format"
|
|
173
|
-
}}
|
|
178
|
+
}}
|
|
174
179
|
"""
|
|
175
180
|
|
|
176
181
|
# print(f"Debug: modification prompt created: {prompt_text}")
|
|
@@ -178,10 +183,10 @@ def create_prompt_for_file_modification(content_str, filename):
|
|
|
178
183
|
return prompt_text
|
|
179
184
|
|
|
180
185
|
|
|
181
|
-
def handle_existing_file(filename, block_content):
|
|
186
|
+
def handle_existing_file(filename, block_content, skip_query=False):
|
|
182
187
|
if not os.path.isfile(filename):
|
|
183
188
|
print(f"File {filename} does not exist, attempting to create")
|
|
184
|
-
create_file_if_not_exist(filename, block_content)
|
|
189
|
+
create_file_if_not_exist(filename, block_content, skip_query)
|
|
185
190
|
else:
|
|
186
191
|
print(f"File {filename} exists, creating modification prompt")
|
|
187
192
|
prompt_text = create_prompt_for_file_modification(block_content, filename)
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
# version.py
|
|
2
|
-
__version__ = "0.1.9.
|
|
2
|
+
__version__ = "0.1.9.80" # 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.
|
|
3
|
+
Version: 0.1.9.80
|
|
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
|
|
@@ -57,6 +57,9 @@ ara_cli/artefact_models/serialize_helper.py
|
|
|
57
57
|
ara_cli/artefact_models/task_artefact_model.py
|
|
58
58
|
ara_cli/artefact_models/userstory_artefact_model.py
|
|
59
59
|
ara_cli/artefact_models/vision_artefact_model.py
|
|
60
|
+
ara_cli/commands/__init__.py
|
|
61
|
+
ara_cli/commands/command.py
|
|
62
|
+
ara_cli/commands/extract_command.py
|
|
60
63
|
ara_cli/templates/agile.artefacts
|
|
61
64
|
ara_cli/templates/template.businessgoal.prompt_log.md
|
|
62
65
|
ara_cli/templates/template.capability.prompt_log.md
|
|
File without changes
|
|
@@ -1173,7 +1173,7 @@ def test_do_EXTRACT(temp_chat_file, capsys):
|
|
|
1173
1173
|
|
|
1174
1174
|
with patch('ara_cli.prompt_extractor.extract_responses') as mock_extract_responses:
|
|
1175
1175
|
chat.do_EXTRACT("")
|
|
1176
|
-
mock_extract_responses.assert_called_once_with(temp_chat_file.name, True)
|
|
1176
|
+
mock_extract_responses.assert_called_once_with(temp_chat_file.name, True, skip_queries=False)
|
|
1177
1177
|
|
|
1178
1178
|
captured = capsys.readouterr()
|
|
1179
1179
|
assert "End of extraction" in captured.out
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/artefact_models/businessgoal_artefact_model.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/blueprints/empty.blueprint.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/commands/empty.commands.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/intentions/empty.intention.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/rules/code_analyst.rules.md
RENAMED
|
File without changes
|
|
File without changes
|
{ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/rules/error_analyst.rules.md
RENAMED
|
File without changes
|
{ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/rules/gherkin_expert.rules.md
RENAMED
|
File without changes
|
|
File without changes
|
{ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/rules/product_owner.rules.md
RENAMED
|
File without changes
|
{ara_cli-0.1.9.79 → ara_cli-0.1.9.80}/ara_cli/templates/prompt-modules/rules/python_behave.rules.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|