ara-cli 0.1.9.62__tar.gz → 0.1.9.63__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.62 → ara_cli-0.1.9.63}/PKG-INFO +1 -1
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/README.md +9 -11
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/ara_command_action.py +4 -1
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/ara_command_parser.py +1 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/artefact_autofix.py +20 -8
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/artefact_models/artefact_model.py +1 -1
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/artefact_models/businessgoal_artefact_model.py +6 -1
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/artefact_models/epic_artefact_model.py +6 -1
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/artefact_models/feature_artefact_model.py +8 -3
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/artefact_models/keyfeature_artefact_model.py +6 -1
- ara_cli-0.1.9.63/ara_cli/artefact_models/serialize_helper.py +18 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/artefact_models/userstory_artefact_model.py +6 -1
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/artefact_scan.py +2 -0
- ara_cli-0.1.9.63/ara_cli/tag_extractor.py +56 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/version.py +1 -1
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli.egg-info/PKG-INFO +1 -1
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli.egg-info/SOURCES.txt +1 -0
- ara_cli-0.1.9.62/ara_cli/tag_extractor.py +0 -31
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/MANIFEST.in +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/__init__.py +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/__main__.py +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/ara_config.py +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/artefact_creator.py +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/artefact_deleter.py +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/artefact_fuzzy_search.py +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/artefact_link_updater.py +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/artefact_lister.py +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/artefact_models/artefact_load.py +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/artefact_models/artefact_mapping.py +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/artefact_models/artefact_templates.py +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/artefact_models/capability_artefact_model.py +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/artefact_models/example_artefact_model.py +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/artefact_models/issue_artefact_model.py +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/artefact_models/task_artefact_model.py +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/artefact_models/vision_artefact_model.py +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/artefact_reader.py +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/artefact_renamer.py +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/chat.py +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/classifier.py +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/codefusionretriever.py +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/codehierachieretriever.py +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/commandline_completer.py +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/directory_navigator.py +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/file_classifier.py +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/file_lister.py +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/filename_validator.py +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/list_filter.py +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/output_suppressor.py +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/prompt_chat.py +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/prompt_extractor.py +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/prompt_handler.py +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/prompt_rag.py +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/run_file_lister.py +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/template_manager.py +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/agile.artefacts +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/prompt-modules/blueprints/complete_pytest_unittest.blueprint.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/prompt-modules/blueprints/empty.blueprint.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/prompt-modules/blueprints/task_todo_list_C4_architecture_analysis.blueprint.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/prompt-modules/blueprints/task_todo_list_implement_feature_BDD_way.blueprint.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/prompt-modules/commands/architecture_C4_analysis.commands.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/prompt-modules/commands/architecture_radon_cc_score.commands.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/prompt-modules/commands/architecture_radon_halstead_v.commands.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/prompt-modules/commands/architecture_radon_maintainability_score.commands.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/prompt-modules/commands/artefact_classification.commands.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/prompt-modules/commands/artefact_extension.commands.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/prompt-modules/commands/artefact_formulation.commands.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/prompt-modules/commands/behave_step_generation.commands.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/prompt-modules/commands/code_generation_complex.commands.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/prompt-modules/commands/code_generation_simple.commands.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/prompt-modules/commands/empty.commands.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/prompt-modules/commands/error_fixing.commands.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/prompt-modules/commands/feature_file_update.commands.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/prompt-modules/commands/feature_formulation.commands.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/prompt-modules/commands/js_code_generation_simple.commands.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/prompt-modules/commands/refactoring.commands.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/prompt-modules/commands/refactoring_analysis.commands.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/prompt-modules/commands/reverse_engineer_feature_file.commands.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/prompt-modules/commands/reverse_engineer_program_flow.commands.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/prompt-modules/intentions/classify_task.intention.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/prompt-modules/intentions/empty.intention.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/prompt-modules/intentions/error_fixing.intention.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/prompt-modules/intentions/feature_fix_steps_for_scenario.intention.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/prompt-modules/intentions/feature_formulation.intention.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/prompt-modules/intentions/feature_reverse_formulation_from_code.intention.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/prompt-modules/intentions/feature_scenario_implementation.intention.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/prompt-modules/intentions/feature_scenario_implementation_update.intention.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/prompt-modules/intentions/feature_scenario_outline_extension.intention.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/prompt-modules/intentions/feature_update_formulation.intention.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/prompt-modules/intentions/fibonacci_example_implementation.intention.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/prompt-modules/intentions/js_implementation_from_task_description.intention.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/prompt-modules/intentions/js_steps_implementation.intention.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/prompt-modules/intentions/python_cli_implementation_with_test.intention.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/prompt-modules/intentions/python_code_understanding.intention.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/prompt-modules/intentions/task_implementation.intention.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/prompt-modules/intentions/task_prompt_control_by_status.intention.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/prompt-modules/intentions/task_stepwise_implementation_by_number.intention.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/prompt-modules/intentions/task_stepwise_implementation_by_status.intention.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/prompt-modules/rules/architecture_analyst.rules.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/prompt-modules/rules/code_analyst.rules.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/prompt-modules/rules/empty.rules.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/prompt-modules/rules/error_analyst.rules.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/prompt-modules/rules/gherkin_expert.rules.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/prompt-modules/rules/js_expert_developer.rules.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/prompt-modules/rules/product_owner.rules.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/prompt-modules/rules/python_behave.rules.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/prompt-modules/rules/python_developer.rules.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/specification_breakdown_files/template.concept.exploration.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/specification_breakdown_files/template.concept.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/specification_breakdown_files/template.customer.exploration.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/specification_breakdown_files/template.customer.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/specification_breakdown_files/template.persona.exploration.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/specification_breakdown_files/template.persona.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/specification_breakdown_files/template.step.exploration.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/specification_breakdown_files/template.step.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/specification_breakdown_files/template.technology.exploration.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/specification_breakdown_files/template.technology.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/template.businessgoal +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/template.businessgoal.prompt_log.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/template.capability +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/template.capability.prompt_log.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/template.epic +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/template.epic.prompt_log.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/template.example +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/template.example.prompt_log.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/template.feature +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/template.feature.prompt_log.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/template.issue +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/template.issue.prompt_log.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/template.keyfeature +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/template.keyfeature.prompt_log.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/template.steps.prompt_log.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/template.task +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/template.task.prompt_log.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/template.userstory +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/template.userstory.prompt_log.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/template.vision +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/template.vision.prompt_log.md +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/tests/__init__.py +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/tests/test_ara_autofix.py +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/tests/test_ara_command_action.py +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/tests/test_ara_config.py +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/tests/test_artefact_fuzzy_search.py +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/tests/test_artefact_link_updater.py +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/tests/test_artefact_lister.py +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/tests/test_artefact_reader.py +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/tests/test_artefact_renamer.py +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/tests/test_artefact_scan.py +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/tests/test_chat.py +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/tests/test_classifier.py +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/tests/test_directory_navigator.py +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/tests/test_file_classifier.py +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/tests/test_file_creator.py +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/tests/test_file_lister.py +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/tests/test_list_filter.py +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/tests/test_tag_extractor.py +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/tests/test_template_manager.py +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/tests/test_update_config_prompt.py +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/update_config_prompt.py +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli.egg-info/dependency_links.txt +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli.egg-info/entry_points.txt +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli.egg-info/requires.txt +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli.egg-info/top_level.txt +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/setup.cfg +0 -0
- {ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/setup.py +0 -0
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
- [update dependencies](#update-dependencies)
|
|
7
7
|
- [test and run during development](#test-and-run-during-development)
|
|
8
8
|
- [set version and build and install locally for testing outside of container](#set-version-and-build-and-install-locally-for-testing-outside-of-container)
|
|
9
|
+
- [upload to test pypi with test pypi API key](#upload-to-test-pypi-with-test-pypi-api-key)
|
|
9
10
|
- [upload to live pypi with talsen team production API key (from main branch)](#upload-to-live-pypi-with-talsen-team-production-api-key-from-main-branch)
|
|
10
11
|
|
|
11
12
|
# ara usage
|
|
@@ -58,8 +59,6 @@ To update dependencies, add package names in `setup.py`. The packages will ONLY
|
|
|
58
59
|
4. Test the functionality
|
|
59
60
|
|
|
60
61
|
|
|
61
|
-
<!--
|
|
62
|
-
#### DEPRECATED
|
|
63
62
|
## upload to test pypi with test pypi API key
|
|
64
63
|
1. run `bash deploy.sh`
|
|
65
64
|
2. run `login.sh`
|
|
@@ -74,20 +73,19 @@ twine upload --repository testpypi dist/* --verbose -u __token__ -p pypi-AgENdGV
|
|
|
74
73
|
|
|
75
74
|
this will upload to a test pypi account.
|
|
76
75
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
76
|
+
|
|
77
|
+
6. run `python3 -m pip install --index-url https://test.pypi.org/simple/ ara_cli==<VERSION>`
|
|
78
|
+
7. run `ara -h`
|
|
79
|
+
8. if everything has worked (upload, installation and usage) you can now continue to upload the package to pypi (live)
|
|
81
80
|
|
|
82
81
|
|
|
83
82
|
## upload to live pypi with talsen team production API key (from main branch)
|
|
84
83
|
1. run `bash deploy.sh`
|
|
85
84
|
2. run `login.sh`
|
|
86
|
-
3. from
|
|
87
|
-
4.
|
|
88
|
-
5. Get the
|
|
89
|
-
6.
|
|
90
|
-
7. run the following command:
|
|
85
|
+
3. `dist` folder should still be there from the testupload (otherwise do `python setup.py sdist bdist_wheel` inside the container again), do NOT upload to live without previously testing in test pypi!
|
|
86
|
+
4. Get the API-Key from [nextcloud](https://cloud.talsen.team/apps/keeweb/?open=%2Finfrastructure%2Fpublic-services%2Fapi-keys.kdbx)
|
|
87
|
+
5. Get the Password from Hans or DevOps
|
|
88
|
+
6. run the following command:
|
|
91
89
|
```bash
|
|
92
90
|
twine upload dist/* --verbose -u __token__ -p <API-Key>
|
|
93
91
|
```
|
|
@@ -128,7 +128,10 @@ def list_tags_action(args):
|
|
|
128
128
|
tag_classifier = args.include_classifier
|
|
129
129
|
|
|
130
130
|
tag_extractor = TagExtractor()
|
|
131
|
-
tags = tag_extractor.extract_tags(
|
|
131
|
+
tags = tag_extractor.extract_tags(
|
|
132
|
+
include_classifier=tag_classifier,
|
|
133
|
+
filtered_extra_column=getattr(args, "filtered_extra_column", False)
|
|
134
|
+
)
|
|
132
135
|
|
|
133
136
|
if args.json:
|
|
134
137
|
output = json.dumps({"tags": tags})
|
|
@@ -121,6 +121,7 @@ def list_tags_parser(subparsers):
|
|
|
121
121
|
tags_parser = subparsers.add_parser("list-tags", help="Show tags")
|
|
122
122
|
tags_parser.add_argument("--json", "-j", help="Output tags as JSON", action=argparse.BooleanOptionalAction)
|
|
123
123
|
tags_parser.add_argument("--include-classifier", choices=classifiers, help="Show tags for an artefact type")
|
|
124
|
+
tags_parser.add_argument("--filtered-extra-column", action="store_true", help="Filter tags for extra column")
|
|
124
125
|
|
|
125
126
|
|
|
126
127
|
def add_chat_arguments(chat_parser):
|
|
@@ -83,26 +83,38 @@ def construct_prompt(artefact_type, reason, file_path, artefact_text):
|
|
|
83
83
|
|
|
84
84
|
prompt = (
|
|
85
85
|
f"Correct the following {artefact_type} artefact to fix the issue: {reason}. "
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
86
|
+
"Provide the complete, corrected artefact. Do not reformulate the artefact, "
|
|
87
|
+
"just fix the pydantic model errors, use correct grammar. "
|
|
88
|
+
"Do not remove comments. "
|
|
89
|
+
"You should follow the name of the file "
|
|
90
|
+
f"from its path {file_path} for naming the arteafact's title. "
|
|
91
|
+
"You are not allowed to use file extention in the artefact title. "
|
|
92
|
+
"You are not allowed to modify, delete or add tags. "
|
|
93
|
+
"User tag should be '@user_<username>'. The pydantic model already provides the '@user_' prefix. "
|
|
94
|
+
"So you should be careful to not make it @user_user_<username>. "
|
|
89
95
|
)
|
|
90
96
|
|
|
91
97
|
if artefact_type == ArtefactType.task:
|
|
92
98
|
prompt += (
|
|
93
|
-
"
|
|
99
|
+
"For task artefacts, if the action items looks like template or empty "
|
|
94
100
|
"then just delete those action items."
|
|
95
|
-
"\nFor user tag it should be '@user_{username}'. So you should be careful to "
|
|
96
|
-
"not make it @user_user_{username}"
|
|
97
101
|
)
|
|
98
102
|
|
|
103
|
+
prompt += (
|
|
104
|
+
"\nThe current artefact is:\n"
|
|
105
|
+
"```\n"
|
|
106
|
+
f"{artefact_text}\n"
|
|
107
|
+
"```"
|
|
108
|
+
)
|
|
109
|
+
|
|
99
110
|
return prompt
|
|
100
111
|
|
|
101
112
|
|
|
102
113
|
def run_agent(prompt, artefact_class):
|
|
103
114
|
from pydantic_ai import Agent
|
|
104
|
-
|
|
105
|
-
|
|
115
|
+
# gpt-4o
|
|
116
|
+
# anthropic:claude-3-7-sonnet-20250219
|
|
117
|
+
agent = Agent(model="gpt-4o",
|
|
106
118
|
result_type=artefact_class, instrument=True)
|
|
107
119
|
result = agent.run_sync(prompt)
|
|
108
120
|
return result.data
|
|
@@ -179,7 +179,7 @@ class Artefact(BaseModel, ABC):
|
|
|
179
179
|
)
|
|
180
180
|
description: Optional[str] = Field(
|
|
181
181
|
default=None,
|
|
182
|
-
description="Optional further description to understand the artefact.
|
|
182
|
+
description="Optional further description to understand the artefact. The description should summerize the core intention of the artefact and give additional valuable information about the artefact."
|
|
183
183
|
)
|
|
184
184
|
|
|
185
185
|
@property
|
{ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/artefact_models/businessgoal_artefact_model.py
RENAMED
|
@@ -33,9 +33,14 @@ class BusinessgoalIntent(Intent):
|
|
|
33
33
|
return v
|
|
34
34
|
|
|
35
35
|
def serialize(self):
|
|
36
|
+
from ara_cli.artefact_models.serialize_helper import as_a_serializer
|
|
37
|
+
|
|
36
38
|
lines = []
|
|
39
|
+
|
|
40
|
+
as_a_line = as_a_serializer(self.as_a)
|
|
41
|
+
|
|
37
42
|
lines.append(f"In order to {self.in_order_to}")
|
|
38
|
-
lines.append(
|
|
43
|
+
lines.append(as_a_line)
|
|
39
44
|
lines.append(f"I want {self.i_want}")
|
|
40
45
|
|
|
41
46
|
return "\n".join(lines)
|
|
@@ -34,9 +34,14 @@ class EpicIntent(Intent):
|
|
|
34
34
|
return v
|
|
35
35
|
|
|
36
36
|
def serialize(self):
|
|
37
|
+
from ara_cli.artefact_models.serialize_helper import as_a_serializer
|
|
38
|
+
|
|
37
39
|
lines = []
|
|
40
|
+
|
|
41
|
+
as_a_line = as_a_serializer(self.as_a)
|
|
42
|
+
|
|
38
43
|
lines.append(f"In order to {self.in_order_to}")
|
|
39
|
-
lines.append(
|
|
44
|
+
lines.append(as_a_line)
|
|
40
45
|
lines.append(f"I want {self.i_want}")
|
|
41
46
|
|
|
42
47
|
return "\n".join(lines)
|
|
@@ -34,8 +34,13 @@ class FeatureIntent(Intent):
|
|
|
34
34
|
return v
|
|
35
35
|
|
|
36
36
|
def serialize(self):
|
|
37
|
+
from ara_cli.artefact_models.serialize_helper import as_a_serializer
|
|
38
|
+
|
|
37
39
|
lines = []
|
|
38
|
-
|
|
40
|
+
|
|
41
|
+
as_a_line = as_a_serializer(self.as_a)
|
|
42
|
+
|
|
43
|
+
lines.append(as_a_line)
|
|
39
44
|
lines.append(f"I want to {self.i_want_to}")
|
|
40
45
|
lines.append(f"So that {self.so_that}")
|
|
41
46
|
|
|
@@ -59,9 +64,9 @@ class FeatureIntent(Intent):
|
|
|
59
64
|
as_a = line[len(as_a_prefix):].strip()
|
|
60
65
|
if line.startswith(as_a_prefix_alt) and not as_a:
|
|
61
66
|
as_a = line[len(as_a_prefix_alt):].strip()
|
|
62
|
-
|
|
67
|
+
if line.startswith(i_want_to_prefix) and not i_want_to:
|
|
63
68
|
i_want_to = line[len(i_want_to_prefix):].strip()
|
|
64
|
-
|
|
69
|
+
if line.startswith(so_that_prefix) and not so_that:
|
|
65
70
|
so_that = line[len(so_that_prefix):].strip()
|
|
66
71
|
index += 1
|
|
67
72
|
|
|
@@ -33,9 +33,14 @@ class KeyfeatureIntent(Intent):
|
|
|
33
33
|
return v
|
|
34
34
|
|
|
35
35
|
def serialize(self):
|
|
36
|
+
from ara_cli.artefact_models.serialize_helper import as_a_serializer
|
|
37
|
+
|
|
36
38
|
lines = []
|
|
39
|
+
|
|
40
|
+
as_a_line = as_a_serializer(self.as_a)
|
|
41
|
+
|
|
37
42
|
lines.append(f"In order to {self.in_order_to}")
|
|
38
|
-
lines.append(
|
|
43
|
+
lines.append(as_a_line)
|
|
39
44
|
lines.append(f"I want {self.i_want}")
|
|
40
45
|
|
|
41
46
|
return "\n".join(lines)
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
def as_a_serializer(as_a):
|
|
2
|
+
role = as_a.strip()
|
|
3
|
+
|
|
4
|
+
exceptions_for_a = ('user', 'university', 'one-time', 'european', 'unit')
|
|
5
|
+
exceptions_for_an = ('hour', 'honest', 'heir')
|
|
6
|
+
role_lower = role.lower()
|
|
7
|
+
as_a_prefix = ""
|
|
8
|
+
|
|
9
|
+
if any(role_lower.startswith(e) for e in exceptions_for_a):
|
|
10
|
+
as_a_prefix = "As a"
|
|
11
|
+
elif any(role_lower.startswith(e) for e in exceptions_for_an):
|
|
12
|
+
as_a_prefix = "As an"
|
|
13
|
+
elif role_lower.startswith(('a', 'e', 'i', 'o', 'u')):
|
|
14
|
+
as_a_prefix = "As an"
|
|
15
|
+
else:
|
|
16
|
+
as_a_prefix = "As a"
|
|
17
|
+
|
|
18
|
+
return f"{as_a_prefix} {role}"
|
|
@@ -33,9 +33,14 @@ class UserstoryIntent(Intent):
|
|
|
33
33
|
return v
|
|
34
34
|
|
|
35
35
|
def serialize(self):
|
|
36
|
+
from ara_cli.artefact_models.serialize_helper import as_a_serializer
|
|
37
|
+
|
|
36
38
|
lines = []
|
|
39
|
+
|
|
40
|
+
as_a_line = as_a_serializer(self.as_a)
|
|
41
|
+
|
|
37
42
|
lines.append(f"In order to {self.in_order_to}")
|
|
38
|
-
lines.append(
|
|
43
|
+
lines.append(as_a_line)
|
|
39
44
|
lines.append(f"I want {self.i_want}")
|
|
40
45
|
|
|
41
46
|
return "\n".join(lines)
|
|
@@ -25,6 +25,8 @@ def find_invalid_files(classified_artefact_info, classifier):
|
|
|
25
25
|
for artefact_info in classified_artefact_info[classifier]:
|
|
26
26
|
if "templates/" in artefact_info["file_path"]:
|
|
27
27
|
continue
|
|
28
|
+
if ".data" in artefact_info["file_path"]:
|
|
29
|
+
continue
|
|
28
30
|
is_valid, reason = check_file(artefact_info["file_path"], artefact_class)
|
|
29
31
|
if not is_valid:
|
|
30
32
|
invalid_files.append((artefact_info["file_path"], reason))
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import os
|
|
2
|
+
from ara_cli.artefact_models.artefact_load import artefact_from_content
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class TagExtractor:
|
|
6
|
+
def __init__(self, file_system=None):
|
|
7
|
+
self.file_system = file_system or os
|
|
8
|
+
|
|
9
|
+
def extract_tags(self, navigate_to_target=False, include_classifier=None, filtered_extra_column=False):
|
|
10
|
+
from ara_cli.template_manager import DirectoryNavigator
|
|
11
|
+
from ara_cli.artefact_reader import ArtefactReader
|
|
12
|
+
|
|
13
|
+
navigator = DirectoryNavigator()
|
|
14
|
+
if navigate_to_target:
|
|
15
|
+
navigator.navigate_to_target()
|
|
16
|
+
|
|
17
|
+
artefacts = ArtefactReader.read_artefacts()
|
|
18
|
+
|
|
19
|
+
if include_classifier:
|
|
20
|
+
artefacts = {include_classifier: artefacts[include_classifier]}
|
|
21
|
+
|
|
22
|
+
unique_tags = set()
|
|
23
|
+
|
|
24
|
+
if filtered_extra_column:
|
|
25
|
+
status_tags = {"to-do", "in-progress", "review", "done", "closed"}
|
|
26
|
+
filtered_artefacts = []
|
|
27
|
+
|
|
28
|
+
for artefact_list in artefacts.values():
|
|
29
|
+
for artefact in artefact_list:
|
|
30
|
+
tags = artefact.tags + \
|
|
31
|
+
[artefact.status] if artefact.status else artefact.tags
|
|
32
|
+
tag_set = set(tag for tag in tags if tag is not None)
|
|
33
|
+
if not tag_set & status_tags:
|
|
34
|
+
filtered_artefacts.append(artefact)
|
|
35
|
+
|
|
36
|
+
for artefact in filtered_artefacts:
|
|
37
|
+
tags = [tag for tag in (
|
|
38
|
+
artefact.tags + [artefact.status]) if tag is not None]
|
|
39
|
+
for tag in tags:
|
|
40
|
+
if (
|
|
41
|
+
tag in status_tags
|
|
42
|
+
or tag.startswith("priority_")
|
|
43
|
+
or tag.startswith("user_")
|
|
44
|
+
):
|
|
45
|
+
continue
|
|
46
|
+
unique_tags.add(tag)
|
|
47
|
+
|
|
48
|
+
else:
|
|
49
|
+
for artefact_list in artefacts.values():
|
|
50
|
+
for artefact in artefact_list:
|
|
51
|
+
user_tags = [f"user_{tag}" for tag in artefact.users]
|
|
52
|
+
tags = [tag for tag in (artefact.tags + [artefact.status] + user_tags) if tag is not None]
|
|
53
|
+
unique_tags.update(tags)
|
|
54
|
+
|
|
55
|
+
sorted_tags = sorted(unique_tags)
|
|
56
|
+
return sorted_tags
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
# version.py
|
|
2
|
-
__version__ = "0.1.9.
|
|
2
|
+
__version__ = "0.1.9.63" # fith parameter like .0 for local install test purposes only. official numbers should be 4 digit numbers
|
|
@@ -52,6 +52,7 @@ ara_cli/artefact_models/example_artefact_model.py
|
|
|
52
52
|
ara_cli/artefact_models/feature_artefact_model.py
|
|
53
53
|
ara_cli/artefact_models/issue_artefact_model.py
|
|
54
54
|
ara_cli/artefact_models/keyfeature_artefact_model.py
|
|
55
|
+
ara_cli/artefact_models/serialize_helper.py
|
|
55
56
|
ara_cli/artefact_models/task_artefact_model.py
|
|
56
57
|
ara_cli/artefact_models/userstory_artefact_model.py
|
|
57
58
|
ara_cli/artefact_models/vision_artefact_model.py
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import os
|
|
2
|
-
from ara_cli.artefact_models.artefact_load import artefact_from_content
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
class TagExtractor:
|
|
6
|
-
def __init__(self, file_system=None):
|
|
7
|
-
self.file_system = file_system or os
|
|
8
|
-
|
|
9
|
-
def extract_tags(self, navigate_to_target=False, include_classifier=None):
|
|
10
|
-
from ara_cli.template_manager import DirectoryNavigator
|
|
11
|
-
from ara_cli.artefact_reader import ArtefactReader
|
|
12
|
-
|
|
13
|
-
navigator = DirectoryNavigator()
|
|
14
|
-
if navigate_to_target:
|
|
15
|
-
navigator.navigate_to_target()
|
|
16
|
-
|
|
17
|
-
artefacts = ArtefactReader.read_artefacts()
|
|
18
|
-
|
|
19
|
-
if include_classifier:
|
|
20
|
-
artefacts = {include_classifier: artefacts[include_classifier]}
|
|
21
|
-
|
|
22
|
-
unique_tags = set()
|
|
23
|
-
|
|
24
|
-
for artefact_list in artefacts.values():
|
|
25
|
-
for artefact in artefact_list:
|
|
26
|
-
user_tags = [f"user_{tag}" for tag in artefact.users]
|
|
27
|
-
tags = [tag for tag in (artefact.tags + [artefact.status] + user_tags) if tag is not None]
|
|
28
|
-
unique_tags.update(tags)
|
|
29
|
-
|
|
30
|
-
sorted_tags = sorted(unique_tags)
|
|
31
|
-
return sorted_tags
|
|
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
|
{ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/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.62 → ara_cli-0.1.9.63}/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.62 → ara_cli-0.1.9.63}/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.62 → ara_cli-0.1.9.63}/ara_cli/templates/prompt-modules/rules/code_analyst.rules.md
RENAMED
|
File without changes
|
|
File without changes
|
{ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/prompt-modules/rules/error_analyst.rules.md
RENAMED
|
File without changes
|
{ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/prompt-modules/rules/gherkin_expert.rules.md
RENAMED
|
File without changes
|
|
File without changes
|
{ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/ara_cli/templates/prompt-modules/rules/product_owner.rules.md
RENAMED
|
File without changes
|
{ara_cli-0.1.9.62 → ara_cli-0.1.9.63}/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
|
|
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
|