x_aeon_agents 2.7.1 → 2.8.0

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: c02e664b325a3265a1397697d4730f7e95901db60483db4b3961851d7f92085d
4
- data.tar.gz: 9ab1c4fbd0deb3313b55f82cd08dcf66f1bab8ff7c89f0f03a0c93e4d595fe0d
3
+ metadata.gz: ca63878f464258f86f9d780e3c02e8b5bd6f519caa475ebb11bb1f51457ebeb2
4
+ data.tar.gz: '0780aa1af3dd89ab64c00aa28fb66afa4f320d98fa471cd715b0de3298267097'
5
5
  SHA512:
6
- metadata.gz: 724e0edba6d234a943beb21d3be41f4407582d4f43efd97a1fceb096c353b8f52f34801facf88257872592bd7f23bd540c078d08745eee6d3b6066fe9ab5c934
7
- data.tar.gz: 753db34710e6a78dd2f6c53fadd14fbc1086b684a1a451b8b2326375173008cafe5743d778d7ce36432f71d1c3ef726f53b2a3e16b5b7b643187982a704631a7
6
+ metadata.gz: b231e35b0015adacf2711b6cf2bbc3994722879f42a924ed4572b2c8ee2665b2082446b51df25f07f185b99620ddee8d74efbf6781719c869ab47e9753708c1f
7
+ data.tar.gz: 9f12ff2f488d6735426bff1d8c88f44b9380a326018742ea1d768b8275a3aecef9343d152fa7da67084838b8f8b77f42b427082c48a19ca73a6709b10c48f6f0
data/CHANGELOG.md CHANGED
@@ -1,3 +1,15 @@
1
+ # [v2.8.0](https://github.com/Muriel-Salvan/x_aeon_agents/compare/v2.7.1...v2.8.0) (2026-11-12 17:47:11)
2
+
3
+ ## Global changes
4
+ ### Patches
5
+
6
+ * [feat(agents): support non-interactive constraints if needed in the prompts](https://github.com/Muriel-Salvan/x_aeon_agents/commit/2ef0511f6a711d28c91de95c498c0deb8ee71607)
7
+
8
+ ## Changes for agents
9
+ ### Features
10
+
11
+ * [feat(agents): support non-interactive constraints if needed in the prompts](https://github.com/Muriel-Salvan/x_aeon_agents/commit/2ef0511f6a711d28c91de95c498c0deb8ee71607)
12
+
1
13
  # [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
14
 
3
15
  ## Global changes
@@ -46,39 +46,46 @@ module XAeonAgents
46
46
  When you have completed the task, please provide a summary of what you did and any relevant information that the user should know.
47
47
  This will help ensure that the user understands the changes made and can easily follow up if they have any questions or need further assistance.
48
48
  EO_INSTRUCTIONS
49
- constraints: <<~EO_CONSTRAINTS,
50
- Remember:
51
- - Always adhere to existing code conventions and patterns.
52
- - Use only libraries and frameworks that are confirmed to be in use in the current codebase.
53
- - Provide complete and functional code without omissions or placeholders.
54
- - Always think about new tests and corner cases to be added or changed with new features, fixes or feature changes.
55
- - Always think about documentation updates with new features or feature changes.
56
- - Be explicit about any assumptions or limitations in your solution.
57
- - Always show your planning process before executing any task.
58
- This will help ensure that you have a clear understanding of the requirements and that your approach aligns with the user's needs.
59
- - Always use absolute paths when referring to files.
60
- - You can call multiple tools in a single response.
61
- Before using tools, identify every independent read, search, command, or edit needed for the next step and emit all of those tool calls now, either as multiple tool calls or as one batched input for tools that accept arrays.
62
- Do not wait for one independent result before requesting another.
63
- Do not split independent reads, searches, checks, or edits across separate turns.
64
- - Good parallelism examples: read all known relevant files in one read_files call;
65
- run independent inspection commands in one run_commands call;
66
- emit independent read_files, search_codebase, and run_commands calls together in one response;
67
- emit multiple editor calls together when editing different files or non-overlapping regions.
68
- - Always verify the files you have edited or created at the end of the task to ensure they are completed and working as expected.
69
- - #{Helpers.repository_access_constraint(writable: true)}
70
-
71
- REMEMBER, be helpful and proactive!
72
- Don't ask for permission to do something when you can do it!
73
- Do not indicates you will be using a tool unless you are actually going to use it.
74
-
75
- IMPORTANT: Always includes tool calls in your response until the task is completed.
76
- Response without tool calls will be considered as completed with the final answer.
77
-
78
- Do not indicate that you will perform an action without actually doing it.
79
- Always provide the final result in your response.
80
- Always validate your answer with checking the code and running it if possible.
81
- EO_CONSTRAINTS
49
+ constraints: [
50
+ 'Remember:',
51
+ '- Always adhere to existing code conventions and patterns.',
52
+ '- Use only libraries and frameworks that are confirmed to be in use in the current codebase.',
53
+ '- Provide complete and functional code without omissions or placeholders.',
54
+ '- Always think about new tests and corner cases to be added or changed with new features, fixes or feature changes.',
55
+ '- Always think about documentation updates with new features or feature changes.',
56
+ '- Be explicit about any assumptions or limitations in your solution.',
57
+ <<~EO_CONSTRAINT.rstrip,
58
+ - Always show your planning process before executing any task.
59
+ This will help ensure that you have a clear understanding of the requirements and that your approach aligns with the user's needs.
60
+ EO_CONSTRAINT
61
+ '- Always use absolute paths when referring to files.',
62
+ <<~EO_CONSTRAINT.rstrip,
63
+ - You can call multiple tools in a single response.
64
+ Before using tools, identify every independent read, search, command, or edit needed for the next step and emit all of those tool calls now, either as multiple tool calls or as one batched input for tools that accept arrays.
65
+ Do not wait for one independent result before requesting another.
66
+ Do not split independent reads, searches, checks, or edits across separate turns.
67
+ EO_CONSTRAINT
68
+ <<~EO_CONSTRAINT.rstrip,
69
+ - Good parallelism examples: read all known relevant files in one read_files call;
70
+ run independent inspection commands in one run_commands call;
71
+ emit independent read_files, search_codebase, and run_commands calls together in one response;
72
+ emit multiple editor calls together when editing different files or non-overlapping regions.
73
+ EO_CONSTRAINT
74
+ '- Always verify the files you have edited or created at the end of the task to ensure they are completed and working as expected.',
75
+ Helpers.repository_access_constraint(writable: true),
76
+ Helpers.non_interactive_constraint,
77
+ '',
78
+ 'REMEMBER, be helpful and proactive!',
79
+ "Don't ask for permission to do something when you can do it!",
80
+ 'Do not indicates you will be using a tool unless you are actually going to use it.',
81
+ '',
82
+ 'IMPORTANT: Always includes tool calls in your response until the task is completed.',
83
+ 'Response without tool calls will be considered as completed with the final answer.',
84
+ '',
85
+ 'Do not indicate that you will perform an action without actually doing it.',
86
+ 'Always provide the final result in your response.',
87
+ 'Always validate your answer with checking the code and running it if possible.'
88
+ ].compact.join("\n"),
82
89
  **agent_params
83
90
  )
84
91
  end
@@ -66,14 +66,15 @@ module XAeonAgents
66
66
  EO_INSTRUCTIONS
67
67
  ]
68
68
  }
69
- self.constraints = <<~EO_CONSTRAINTS
70
- - You are in read-only mode.
71
- - Do NOT modify or write any file.
72
- - You must ONLY explain the changes of the artifact named `#{artifact_ref(:files_diff)}`, NOT other changes.
73
- - You already have ALL the information required.
74
- - The user's intent is fully specified.
75
- - The conversation log is provided for context only. You MUST NOT ask follow-up questions.
76
- EO_CONSTRAINTS
69
+ self.constraints = [
70
+ '- You are in read-only mode.',
71
+ '- Do NOT modify or write any file.',
72
+ "- You must ONLY explain the changes of the artifact named `#{artifact_ref(:files_diff)}`, NOT other changes.",
73
+ '- You already have ALL the information required.',
74
+ "- The user's intent is fully specified.",
75
+ '- The conversation log is provided for context only. You MUST NOT ask follow-up questions.',
76
+ Helpers.non_interactive_constraint
77
+ ].compact.join("\n")
77
78
  end
78
79
  end
79
80
  end
@@ -48,15 +48,16 @@ module XAeonAgents
48
48
  When you have completed the task, please provide a summary of what you did and any relevant information that the user should know.
49
49
  This will help ensure that the user understands the changes made and can easily follow up if they have any questions or need further assistance.
50
50
  EO_INSTRUCTIONS
51
- constraints: <<~EO_CONSTRAINTS,
52
- - Only update documentation files.
53
- - Do NOT change any code or test.
54
- - NEVER document the fact that a change happened.
55
- - NEVER explain that something was removed, renamed, or fixed.
56
- - Documentation describes the CURRENT STATE only.
57
- - Documentation is NOT a changelog.
58
- - #{Helpers.repository_access_constraint(writable: true)}
59
- EO_CONSTRAINTS
51
+ constraints: [
52
+ '- Only update documentation files.',
53
+ '- Do NOT change any code or test.',
54
+ '- NEVER document the fact that a change happened.',
55
+ '- NEVER explain that something was removed, renamed, or fixed.',
56
+ '- Documentation describes the CURRENT STATE only.',
57
+ '- Documentation is NOT a changelog.',
58
+ Helpers.repository_access_constraint(writable: true),
59
+ Helpers.non_interactive_constraint
60
+ ].compact.join("\n"),
60
61
  **agent_params
61
62
  )
62
63
  end
@@ -9,7 +9,13 @@ module XAeonAgents
9
9
  #
10
10
  # @param agent_params [Hash{Symbol => Object}] Extra agent parameters
11
11
  def initialize(**agent_params)
12
- super(name: 'Executor', **agent_params)
12
+ super(
13
+ name: 'Executor',
14
+ constraints: [
15
+ Helpers.non_interactive_constraint
16
+ ].compact.join("\n"),
17
+ **agent_params
18
+ )
13
19
  end
14
20
  end
15
21
  end
@@ -60,14 +60,15 @@ module XAeonAgents
60
60
  EO_INSTRUCTIONS
61
61
  **agent_params
62
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
63
+ self.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
+ Helpers.non_interactive_constraint
71
+ ].compact.join("\n")
71
72
  end
72
73
  end
73
74
  end
@@ -26,13 +26,14 @@ module XAeonAgents
26
26
  name: '1-line code diff summarizer',
27
27
  role: 'You are a 1-line code diff summarizer agent',
28
28
  objective: 'Produce a 1-line summary of a code change intent report.',
29
- constraints: <<~EO_CONSTRAINTS,
30
- - You are in read-only mode.
31
- - Do NOT modify or write any file.
32
- - You already have ALL the information required.
33
- - The user's intent is fully specified.
34
- - You MUST NOT ask follow-up questions.
35
- EO_CONSTRAINTS
29
+ constraints: [
30
+ '- You are in read-only mode.',
31
+ '- Do NOT modify or write any file.',
32
+ '- You already have ALL the information required.',
33
+ "- The user's intent is fully specified.",
34
+ '- You MUST NOT ask follow-up questions.',
35
+ Helpers.non_interactive_constraint
36
+ ].compact.join("\n"),
36
37
  **agent_params
37
38
  )
38
39
  self.system_instructions = {
@@ -48,13 +48,14 @@ module XAeonAgents
48
48
  EO_INSTRUCTIONS
49
49
  **agent_params
50
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
51
+ self.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
+ Helpers.non_interactive_constraint
58
+ ].compact.join("\n")
58
59
  end
59
60
  end
60
61
  end
@@ -48,15 +48,18 @@ module XAeonAgents
48
48
  EO_INSTRUCTIONS
49
49
  **agent_params
50
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
51
+ self.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
+ <<~EO_CONSTRAINT.rstrip,
55
+ - Only focus on the specific scope of the required documentation required.
56
+ Other agents will generate other sections of the README.
57
+ Do not try to document other parts.
58
+ EO_CONSTRAINT
59
+ Helpers.repository_access_constraint,
60
+ Helpers.artifacts_access_constraint(artifact_ref(:about), artifact_ref(:name), artifact_ref(:description)),
61
+ Helpers.non_interactive_constraint
62
+ ].compact.join("\n")
60
63
  end
61
64
  end
62
65
  end
@@ -38,17 +38,20 @@ module XAeonAgents
38
38
  EO_INSTRUCTIONS
39
39
  **agent_params
40
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
41
+ self.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
+ <<~EO_CONSTRAINT.rstrip,
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
+ EO_CONSTRAINT
49
+ '- Do not describe the technical setup or prequisites, as they are already covered by other sections.',
50
+ '- Do not cover how to develop in this project: it is already covered in other sections.',
51
+ Helpers.repository_access_constraint,
52
+ Helpers.artifacts_access_constraint(artifact_ref(:contributing)),
53
+ Helpers.non_interactive_constraint
54
+ ].compact.join("\n")
52
55
  end
53
56
  end
54
57
  end
@@ -45,17 +45,20 @@ module XAeonAgents
45
45
  EO_INSTRUCTIONS
46
46
  **agent_params
47
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
48
+ self.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
+ <<~EO_CONSTRAINT.rstrip,
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
+ EO_CONSTRAINT
56
+ '- Do not cover the end-user main requirements and prerequisites: they are already covered in other sections.',
57
+ '- Do not cover the contribution workflow (pull requests, CI, issues...): this is already covered in other sections.',
58
+ Helpers.repository_access_constraint,
59
+ Helpers.artifacts_access_constraint(artifact_ref(:development)),
60
+ Helpers.non_interactive_constraint
61
+ ].compact.join("\n")
59
62
  end
60
63
  end
61
64
  end
@@ -36,15 +36,18 @@ module XAeonAgents
36
36
  EO_INSTRUCTIONS
37
37
  **agent_params
38
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
39
+ self.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
+ <<~EO_CONSTRAINT.rstrip,
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
+ EO_CONSTRAINT
47
+ Helpers.repository_access_constraint,
48
+ Helpers.artifacts_access_constraint(artifact_ref(:documentation)),
49
+ Helpers.non_interactive_constraint
50
+ ].compact.join("\n")
48
51
  end
49
52
  end
50
53
  end
@@ -38,15 +38,18 @@ module XAeonAgents
38
38
  EO_INSTRUCTIONS
39
39
  **agent_params
40
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
41
+ self.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
+ <<~EO_CONSTRAINT.rstrip,
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
+ EO_CONSTRAINT
49
+ Helpers.repository_access_constraint,
50
+ Helpers.artifacts_access_constraint(artifact_ref(:features)),
51
+ Helpers.non_interactive_constraint
52
+ ].compact.join("\n")
50
53
  end
51
54
  end
52
55
  end
@@ -39,16 +39,19 @@ module XAeonAgents
39
39
  EO_INSTRUCTIONS
40
40
  **agent_params
41
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
42
+ self.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
+ <<~EO_CONSTRAINT.rstrip,
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
+ EO_CONSTRAINT
50
+ '- Do not provide long paragraphs: focus on readability by splitting long paragraphs into several short ones.',
51
+ Helpers.repository_access_constraint,
52
+ Helpers.artifacts_access_constraint(artifact_ref(:how_it_works)),
53
+ Helpers.non_interactive_constraint
54
+ ].compact.join("\n")
52
55
  end
53
56
  end
54
57
  end
@@ -36,15 +36,18 @@ module XAeonAgents
36
36
  EO_INSTRUCTIONS
37
37
  **agent_params
38
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
39
+ self.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
+ <<~EO_CONSTRAINT.rstrip,
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
+ EO_CONSTRAINT
47
+ Helpers.repository_access_constraint,
48
+ Helpers.artifacts_access_constraint(artifact_ref(:license)),
49
+ Helpers.non_interactive_constraint
50
+ ].compact.join("\n")
48
51
  end
49
52
  end
50
53
  end
@@ -36,16 +36,19 @@ module XAeonAgents
36
36
  EO_INSTRUCTIONS
37
37
  **agent_params
38
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
39
+ self.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
+ <<~EO_CONSTRAINT.rstrip,
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
+ EO_CONSTRAINT
47
+ '- Only document public API entry points: executables and library public methods belonging to yarn `Public API` group.',
48
+ Helpers.repository_access_constraint,
49
+ Helpers.artifacts_access_constraint(artifact_ref(:public_api)),
50
+ Helpers.non_interactive_constraint
51
+ ].compact.join("\n")
49
52
  end
50
53
  end
51
54
  end
@@ -42,16 +42,19 @@ module XAeonAgents
42
42
  EO_INSTRUCTIONS
43
43
  **agent_params
44
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
45
+ self.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
+ <<~EO_CONSTRAINT.rstrip,
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
+ EO_CONSTRAINT
53
+ "- This section is not meant for developers: don't describe how to develop, test, document, package or contribute to this project.",
54
+ Helpers.repository_access_constraint,
55
+ Helpers.artifacts_access_constraint(artifact_ref(:quick_start)),
56
+ Helpers.non_interactive_constraint
57
+ ].compact.join("\n")
55
58
  end
56
59
  end
57
60
  end
@@ -36,15 +36,18 @@ module XAeonAgents
36
36
  EO_INSTRUCTIONS
37
37
  **agent_params
38
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
39
+ self.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
+ <<~EO_CONSTRAINT.rstrip,
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
+ EO_CONSTRAINT
47
+ Helpers.repository_access_constraint,
48
+ Helpers.artifacts_access_constraint(artifact_ref(:requirements)),
49
+ Helpers.non_interactive_constraint
50
+ ].compact.join("\n")
48
51
  end
49
52
  end
50
53
  end
@@ -63,18 +63,19 @@ module XAeonAgents
63
63
  EO_INSTRUCTIONS
64
64
  **agent_params
65
65
  )
66
- self.constraints = <<~EO_CONSTRAINTS
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)}`.
70
- - Do NOT answer or reply to any other comment.
71
- - You already have ALL the information required.
72
- - You MUST NOT ask follow-up questions.
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))}
77
- EO_CONSTRAINTS
66
+ self.constraints = [
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)}`.",
70
+ '- Do NOT answer or reply to any other comment.',
71
+ '- You already have ALL the information required.',
72
+ '- You MUST NOT ask follow-up questions.',
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)),
77
+ Helpers.non_interactive_constraint
78
+ ].compact.join("\n")
78
79
  end
79
80
  end
80
81
  end
@@ -59,10 +59,11 @@ module XAeonAgents
59
59
  EO_OBJECTIVE
60
60
  **agent_params
61
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
62
+ self.constraints = [
63
+ Helpers.repository_access_constraint(writable: true),
64
+ Helpers.artifacts_access_constraint(artifact_ref(:plan_modifications)),
65
+ Helpers.non_interactive_constraint
66
+ ].compact.join("\n")
66
67
  self.system_instructions = <<~EO_INSTRUCTIONS
67
68
  #{Helpers.repository_access_system_instructions}
68
69
 
@@ -159,28 +159,44 @@ module XAeonAgents
159
159
  end
160
160
 
161
161
  # Get the constraint restricting the files agents are allowed to access.
162
- # This constraint is format-agnostic: it does not include any formatting (bullet, header...) so that it can be
163
- # included in any constraints section.
162
+ # Constraints are rendered as Markdown bullet lists: the returned sentence includes its own bullet prefix.
164
163
  #
165
164
  # @param writable [Boolean] True if the agent is allowed to write files, false if it is read-only
166
165
  # @return [String] The constraint restricting the agents' file accesses to the current repository
167
166
  def repository_access_constraint(writable: false)
168
- "You should only #{writable ? 'read and write' : 'read'} files that are part of the current repository: `#{Dir.pwd}`"
167
+ "- You should only #{writable ? 'read and write' : 'read'} files that are part of the current repository: `#{Dir.pwd}`"
169
168
  end
170
169
 
171
170
  # Get the constraint allowing agents to access their artifact files, which can be located outside of the
172
171
  # 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.
172
+ # Constraints are rendered as Markdown bullet lists: the returned sentence includes its own bullet prefix.
173
+ # A nil is returned when no artifact path is given, so that callers can interpolate the result
174
+ # unconditionally in an array of constraint lines and simply compact the array.
175
175
  #
176
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
177
+ # @return [String, nil] The constraint about artifact files access, or nil when no artifact path is given
178
178
  def artifacts_access_constraint(*artifact_paths)
179
- 'You are allowed to read and write the artifact files at ' \
179
+ return nil if artifact_paths.empty?
180
+
181
+ '- You are allowed to read and write the artifact files at ' \
180
182
  "#{artifact_paths.map { |artifact_path| "`#{artifact_path}`" }.join(', ')}, " \
181
183
  'even if they are not part of the current repository'
182
184
  end
183
185
 
186
+ # Get the constraint forbidding the agent from using the ask_question tool when no human user is available.
187
+ # Constraints are rendered as Markdown bullet lists: the returned sentence includes its own bullet prefix.
188
+ # A nil is returned when the interactive mode is enabled, so that callers can interpolate the result
189
+ # unconditionally in an array of constraint lines and simply compact the array.
190
+ #
191
+ # @return [String, nil] The constraint about not asking questions, or nil when the interactive mode is enabled
192
+ def non_interactive_constraint
193
+ return nil if Config.interactive
194
+
195
+ '- You MUST NOT use the ask_question tool under any circumstances: ' \
196
+ 'you are running in non-interactive mode with no human user available, ' \
197
+ 'so proceed using your best judgment without asking'
198
+ end
199
+
184
200
  # Allow user to review and edit content before using it
185
201
  #
186
202
  # 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.7.1'
5
+ VERSION = '2.8.0'
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.7.1
4
+ version: 2.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Muriel Salvan