ara-cli 0.1.9.92__tar.gz → 0.1.9.93__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.
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/PKG-INFO +1 -1
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/chat.py +12 -22
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/prompt_handler.py +70 -48
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/version.py +1 -1
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli.egg-info/PKG-INFO +1 -1
- ara_cli-0.1.9.93/tests/test_prompt_handler.py +677 -0
- ara_cli-0.1.9.92/tests/test_prompt_handler.py +0 -344
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/MANIFEST.in +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/README.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/__init__.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/__main__.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/ara_command_action.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/ara_command_parser.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/ara_config.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/artefact_autofix.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/artefact_creator.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/artefact_deleter.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/artefact_fuzzy_search.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/artefact_link_updater.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/artefact_lister.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/artefact_models/__init__.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/artefact_models/artefact_load.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/artefact_models/artefact_mapping.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/artefact_models/artefact_model.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/artefact_models/artefact_templates.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/artefact_models/businessgoal_artefact_model.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/artefact_models/capability_artefact_model.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/artefact_models/epic_artefact_model.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/artefact_models/example_artefact_model.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/artefact_models/feature_artefact_model.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/artefact_models/issue_artefact_model.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/artefact_models/keyfeature_artefact_model.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/artefact_models/serialize_helper.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/artefact_models/task_artefact_model.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/artefact_models/userstory_artefact_model.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/artefact_models/vision_artefact_model.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/artefact_reader.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/artefact_renamer.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/artefact_scan.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/classifier.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/codefusionretriever.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/codehierachieretriever.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/commandline_completer.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/commands/__init__.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/commands/command.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/commands/extract_command.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/commands/load_command.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/commands/load_image_command.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/directory_navigator.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/file_classifier.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/file_lister.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/file_loaders/__init__.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/file_loaders/binary_file_loader.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/file_loaders/document_file_loader.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/file_loaders/document_reader.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/file_loaders/file_loader.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/file_loaders/text_file_loader.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/filename_validator.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/list_filter.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/output_suppressor.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/prompt_chat.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/prompt_extractor.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/prompt_rag.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/run_file_lister.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/tag_extractor.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/template_manager.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/agile.artefacts +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/prompt-modules/blueprints/complete_pytest_unittest.blueprint.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/prompt-modules/blueprints/empty.blueprint.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/prompt-modules/blueprints/task_todo_list_C4_architecture_analysis.blueprint.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/prompt-modules/blueprints/task_todo_list_implement_feature_BDD_way.blueprint.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/prompt-modules/commands/architecture_C4_analysis.commands.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/prompt-modules/commands/architecture_radon_cc_score.commands.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/prompt-modules/commands/architecture_radon_halstead_v.commands.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/prompt-modules/commands/architecture_radon_maintainability_score.commands.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/prompt-modules/commands/artefact_classification.commands.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/prompt-modules/commands/artefact_extension.commands.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/prompt-modules/commands/artefact_formulation.commands.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/prompt-modules/commands/behave_step_generation.commands.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/prompt-modules/commands/code_generation_complex.commands.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/prompt-modules/commands/code_generation_simple.commands.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/prompt-modules/commands/empty.commands.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/prompt-modules/commands/error_fixing.commands.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/prompt-modules/commands/feature_file_update.commands.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/prompt-modules/commands/feature_formulation.commands.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/prompt-modules/commands/js_code_generation_simple.commands.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/prompt-modules/commands/refactoring.commands.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/prompt-modules/commands/refactoring_analysis.commands.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/prompt-modules/commands/reverse_engineer_feature_file.commands.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/prompt-modules/commands/reverse_engineer_program_flow.commands.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/prompt-modules/intentions/classify_task.intention.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/prompt-modules/intentions/empty.intention.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/prompt-modules/intentions/error_fixing.intention.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/prompt-modules/intentions/feature_fix_steps_for_scenario.intention.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/prompt-modules/intentions/feature_formulation.intention.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/prompt-modules/intentions/feature_reverse_formulation_from_code.intention.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/prompt-modules/intentions/feature_scenario_implementation.intention.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/prompt-modules/intentions/feature_scenario_implementation_update.intention.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/prompt-modules/intentions/feature_scenario_outline_extension.intention.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/prompt-modules/intentions/feature_update_formulation.intention.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/prompt-modules/intentions/fibonacci_example_implementation.intention.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/prompt-modules/intentions/js_implementation_from_task_description.intention.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/prompt-modules/intentions/js_steps_implementation.intention.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/prompt-modules/intentions/python_cli_implementation_with_test.intention.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/prompt-modules/intentions/python_code_understanding.intention.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/prompt-modules/intentions/task_implementation.intention.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/prompt-modules/intentions/task_prompt_control_by_status.intention.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/prompt-modules/intentions/task_stepwise_implementation_by_number.intention.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/prompt-modules/intentions/task_stepwise_implementation_by_status.intention.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/prompt-modules/rules/architecture_analyst.rules.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/prompt-modules/rules/code_analyst.rules.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/prompt-modules/rules/empty.rules.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/prompt-modules/rules/error_analyst.rules.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/prompt-modules/rules/gherkin_expert.rules.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/prompt-modules/rules/js_expert_developer.rules.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/prompt-modules/rules/product_owner.rules.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/prompt-modules/rules/python_behave.rules.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/prompt-modules/rules/python_developer.rules.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/specification_breakdown_files/template.concept.exploration.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/specification_breakdown_files/template.concept.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/specification_breakdown_files/template.customer.exploration.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/specification_breakdown_files/template.customer.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/specification_breakdown_files/template.persona.exploration.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/specification_breakdown_files/template.persona.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/specification_breakdown_files/template.step.exploration.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/specification_breakdown_files/template.step.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/specification_breakdown_files/template.technology.exploration.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/specification_breakdown_files/template.technology.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/template.businessgoal.prompt_log.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/template.capability.prompt_log.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/template.epic.prompt_log.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/template.example.prompt_log.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/template.feature.prompt_log.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/template.issue.prompt_log.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/template.keyfeature.prompt_log.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/template.steps.prompt_log.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/template.task.prompt_log.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/template.userstory.prompt_log.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/templates/template.vision.prompt_log.md +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli/update_config_prompt.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli.egg-info/SOURCES.txt +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli.egg-info/dependency_links.txt +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli.egg-info/entry_points.txt +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli.egg-info/requires.txt +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/ara_cli.egg-info/top_level.txt +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/docker/base/requirements.txt +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/setup.cfg +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/setup.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/tests/__init__.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/tests/test_ara_command_action.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/tests/test_ara_config.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/tests/test_artefact_autofix.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/tests/test_artefact_fuzzy_search.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/tests/test_artefact_link_updater.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/tests/test_artefact_lister.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/tests/test_artefact_reader.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/tests/test_artefact_renamer.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/tests/test_artefact_scan.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/tests/test_chat.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/tests/test_classifier.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/tests/test_directory_navigator.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/tests/test_file_classifier.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/tests/test_file_creator.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/tests/test_file_lister.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/tests/test_list_filter.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/tests/test_tag_extractor.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/tests/test_template_manager.py +0 -0
- {ara_cli-0.1.9.92 → ara_cli-0.1.9.93}/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.93
|
|
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
|
|
@@ -532,7 +532,7 @@ Start chatting (type 'HELP'/'h' for available commands, 'QUIT'/'q' to exit chat
|
|
|
532
532
|
return [x for x in glob.glob(text + '*')]
|
|
533
533
|
|
|
534
534
|
def _retrieve_ara_config(self):
|
|
535
|
-
from ara_cli.
|
|
535
|
+
from ara_cli.prompt_handler import ConfigManager
|
|
536
536
|
return ConfigManager().get_config()
|
|
537
537
|
|
|
538
538
|
def _retrieve_llm_config(self):
|
|
@@ -625,7 +625,7 @@ Start chatting (type 'HELP'/'h' for available commands, 'QUIT'/'q' to exit chat
|
|
|
625
625
|
@cmd2.with_category(CATEGORY_LLM_CONTROL)
|
|
626
626
|
def do_CHOOSE_MODEL(self, model_name):
|
|
627
627
|
from ara_cli.prompt_handler import LLMSingleton
|
|
628
|
-
from ara_cli.ara_config import DEFAULT_CONFIG_LOCATION, save_data
|
|
628
|
+
from ara_cli.ara_config import DEFAULT_CONFIG_LOCATION, save_data
|
|
629
629
|
from ara_cli.directory_navigator import DirectoryNavigator
|
|
630
630
|
|
|
631
631
|
original_dir = os.getcwd()
|
|
@@ -634,22 +634,20 @@ Start chatting (type 'HELP'/'h' for available commands, 'QUIT'/'q' to exit chat
|
|
|
634
634
|
os.chdir('..')
|
|
635
635
|
|
|
636
636
|
if not self._verify_llm_choice(model_name):
|
|
637
|
-
os.chdir(original_dir)
|
|
638
637
|
return
|
|
639
638
|
|
|
640
|
-
ConfigManager.reset()
|
|
641
|
-
self.config = ConfigManager.get_config()
|
|
642
639
|
self.config.default_llm = model_name
|
|
643
640
|
save_data(filepath=DEFAULT_CONFIG_LOCATION, config=self.config)
|
|
644
641
|
|
|
645
|
-
LLMSingleton.
|
|
642
|
+
LLMSingleton.set_default_model(model_name)
|
|
643
|
+
print(f"Language model switched to '{model_name}'")
|
|
646
644
|
|
|
647
645
|
os.chdir(original_dir)
|
|
648
646
|
|
|
649
647
|
@cmd2.with_category(CATEGORY_LLM_CONTROL)
|
|
650
648
|
def do_CHOOSE_EXTRACTION_MODEL(self, model_name):
|
|
651
|
-
|
|
652
|
-
from ara_cli.ara_config import DEFAULT_CONFIG_LOCATION, save_data
|
|
649
|
+
from ara_cli.prompt_handler import LLMSingleton
|
|
650
|
+
from ara_cli.ara_config import DEFAULT_CONFIG_LOCATION, save_data
|
|
653
651
|
from ara_cli.directory_navigator import DirectoryNavigator
|
|
654
652
|
|
|
655
653
|
original_dir = os.getcwd()
|
|
@@ -658,36 +656,28 @@ Start chatting (type 'HELP'/'h' for available commands, 'QUIT'/'q' to exit chat
|
|
|
658
656
|
os.chdir('..')
|
|
659
657
|
|
|
660
658
|
if not self._verify_llm_choice(model_name):
|
|
661
|
-
os.chdir(original_dir)
|
|
662
659
|
return
|
|
663
660
|
|
|
664
|
-
ConfigManager.reset()
|
|
665
|
-
self.config = ConfigManager.get_config()
|
|
666
661
|
self.config.extraction_llm = model_name
|
|
667
662
|
save_data(filepath=DEFAULT_CONFIG_LOCATION, config=self.config)
|
|
663
|
+
|
|
664
|
+
LLMSingleton.set_extraction_model(model_name)
|
|
668
665
|
print(f"Extraction model switched to '{model_name}'")
|
|
669
666
|
|
|
670
667
|
os.chdir(original_dir)
|
|
671
668
|
|
|
672
669
|
@cmd2.with_category(CATEGORY_LLM_CONTROL)
|
|
673
670
|
def do_CURRENT_MODEL(self, _):
|
|
674
|
-
|
|
675
|
-
from ara_cli.ara_config import ConfigManager
|
|
671
|
+
from ara_cli.prompt_handler import LLMSingleton
|
|
676
672
|
|
|
677
|
-
|
|
678
|
-
config = self._retrieve_ara_config()
|
|
679
|
-
|
|
680
|
-
print(config.default_llm)
|
|
673
|
+
print(LLMSingleton.get_default_model())
|
|
681
674
|
|
|
682
675
|
@cmd2.with_category(CATEGORY_LLM_CONTROL)
|
|
683
676
|
def do_CURRENT_EXTRACTION_MODEL(self, _):
|
|
684
677
|
"""Displays the current extraction language model."""
|
|
685
|
-
from ara_cli.
|
|
686
|
-
|
|
687
|
-
ConfigManager.reset()
|
|
688
|
-
config = self._retrieve_ara_config()
|
|
678
|
+
from ara_cli.prompt_handler import LLMSingleton
|
|
689
679
|
|
|
690
|
-
print(
|
|
680
|
+
print(LLMSingleton.get_extraction_model())
|
|
691
681
|
|
|
692
682
|
def _complete_llms(self, text, line, begidx, endidx):
|
|
693
683
|
llm_config = self._retrieve_llm_config()
|
|
@@ -17,47 +17,84 @@ import logging
|
|
|
17
17
|
|
|
18
18
|
class LLMSingleton:
|
|
19
19
|
_instance = None
|
|
20
|
-
|
|
20
|
+
_default_model = None
|
|
21
|
+
_extraction_model = None
|
|
21
22
|
|
|
22
|
-
def __init__(self,
|
|
23
|
+
def __init__(self, default_model_id, extraction_model_id):
|
|
23
24
|
config = ConfigManager().get_config()
|
|
24
|
-
|
|
25
|
+
default_config_data = config.llm_config.get(str(default_model_id))
|
|
25
26
|
|
|
26
|
-
if not
|
|
27
|
-
raise ValueError(f"No configuration found for the model: {
|
|
28
|
-
|
|
29
|
-
LLMSingleton._model = model_id
|
|
27
|
+
if not default_config_data:
|
|
28
|
+
raise ValueError(f"No configuration found for the default model: {default_model_id}")
|
|
29
|
+
self.default_config_params = default_config_data.model_dump(exclude_none=True)
|
|
30
30
|
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
extraction_config_data = config.llm_config.get(str(extraction_model_id))
|
|
32
|
+
if not extraction_config_data:
|
|
33
|
+
raise ValueError(f"No configuration found for the extraction model: {extraction_model_id}")
|
|
34
|
+
self.extraction_config_params = extraction_config_data.model_dump(exclude_none=True)
|
|
33
35
|
|
|
36
|
+
LLMSingleton._default_model = default_model_id
|
|
37
|
+
LLMSingleton._extraction_model = extraction_model_id
|
|
34
38
|
LLMSingleton._instance = self
|
|
35
39
|
|
|
36
40
|
@classmethod
|
|
37
41
|
def get_instance(cls):
|
|
38
42
|
if cls._instance is None:
|
|
39
43
|
config = ConfigManager().get_config()
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
default_model = config.default_llm
|
|
45
|
+
if not default_model:
|
|
46
|
+
if not config.llm_config:
|
|
47
|
+
raise ValueError("No LLM configurations are defined in the configuration file.")
|
|
48
|
+
default_model = next(iter(config.llm_config))
|
|
49
|
+
|
|
50
|
+
extraction_model = getattr(config, 'extraction_llm', default_model)
|
|
51
|
+
if not extraction_model:
|
|
52
|
+
extraction_model = default_model
|
|
53
|
+
|
|
54
|
+
cls(default_model, extraction_model)
|
|
46
55
|
return cls._instance
|
|
47
56
|
|
|
48
57
|
@classmethod
|
|
49
|
-
def
|
|
50
|
-
|
|
58
|
+
def get_config_by_purpose(cls, purpose='default'):
|
|
59
|
+
"""
|
|
60
|
+
purpose= 'default' or 'extraction'
|
|
61
|
+
"""
|
|
62
|
+
instance = cls.get_instance()
|
|
63
|
+
if purpose == 'extraction':
|
|
64
|
+
return instance.extraction_config_params.copy()
|
|
65
|
+
return instance.default_config_params.copy()
|
|
66
|
+
|
|
67
|
+
@classmethod
|
|
68
|
+
def set_default_model(cls, model_name):
|
|
69
|
+
"""Sets the default language model for the current session."""
|
|
70
|
+
cls.get_instance()
|
|
71
|
+
if model_name == cls._default_model:
|
|
51
72
|
return cls._instance
|
|
52
|
-
cls(model_name)
|
|
53
|
-
print(f"Language model switched to '{model_name}'")
|
|
73
|
+
cls(model_name, cls._extraction_model)
|
|
54
74
|
return cls._instance
|
|
55
75
|
|
|
56
76
|
@classmethod
|
|
57
|
-
def
|
|
77
|
+
def set_extraction_model(cls, model_name):
|
|
78
|
+
"""Sets the extraction language model for the current session."""
|
|
79
|
+
cls.get_instance()
|
|
80
|
+
if model_name == cls._extraction_model:
|
|
81
|
+
return cls._instance
|
|
82
|
+
cls(cls._default_model, model_name)
|
|
83
|
+
return cls._instance
|
|
84
|
+
|
|
85
|
+
@classmethod
|
|
86
|
+
def get_default_model(cls):
|
|
87
|
+
"""Gets the default model name stored in the singleton instance."""
|
|
88
|
+
if cls._instance is None:
|
|
89
|
+
cls.get_instance()
|
|
90
|
+
return cls._default_model
|
|
91
|
+
|
|
92
|
+
@classmethod
|
|
93
|
+
def get_extraction_model(cls):
|
|
94
|
+
"""Gets the extraction model name stored in the singleton instance."""
|
|
58
95
|
if cls._instance is None:
|
|
59
96
|
cls.get_instance()
|
|
60
|
-
return cls.
|
|
97
|
+
return cls._extraction_model
|
|
61
98
|
|
|
62
99
|
|
|
63
100
|
def write_string_to_file(filename, string, mode):
|
|
@@ -71,28 +108,6 @@ def read_string_from_file(path):
|
|
|
71
108
|
text = file.read()
|
|
72
109
|
return text
|
|
73
110
|
|
|
74
|
-
def _get_model_config(purpose: str) -> dict:
|
|
75
|
-
"""
|
|
76
|
-
Resolves model ID by purpose and returns its prepared configuration for LiteLLM.
|
|
77
|
-
"""
|
|
78
|
-
config = ConfigManager().get_config()
|
|
79
|
-
|
|
80
|
-
# Determine which model to use based on the purpose
|
|
81
|
-
model_id = config.default_llm
|
|
82
|
-
if purpose == 'extraction':
|
|
83
|
-
# Use extraction_llm if it exists, otherwise fall back to default_llm
|
|
84
|
-
model_id = getattr(config, 'extraction_llm', config.default_llm)
|
|
85
|
-
|
|
86
|
-
selected_config = config.llm_config.get(str(model_id))
|
|
87
|
-
|
|
88
|
-
if not selected_config:
|
|
89
|
-
raise ValueError(f"No configuration found for model '{model_id}' used for '{purpose}'")
|
|
90
|
-
|
|
91
|
-
config_parameters = selected_config.model_dump(exclude_none=True)
|
|
92
|
-
config_parameters.pop("provider", None)
|
|
93
|
-
|
|
94
|
-
return config_parameters
|
|
95
|
-
|
|
96
111
|
|
|
97
112
|
def _is_valid_message(message: dict) -> bool:
|
|
98
113
|
"""
|
|
@@ -116,7 +131,10 @@ def _is_valid_message(message: dict) -> bool:
|
|
|
116
131
|
|
|
117
132
|
def send_prompt(prompt, purpose='default'):
|
|
118
133
|
"""Prepares and sends a prompt to the LLM, streaming the response."""
|
|
119
|
-
|
|
134
|
+
chat_instance = LLMSingleton.get_instance()
|
|
135
|
+
config_parameters = chat_instance.get_config_by_purpose(purpose)
|
|
136
|
+
|
|
137
|
+
config_parameters.pop("provider", None)
|
|
120
138
|
|
|
121
139
|
filtered_prompt = [msg for msg in prompt if _is_valid_message(msg)]
|
|
122
140
|
|
|
@@ -172,9 +190,9 @@ def describe_image(image_path: str) -> str:
|
|
|
172
190
|
]
|
|
173
191
|
}
|
|
174
192
|
|
|
175
|
-
# Get response from LLM
|
|
193
|
+
# Get response from LLM using the extraction model purpose
|
|
176
194
|
response_text = ""
|
|
177
|
-
for chunk in send_prompt([message]):
|
|
195
|
+
for chunk in send_prompt([message], purpose='extraction'):
|
|
178
196
|
chunk_content = chunk.choices[0].delta.content
|
|
179
197
|
if chunk_content:
|
|
180
198
|
response_text += chunk_content
|
|
@@ -461,7 +479,11 @@ def append_images_to_message(message, image_data_list):
|
|
|
461
479
|
message_content = message["content"]
|
|
462
480
|
logger.debug(f"Original message content: {message_content}")
|
|
463
481
|
|
|
464
|
-
|
|
482
|
+
if isinstance(message_content, str):
|
|
483
|
+
message["content"] = [{"type": "text", "text": message_content}]
|
|
484
|
+
|
|
485
|
+
message["content"].extend(image_data_list)
|
|
486
|
+
|
|
465
487
|
logger.debug(f"Updated message content with {len(image_data_list)} images")
|
|
466
488
|
|
|
467
489
|
return message
|
|
@@ -517,7 +539,7 @@ def generate_config_prompt_template_file(prompt_data_path, config_prompt_templat
|
|
|
517
539
|
def generate_config_prompt_givens_file(prompt_data_path, config_prompt_givens_name, artefact_to_mark=None):
|
|
518
540
|
config_prompt_givens_path = os.path.join(prompt_data_path, config_prompt_givens_name)
|
|
519
541
|
config = ConfigManager.get_config()
|
|
520
|
-
dir_list = ["ara"] + [
|
|
542
|
+
dir_list = ["ara"] + [path for d in config.ext_code_dirs for path in d.values()] + [config.doc_dir] + [config.glossary_dir]
|
|
521
543
|
|
|
522
544
|
print(f"used {dir_list} for prompt givens file listing")
|
|
523
545
|
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.
|
|
2
|
+
__version__ = "0.1.9.93" # 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.93
|
|
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
|