diff options
| author | Claudomator Agent <agent@claudomator> | 2026-07-08 09:11:14 +0000 |
|---|---|---|
| committer | Claudomator Agent <agent@claudomator> | 2026-07-08 09:11:14 +0000 |
| commit | 09066e1e4e928487bea0658492fd8573607c77c3 (patch) | |
| tree | 76f3456fbf4eb3c71d90598297919dad97d43ddb /internal/agentchannel | |
| parent | 2d311c129b6233ae7279587a82c95ffec3d6eeb5 (diff) | |
feat(agentchannel,executor): add ReportVerdict for structured approve/reject signals
Diffstat (limited to 'internal/agentchannel')
| -rw-r--r-- | internal/agentchannel/agentchannel.go | 10 |
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 |
