Skip to content

Commit 28d3188

Browse files
committed
fix: colocate loop agent policies
1 parent 0366d28 commit 28d3188

5 files changed

Lines changed: 15 additions & 10 deletions

File tree

.codex/config.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@ max_depth = 1
44

55
[agents.echo_ui_pr_reviewer]
66
description = "Fresh-context, read-only reviewer for Echo UI issue pull requests."
7-
config_file = "agents/echo-ui-pr-reviewer.toml"
7+
config_file = "../loops/issue-dev-loop/agents/echo-ui-pr-reviewer.toml"
88

99
[agents.echo_ui_review_adjudicator]
1010
description = "Read-only adjudicator for disputed high-severity Echo UI review findings."
11-
config_file = "agents/echo-ui-review-adjudicator.toml"
11+
config_file = "../loops/issue-dev-loop/agents/echo-ui-review-adjudicator.toml"
1212

1313
[agents.echo_ui_loop_evolver]
1414
description = "Fresh-context evaluator that improves Echo UI loops from measured history."
15-
config_file = "agents/echo-ui-loop-evolver.toml"
15+
config_file = "../loops/issue-dev-loop/agents/echo-ui-loop-evolver.toml"
File renamed without changes.
File renamed without changes.
File renamed without changes.

loops/issue-dev-loop/scripts/lib/validation.mjs

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,9 @@ export async function validateLoop({
5858
'state.md',
5959
'dependencies.md',
6060
'agents/openai.yaml',
61+
'agents/echo-ui-pr-reviewer.toml',
62+
'agents/echo-ui-review-adjudicator.toml',
63+
'agents/echo-ui-loop-evolver.toml',
6164
'review/REVIEW.md',
6265
'review/response-policy.md',
6366
'review/result.schema.json',
@@ -240,12 +243,14 @@ export async function validateLoop({
240243
path.resolve(loopRoot, '..', '..', '.codex', 'config.toml'),
241244
'utf8',
242245
)
243-
for (const role of [
244-
'echo_ui_pr_reviewer',
245-
'echo_ui_review_adjudicator',
246-
'echo_ui_loop_evolver',
247-
]) {
248-
if (!codexConfig.includes(`[agents.${role}]`) || !codexConfig.includes('config_file =')) {
246+
const roleRegistrations = {
247+
echo_ui_pr_reviewer: 'echo-ui-pr-reviewer.toml',
248+
echo_ui_review_adjudicator: 'echo-ui-review-adjudicator.toml',
249+
echo_ui_loop_evolver: 'echo-ui-loop-evolver.toml',
250+
}
251+
for (const [role, roleFile] of Object.entries(roleRegistrations)) {
252+
const registration = `config_file = "../loops/issue-dev-loop/agents/${roleFile}"`
253+
if (!codexConfig.includes(`[agents.${role}]`) || !codexConfig.includes(registration)) {
249254
throw new Error(`Codex role is not registered through config_file: ${role}`)
250255
}
251256
}
@@ -254,7 +259,7 @@ export async function validateLoop({
254259
'echo-ui-review-adjudicator.toml',
255260
]) {
256261
const roleSource = await readFile(
257-
path.resolve(loopRoot, '..', '..', '.codex', 'agents', roleFile),
262+
path.resolve(loopRoot, 'agents', roleFile),
258263
'utf8',
259264
)
260265
if (

0 commit comments

Comments
 (0)