summaryrefslogtreecommitdiff
path: root/internal/agentchannel/agentchannel.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/agentchannel/agentchannel.go')
-rw-r--r--internal/agentchannel/agentchannel.go11
1 files changed, 11 insertions, 0 deletions
diff --git a/internal/agentchannel/agentchannel.go b/internal/agentchannel/agentchannel.go
index 83c5f8d..202283e 100644
--- a/internal/agentchannel/agentchannel.go
+++ b/internal/agentchannel/agentchannel.go
@@ -19,6 +19,8 @@ import (
"context"
"errors"
"fmt"
+
+ "github.com/thepeterstone/claudomator/internal/role"
)
// ErrAgentBlocked is returned by AgentChannel.AskUser when the transport cannot
@@ -80,6 +82,15 @@ type AgentChannel interface {
// (via its instructions/model); this just gives it a mechanism to act on
// it.
ProposeEpic(ctx context.Context, spec EpicProposal) (epicID string, err error)
+ // ProposeRoleConfig lets a retro-role agent (internal/scheduler.
+ // StoryOrchestrator's Phase 8 retro stage) propose a new draft
+ // role_configs version for a role, after reflecting on a completed
+ // story's history (task tree, escalations, cost, evaluator/arbitration
+ // feedback). Implementations create a new "draft"-status role_configs
+ // row and return its version number — they never touch whatever version
+ // 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)
}
// BlockedError is returned by Run when the agent asked the user a question and