mirror of
https://github.com/tiennm99/goclaw.git
synced 2026-06-10 16:10:59 +00:00
4678065887
The delegation system this depended on was previously removed, leaving internal/hooks/ as dead code with zero imports. Remove the entire hook engine, UI config section, protocol types, i18n keys, and all documentation references.
202 lines
8.7 KiB
Go
202 lines
8.7 KiB
Go
package protocol
|
|
|
|
// DelegationEventPayload is the typed payload for delegation lifecycle events
|
|
// (started, completed, failed, cancelled).
|
|
type DelegationEventPayload struct {
|
|
DelegationID string `json:"delegation_id"`
|
|
SourceAgentID string `json:"source_agent_id"`
|
|
SourceAgentKey string `json:"source_agent_key"`
|
|
SourceDisplayName string `json:"source_display_name,omitempty"`
|
|
TargetAgentID string `json:"target_agent_id"`
|
|
TargetAgentKey string `json:"target_agent_key"`
|
|
TargetDisplayName string `json:"target_display_name,omitempty"`
|
|
UserID string `json:"user_id"`
|
|
Channel string `json:"channel"`
|
|
ChatID string `json:"chat_id"`
|
|
Mode string `json:"mode"`
|
|
Task string `json:"task,omitempty"`
|
|
TeamID string `json:"team_id,omitempty"`
|
|
TeamTaskID string `json:"team_task_id,omitempty"`
|
|
Status string `json:"status,omitempty"`
|
|
ElapsedMS int `json:"elapsed_ms,omitempty"`
|
|
Error string `json:"error,omitempty"`
|
|
CreatedAt string `json:"created_at"`
|
|
}
|
|
|
|
// DelegationProgressItem describes one active delegation in a progress report.
|
|
type DelegationProgressItem struct {
|
|
DelegationID string `json:"delegation_id"`
|
|
TargetAgentKey string `json:"target_agent_key"`
|
|
TargetDisplayName string `json:"target_display_name,omitempty"`
|
|
ElapsedMS int `json:"elapsed_ms"`
|
|
TeamTaskID string `json:"team_task_id,omitempty"`
|
|
Activity string `json:"activity,omitempty"` // "thinking", "tool_exec", "compacting"
|
|
Tool string `json:"tool,omitempty"` // current tool name (when Activity == "tool_exec")
|
|
}
|
|
|
|
// DelegationProgressPayload is emitted periodically for async delegations.
|
|
type DelegationProgressPayload struct {
|
|
SourceAgentID string `json:"source_agent_id"`
|
|
SourceAgentKey string `json:"source_agent_key"`
|
|
UserID string `json:"user_id"`
|
|
Channel string `json:"channel"`
|
|
ChatID string `json:"chat_id"`
|
|
TeamID string `json:"team_id,omitempty"`
|
|
Active []DelegationProgressItem `json:"active_delegations"`
|
|
}
|
|
|
|
// DelegationAccumulatedPayload is emitted when an async delegation completes
|
|
// but siblings are still running (result accumulated, not yet announced).
|
|
type DelegationAccumulatedPayload struct {
|
|
DelegationID string `json:"delegation_id"`
|
|
SourceAgentID string `json:"source_agent_id"`
|
|
SourceAgentKey string `json:"source_agent_key"`
|
|
TargetAgentKey string `json:"target_agent_key"`
|
|
TargetDisplayName string `json:"target_display_name,omitempty"`
|
|
UserID string `json:"user_id"`
|
|
Channel string `json:"channel"`
|
|
ChatID string `json:"chat_id"`
|
|
TeamID string `json:"team_id,omitempty"`
|
|
TeamTaskID string `json:"team_task_id,omitempty"`
|
|
SiblingsRemaining int `json:"siblings_remaining"`
|
|
ElapsedMS int `json:"elapsed_ms,omitempty"`
|
|
}
|
|
|
|
// DelegationAnnounceResultSummary describes one delegation result in the announce payload.
|
|
type DelegationAnnounceResultSummary struct {
|
|
AgentKey string `json:"agent_key"`
|
|
DisplayName string `json:"display_name,omitempty"`
|
|
HasMedia bool `json:"has_media"`
|
|
ContentPreview string `json:"content_preview,omitempty"`
|
|
}
|
|
|
|
// DelegationAnnouncePayload is emitted when the last sibling delegation completes
|
|
// and all accumulated results are announced back to the lead agent.
|
|
type DelegationAnnouncePayload struct {
|
|
SourceAgentID string `json:"source_agent_id"`
|
|
SourceAgentKey string `json:"source_agent_key"`
|
|
SourceDisplayName string `json:"source_display_name,omitempty"`
|
|
UserID string `json:"user_id"`
|
|
Channel string `json:"channel"`
|
|
ChatID string `json:"chat_id"`
|
|
TeamID string `json:"team_id,omitempty"`
|
|
Results []DelegationAnnounceResultSummary `json:"results"`
|
|
CompletedTaskIDs []string `json:"completed_task_ids,omitempty"`
|
|
TotalElapsedMS int `json:"total_elapsed_ms"`
|
|
HasMedia bool `json:"has_media"`
|
|
}
|
|
|
|
// TeamTaskEventPayload is the typed payload for team task lifecycle events
|
|
// (created, claimed, completed, cancelled, approved, rejected).
|
|
type TeamTaskEventPayload struct {
|
|
TeamID string `json:"team_id"`
|
|
TaskID string `json:"task_id"`
|
|
TaskNumber int `json:"task_number,omitempty"`
|
|
Subject string `json:"subject,omitempty"`
|
|
Status string `json:"status"`
|
|
OwnerAgentKey string `json:"owner_agent_key,omitempty"`
|
|
OwnerDisplayName string `json:"owner_display_name,omitempty"`
|
|
Reason string `json:"reason,omitempty"`
|
|
UserID string `json:"user_id"`
|
|
Channel string `json:"channel"`
|
|
ChatID string `json:"chat_id"`
|
|
Timestamp string `json:"timestamp"`
|
|
|
|
// Progress (for team.task.progress events).
|
|
ProgressPercent int `json:"progress_percent,omitempty"`
|
|
ProgressStep string `json:"progress_step,omitempty"`
|
|
|
|
// Actor info for audit trail (recorded to team_task_events by subscriber).
|
|
ActorType string `json:"actor_type,omitempty"` // "agent", "human", "system"
|
|
ActorID string `json:"actor_id,omitempty"` // agent key, user ID, or system identifier
|
|
}
|
|
|
|
// TeamMessageEventPayload is the typed payload for team.message.sent events.
|
|
type TeamMessageEventPayload struct {
|
|
TeamID string `json:"team_id"`
|
|
FromAgentKey string `json:"from_agent_key"`
|
|
FromDisplayName string `json:"from_display_name,omitempty"`
|
|
ToAgentKey string `json:"to_agent_key"`
|
|
ToDisplayName string `json:"to_display_name,omitempty"`
|
|
MessageType string `json:"message_type"`
|
|
Preview string `json:"preview"`
|
|
TaskID string `json:"task_id,omitempty"`
|
|
UserID string `json:"user_id"`
|
|
Channel string `json:"channel"`
|
|
ChatID string `json:"chat_id"`
|
|
}
|
|
|
|
// --- Team CRUD event payloads ---
|
|
|
|
// TeamCreatedPayload is emitted when a new team is created via RPC.
|
|
type TeamCreatedPayload struct {
|
|
TeamID string `json:"team_id"`
|
|
TeamName string `json:"team_name"`
|
|
LeadAgentKey string `json:"lead_agent_key"`
|
|
LeadDisplayName string `json:"lead_display_name,omitempty"`
|
|
MemberCount int `json:"member_count"`
|
|
}
|
|
|
|
// TeamUpdatedPayload is emitted when team settings are updated via RPC.
|
|
type TeamUpdatedPayload struct {
|
|
TeamID string `json:"team_id"`
|
|
TeamName string `json:"team_name"`
|
|
Changes []string `json:"changes"`
|
|
}
|
|
|
|
// TeamDeletedPayload is emitted when a team is deleted via RPC.
|
|
type TeamDeletedPayload struct {
|
|
TeamID string `json:"team_id"`
|
|
TeamName string `json:"team_name"`
|
|
}
|
|
|
|
// TeamMemberAddedPayload is emitted when a member is added to a team.
|
|
type TeamMemberAddedPayload struct {
|
|
TeamID string `json:"team_id"`
|
|
TeamName string `json:"team_name"`
|
|
AgentID string `json:"agent_id"`
|
|
AgentKey string `json:"agent_key"`
|
|
DisplayName string `json:"display_name,omitempty"`
|
|
Role string `json:"role"`
|
|
}
|
|
|
|
// TeamMemberRemovedPayload is emitted when a member is removed from a team.
|
|
type TeamMemberRemovedPayload struct {
|
|
TeamID string `json:"team_id"`
|
|
TeamName string `json:"team_name"`
|
|
AgentID string `json:"agent_id"`
|
|
AgentKey string `json:"agent_key"`
|
|
DisplayName string `json:"display_name,omitempty"`
|
|
}
|
|
|
|
// --- Agent link event payloads ---
|
|
|
|
// AgentLinkCreatedPayload is emitted when a new agent link is created.
|
|
type AgentLinkCreatedPayload struct {
|
|
LinkID string `json:"link_id"`
|
|
SourceAgentID string `json:"source_agent_id"`
|
|
SourceAgentKey string `json:"source_agent_key"`
|
|
TargetAgentID string `json:"target_agent_id"`
|
|
TargetAgentKey string `json:"target_agent_key"`
|
|
Direction string `json:"direction"`
|
|
TeamID string `json:"team_id,omitempty"`
|
|
Status string `json:"status"`
|
|
}
|
|
|
|
// AgentLinkUpdatedPayload is emitted when an agent link is updated.
|
|
type AgentLinkUpdatedPayload struct {
|
|
LinkID string `json:"link_id"`
|
|
SourceAgentKey string `json:"source_agent_key"`
|
|
TargetAgentKey string `json:"target_agent_key"`
|
|
Direction string `json:"direction,omitempty"`
|
|
Status string `json:"status,omitempty"`
|
|
Changes []string `json:"changes"`
|
|
}
|
|
|
|
// AgentLinkDeletedPayload is emitted when an agent link is deleted.
|
|
type AgentLinkDeletedPayload struct {
|
|
LinkID string `json:"link_id"`
|
|
SourceAgentKey string `json:"source_agent_key"`
|
|
TargetAgentKey string `json:"target_agent_key"`
|
|
}
|