ara-cli 0.1.10.5__py3-none-any.whl → 0.1.14.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. ara_cli/__init__.py +51 -6
  2. ara_cli/__main__.py +87 -75
  3. ara_cli/ara_command_action.py +189 -101
  4. ara_cli/ara_config.py +187 -128
  5. ara_cli/ara_subcommands/common.py +2 -2
  6. ara_cli/ara_subcommands/config.py +221 -0
  7. ara_cli/ara_subcommands/convert.py +107 -0
  8. ara_cli/ara_subcommands/fetch.py +41 -0
  9. ara_cli/ara_subcommands/fetch_agents.py +22 -0
  10. ara_cli/ara_subcommands/fetch_scripts.py +19 -0
  11. ara_cli/ara_subcommands/fetch_templates.py +15 -10
  12. ara_cli/ara_subcommands/list.py +97 -23
  13. ara_cli/ara_subcommands/prompt.py +266 -106
  14. ara_cli/artefact_autofix.py +117 -64
  15. ara_cli/artefact_converter.py +355 -0
  16. ara_cli/artefact_creator.py +41 -17
  17. ara_cli/artefact_lister.py +3 -3
  18. ara_cli/artefact_models/artefact_model.py +1 -1
  19. ara_cli/artefact_models/artefact_templates.py +0 -9
  20. ara_cli/artefact_models/feature_artefact_model.py +8 -8
  21. ara_cli/artefact_reader.py +62 -43
  22. ara_cli/artefact_scan.py +39 -17
  23. ara_cli/chat.py +300 -71
  24. ara_cli/chat_agent/__init__.py +0 -0
  25. ara_cli/chat_agent/agent_process_manager.py +155 -0
  26. ara_cli/chat_script_runner/__init__.py +0 -0
  27. ara_cli/chat_script_runner/script_completer.py +23 -0
  28. ara_cli/chat_script_runner/script_finder.py +41 -0
  29. ara_cli/chat_script_runner/script_lister.py +36 -0
  30. ara_cli/chat_script_runner/script_runner.py +36 -0
  31. ara_cli/chat_web_search/__init__.py +0 -0
  32. ara_cli/chat_web_search/web_search.py +263 -0
  33. ara_cli/children_contribution_updater.py +737 -0
  34. ara_cli/classifier.py +34 -0
  35. ara_cli/commands/agent_run_command.py +98 -0
  36. ara_cli/commands/fetch_agents_command.py +106 -0
  37. ara_cli/commands/fetch_scripts_command.py +43 -0
  38. ara_cli/commands/fetch_templates_command.py +39 -0
  39. ara_cli/commands/fetch_templates_commands.py +39 -0
  40. ara_cli/commands/list_agents_command.py +39 -0
  41. ara_cli/commands/load_command.py +4 -3
  42. ara_cli/commands/load_image_command.py +1 -1
  43. ara_cli/commands/read_command.py +23 -27
  44. ara_cli/completers.py +95 -35
  45. ara_cli/constants.py +2 -0
  46. ara_cli/directory_navigator.py +37 -4
  47. ara_cli/error_handler.py +26 -11
  48. ara_cli/file_loaders/document_reader.py +0 -178
  49. ara_cli/file_loaders/factories/__init__.py +0 -0
  50. ara_cli/file_loaders/factories/document_reader_factory.py +32 -0
  51. ara_cli/file_loaders/factories/file_loader_factory.py +27 -0
  52. ara_cli/file_loaders/file_loader.py +1 -30
  53. ara_cli/file_loaders/loaders/__init__.py +0 -0
  54. ara_cli/file_loaders/{document_file_loader.py → loaders/document_file_loader.py} +1 -1
  55. ara_cli/file_loaders/loaders/text_file_loader.py +47 -0
  56. ara_cli/file_loaders/readers/__init__.py +0 -0
  57. ara_cli/file_loaders/readers/docx_reader.py +49 -0
  58. ara_cli/file_loaders/readers/excel_reader.py +27 -0
  59. ara_cli/file_loaders/{markdown_reader.py → readers/markdown_reader.py} +1 -1
  60. ara_cli/file_loaders/readers/odt_reader.py +59 -0
  61. ara_cli/file_loaders/readers/pdf_reader.py +54 -0
  62. ara_cli/file_loaders/readers/pptx_reader.py +104 -0
  63. ara_cli/file_loaders/tools/__init__.py +0 -0
  64. ara_cli/llm_utils.py +58 -0
  65. ara_cli/output_suppressor.py +53 -0
  66. ara_cli/prompt_chat.py +20 -4
  67. ara_cli/prompt_extractor.py +47 -32
  68. ara_cli/prompt_handler.py +123 -17
  69. ara_cli/tag_extractor.py +8 -7
  70. ara_cli/template_loader.py +2 -1
  71. ara_cli/template_manager.py +52 -21
  72. ara_cli/templates/global-scripts/hello_global.py +1 -0
  73. ara_cli/templates/prompt-modules/commands/add_scenarios_for_new_behaviour.feature_creation_agent.commands.md +1 -0
  74. ara_cli/templates/prompt-modules/commands/align_feature_with_implementation_changes.interview_agent.commands.md +1 -0
  75. ara_cli/templates/prompt-modules/commands/analyze_codebase_and_plan_tasks.interview_agent.commands.md +1 -0
  76. ara_cli/templates/prompt-modules/commands/choose_best_parent_artefact.interview_agent.commands.md +1 -0
  77. ara_cli/templates/prompt-modules/commands/create_tasks_from_artefact_content.interview_agent.commands.md +1 -0
  78. ara_cli/templates/prompt-modules/commands/create_tests_for_uncovered_modules.test_generation_agent.commands.md +1 -0
  79. ara_cli/templates/prompt-modules/commands/derive_features_from_video_description.feature_creation_agent.commands.md +1 -0
  80. ara_cli/templates/prompt-modules/commands/describe_agent_capabilities.agent.commands.md +1 -0
  81. ara_cli/templates/prompt-modules/commands/empty.commands.md +2 -12
  82. ara_cli/templates/prompt-modules/commands/execute_scoped_todos_in_task.interview_agent.commands.md +1 -0
  83. ara_cli/templates/prompt-modules/commands/explain_single_file_purpose.interview_agent.commands.md +1 -0
  84. ara_cli/templates/prompt-modules/commands/extract_file_information_bullets.interview_agent.commands.md +1 -0
  85. ara_cli/templates/prompt-modules/commands/extract_general.commands.md +12 -0
  86. ara_cli/templates/prompt-modules/commands/extract_markdown.commands.md +11 -0
  87. ara_cli/templates/prompt-modules/commands/extract_python.commands.md +13 -0
  88. ara_cli/templates/prompt-modules/commands/feature_add_or_modifiy_specified_behavior.commands.md +36 -0
  89. ara_cli/templates/prompt-modules/commands/feature_generate_initial_specified_bevahior.commands.md +53 -0
  90. ara_cli/templates/prompt-modules/commands/fix_failing_behave_step_definitions.interview_agent.commands.md +1 -0
  91. ara_cli/templates/prompt-modules/commands/fix_failing_pytest_tests.interview_agent.commands.md +1 -0
  92. ara_cli/templates/prompt-modules/commands/general_instruction_policy.commands.md +47 -0
  93. ara_cli/templates/prompt-modules/commands/generate_and_fix_pytest_tests.test_generation_agent.commands.md +1 -0
  94. ara_cli/templates/prompt-modules/commands/prompt_template_tech_stack_transformer.commands.md +95 -0
  95. ara_cli/templates/prompt-modules/commands/python_bug_fixing_code.commands.md +34 -0
  96. ara_cli/templates/prompt-modules/commands/python_generate_code.commands.md +27 -0
  97. ara_cli/templates/prompt-modules/commands/python_refactoring_code.commands.md +39 -0
  98. ara_cli/templates/prompt-modules/commands/python_step_definitions_generation_and_fixing.commands.md +40 -0
  99. ara_cli/templates/prompt-modules/commands/python_unittest_generation_and_fixing.commands.md +48 -0
  100. ara_cli/templates/prompt-modules/commands/suggest_next_story_child_tasks.interview_agent.commands.md +1 -0
  101. ara_cli/templates/prompt-modules/commands/summarize_or_transcribe_media.interview_agent.commands.md +1 -0
  102. ara_cli/templates/prompt-modules/commands/update_feature_to_match_implementation.feature_creation_agent.commands.md +1 -0
  103. ara_cli/templates/prompt-modules/commands/update_user_story_with_requirements.interview_agent.commands.md +1 -0
  104. ara_cli/version.py +1 -1
  105. {ara_cli-0.1.10.5.dist-info → ara_cli-0.1.14.0.dist-info}/METADATA +49 -11
  106. ara_cli-0.1.14.0.dist-info/RECORD +253 -0
  107. {ara_cli-0.1.10.5.dist-info → ara_cli-0.1.14.0.dist-info}/WHEEL +1 -1
  108. tests/test_ara_command_action.py +31 -19
  109. tests/test_ara_config.py +177 -90
  110. tests/test_artefact_autofix.py +170 -97
  111. tests/test_artefact_autofix_integration.py +495 -0
  112. tests/test_artefact_converter.py +312 -0
  113. tests/test_artefact_extraction.py +564 -0
  114. tests/test_artefact_lister.py +11 -8
  115. tests/test_chat.py +166 -130
  116. tests/test_chat_givens_images.py +603 -0
  117. tests/test_chat_script_runner.py +454 -0
  118. tests/test_children_contribution_updater.py +98 -0
  119. tests/test_document_loader_office.py +267 -0
  120. tests/test_llm_utils.py +164 -0
  121. tests/test_prompt_chat.py +343 -0
  122. tests/test_prompt_extractor.py +683 -0
  123. tests/test_prompt_handler.py +416 -214
  124. tests/test_setup_default_chat_prompt_mode.py +198 -0
  125. tests/test_tag_extractor.py +95 -49
  126. tests/test_web_search.py +467 -0
  127. ara_cli/file_loaders/document_readers.py +0 -233
  128. ara_cli/file_loaders/file_loaders.py +0 -123
  129. ara_cli/file_loaders/text_file_loader.py +0 -187
  130. ara_cli/templates/prompt-modules/blueprints/complete_pytest_unittest.blueprint.md +0 -27
  131. ara_cli/templates/prompt-modules/blueprints/pytest_unittest_prompt.blueprint.md +0 -32
  132. ara_cli/templates/prompt-modules/blueprints/task_todo_list_implement_feature_BDD_way.blueprint.md +0 -30
  133. ara_cli/templates/prompt-modules/commands/artefact_classification.commands.md +0 -9
  134. ara_cli/templates/prompt-modules/commands/artefact_extension.commands.md +0 -17
  135. ara_cli/templates/prompt-modules/commands/artefact_formulation.commands.md +0 -14
  136. ara_cli/templates/prompt-modules/commands/behave_step_generation.commands.md +0 -102
  137. ara_cli/templates/prompt-modules/commands/code_generation_complex.commands.md +0 -20
  138. ara_cli/templates/prompt-modules/commands/code_generation_simple.commands.md +0 -13
  139. ara_cli/templates/prompt-modules/commands/error_fixing.commands.md +0 -20
  140. ara_cli/templates/prompt-modules/commands/feature_file_update.commands.md +0 -18
  141. ara_cli/templates/prompt-modules/commands/feature_formulation.commands.md +0 -43
  142. ara_cli/templates/prompt-modules/commands/js_code_generation_simple.commands.md +0 -13
  143. ara_cli/templates/prompt-modules/commands/refactoring.commands.md +0 -15
  144. ara_cli/templates/prompt-modules/commands/refactoring_analysis.commands.md +0 -9
  145. ara_cli/templates/prompt-modules/commands/reverse_engineer_feature_file.commands.md +0 -15
  146. ara_cli/templates/prompt-modules/commands/reverse_engineer_program_flow.commands.md +0 -19
  147. ara_cli-0.1.10.5.dist-info/RECORD +0 -194
  148. /ara_cli/file_loaders/{binary_file_loader.py → loaders/binary_file_loader.py} +0 -0
  149. /ara_cli/file_loaders/{image_processor.py → tools/image_processor.py} +0 -0
  150. {ara_cli-0.1.10.5.dist-info → ara_cli-0.1.14.0.dist-info}/entry_points.txt +0 -0
  151. {ara_cli-0.1.10.5.dist-info → ara_cli-0.1.14.0.dist-info}/top_level.txt +0 -0
@@ -1,14 +1,4 @@
1
1
  ### COMMANDS FOR ...
2
2
  Your job is now:
3
- * remember you are strictly following your given RULES AS EXPERT <role defined in rules file> for code and architectural code quality
4
- * ...
5
-
6
- * return your results in the following format, ensuring your generated code blocks are not just code snippets but at complete method levels. Use for every single generated code block this format:
7
- ```python
8
- # [ ] extract
9
- # filename: {path/filename}.py
10
- {python code}
11
- ```
12
- * the extract and filename statements are only allowed once per code block
13
-
14
- * in case you think information is missing in order to generate a suffiently precise formulation, return a warning "WARNING: information is missing to correctly fullfill the job!" and then explain what kind of information you think is missing and how I could easily retrieve it.
3
+ * <main list for mandotory commands>
4
+ * ...
@@ -0,0 +1 @@
1
+ In the task file at {task_file_path}, there are multiple TODOs. Perform only the TODOs that relate to {todo_scope_description} (for example, Docker image builds, logging clean-up, or UI copy changes), implement the required changes, and then mark only those relevant TODOs as completed inside the task file.
@@ -0,0 +1 @@
1
+ What is this file about: {input_file_path}? Read the file using the appropriate tools and return a concise explanation of its purpose, structure, and key domain concepts.
@@ -0,0 +1 @@
1
+ Read the file at {input_file_path} and extract all key information into bullet points. Group the bullets by topic (for example: decisions, open questions, action items) and avoid repeating minor details.
@@ -0,0 +1,12 @@
1
+ # general file generation and file extract instructions
2
+ * return only full copy pastable file content using this markdown codeblock format with 5 backticks:
3
+ `````
4
+ # [ ] extract
5
+ # filename: <absolute filepath>/<filename>.<file_extension>
6
+ {valid file content depending on the given file_extension}
7
+ `````
8
+
9
+ * The extract and filename statements are only allowed once per markdown code block
10
+ * The first character of the first line inside your code block must be '#' and the first character of the second line inside your code block must be '#'
11
+ * replace the '# [ ] extract' statement of the template with '# [x] extract' in your response
12
+ * in case of files get deprecated give me a list of files that can be safely deleted
@@ -0,0 +1,11 @@
1
+ # general markdown file generation and file extract instructions
2
+ * return full copy pastable file content using a markdown code block with 5-backticks:
3
+ `````
4
+ # [ ] extract
5
+ # filename: <filepath>/<filename>.md
6
+ {markdown formatted text}
7
+ `````
8
+ * The extract and filename statements are only allowed once per markdown code block
9
+ * The first character of the first line inside your code block must be '#' and the first character of the second line inside your code block must be '#'
10
+ * replace the '# [ ] extract' statement of the template with '# [x] extract' in your response
11
+ * in case of files get deprecated give me a list of files that can be safely deleted
@@ -0,0 +1,13 @@
1
+ # general python code file generation and file extract instructions
2
+ * return only full copy pastable file content using this markdown codeblock format:
3
+
4
+ ```python
5
+ # [ ] extract
6
+ # filename: src/{filename}.py
7
+ {python code}
8
+
9
+ ```
10
+ * The extract and filename statements are only allowed once per markdown code block
11
+ * The first character of the first line inside your code block must be '#' and the first character of the second line inside your code block must be '#'
12
+ * replace the '# [ ] extract' statement of the template with '# [x] extract' in your response
13
+ * in case of files get deprecated give me a list of files that can be safely deleted
@@ -0,0 +1,36 @@
1
+ # COMMANDS FOR ADDING OR MODIFYING EXISTING SPECIFIED BEHAVIOR
2
+
3
+ **At first**:
4
+
5
+ Check if a set of feature files is given
6
+
7
+ * In case no feature files are given:
8
+ * Stop immediately and respond with: "Error in prompt context: no feature files are given as already specified application behavior"
9
+
10
+ * Else:
11
+ * Continue following the given instructions
12
+
13
+ # Instructions
14
+ Your job is now:
15
+ * Silently analyze the given feature files and the specified behavior.
16
+ * Silently analyze the additionally given information about new wanted behavior or changes of existing behavior
17
+ * Develop adaptation strategies that minimize feature file changes with respect to any given already existing feature files, prefer reusing and adapting existing formulations/scenarios and steps over completely new formulations
18
+ * Now formulate to fully cover the new or changed behavior (one, two or many changed or new feature files)
19
+
20
+ Follow these feature file quality rules:
21
+ * Each feature file should not consist of more than max 3 scenarios, each feature file should follow the single responsibility principle as well as the feature file formulations should follow the separation of concerns of feature files that fully cover the human user observable behavior described in the specification notes. Consider in your formulation of the Gherkin feature files that, when implementing the graphical user interfaces, the full functionality of the Python package Streamlit can be utilized.
22
+ * Follow strictly the given feature file format in order to structure your feature files.
23
+ * You are allowed to use scenario outlines where useful. But in case they are not helpful in order to increase the readability you can just use standard scenario formulations.
24
+
25
+ * Wrap and return the formulated feature files as full copy pastable file content in the following format as markdown code block:
26
+
27
+ ```artefact
28
+ # [ ] extract
29
+ # filename: ara/features/{filename}.feature
30
+ {formulation, with the valid feature file structure following the given feature files as reference}
31
+ ```
32
+
33
+ * The extract and filename statements are only allowed once per markdown code block
34
+ * The first character of the first line inside your code block must be '#' and the first character of the second line inside your code block must be '#'
35
+ * replace the '# [ ] extract' statement of the template with '# [x] extract' in your response
36
+ * in case of files get deprecated give me a list of files that can be safely deleted
@@ -0,0 +1,53 @@
1
+ # COMMANDS FOR INITIALLY SPECIFYING APPLICATION BEHAVIOR USING FEATURE FILES
2
+
3
+ * Given a description of the wanted application behavior as bullet point list, specification document, ...
4
+
5
+ * And given this feature template with placeholders in <...>
6
+
7
+ ```
8
+ @creator_Egermeier
9
+ Feature: <descriptive title>
10
+
11
+ As a <user>
12
+ I want to <do something | need something>
13
+ So that <I can achieve something>
14
+
15
+ Contributes to <here comes your parent artefact> <here comes your classifier of the parent artefact>
16
+
17
+ Description: <further optional description to understand
18
+ the rule, no format defined, the example artefact is only a placeholder>
19
+
20
+ Scenario: <descriptive scenario title>
21
+ Given <precondition>
22
+ When <action>
23
+ Then <expected result>
24
+
25
+ Scenario Outline: <descriptive scenario title>
26
+ Given <precondition>
27
+ When <action>
28
+ Then <expected result>
29
+
30
+ Examples:
31
+ | descriptive scenario title | precondition | action | expected result |
32
+ | <example title 1> | <example precond. 1> | <example action 1> | <example result 1> |
33
+ | <example title 2> | <example precond. 2> | <example action 2> | <example result 2> |
34
+ ```
35
+
36
+ # Instructions
37
+ * Now formulate a set (one, two or many, each feature file should not consist of more than max 3 scenarios
38
+ * Each feature file should follow the single responsibility principle as well as the feature file formulations should follow the separation of concerns) of feature files that fully cover the human user observable behavior described in the specification notes.
39
+ * Consider in your formulation of the Gherkin feature files when specifying the behavior of graphical user interfaces: Describe the behavior of the graphical user interfaces so that I can clearly imagine both how they work and their visual look and feel.
40
+ * Follow strictly the given template format in order to structure your feature files. You are allowed to use scenario outlines where useful. But in case they are not helpful in order to increase the readability you can just use standard scenario formulations.
41
+
42
+ * Wrap and return the formulated feature files as full copy pastable file content in the following format as markdown code block:
43
+
44
+ ```artefact
45
+ # [ ] extract
46
+ # filename: ara/features/{filename}.feature
47
+ {formulation, with the valid feature file structure as given by the feature gherkin template}
48
+ ```
49
+
50
+ * The extract and filename statements are only allowed once per markdown code block
51
+ * The first character of the first line inside your code block must be '#' and the first character of the second line inside your code block must be '#'
52
+ * replace the '# [ ] extract' statement of the template with '# [x] extract' in your response
53
+ * in case of files get deprecated give me a list of files that can be safely deleted
@@ -0,0 +1 @@
1
+ After the feature file {feature_file_path} was updated to reflect the changed functionality in {implementation_file_path}, the step definitions in {step_definitions_file_path} started failing. Run behave for this feature file, observe the failures, fix the step definitions, write the changes to disk, and repeat the cycle until all scenarios pass.
@@ -0,0 +1 @@
1
+ After the implementation file {implementation_file_path} was updated, the tests in {pytest_file_path} are failing. Run pytest for this test file, observe the results, fix the tests, write the changes to disk, and run pytest again. Continue the cycle until all tests pass.
@@ -0,0 +1,47 @@
1
+ You are to generate a response that may include Markdown, code blocks, or content that itself contains backticks.
2
+
3
+ To ensure correct rendering follow this fencing policy:
4
+
5
+ - Code files: wrap each file’s output in a triple-backtick fence labeled with the file extension (e.g., ```py, ```js, ```json).
6
+ - Markdown or plain-text files: wrap each file’s output in a five-backtick fence labeled with md or txt (e.g., `````md or `````txt).
7
+ - Do not use dynamic or variable-length fences. Only use:
8
+ - 3 backticks for code file types.
9
+ - 5 backticks for .md and .txt files.
10
+
11
+ File block structure (mandatory, exact)
12
+ - Each file must be returned in its own fenced block with this exact header format as the first two lines:
13
+ 1) "# [x] extract"
14
+ 2) "# filename: <absolute filepath>/<filename>.<extension>"
15
+ - After these two lines, include the exact file content.
16
+ - The first character of line 1 and line 2 inside the fence must be '#'.
17
+ - The "# [x] extract" and "# filename:" headers must appear exactly once per fenced block.
18
+
19
+ In case of nested code inside file contents
20
+ - If the file content itself needs code blocks:
21
+ - Use standard triple backticks (```) inside the file content and for the outer fence five backticks (`````).
22
+ - For Markdown/Text files, this is safe because the outer fence is five backticks.
23
+ - For Code files, avoid embedding literal triple-backtick sequences inside the file content to prevent fence collisions. If unavoidable, ask the user to approve an .md/.txt wrapper instead.
24
+
25
+ Template examples
26
+
27
+ Code file (e.g., Python):
28
+ ```py
29
+ # [x] extract
30
+ # filename: /abs/path/app.py
31
+ print("Hello")
32
+ ```
33
+
34
+ Markdown file:
35
+ `````md
36
+ # [x] extract
37
+ # filename: /abs/path/README.md
38
+ # Project Title
39
+ Some docs with a code block:
40
+
41
+ ```js
42
+ console.log("hi");
43
+ ```
44
+ `````
45
+
46
+
47
+
@@ -0,0 +1 @@
1
+ Generate pytest tests for the modules listed in {target_module_paths}, starting with {primary_module_name}. Aim for high coverage.
@@ -0,0 +1,95 @@
1
+ # Tech Stack Prompt Template Transformer
2
+
3
+ ## PROMPT:
4
+ You are a prompt template transformation specialist. Your task is to transform Python-specific prompt templates into equivalent templates for a different technology stack while maintaining the same structure, intent, and quality standards.
5
+
6
+ ### INPUT REQUIREMENTS:
7
+ 1. **Target Technology Stack** (MANDATORY): The technology stack to transform to (e.g., 'C#', 'Java', 'React', 'TypeScript', 'Go', 'Rust', etc.)
8
+ 2. **Source Prompt Templates** (MANDATORY): One or more Python prompt templates to transform
9
+
10
+ ### TRANSFORMATION RULES:
11
+ 1. **Preserve Structure and Intent**:
12
+ - Maintain the same logical flow and purpose of each prompt template
13
+ - Keep all sections and their hierarchical organization
14
+ - Preserve the extract/filename format for code generation
15
+
16
+ 2. **Technology-Specific Adaptations**:
17
+ - Replace Python-specific references with target technology equivalents
18
+ - Update file extensions (.py → appropriate extension for target stack)
19
+ - Adapt coding standards (PEP8 → target language conventions)
20
+ - Replace Python packages with target language equivalents
21
+ - Update testing frameworks (pytest/behave → target language testing tools)
22
+ - Adapt documentation styles (numpy docstrings → target language documentation)
23
+ - Update logging approaches to target language standards
24
+ - Adjust line/method/class length limits based on target language best practices. Prefer lower length limits.
25
+
26
+ 3. **Naming Convention**:
27
+ - Prefix each transformed template filename with the target technology
28
+ - Example: `python_bug_fixing_code.commands.md` → `csharp_bug_fixing_code.commands.md`
29
+
30
+ 4. **Output Format**:
31
+ - Return each transformed template as a complete, copy-pastable markdown file in 5-backticks
32
+ - The first character of the first line inside your code block must be '#' and the first character of the second line inside your code block must be '#'
33
+ - Use this format for each transformed template:
34
+
35
+ `````markdown
36
+ # [ ] extract
37
+ # filename: ara/.araconfig/custom-prompt-modules/commands/{technology}_{original_template_name}
38
+ {transformed template content}
39
+ `````
40
+
41
+ 5. Markdown code block handling in prompt templates
42
+ The first and the second line of the Markdown code blocks used in the prompt templates serve as extraction control commands. the '#' tags in the first and second line of the code blocks must not be replaced by any other symbols, independent of the technology for which the markdown code block response is defined
43
+
44
+ 6. **Technology Mapping Guidelines**:
45
+ **For C#/.NET:**
46
+ - PEP8 → C# Coding Conventions (Microsoft guidelines)
47
+ - pytest → NUnit/xUnit/MSTest
48
+ - behave → SpecFlow
49
+ - unittest.mock → Moq/NSubstitute
50
+ - numpy docstrings → XML documentation comments
51
+ - logging package → ILogger/Serilog/NLog
52
+
53
+ **For Java:**
54
+ - PEP8 → Java Code Conventions (Oracle/Google style)
55
+ - pytest → JUnit/TestNG
56
+ - behave → Cucumber-JVM
57
+ - unittest.mock → Mockito/EasyMock
58
+ - numpy docstrings → Javadoc
59
+ - logging package → SLF4J/Log4j
60
+
61
+ **For JavaScript/TypeScript:**
62
+ - PEP8 → ESLint/Prettier standards
63
+ - pytest → Jest/Mocha/Vitest
64
+ - behave → Cucumber.js, Selenium
65
+ - unittest.mock → Jest mocks/Sinon
66
+ - numpy docstrings → JSDoc/TSDoc
67
+ - logging package → Winston/Bunyan/Pino
68
+
69
+ **For React:**
70
+ - Include React-specific patterns (components, hooks, state management)
71
+ - pytest → Jest/React Testing Library
72
+ - behave → Selenium
73
+ - Add component testing guidelines
74
+ - Include JSX/TSX specific rules
75
+
76
+ 7. **Preserve Key Constraints**:
77
+ - Maintain separation of concerns and single responsibility principles
78
+ - Keep modular/extensible design requirements
79
+ - Preserve testability requirements
80
+ - Maintain observability/logging requirements
81
+
82
+ ### VALIDATION:
83
+ - Ensure all Python-specific references are properly transformed
84
+ - Verify file paths and extensions match target technology conventions
85
+ - Confirm testing and mocking frameworks are appropriate for target stack
86
+ - Check that documentation styles match target language standards
87
+
88
+ ### OUTPUT SPECIFICATION:
89
+ - Replace '# [ ] extract' with '# [x] extract' in all output blocks
90
+ - Ensure each template is complete and ready for extraction
91
+ - Include a summary of key transformations made for each template
92
+
93
+ ---
94
+
95
+ **Begin transformation after receiving target technology stack and source templates.**
@@ -0,0 +1,34 @@
1
+ ### COMMANDS FOR FIXING BUGS
2
+
3
+ Your job is now to fix the described error:
4
+
5
+ * Silently analyze the given error description or error log files
6
+ * Silently review the provided source files and if given the provided feature file (specified behavior) to understand the current faulty implementation and draft silently a potential solution to fix the error
7
+ * Develop implementation strategies that minimize code changes, prefer reusing existing methods over new implementations. Also always prefer to use existing python packages over your own implementation.
8
+
9
+ When you touch code or need to generate code for bug fixing:
10
+ * The max function or method length should not exceed 40 lines.
11
+ * The max class length should not exceed 150 lines.
12
+ * The max file length should not exceed 150 lines.
13
+ * Split implementation files or functions/methods/classes in case they exceed their defined length maximum.
14
+ * Apply as coding and design principle the separation of concerns and single responsibility principle in general and specifically when you need to split.
15
+
16
+ * Important: you are NOT allowed to do any further refactorings not related to the bug fixing implementation. Refactoring for enhancing the code quality is not allowed.
17
+ * The fixed code must fully implement the specified behavior in an easy testable and modular/extensible way.
18
+ * Follow PEP8 coding guidelines.
19
+ * Use descriptive numpy style docstrings for inline method and class documentation.
20
+ * Use the python logger logging package to implement logging for all application modules that enables a fine granular full observability of the program flow by the log file. Use ./logs/<module_name>.log as filepath for logging.
21
+
22
+ * Only return full copy pastable file content.
23
+ * Use for every single generated code block this markdown code block format:
24
+
25
+ ```python
26
+ # [ ] extract
27
+ # filename: src/{filename}.py
28
+ {python code}
29
+ ```
30
+
31
+ * The extract and filename statements are only allowed once per code block
32
+ * The first character of the first line inside your code block must be '#' and the first character of the second line inside your code block must be '#'
33
+ * replace the '# [ ] extract' statement of the template with '# [x] extract' in your response
34
+ * in case of files get deprecated give me a list of files that can be safely deleted
@@ -0,0 +1,27 @@
1
+ ### COMMANDS FOR IMPLEMENTING ONE OR A SET OF NEW OR CHANGED FEATURE FILES
2
+
3
+ Your job is now:
4
+ * Silently analyze the given feature files and the specified behavior.
5
+ * Develop implementation strategies that minimize code changes with respect to any given code and test files, prefer reusing existing methods over new implementations.
6
+ * The max function length should not exceed 25 lines. The max file length should not exceed 120 lines.
7
+ * Always prefer to use existing python packages over your own implementation.
8
+ * In case additional implementation instructions are given as:
9
+ * Specified in files with extensions "*.technology.md" follow strictly the specified mandatory python packages and tech stack
10
+ * Explicitly specified as example reference implementation: use this reference information as starting point for your own implementation
11
+ * Fully implement the specified behavior in an easy testable and modular/extensible way, fully implement unit tests for your production code (try to achieve at least 90% code coverage) and implement for all given feature files the corresponding step definitions. Follow PEP8 coding guidelines, use numpy style docstrings for inline function documentation, apply as coding and design principle the separation of concerns and single responsibility principle.
12
+ * Generated or reworked python methods must not exceed 25 lines of code. In case methods exceed this length they need to be split according to the single responsibility principle and separation of concerns.
13
+ * Generated or reworked python files must not exceed 120 lines of code. In case files exceed this length they need to be split according to the single responsibility principle and separation of concerns.
14
+ * Use the python logger logging package to implement logging for all application modules that enable a full observability of the program flow over the log file. Use ./logs/<module_name>.log as filepath for logging.
15
+
16
+ * Only return full copy pastable file content for production code, unit test files and step definition files. Use for every single generated code block this markdown code block format:
17
+
18
+ ```python
19
+ # [ ] extract
20
+ # filename: src/{filename}.py
21
+ {python code}
22
+ ```
23
+
24
+ * The extract and filename statements are only allowed once per markdown code block
25
+ * The first character of the first line inside your code block must be '#' and the first character of the second line inside your code block must be '#'
26
+ * replace the '# [ ] extract' statement of the template with '# [x] extract' in your response
27
+ * in case of files get deprecated give me a list of files that can be safely deleted
@@ -0,0 +1,39 @@
1
+ ### COMMANDS FOR REFACTORING
2
+
3
+ Your job is now to refactor the code for enhancing the code quality and the design of the code according to the following guidelines:
4
+ * Refactoring = Changing the internal structure of code
5
+ * Without changing its external behavior
6
+ * Goal = Improve readability, maintainability, and design
7
+ -> "Refactoring is a change made to the internal structure of software to make it easier to understand and cheaper to modify without changing its observable behavior."
8
+ -> "Refactoring changes how code is written, not what it does."
9
+
10
+ Now do:
11
+ * Silently analyze the given code base
12
+ * Silently analyze the given feature file (specified behavior) to fully understand the flow and logic of the current implementation. Remember: you are not allowed to change specified behavior.
13
+
14
+ When you refactor the code remember:
15
+ * The max function or method length should not exceed 40 lines.
16
+ * The max class length should not exceed 150 lines.
17
+ * The max file length should not exceed 150 lines.
18
+ * Split implementation files or functions/methods/classes in case they exceed their defined length maximum.
19
+ * Apply as coding and design principle the separation of concerns and single responsibility principle in general and specifically when you need to split.
20
+ * Flatten nested code structures (e.g. if/while/for statements) to only one nesting level.
21
+ * The refactored code must fully implement the specified behavior in an easy testable and modular/extensible way.
22
+ * Follow PEP8 coding guidelines.
23
+ * Use descriptive numpy style docstrings for inline method and class documentation.
24
+ * Use the python logger logging package to implement logging for all application modules that enables a fine granular full observability of the program flow by the log file. Use ./logs/<module_name>.log as filepath for logging.
25
+
26
+ Your output specification is:
27
+ * Only return full copy pastable file content.
28
+ * Use for every single generated code block this markdown code block format:
29
+
30
+ ```python
31
+ # [ ] extract
32
+ # filename: src/{filename}.py
33
+ {python code}
34
+ ```
35
+
36
+ * The extract and filename statements are only allowed once per markdown code block
37
+ * The first character of the first line inside your code block must be '#' and the first character of the second line inside your code block must be '#'
38
+ * replace the '# [ ] extract' statement of the template with '# [x] extract' in your response
39
+ * in case of files get deprecated give me a list of files that can be safely deleted
@@ -0,0 +1,40 @@
1
+ ### COMMANDS FOR CREATING AND CORRECTING STEP DEFINITIONS FOR FEATURE FILES
2
+
3
+ **MANDATORY INPUT VALIDATION:**
4
+ - Feature files (.feature) must be provided
5
+ - Behave test report must be provided
6
+
7
+ **PROMPT DEFINITION ERROR:** If mandatory input is missing, immediately stop and return: "ERROR: Missing mandatory input. Please provide both feature files (.feature) and behave test report before proceeding."
8
+
9
+ **OPTIONAL INPUT:**
10
+ - Already existing step definitions
11
+
12
+ **PROMPT DEFINITION WARNING:** If optional input is missing: "WARNING: No existing step definitions provided. If step definitions already exist in your project, please include them as input context to avoid duplication and ensure consistency."
13
+
14
+ ### Your job is now:
15
+ * Silently analyze the given feature files and behave test report to understand current test failures and missing step implementations.
16
+ * Silently review any provided existing step definitions to avoid duplication and maintain consistency.
17
+ * Develop step definition implementation strategies that minimize code changes with respect to existing step definitions, prefer reusing existing step patterns over new implementations.
18
+ * The max function length should not exceed 25 lines. The max file length should not exceed 120 lines.
19
+ * Always prefer to use existing python packages over your own implementation.
20
+ * Use the behave testing framework for all step definition implementations.
21
+ * Apply mocking extensively to isolate step definitions from external inputs and interfaces using unittest.mock or pytest-mock.
22
+ * Fully implement all missing step definitions for the given feature files in an easy testable and modular/extensible way. Follow PEP8 coding guidelines, use numpy style docstrings for inline function documentation, apply as coding and design principle the separation of concerns and single responsibility principle.
23
+ * Generated or reworked python methods must not exceed 25 lines of code. In case methods exceed this length they need to be split according to the single responsibility principle and separation of concerns.
24
+ * Generated or reworked python files must not exceed 120 lines of code. In case files exceed this length they need to be split according to the single responsibility principle and separation of concerns.
25
+ * Implement proper assertion methods that provide clear error messages when steps fail.
26
+ * Use context.scenario, context.feature, and context.table appropriately for data sharing between steps.
27
+ * Implement proper cleanup in @after_scenario and @after_feature hooks when necessary.
28
+
29
+ * Only return full copy pastable file content for step definition files. Use for every single generated code block this markdown code block format:
30
+
31
+ ```python
32
+ # [ ] extract
33
+ # filename: ara/features/steps/{filename}_steps.py
34
+ {python code}
35
+ ```
36
+
37
+ * The extract and filename statements are only allowed once per markdown code block
38
+ * The first character of the first line inside your code block must be '#' and the first character of the second line inside your code block must be '#'
39
+ * replace the '# [ ] extract' statement of the template with '# [x] extract' in your response
40
+ * in case of files get deprecated give me a list of files that can be safely deleted
@@ -0,0 +1,48 @@
1
+ ### COMMANDS FOR CREATING AND CORRECTING UNIT TESTS
2
+
3
+ **MANDATORY INPUT VALIDATION:**
4
+ - Feature files (.feature) must be provided
5
+ - Code coverage report or pytest test report must be provided
6
+
7
+ **PROMPT DEFINITION ERROR:** If mandatory input is missing, immediately stop and return: "ERROR: Missing mandatory input. Please provide both feature files (.feature) and code coverage/pytest test report before proceeding."
8
+
9
+ **OPTIONAL INPUT:**
10
+ - Already existing unit tests
11
+
12
+ **PROMPT DEFINITION WARNING:** If optional input is missing: "WARNING: No existing unit tests provided. If unit tests already exist in your project, please include them as input context to avoid duplication and ensure consistency."
13
+
14
+ #### Your job is now:
15
+ * Silently analyze the given feature files and code coverage/pytest test report to understand current test gaps and implementation requirements.
16
+ * Silently review any provided existing unit tests to avoid duplication and maintain consistency with existing test patterns.
17
+ * Develop unit test implementation strategies that minimize code changes with respect to existing tests, prefer reusing existing test patterns and fixtures over new implementations.
18
+ * The max function length should not exceed 25 lines. The max file length should not exceed 120 lines.
19
+ * Always prefer to use existing python packages over your own implementation.
20
+ * Use the pytest testing framework for all unit test implementations.
21
+ * Apply mocking extensively to isolate unit tests from external inputs and interfaces using unittest.mock or pytest-mock. Mock all external dependencies, file I/O, network calls, and database interactions.
22
+ * Fully implement comprehensive unit tests that achieve at least 90% code coverage for the specified behavior in an easy maintainable and modular/extensible way. Follow PEP8 coding guidelines, use numpy style docstrings for inline function documentation, apply as coding and design principle the separation of concerns and single responsibility principle.
23
+ * Generated or reworked python methods must not exceed 25 lines of code. In case methods exceed this length they need to be split according to the single responsibility principle and separation of concerns.
24
+ * Generated or reworked python files must not exceed 120 lines of code. In case files exceed this length they need to be split according to the single responsibility principle and separation of concerns.
25
+
26
+ * Implement comprehensive test cases covering:
27
+ - Happy path scenarios
28
+ - Edge cases and boundary conditions
29
+ - Error handling and exception scenarios
30
+ - Input validation scenarios
31
+
32
+ * Use pytest fixtures for test data setup and teardown to ensure test isolation.
33
+ * Implement parametrized tests using @pytest.mark.parametrize for testing multiple input combinations efficiently.
34
+ * Use descriptive test method names that clearly indicate what is being tested.
35
+ * Include proper assertions with meaningful error messages.
36
+
37
+ * Only return full copy pastable file content for unit test files. Use for every single generated code block this markdown code block format:
38
+
39
+ ```python
40
+ # [ ] extract
41
+ # filename: test/test_{filename}.py
42
+ {python code}
43
+ ```
44
+
45
+ * The extract and filename statements are only allowed once per markdown code block
46
+ * The first character of the first line inside your code block must be '#' and the first character of the second line inside your code block must be '#'
47
+ * replace the '# [ ] extract' statement of the template with '# [x] extract' in your response
48
+ * in case of files get deprecated give me a list of files that can be safely deleted
@@ -0,0 +1 @@
1
+ From the list of tasks attached to the user story at {user_story_task_file_path}, analyse all child tasks and propose the next {number_of_next_tasks} concrete tasks that should be created. For each new task, provide a short name, a one-sentence description, and the main files that will be affected.
@@ -0,0 +1 @@
1
+ Here is the path to the multimedia data: {media_file_path} / {attached_media_file_path}. Generate a concise summary of the transcript / return the full transcript of the audio or video.
@@ -0,0 +1 @@
1
+ Update the feature file at {feature_file_path} so that it fully reflects the current behaviour of the implementation in {implementation_file_paths}. Keep the existing scenario structure where possible, adjust steps where necessary, and ensure that edge cases and negative paths are described explicitly.
@@ -0,0 +1 @@
1
+ Reformulate and update the user story in {user_story_file_path} according to the new requirements {updated_requirements_description}. Reflect these requirements in clear acceptance criteria and, if needed, propose follow-up user stories.
ara_cli/version.py CHANGED
@@ -1,2 +1,2 @@
1
1
  # version.py
2
- __version__ = "0.1.10.5" # fith parameter like .0 for local install test purposes only. official numbers should be 4 digit numbers
2
+ __version__ = "0.1.14.0" # fith parameter like .0 for local install test purposes only. official numbers should be 4 digit numbers
@@ -1,25 +1,34 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ara_cli
3
- Version: 0.1.10.5
3
+ Version: 0.1.14.0
4
4
  Summary: Powerful, open source command-line tool for managing, structuring and automating software development artifacts in line with Business-Driven Development (BDD) and AI-assisted processes
5
5
  Description-Content-Type: text/markdown
6
+ Requires-Dist: argcomplete
7
+ Requires-Dist: argparse
8
+ Requires-Dist: cmd2>=2.5
9
+ Requires-Dist: rich
10
+ Requires-Dist: typer
6
11
  Requires-Dist: langfuse
7
- Requires-Dist: litellm
12
+ Requires-Dist: litellm>=1.81.0
8
13
  Requires-Dist: llama-index
9
14
  Requires-Dist: llama-index-llms-openai
10
15
  Requires-Dist: llama-index-retrievers-bm25
11
16
  Requires-Dist: openai
12
- Requires-Dist: markdown-it-py
13
- Requires-Dist: json-repair
14
- Requires-Dist: argparse
15
- Requires-Dist: argcomplete
16
- Requires-Dist: cmd2>=2.5
17
- Requires-Dist: charset-normalizer
18
- Requires-Dist: pydantic
19
17
  Requires-Dist: pydantic_ai
20
- Requires-Dist: python-docx
18
+ Requires-Dist: charset-normalizer
19
+ Requires-Dist: json-repair
20
+ Requires-Dist: markdown-it-py
21
+ Requires-Dist: openpyxl
22
+ Requires-Dist: xlrd
23
+ Requires-Dist: xlwt
24
+ Requires-Dist: pandas
21
25
  Requires-Dist: pymupdf4llm
22
- Requires-Dist: typer
26
+ Requires-Dist: python-docx
27
+ Requires-Dist: python-pptx
28
+ Requires-Dist: tabulate
29
+ Requires-Dist: psutil
30
+ Requires-Dist: pydantic
31
+ Requires-Dist: requests
23
32
  Dynamic: description
24
33
  Dynamic: description-content-type
25
34
  Dynamic: requires-dist
@@ -130,6 +139,35 @@ ara autofix
130
139
 
131
140
  See `ara -h` for the complete list of commands and usage examples.
132
141
 
142
+ ---
143
+ ## Agent Commands
144
+
145
+ `ara-cli` includes powerful agent-based capabilities that can be accessed through the interactive chat. These agents can perform complex, multi-step tasks, such as conducting interviews or automating coding workflows.
146
+
147
+ To use the agent commands, first start an interactive chat session:
148
+
149
+ ```bash
150
+ ara prompt chat <artefact_classifier> <artefact_name>
151
+ ```
152
+
153
+ Once inside the chat, you can use the following commands to manage agents:
154
+
155
+ | Command | Shortcut | Description |
156
+ | ---------------- | -------- | ------------------------------------------------- |
157
+ | `AGENT_RUN` | `a` | Run an agent by name. |
158
+ | `AGENT_STOP` | `as` | Stop the currently running agent. |
159
+ | `AGENT_CONTINUE` | `ac` | Continue the agent's operation without new input. |
160
+ | `AGENT_STATUS` | `astat` | Show the status of the current agent. |
161
+ | `exit` | | Exit from agent interfacto back to chat. |
162
+
163
+ **Example:**
164
+
165
+ ```bash
166
+ ara> a interview_agent
167
+ ```
168
+
169
+ **Important:** The agent functionality requires the `ara-agents` package to be installed separately. If you do not have `ara-agents` installed, please contact the Talsen Team for assistance.
170
+
133
171
  ---
134
172
 
135
173
  ## Artefact Structure