x_aeon_agents 2.6.2 → 2.7.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4b6e123541e3b1e6fc085b115e722f0a00eca753960a9413cc6162334ac26d29
4
- data.tar.gz: a90684fd4975ff78cf4ef1ffda8e2923302e1ccace08a8b69f435622ca31bd7c
3
+ metadata.gz: c02e664b325a3265a1397697d4730f7e95901db60483db4b3961851d7f92085d
4
+ data.tar.gz: 9ab1c4fbd0deb3313b55f82cd08dcf66f1bab8ff7c89f0f03a0c93e4d595fe0d
5
5
  SHA512:
6
- metadata.gz: 8685c08b6efd47238aafeaa143c8a70b9ebe81a80c521d63f8791acc13409888aa283e4d5fe8b1783d5d6f98d17e30757f45232e0e1c7dd66abbf9d35e7a0ea2
7
- data.tar.gz: 460cbb2dd5a92c5c3c44d8898ce52afe4c0dc4217f89b612de7ae04107ef70dbce41c35f3f17d20d2e639464455d35c1ca9569b53583ab22616e88e4db04dfe3
6
+ metadata.gz: 724e0edba6d234a943beb21d3be41f4407582d4f43efd97a1fceb096c353b8f52f34801facf88257872592bd7f23bd540c078d08745eee6d3b6066fe9ab5c934
7
+ data.tar.gz: 753db34710e6a78dd2f6c53fadd14fbc1086b684a1a451b8b2326375173008cafe5743d778d7ce36432f71d1c3ef726f53b2a3e16b5b7b643187982a704631a7
data/CHANGELOG.md CHANGED
@@ -1,3 +1,37 @@
1
+ # [v2.7.1](https://github.com/Muriel-Salvan/x_aeon_agents/compare/v2.7.0...v2.7.1) (2026-11-12 15:59:52)
2
+
3
+ ## Global changes
4
+ ### Patches
5
+
6
+ * [fix(agents): improve prompts, isolate artifacts per run and declare plan type](https://github.com/Muriel-Salvan/x_aeon_agents/commit/b7f9dab265b908514b646b61c6ebc5f74fd1d4b6)
7
+
8
+ ## Changes for agent_defaults
9
+ ### Patches
10
+
11
+ * [fix(agents): improve prompts, isolate artifacts per run and declare plan type](https://github.com/Muriel-Salvan/x_aeon_agents/commit/b7f9dab265b908514b646b61c6ebc5f74fd1d4b6)
12
+
13
+ ## Changes for agents
14
+ ### Patches
15
+
16
+ * [fix(agents): improve prompts, isolate artifacts per run and declare plan type](https://github.com/Muriel-Salvan/x_aeon_agents/commit/b7f9dab265b908514b646b61c6ebc5f74fd1d4b6)
17
+
18
+ # [v2.7.0](https://github.com/Muriel-Salvan/x_aeon_agents/compare/v2.6.2...v2.7.0) (2026-11-12 13:45:26)
19
+
20
+ ## Global changes
21
+ ### Patches
22
+
23
+ * [feat(cline): adopt MarkdownHeavyFiles prompt strategy](https://github.com/Muriel-Salvan/x_aeon_agents/commit/84448f1ed3ac4f6d548071cb9d3c6ffdef1d5034)
24
+
25
+ ## Changes for agents
26
+ ### Patches
27
+
28
+ * [feat(cline): adopt MarkdownHeavyFiles prompt strategy](https://github.com/Muriel-Salvan/x_aeon_agents/commit/84448f1ed3ac4f6d548071cb9d3c6ffdef1d5034)
29
+
30
+ ## Changes for cline
31
+ ### Features
32
+
33
+ * [feat(cline): adopt MarkdownHeavyFiles prompt strategy](https://github.com/Muriel-Salvan/x_aeon_agents/commit/84448f1ed3ac4f6d548071cb9d3c6ffdef1d5034)
34
+
1
35
  # [v2.6.2](https://github.com/Muriel-Salvan/x_aeon_agents/compare/v2.6.1...v2.6.2) (2026-11-07 11:34:15)
2
36
 
3
37
  ## Global changes
data/TODO.md CHANGED
@@ -1,4 +1,12 @@
1
+ * Embed TaskStarter as an option to implement-issue CLI.
2
+ * Add a --tdd option to implement-issue and use a TddAgent in place of DeveloperAgent.
3
+ * Add a bump dependencies CLI command to do what bump_gemspec_minor does (and also in Gemfile) for Ruby projects, and make it so it can be extended for other languages.
1
4
  * Make the tester loop with a max retries when the same tests are failing (maybe use a JSON/XML output format for tests that allow for parsing which test fail and only give this information in the prompt).
5
+ * Add a command that cleans and refactor code:
6
+ * Identify duplicates in code, doc, tests.
7
+ * Increase coverage.
8
+ * Validate that only public interfaces are being tested.
9
+ * Simplify algorithms and documentation.
2
10
  * Don't use project skills and rules: it adds noise to the LLMs that scan the files and code base. Use only global objects from dedicated config dirs.
3
11
  * Add desktop notification when user input is needed.
4
12
  * Test with other models.
@@ -74,7 +74,8 @@ module XAeonAgents
74
74
  Config.setup_cline
75
75
  {
76
76
  api_key: Config.cline_api_key,
77
- cli_options: Config.default_cline_cli_args
77
+ cli_options: Config.default_cline_cli_args,
78
+ strategy: ComposableAgents::PromptRenderingStrategy::MarkdownHeavyFiles
78
79
  }
79
80
  else
80
81
  {}
@@ -85,12 +86,24 @@ module XAeonAgents
85
86
  end
86
87
  @session_id = session_id || AgentDefaults.singleton_session_id
87
88
  @session_dir = "#{Config.data_dir}/sessions/#{@session_id}"
89
+ run_id = "#{@session_id}-#{kwargs[:name] || self.class.name.split('::').last}"
90
+ agent_kwargs = kwargs_from_config.merge(kwargs)
91
+ # TODO: Redesign how prompt rendering strategies are initialized with regard to the constructors and remove
92
+ # this code smell.
93
+ # The prompt rendering strategy is included in the agent's singleton class by PromptDrivenAgent's
94
+ # constructor, which runs after the agent's own constructor: include it here first so that the agent's
95
+ # constructor and mixins can use the strategy's accessors (e.g. #artifact_ref) while being initialized.
96
+ singleton_class.include(agent_kwargs[:strategy]) if agent_kwargs[:strategy]
97
+ # File-based artifact strategies persist artifacts as files: give each agent run its own artifacts
98
+ # directory so that agents of the same session don't share artifact files.
99
+ self.artifacts_directory = "#{@session_dir}/composable_agents/runs/#{run_id}/artifacts" \
100
+ if respond_to?(:artifacts_directory=)
88
101
  super(
89
102
  *args,
90
103
  composable_agents_dir: "#{@session_dir}/composable_agents",
91
- run_id: "#{@session_id}-#{kwargs[:name] || self.class.name.split('::').last}",
104
+ run_id:,
92
105
  logger: Config.logger,
93
- **kwargs_from_config.merge(kwargs)
106
+ **agent_kwargs
94
107
  )
95
108
  end
96
109
 
@@ -9,7 +9,12 @@ module XAeonAgents
9
9
  #
10
10
  # @return [Hash{Symbol => Object}] Set of input artifacts description, per artifact name
11
11
  def input_artifacts_contracts
12
- super.merge(plan: 'The implementation plan that you must follow')
12
+ super.merge(
13
+ plan: {
14
+ description: 'The implementation plan that you must follow',
15
+ type: :markdown
16
+ }
17
+ )
13
18
  end
14
19
 
15
20
  # Constructor
@@ -48,7 +48,7 @@ module XAeonAgents
48
48
  task(
49
49
  coder_agent,
50
50
  intent: 'Implement the requirements following the implementation plan',
51
- user_instructions: "Follow all the steps of the implementation plan described in the artifact named `#{coder_agent.artifact_ref(:plan)}`."
51
+ user_instructions: "Read the implementation plan file `#{coder_agent.artifact_ref(:plan)}` and follow all its steps."
52
52
  )
53
53
  logger.info "Coder changes: #{Helpers.git.status_info.changed.keys.join(', ')}"
54
54
 
@@ -81,32 +81,38 @@ module XAeonAgents
81
81
  user_instructions: {
82
82
  ordered_list: [
83
83
  <<~EO_STEP,
84
- Understand the initial requirements from the artifact named `#{tester_agent.artifact_ref(:requirements)}`
84
+ Understand the initial requirements from the file `#{tester_agent.artifact_ref(:requirements)}`
85
85
 
86
86
  - Understand those requirements and their intent.
87
87
  EO_STEP
88
88
  <<~EO_STEP,
89
- Understand the implementation plan from the artifact named `#{tester_agent.artifact_ref(:plan)}`
89
+ Understand the implementation plan from the file `#{tester_agent.artifact_ref(:plan)}`
90
90
 
91
91
  - Understand all the steps of the implementation plan.
92
92
  EO_STEP
93
93
  <<~EO_STEP,
94
- Understand the file changes from the artifact named `#{tester_agent.artifact_ref(:files_diffs)}`
94
+ Understand the file changes from the file `#{tester_agent.artifact_ref(:files_diffs)}`
95
95
 
96
96
  - Understand what was the intent of the developer implementing the requirements.
97
97
  EO_STEP
98
98
  <<~EO_STEP,
99
- Analyze the full output of unit tests run from the artifact named `#{tester_agent.artifact_ref(:tests_output)}`
99
+ Read and analyze the full output of unit tests from the file `#{tester_agent.artifact_ref(:tests_output)}`
100
100
 
101
101
  - Check every error reported in the output.
102
102
  EO_STEP
103
103
  'Fix any issue that unit tests are surfacing, while keeping the original intent of the requirements',
104
104
  'Remember any inconsistency and modification you need to make to the implementation plan ' \
105
105
  'so that your fixes are in-line with a better implementation plan',
106
- <<~EO_STEP
106
+ <<~EO_STEP,
107
107
  Make sure all tests are running without issue after your fixes
108
108
 
109
- - You can run tests again using the provided tests command from the artifact named `#{tester_agent.artifact_ref(:tests_cmd)}` to test your own fixes.
109
+ - You can run tests again using the tests command given in the file `#{tester_agent.artifact_ref(:tests_cmd)}` to test your own fixes.
110
+ EO_STEP
111
+ <<~EO_STEP
112
+ Write your modifications of the implementation plan, if any, to the file `#{tester_agent.artifact_ref(:plan_modifications)}`
113
+
114
+ - Only write this file if your fixes required diverging from the implementation plan.
115
+ - Do not write this file if the implementation plan did not change.
110
116
  EO_STEP
111
117
  ]
112
118
  }
@@ -141,17 +147,17 @@ module XAeonAgents
141
147
  user_instructions: {
142
148
  ordered_list: [
143
149
  <<~EO_STEP,
144
- Analyze the initial requirements from the artifact named `#{documenter_agent.artifact_ref(:requirements)}`
150
+ Read and analyze the initial requirements from the file `#{documenter_agent.artifact_ref(:requirements)}`
145
151
 
146
152
  - Those give you information about the requirements you should be documenting.
147
153
  EO_STEP
148
154
  <<~EO_STEP,
149
- Analyze all the steps of the implementation plan from the artifact named `#{documenter_agent.artifact_ref(:plan)}`
155
+ Read and analyze all the steps of the implementation plan from the file `#{documenter_agent.artifact_ref(:plan)}`
150
156
 
151
157
  - Those give you every step that should have been followed for this new development.
152
158
  EO_STEP
153
159
  <<~EO_STEP,
154
- Analyze the concrete changes from the artifact named `#{documenter_agent.artifact_ref(:files_diffs)}`
160
+ Read and analyze the concrete changes from the file `#{documenter_agent.artifact_ref(:files_diffs)}`
155
161
 
156
162
  - Understand what was the intent of the developer implementing those requirements.
157
163
  EO_STEP
@@ -194,7 +200,7 @@ module XAeonAgents
194
200
  Update the relevant documentation files
195
201
 
196
202
  - Only perform this step if you think documentation is required.
197
- - Use artifacts as the source of truth for understanding the changes to be documented.
203
+ - Use the artifact files as the source of truth for understanding the changes to be documented.
198
204
  - Use the filesystem to locate where documentation should be updated.
199
205
  - After exploring the filesystem, if relevant documentation files are found: update them.
200
206
 
@@ -9,9 +9,19 @@ module XAeonAgents
9
9
  # @return [Hash{Symbol => Object}] Set of input artifacts description, per artifact name
10
10
  def input_artifacts_contracts
11
11
  super.merge(
12
- requirements: 'The initial requirements',
13
- plan: 'Implementation plan that introduced features and fixes to be documented',
14
- files_diffs: 'Full list of files changes and differences that have been done to implement the initial requirements following the implementation plan'
12
+ requirements: {
13
+ description: 'The initial requirements',
14
+ type: :markdown
15
+ },
16
+ plan: {
17
+ description: 'Implementation plan that introduced features and fixes to be documented',
18
+ type: :markdown
19
+ },
20
+ files_diffs: {
21
+ description: 'Full list of files changes and differences that have been done to implement the initial ' \
22
+ 'requirements following the implementation plan',
23
+ type: :text
24
+ }
15
25
  )
16
26
  end
17
27
 
@@ -9,8 +9,14 @@ module XAeonAgents
9
9
  # @return [Hash{Symbol => Object}] Set of input artifacts description, per artifact name
10
10
  def input_artifacts_contracts
11
11
  super.merge(
12
- pr_description: 'The Pull Request description (context)',
13
- pr_files_diffs: 'The files modifications that were done in this Pull Request (context)',
12
+ pr_description: {
13
+ description: 'The Pull Request description (context)',
14
+ type: :markdown
15
+ },
16
+ pr_files_diffs: {
17
+ description: 'The files modifications that were done in this Pull Request (context)',
18
+ type: :text
19
+ },
14
20
  conversations: {
15
21
  description: 'All Pull Request conversations and comments to be considered (context)',
16
22
  type: :json
@@ -52,15 +58,16 @@ module XAeonAgents
52
58
  If you need more information, use one of the available tools or ask for clarification instead of making assumptions or lies.
53
59
  Do not indicate that you will perform an action without actually doing it.
54
60
  EO_INSTRUCTIONS
55
- constraints: <<~EO_CONSTRAINTS,
56
- - You are in read-only mode.
57
- - Do NOT modify or write any file.
58
- - Focus only on agent-directed comments (/agent) for requirement extraction.
59
- - Output clear, actionable requirements or "No requirements" if none exist.
60
- - #{Helpers.repository_access_constraint}
61
- EO_CONSTRAINTS
62
61
  **agent_params
63
62
  )
63
+ self.constraints = <<~EO_CONSTRAINTS
64
+ - You are in read-only mode for the repository: do NOT modify any file of it.
65
+ - Focus only on agent-directed comments (/agent) for requirement extraction.
66
+ - Write the extracted requirements to the output artifact file given in this prompt.
67
+ - If no implementation is required, write exactly `No requirements` in this file.
68
+ - #{Helpers.repository_access_constraint}
69
+ - #{Helpers.artifacts_access_constraint(artifact_ref(:requirements))}
70
+ EO_CONSTRAINTS
64
71
  end
65
72
  end
66
73
  end
@@ -8,7 +8,12 @@ module XAeonAgents
8
8
  #
9
9
  # @return [Hash{Symbol => Object}] Set of input artifacts description, per artifact name
10
10
  def input_artifacts_contracts
11
- super.merge(requirements: 'The initial requirements for which you need to devise an implementation plan')
11
+ super.merge(
12
+ requirements: {
13
+ description: 'The initial requirements for which you need to devise an implementation plan',
14
+ type: :markdown
15
+ }
16
+ )
12
17
  end
13
18
 
14
19
  # Define output artifacts contracts
@@ -18,7 +23,7 @@ module XAeonAgents
18
23
  super.merge(
19
24
  plan: {
20
25
  description: 'The full and detailed implementation plan in Markdown format, ' \
21
- "that should implement the requirements given by the artifact named `#{artifact_ref(:requirements)}`",
26
+ "that should implement the requirements given in the file `#{artifact_ref(:requirements)}`",
22
27
  type: :markdown
23
28
  }
24
29
  )
@@ -41,16 +46,15 @@ module XAeonAgents
41
46
  If you need more information, use one of the available tools or ask for clarification instead of making assumptions or lies.
42
47
  Do not indicate that you will perform an action without actually doing it.
43
48
  EO_INSTRUCTIONS
44
- constraints: <<~EO_CONSTRAINTS,
45
- - You are in read-only mode.
46
- - Do NOT modify or write any file.
47
- - You may only analyze and propose plans.
48
- - Do NOT execute the plan yourself.
49
- - #{Helpers.repository_access_constraint}
50
- - Never create files (`ARTIFACT_*`, `/tmp/*`) to hold artifacts. Put the fenced ` ```json output_artifact=… ` block in your final message and end the turn with __no tool call__.
51
- EO_CONSTRAINTS
52
49
  **agent_params
53
50
  )
51
+ self.constraints = <<~EO_CONSTRAINTS
52
+ - You are in read-only mode for the repository: do NOT modify any file of it.
53
+ - You may only analyze and propose plans.
54
+ - Do NOT execute the plan yourself.
55
+ - #{Helpers.repository_access_constraint}
56
+ - #{Helpers.artifacts_access_constraint(artifact_ref(:plan))}
57
+ EO_CONSTRAINTS
54
58
  end
55
59
  end
56
60
  end
@@ -18,7 +18,7 @@ module XAeonAgents
18
18
  {
19
19
  plan: {
20
20
  description: 'The full and detailed implementation plan in Markdown format, ' \
21
- "that should implement the requirements given by the artifact named `#{plan_generator_agent.artifact_ref(:requirements)}`",
21
+ "that should implement the requirements given in the file `#{plan_generator_agent.artifact_ref(:requirements)}`",
22
22
  type: :markdown
23
23
  }
24
24
  }
@@ -39,10 +39,10 @@ module XAeonAgents
39
39
  super
40
40
  user_instructions = {
41
41
  ordered_list: [
42
- "Read the initial requirements from the artifact named `#{plan_generator_agent.artifact_ref(:requirements)}`",
42
+ "Read the initial requirements from the file `#{plan_generator_agent.artifact_ref(:requirements)}`",
43
43
  'Analyze the project files',
44
- "Create an artifact named `#{plan_generator_agent.artifact_ref(:plan)}` with a complete and detailed " \
45
- 'step-by-step implementation plan in Markdown format'
44
+ 'Write a complete and detailed step-by-step implementation plan in Markdown format to the file ' \
45
+ "`#{plan_generator_agent.artifact_ref(:plan)}`"
46
46
  ]
47
47
  }
48
48
  loop.with_index do |plan_idx|
@@ -75,7 +75,7 @@ module XAeonAgents
75
75
  user_instructions = <<~EO_INSTRUCTIONS
76
76
  #{@artifacts[:user_prompt]}
77
77
 
78
- Re-create the artifact named `#{plan_generator_agent.artifact_ref(:plan)}` with a revised implementation plan, taking the above user guidance into account.
78
+ Rewrite the file `#{plan_generator_agent.artifact_ref(:plan)}` with a revised implementation plan, taking the above user guidance into account.
79
79
  EO_INSTRUCTIONS
80
80
  user_instructions << <<~EO_INSTRUCTIONS if @artifacts[:diffs]
81
81
 
@@ -34,7 +34,7 @@ module XAeonAgents
34
34
  name: 'About section generator',
35
35
  objective: <<~EO_OBJECTIVE,
36
36
  Analyze the project's code, features and layout to understand its purpose and interface.
37
- Provide the following information:
37
+ Write the following information to the corresponding output artifact files:
38
38
  - The project's name (for example Rubygem's name, released package name, repository's name...).
39
39
  - The 1-line description of the project, using Markdown.
40
40
  - A high-level overview (about section) of the project in Markdown format, compatible with Github flavor.
@@ -46,16 +46,17 @@ module XAeonAgents
46
46
  If you need more information, use one of the available tools instead of making assumptions.
47
47
  Do not indicate that you will perform an action without actually doing it.
48
48
  EO_INSTRUCTIONS
49
- constraints: <<~EO_CONSTRAINTS,
50
- - The required output artifacts content should only contain the required content, without additional header or title.
51
- - Do not explain or describe the artifact contents: only provide the content as required.
52
- - Only focus on the specific scope of the required documentation required.
53
- Other agents will generate other sections of the README.
54
- Do not try to document other parts.
55
- - #{Helpers.repository_access_constraint}
56
- EO_CONSTRAINTS
57
49
  **agent_params
58
50
  )
51
+ self.constraints = <<~EO_CONSTRAINTS
52
+ - Write only the required content to the output artifact files, without any additional header or title.
53
+ - Do NOT write any explanation or description in the artifact files: write only the required content.
54
+ - Only focus on the specific scope of the required documentation required.
55
+ Other agents will generate other sections of the README.
56
+ Do not try to document other parts.
57
+ - #{Helpers.repository_access_constraint}
58
+ - #{Helpers.artifacts_access_constraint(artifact_ref(:about), artifact_ref(:name), artifact_ref(:description))}
59
+ EO_CONSTRAINTS
59
60
  end
60
61
  end
61
62
  end
@@ -36,18 +36,19 @@ module XAeonAgents
36
36
  If you need more information, use one of the available tools instead of making assumptions.
37
37
  Do not indicate that you will perform an action without actually doing it.
38
38
  EO_INSTRUCTIONS
39
- constraints: <<~EO_CONSTRAINTS,
40
- - The required output artifact content should only contain the required content, without additional header or title.
41
- - Do not explain or describe the artifact content: only provide the content as required.
42
- - Only focus on the specific scope of the required documentation required.
43
- Other agents will generate other sections of the README.
44
- Do not try to document other parts.
45
- - Do not describe the technical setup or prequisites, as they are already covered by other sections.
46
- - Do not cover how to develop in this project: it is already covered in other sections.
47
- - #{Helpers.repository_access_constraint}
48
- EO_CONSTRAINTS
49
39
  **agent_params
50
40
  )
41
+ self.constraints = <<~EO_CONSTRAINTS
42
+ - Write only the required content to the output artifact file, without any additional header or title.
43
+ - Do NOT write any explanation or description in the artifact file: write only the required content.
44
+ - Only focus on the specific scope of the required documentation required.
45
+ Other agents will generate other sections of the README.
46
+ Do not try to document other parts.
47
+ - Do not describe the technical setup or prequisites, as they are already covered by other sections.
48
+ - Do not cover how to develop in this project: it is already covered in other sections.
49
+ - #{Helpers.repository_access_constraint}
50
+ - #{Helpers.artifacts_access_constraint(artifact_ref(:contributing))}
51
+ EO_CONSTRAINTS
51
52
  end
52
53
  end
53
54
  end
@@ -43,18 +43,19 @@ module XAeonAgents
43
43
  If you need more information, use one of the available tools instead of making assumptions.
44
44
  Do not indicate that you will perform an action without actually doing it.
45
45
  EO_INSTRUCTIONS
46
- constraints: <<~EO_CONSTRAINTS,
47
- - The required output artifact content should only contain the required content, without additional header or title.
48
- - Do not explain or describe the artifact content: only provide the content as required.
49
- - Only focus on the specific scope of the required documentation required.
50
- Other agents will generate other sections of the README.
51
- Do not try to document other parts.
52
- - Do not cover the end-user main requirements and prerequisites: they are already covered in other sections.
53
- - Do not cover the contribution workflow (pull requests, CI, issues...): this is already covered in other sections.
54
- - #{Helpers.repository_access_constraint}
55
- EO_CONSTRAINTS
56
46
  **agent_params
57
47
  )
48
+ self.constraints = <<~EO_CONSTRAINTS
49
+ - Write only the required content to the output artifact file, without any additional header or title.
50
+ - Do NOT write any explanation or description in the artifact file: write only the required content.
51
+ - Only focus on the specific scope of the required documentation required.
52
+ Other agents will generate other sections of the README.
53
+ Do not try to document other parts.
54
+ - Do not cover the end-user main requirements and prerequisites: they are already covered in other sections.
55
+ - Do not cover the contribution workflow (pull requests, CI, issues...): this is already covered in other sections.
56
+ - #{Helpers.repository_access_constraint}
57
+ - #{Helpers.artifacts_access_constraint(artifact_ref(:development))}
58
+ EO_CONSTRAINTS
58
59
  end
59
60
  end
60
61
  end
@@ -34,16 +34,17 @@ module XAeonAgents
34
34
  If you need more information, use one of the available tools instead of making assumptions.
35
35
  Do not indicate that you will perform an action without actually doing it.
36
36
  EO_INSTRUCTIONS
37
- constraints: <<~EO_CONSTRAINTS,
38
- - The required output artifact content should only contain the required content, without additional header or title.
39
- - Do not explain or describe the artifact content: only provide the content as required.
40
- - Only focus on the specific scope of the required documentation required.
41
- Other agents will generate other sections of the README.
42
- Do not try to document other parts.
43
- - #{Helpers.repository_access_constraint}
44
- EO_CONSTRAINTS
45
37
  **agent_params
46
38
  )
39
+ self.constraints = <<~EO_CONSTRAINTS
40
+ - Write only the required content to the output artifact file, without any additional header or title.
41
+ - Do NOT write any explanation or description in the artifact file: write only the required content.
42
+ - Only focus on the specific scope of the required documentation required.
43
+ Other agents will generate other sections of the README.
44
+ Do not try to document other parts.
45
+ - #{Helpers.repository_access_constraint}
46
+ - #{Helpers.artifacts_access_constraint(artifact_ref(:documentation))}
47
+ EO_CONSTRAINTS
47
48
  end
48
49
  end
49
50
  end
@@ -36,16 +36,17 @@ module XAeonAgents
36
36
  If you need more information, use one of the available tools instead of making assumptions.
37
37
  Do not indicate that you will perform an action without actually doing it.
38
38
  EO_INSTRUCTIONS
39
- constraints: <<~EO_CONSTRAINTS,
40
- - The required output artifact content should only contain the required content, without additional header or title.
41
- - Do not explain or describe the artifact content: only provide the content as required.
42
- - Only focus on the specific scope of the required documentation required.
43
- Other agents will generate other sections of the README.
44
- Do not try to document other parts.
45
- - #{Helpers.repository_access_constraint}
46
- EO_CONSTRAINTS
47
39
  **agent_params
48
40
  )
41
+ self.constraints = <<~EO_CONSTRAINTS
42
+ - Write only the required content to the output artifact file, without any additional header or title.
43
+ - Do NOT write any explanation or description in the artifact file: write only the required content.
44
+ - Only focus on the specific scope of the required documentation required.
45
+ Other agents will generate other sections of the README.
46
+ Do not try to document other parts.
47
+ - #{Helpers.repository_access_constraint}
48
+ - #{Helpers.artifacts_access_constraint(artifact_ref(:features))}
49
+ EO_CONSTRAINTS
49
50
  end
50
51
  end
51
52
  end
@@ -37,17 +37,18 @@ module XAeonAgents
37
37
  If you need more information, use one of the available tools instead of making assumptions.
38
38
  Do not indicate that you will perform an action without actually doing it.
39
39
  EO_INSTRUCTIONS
40
- constraints: <<~EO_CONSTRAINTS,
41
- - The required output artifact content should only contain the required content, without additional header or title.
42
- - Do not explain or describe the artifact content: only provide the content as required.
43
- - Only focus on the specific scope of the required documentation required.
44
- Other agents will generate other sections of the README.
45
- Do not try to document other parts.
46
- - Do not provide long paragraphs: focus on readability by splitting long paragraphs into several short ones.
47
- - #{Helpers.repository_access_constraint}
48
- EO_CONSTRAINTS
49
40
  **agent_params
50
41
  )
42
+ self.constraints = <<~EO_CONSTRAINTS
43
+ - Write only the required content to the output artifact file, without any additional header or title.
44
+ - Do NOT write any explanation or description in the artifact file: write only the required content.
45
+ - Only focus on the specific scope of the required documentation required.
46
+ Other agents will generate other sections of the README.
47
+ Do not try to document other parts.
48
+ - Do not provide long paragraphs: focus on readability by splitting long paragraphs into several short ones.
49
+ - #{Helpers.repository_access_constraint}
50
+ - #{Helpers.artifacts_access_constraint(artifact_ref(:how_it_works))}
51
+ EO_CONSTRAINTS
51
52
  end
52
53
  end
53
54
  end
@@ -34,16 +34,17 @@ module XAeonAgents
34
34
  If you need more information, use one of the available tools instead of making assumptions.
35
35
  Do not indicate that you will perform an action without actually doing it.
36
36
  EO_INSTRUCTIONS
37
- constraints: <<~EO_CONSTRAINTS,
38
- - The required output artifact content should only contain the required content, without additional header or title.
39
- - Do not explain or describe the artifact content: only provide the content as required.
40
- - Only focus on the specific scope of the required documentation required.
41
- Other agents will generate other sections of the README.
42
- Do not try to document other parts.
43
- - #{Helpers.repository_access_constraint}
44
- EO_CONSTRAINTS
45
37
  **agent_params
46
38
  )
39
+ self.constraints = <<~EO_CONSTRAINTS
40
+ - Write only the required content to the output artifact file, without any additional header or title.
41
+ - Do NOT write any explanation or description in the artifact file: write only the required content.
42
+ - Only focus on the specific scope of the required documentation required.
43
+ Other agents will generate other sections of the README.
44
+ Do not try to document other parts.
45
+ - #{Helpers.repository_access_constraint}
46
+ - #{Helpers.artifacts_access_constraint(artifact_ref(:license))}
47
+ EO_CONSTRAINTS
47
48
  end
48
49
  end
49
50
  end
@@ -34,17 +34,18 @@ module XAeonAgents
34
34
  If you need more information, use one of the available tools instead of making assumptions.
35
35
  Do not indicate that you will perform an action without actually doing it.
36
36
  EO_INSTRUCTIONS
37
- constraints: <<~EO_CONSTRAINTS,
38
- - The required output artifact content should only contain the required content, without additional header or title.
39
- - Do not explain or describe the artifact content: only provide the content as required.
40
- - Only focus on the specific scope of the required documentation required.
41
- Other agents will generate other sections of the README.
42
- Do not try to document other parts.
43
- - Only document public API entry points: executables and library public methods belonging to yarn `Public API` group.
44
- - #{Helpers.repository_access_constraint}
45
- EO_CONSTRAINTS
46
37
  **agent_params
47
38
  )
39
+ self.constraints = <<~EO_CONSTRAINTS
40
+ - Write only the required content to the output artifact file, without any additional header or title.
41
+ - Do NOT write any explanation or description in the artifact file: write only the required content.
42
+ - Only focus on the specific scope of the required documentation required.
43
+ Other agents will generate other sections of the README.
44
+ Do not try to document other parts.
45
+ - Only document public API entry points: executables and library public methods belonging to yarn `Public API` group.
46
+ - #{Helpers.repository_access_constraint}
47
+ - #{Helpers.artifacts_access_constraint(artifact_ref(:public_api))}
48
+ EO_CONSTRAINTS
48
49
  end
49
50
  end
50
51
  end
@@ -40,17 +40,18 @@ module XAeonAgents
40
40
  If you need more information, use one of the available tools instead of making assumptions.
41
41
  Do not indicate that you will perform an action without actually doing it.
42
42
  EO_INSTRUCTIONS
43
- constraints: <<~EO_CONSTRAINTS,
44
- - The required output artifact content should only contain the required content, without additional header or title.
45
- - Do not explain or describe the artifact content: only provide the content as required.
46
- - Only focus on the specific scope of the required documentation required.
47
- Other agents will generate other sections of the README.
48
- Do not try to document other parts.
49
- - This section is not meant for developers: don't describe how to develop, test, document, package or contribute to this project.
50
- - #{Helpers.repository_access_constraint}
51
- EO_CONSTRAINTS
52
43
  **agent_params
53
44
  )
45
+ self.constraints = <<~EO_CONSTRAINTS
46
+ - Write only the required content to the output artifact file, without any additional header or title.
47
+ - Do NOT write any explanation or description in the artifact file: write only the required content.
48
+ - Only focus on the specific scope of the required documentation required.
49
+ Other agents will generate other sections of the README.
50
+ Do not try to document other parts.
51
+ - This section is not meant for developers: don't describe how to develop, test, document, package or contribute to this project.
52
+ - #{Helpers.repository_access_constraint}
53
+ - #{Helpers.artifacts_access_constraint(artifact_ref(:quick_start))}
54
+ EO_CONSTRAINTS
54
55
  end
55
56
  end
56
57
  end
@@ -34,16 +34,17 @@ module XAeonAgents
34
34
  If you need more information, use one of the available tools instead of making assumptions.
35
35
  Do not indicate that you will perform an action without actually doing it.
36
36
  EO_INSTRUCTIONS
37
- constraints: <<~EO_CONSTRAINTS,
38
- - The required output artifact content should only contain the required content, without additional header or title.
39
- - Do not explain or describe the artifact content: only provide the content as required.
40
- - Only focus on the specific scope of the required documentation required.
41
- Other agents will generate other sections of the README.
42
- Do not try to document other parts.
43
- - #{Helpers.repository_access_constraint}
44
- EO_CONSTRAINTS
45
37
  **agent_params
46
38
  )
39
+ self.constraints = <<~EO_CONSTRAINTS
40
+ - Write only the required content to the output artifact file, without any additional header or title.
41
+ - Do NOT write any explanation or description in the artifact file: write only the required content.
42
+ - Only focus on the specific scope of the required documentation required.
43
+ Other agents will generate other sections of the README.
44
+ Do not try to document other parts.
45
+ - #{Helpers.repository_access_constraint}
46
+ - #{Helpers.artifacts_access_constraint(artifact_ref(:requirements))}
47
+ EO_CONSTRAINTS
47
48
  end
48
49
  end
49
50
  end
@@ -75,10 +75,10 @@ module XAeonAgents
75
75
  user_instructions: <<~EO_INSTRUCTIONS
76
76
  Analyze this project's code, features and layout.
77
77
  Devise the goal of this project, what problem it solves, and using which interface (CLI, library, web app...).
78
- Create an artifact named `#{about_analyzer_agent.artifact_ref(:name)}` with the name of this project.
79
- Create an artifact named `#{about_analyzer_agent.artifact_ref(:description)}` with a 1-line high-level description of this project
78
+ Write the name of this project to the file `#{about_analyzer_agent.artifact_ref(:name)}`.
79
+ Write a 1-line high-level description of this project to the file `#{about_analyzer_agent.artifact_ref(:description)}`
80
80
  using Markdown format, compatible with Github flavor.
81
- Create an artifact named `#{about_analyzer_agent.artifact_ref(:about)}` with an engaging high-level description/overview of this project
81
+ Write an engaging high-level description/overview of this project to the file `#{about_analyzer_agent.artifact_ref(:about)}`
82
82
  using Markdown format, compatible with Github flavor.
83
83
  The description should be concise, in 1 small section and will serve as a the first paragraph of a README file.
84
84
  The description is intended to be for end-users and should be simple and easy to understand.
@@ -94,7 +94,7 @@ module XAeonAgents
94
94
  intent: 'Generate README Quick Start section',
95
95
  user_instructions: <<~EO_INSTRUCTIONS
96
96
  Analyze this project's installation and usage patterns.
97
- Create an artifact named `#{quick_start_agent.artifact_ref(:quick_start)}` with quick installation and usage instructions
97
+ Write quick installation and usage instructions to the file `#{quick_start_agent.artifact_ref(:quick_start)}`
98
98
  using Markdown format, compatible with Github flavor.
99
99
  These instructions should cover the installation and basic usage of this project, with simple examples.
100
100
  EO_INSTRUCTIONS
@@ -108,7 +108,7 @@ module XAeonAgents
108
108
  intent: 'Generate README Requirements section',
109
109
  user_instructions: <<~EO_INSTRUCTIONS
110
110
  Analyze this project's dependencies, runtime environment, and prerequisites.
111
- Create an artifact named `#{requirements_agent.artifact_ref(:requirements)}` listing all prerequisites needed to use or run the project
111
+ Write the list of all prerequisites needed to use or run the project to the file `#{requirements_agent.artifact_ref(:requirements)}`
112
112
  using Markdown format, compatible with Github flavor.
113
113
  Those prerequisites should be given as a short list of technical points (for example OS, languages and versions, needed libraries...).
114
114
  Only list prerequisites that are needed by the users of the project, and not provided by the installation steps.
@@ -123,7 +123,7 @@ module XAeonAgents
123
123
  intent: 'Generate README Features section',
124
124
  user_instructions: <<~EO_INSTRUCTIONS
125
125
  Analyze this project's codebase and capabilities to identify all key features.
126
- Create an artifact named `#{features_agent.artifact_ref(:features)}` listing the main features of the project
126
+ Write the list of the main features of the project to the file `#{features_agent.artifact_ref(:features)}`
127
127
  using Markdown format, compatible with Github flavor.
128
128
  Those features should be summarized in a simple paragraph.
129
129
  EO_INSTRUCTIONS
@@ -137,7 +137,7 @@ module XAeonAgents
137
137
  intent: 'Generate README Public API section',
138
138
  user_instructions: <<~EO_INSTRUCTIONS
139
139
  Analyze this project's codebase to identify all public APIs, classes, methods, and interfaces exposed to users.
140
- Create an artifact named `#{public_api_agent.artifact_ref(:public_api)}` documenting the public API surface
140
+ Write the documentation of the public API surface to the file `#{public_api_agent.artifact_ref(:public_api)}`
141
141
  using Markdown format, compatible with Github flavor.
142
142
  The public API description should only contain public entry points of the project. Those entry points can be:
143
143
  - Executables from the `bin` directory, if any.
@@ -158,7 +158,7 @@ module XAeonAgents
158
158
  intent: 'Generate README Documentation section',
159
159
  user_instructions: <<~EO_INSTRUCTIONS
160
160
  Explore this project's documentation files and resources to identify all available documentation.
161
- Create an artifact named `#{documentation_agent.artifact_ref(:documentation)}` providing links to documentation resources
161
+ Write links to documentation resources to the file `#{documentation_agent.artifact_ref(:documentation)}`
162
162
  using Markdown format, compatible with Github flavor.
163
163
  Links can be:
164
164
  - Link to the RubyDoc.info documentation for a Ruby public method (for example `https://www.rubydoc.info/gems/x_aeon_agents`).
@@ -174,7 +174,7 @@ module XAeonAgents
174
174
  intent: 'Generate README "How does it work" section',
175
175
  user_instructions: <<~EO_INSTRUCTIONS
176
176
  Analyze this project's architecture, design patterns, and internal workings.
177
- Create an artifact named `#{how_it_works_agent.artifact_ref(:how_it_works)}` explaining the internal architecture and working principles
177
+ Write an explanation of the internal architecture and working principles to the file `#{how_it_works_agent.artifact_ref(:how_it_works)}`
178
178
  using Markdown format, compatible with Github flavor.
179
179
  This should be summarized as a small section, not an architecture document.
180
180
  EO_INSTRUCTIONS
@@ -188,7 +188,7 @@ module XAeonAgents
188
188
  intent: 'Generate README Development section',
189
189
  user_instructions: <<~EO_INSTRUCTIONS
190
190
  Analyze this project's development setup, build system, testing framework, and development workflows.
191
- Create an artifact named `#{development_agent.artifact_ref(:development)}` explaining how to set up a development environment to code for this project
191
+ Write how to set up a development environment for this project to the file `#{development_agent.artifact_ref(:development)}`
192
192
  using Markdown format, compatible with Github flavor.
193
193
  EO_INSTRUCTIONS
194
194
  )
@@ -201,7 +201,7 @@ module XAeonAgents
201
201
  intent: 'Generate README Contributing section',
202
202
  user_instructions: <<~EO_INSTRUCTIONS
203
203
  Analyze this project's CONTRIBUTING guidelines, issue templates, pull request templates, and any community guidelines.
204
- Create an artifact named `#{contributing_agent.artifact_ref(:contributing)}` explaining how users can contribute to the project
204
+ Write how users can contribute to the project to the file `#{contributing_agent.artifact_ref(:contributing)}`
205
205
  using Markdown format, compatible with Github flavor.
206
206
  This should be done in 1 paragraph showing how to install or setup test dependencies and how to run tests, as a whole or individually.
207
207
  Use simple examples to illustrate it.
@@ -216,7 +216,7 @@ module XAeonAgents
216
216
  intent: 'Generate README License section',
217
217
  user_instructions: <<~EO_INSTRUCTIONS
218
218
  Analyze this project's LICENSE file to identify the license type and terms.
219
- Create an artifact named `#{license_agent.artifact_ref(:license)}` describing the project license
219
+ Write the description of the project license to the file `#{license_agent.artifact_ref(:license)}`
220
220
  using Markdown format, compatible with Github flavor.
221
221
  If there is already a LICENSE file in this project, just provide a link to this license file.
222
222
  EO_INSTRUCTIONS
@@ -63,22 +63,22 @@ module XAeonAgents
63
63
  user_instructions: {
64
64
  ordered_list: [
65
65
  <<~EO_INSTRUCTION,
66
- Read the `#{feedback_analyst_agent.artifact_ref(:description)}` artifact to understand the purpose of this Pull Request
66
+ Read the file `#{feedback_analyst_agent.artifact_ref(:pr_description)}` to understand the purpose of this Pull Request
67
67
 
68
68
  - This gives you context on what is the purpose of this Pull Request.
69
69
  EO_INSTRUCTION
70
70
  <<~EO_INSTRUCTION,
71
- Read the `#{feedback_analyst_agent.artifact_ref(:pr_files_diffs)}` artifact to understand all changes made by this Pull Request
71
+ Read the file `#{feedback_analyst_agent.artifact_ref(:pr_files_diffs)}` to understand all changes made by this Pull Request
72
72
 
73
73
  - This gives you context on how has this Pull Request been implemented.
74
74
  EO_INSTRUCTION
75
75
  <<~EO_INSTRUCTION,
76
- Read the `#{feedback_analyst_agent.artifact_ref(:conversations)}` artifact to understand the full context of the PR conversations
76
+ Read the file `#{feedback_analyst_agent.artifact_ref(:conversations)}` to understand the full context of the PR conversations
77
77
 
78
78
  - This gives you context on the discussions around this Pull Request.
79
79
  EO_INSTRUCTION
80
80
  <<~EO_INSTRUCTION,
81
- Read the `#{feedback_analyst_agent.artifact_ref(:open_comments_to_agents)}` artifact to focus on agent-directed comments
81
+ Read the file `#{feedback_analyst_agent.artifact_ref(:open_comments_to_agents)}` to focus on agent-directed comments
82
82
 
83
83
  - You must devise requirements that will address those exact comments.
84
84
  EO_INSTRUCTION
@@ -86,9 +86,9 @@ module XAeonAgents
86
86
  Analyze agent-directed comments to identify specific requirements or tasks that need implementation
87
87
  EO_INSTRUCTION
88
88
  <<~EO_INSTRUCTION
89
- Extract clear, actionable requirements from the comments in an artifact named `#{feedback_analyst_agent.artifact_ref(:requirements)}`
89
+ Write clear, actionable requirements extracted from the comments to the file `#{feedback_analyst_agent.artifact_ref(:requirements)}`
90
90
 
91
- - If no implementation is required (e.g., comments are just questions), output "No requirements"
91
+ - If no implementation is required (e.g., comments are just questions), write exactly `No requirements` in this file
92
92
  EO_INSTRUCTION
93
93
  ]
94
94
  }
@@ -120,32 +120,32 @@ module XAeonAgents
120
120
  user_instructions: {
121
121
  ordered_list: [
122
122
  <<~EO_INSTRUCTION,
123
- Read the `#{review_responder_agent.artifact_ref(:conversations)}` artifact to understand the full context of the PR conversations
123
+ Read the file `#{review_responder_agent.artifact_ref(:conversations)}` to understand the full context of the PR conversations
124
124
 
125
125
  - This gives you context on the discussions around this Pull Request.
126
126
  EO_INSTRUCTION
127
127
  <<~EO_INSTRUCTION,
128
- Read the `#{review_responder_agent.artifact_ref(:requirements)}` artifact to understand what was implemented
128
+ Read the file `#{review_responder_agent.artifact_ref(:requirements)}` to understand what was implemented
129
129
 
130
130
  - This gives you context on what has been implemented by other agents.
131
131
  EO_INSTRUCTION
132
132
  <<~EO_INSTRUCTION,
133
- Read the `#{review_responder_agent.artifact_ref(:plan)}` artifact to understand the implementation approach
133
+ Read the file `#{review_responder_agent.artifact_ref(:plan)}` to understand the implementation approach
134
134
 
135
135
  - This gives you context on how other agents implemented the requirements.
136
136
  EO_INSTRUCTION
137
137
  <<~EO_INSTRUCTION,
138
- Read the `#{review_responder_agent.artifact_ref(:files_diffs)}` artifact to understand the specific code changes made
138
+ Read the file `#{review_responder_agent.artifact_ref(:files_diffs)}` to understand the specific code changes made
139
139
 
140
140
  - This gives you context on what files have been modified.
141
141
  EO_INSTRUCTION
142
142
  <<~EO_INSTRUCTION,
143
- Read the `#{review_responder_agent.artifact_ref(:open_comment_for_reply)}` artifact to understand the specific comment to respond to
143
+ Read the file `#{review_responder_agent.artifact_ref(:open_comment_for_reply)}` to understand the specific comment to respond to
144
144
 
145
145
  - This is the EXACT comment that you should reply to.
146
146
  EO_INSTRUCTION
147
147
  <<~EO_INSTRUCTION
148
- Generate a professional, helpful reply that addresses the comment appropriately, in the artifact named `#{review_responder_agent.artifact_ref(:reply)}`
148
+ Write a professional, helpful reply that addresses the comment appropriately to the file `#{review_responder_agent.artifact_ref(:reply)}`
149
149
 
150
150
  - If requirements were implemented, explain what was done and how it addresses the comment.
151
151
  - If no requirements existed, provide a helpful response explaining the situation.
@@ -18,9 +18,18 @@ module XAeonAgents
18
18
  description: 'The exact comment to be replied to',
19
19
  type: :json
20
20
  },
21
- requirements: 'The requirements that have been implemented (or "No requirements")',
22
- plan: 'The implementation plan that was used to implement those requirements (or "No implementation plan")',
23
- files_diffs: 'The code changes from implement_requirements workflow (or "No changes")'
21
+ requirements: {
22
+ description: 'The requirements that have been implemented (or "No requirements")',
23
+ type: :markdown
24
+ },
25
+ plan: {
26
+ description: 'The implementation plan that was used to implement those requirements (or "No implementation plan")',
27
+ type: :markdown
28
+ },
29
+ files_diffs: {
30
+ description: 'The code changes from implement_requirements workflow (or "No changes")',
31
+ type: :text
32
+ }
24
33
  }
25
34
  )
26
35
  end
@@ -46,17 +55,25 @@ module XAeonAgents
46
55
  role: 'You are a review responder agent. Your role is to reply to feedback, ' \
47
56
  'taking into account the feedback itself, and the work that has been done because of this feedback.',
48
57
  objective: 'Generate a reply to a review comment',
58
+ system_instructions: <<~EO_INSTRUCTIONS,
59
+ #{Helpers.repository_access_system_instructions}
60
+
61
+ Always base your reply on the input artifacts given to you: they contain the full context of the Pull Request.
62
+ Do not indicate that you will perform an action without actually doing it.
63
+ EO_INSTRUCTIONS
49
64
  **agent_params
50
65
  )
51
66
  self.constraints = <<~EO_CONSTRAINTS
52
- - You are in read-only mode.
53
- - Do NOT modify or write any file.
54
- - The implementation work is already complete (captured in the artifacts).
55
- - ONLY focus on addressing the specific comment of the `#{artifact_ref(:open_comment_for_reply)}` artifact appropriately.
67
+ - You are in read-only mode for the repository: do NOT modify any file of it.
68
+ - The implementation work is already complete (captured in the input artifacts).
69
+ - ONLY focus on addressing the specific comment described in the file `#{artifact_ref(:open_comment_for_reply)}`.
56
70
  - Do NOT answer or reply to any other comment.
57
71
  - You already have ALL the information required.
58
72
  - You MUST NOT ask follow-up questions.
59
73
  - You MUST NOT ask for user confirmation.
74
+ - Write the reply text to the output artifact file `#{artifact_ref(:reply)}`.
75
+ - #{Helpers.repository_access_constraint}
76
+ - #{Helpers.artifacts_access_constraint(artifact_ref(:reply))}
60
77
  EO_CONSTRAINTS
61
78
  end
62
79
  end
@@ -10,12 +10,27 @@ module XAeonAgents
10
10
  # @return [Hash{Symbol => Object}] Set of input artifacts description, per artifact name
11
11
  def input_artifacts_contracts
12
12
  super.merge(
13
- requirements: 'The initial requirements',
14
- plan: 'The implementation plan devised from the requirements',
15
- files_diffs: 'The full list of files changes and differences that have been done to implement the initial ' \
16
- 'requirements following the implementation plan',
17
- tests_output: 'The output of running the whole tests suite',
18
- tests_cmd: 'The command line to be used to run the whole tests suite'
13
+ requirements: {
14
+ description: 'The initial requirements',
15
+ type: :markdown
16
+ },
17
+ plan: {
18
+ description: 'The implementation plan devised from the requirements',
19
+ type: :markdown
20
+ },
21
+ files_diffs: {
22
+ description: 'The full list of files changes and differences that have been done to implement the initial ' \
23
+ 'requirements following the implementation plan',
24
+ type: :text
25
+ },
26
+ tests_output: {
27
+ description: 'The output of running the whole tests suite',
28
+ type: :text
29
+ },
30
+ tests_cmd: {
31
+ description: 'The command line to be used to run the whole tests suite',
32
+ type: :text
33
+ }
19
34
  )
20
35
  end
21
36
 
@@ -42,12 +57,12 @@ module XAeonAgents
42
57
  Fix any regression that has been induced by new features or fixes, while keeping the initial requirements and implementation plan in mind.
43
58
  If the decisions taken in the implementation plan prevent you from fixing regressions, modify the implementation plan and report those modifications to the user.
44
59
  EO_OBJECTIVE
45
- constraints: <<~EO_CONSTRAINTS,
46
- - #{Helpers.repository_access_constraint(writable: true)}
47
- - Never create files (`ARTIFACT_*`, `/tmp/*`) to hold artifacts. Put the fenced ` ```json output_artifact=… ` block in your final message and end the turn with __no tool call__.
48
- EO_CONSTRAINTS
49
60
  **agent_params
50
61
  )
62
+ self.constraints = <<~EO_CONSTRAINTS
63
+ - #{Helpers.repository_access_constraint(writable: true)}
64
+ - #{Helpers.artifacts_access_constraint(artifact_ref(:plan_modifications))}
65
+ EO_CONSTRAINTS
51
66
  self.system_instructions = <<~EO_INSTRUCTIONS
52
67
  #{Helpers.repository_access_system_instructions}
53
68
 
@@ -62,7 +77,7 @@ module XAeonAgents
62
77
 
63
78
  If you need more information, use one of the available tools or ask for clarification instead of making assumptions or lies.
64
79
 
65
- Fix __all__ issues reported in the `#{artifact_ref(:tests_output)}` artifact in this iteration (not a subset).
80
+ Fix __all__ issues reported in the tests output file `#{artifact_ref(:tests_output)}` in this iteration (not a subset).
66
81
  Identify the exact failing spec file(s) and run __those__, then a final full run. __Never__ conclude success from a partial run.
67
82
  Quote the final summary line of your verification run in your answer.
68
83
 
@@ -168,6 +168,19 @@ module XAeonAgents
168
168
  "You should only #{writable ? 'read and write' : 'read'} files that are part of the current repository: `#{Dir.pwd}`"
169
169
  end
170
170
 
171
+ # Get the constraint allowing agents to access their artifact files, which can be located outside of the
172
+ # current repository.
173
+ # This constraint is format-agnostic: it does not include any formatting (bullet, header...) so that it can be
174
+ # included in any constraints section.
175
+ #
176
+ # @param artifact_paths [Array<String>] Absolute paths of the artifact files the agent is allowed to access
177
+ # @return [String] The constraint about artifact files access
178
+ def artifacts_access_constraint(*artifact_paths)
179
+ 'You are allowed to read and write the artifact files at ' \
180
+ "#{artifact_paths.map { |artifact_path| "`#{artifact_path}`" }.join(', ')}, " \
181
+ 'even if they are not part of the current repository'
182
+ end
183
+
171
184
  # Allow user to review and edit content before using it
172
185
  #
173
186
  # When the interactive mode is disabled (Config.interactive), no review file
@@ -2,5 +2,5 @@ module XAeonAgents
2
2
  # @!group Global API
3
3
 
4
4
  # Gem version
5
- VERSION = '2.6.2'
5
+ VERSION = '2.7.1'
6
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: x_aeon_agents
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.6.2
4
+ version: 2.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Muriel Salvan
@@ -57,14 +57,14 @@ dependencies:
57
57
  requirements:
58
58
  - - "~>"
59
59
  - !ruby/object:Gem::Version
60
- version: '3.4'
60
+ version: '3.7'
61
61
  type: :runtime
62
62
  prerelease: false
63
63
  version_requirements: !ruby/object:Gem::Requirement
64
64
  requirements:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: '3.4'
67
+ version: '3.7'
68
68
  - !ruby/object:Gem::Dependency
69
69
  name: diffy
70
70
  requirement: !ruby/object:Gem::Requirement