summaryrefslogtreecommitdiff
path: root/internal/agentchannel/agentchannel.go
diff options
context:
space:
mode:
authorClaudomator Agent <agent@claudomator>2026-07-08 09:11:14 +0000
committerClaudomator Agent <agent@claudomator>2026-07-08 09:11:14 +0000
commit09066e1e4e928487bea0658492fd8573607c77c3 (patch)
tree76f3456fbf4eb3c71d90598297919dad97d43ddb /internal/agentchannel/agentchannel.go
parent2d311c129b6233ae7279587a82c95ffec3d6eeb5 (diff)
feat(agentchannel,executor): add ReportVerdict for structured approve/reject signals
Diffstat (limited to 'internal/agentchannel/agentchannel.go')
-rw-r--r--internal/agentchannel/agentchannel.go10
1 files changed, 10 insertions, 0 deletions
diff --git a/internal/agentchannel/agentchannel.go b/internal/agentchannel/agentchannel.go
index 98104df..433b762 100644
--- a/internal/agentchannel/agentchannel.go
+++ b/internal/agentchannel/agentchannel.go
@@ -99,6 +99,16 @@ type AgentChannel interface {
// is currently "active" for that role; promoting a draft to active stays
// a human action via the existing POST /api/roles/{role}/activate.
ProposeRoleConfig(ctx context.Context, config role.RoleConfig) (version int, err error)
+ // ReportVerdict lets an evaluating agent (e.g. an arbitration-role task)
+ // report a structured approve/reject decision, instead of leaving it to
+ // be inferred by parsing the task's free-text summary later.
+ // Implementations record this as an event attached to the calling task's
+ // own ID; internal/scheduler.StoryOrchestrator's finalizeArbitration
+ // reads it back once the reporting task completes to decide REVIEW_READY
+ // vs NEEDS_FIX. A task that never calls this leaves no such event —
+ // callers reading it back must treat "no event found" as a distinct,
+ // backward-compatible case, not an error.
+ ReportVerdict(ctx context.Context, approved bool, reasoning string) error
}
// BlockedError is returned by Run when the agent asked the user a question and