forked from lovyou-ai/agent
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathspawn.go
More file actions
87 lines (79 loc) · 2.87 KB
/
Copy pathspawn.go
File metadata and controls
87 lines (79 loc) · 2.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
package agent
import (
"fmt"
"github.com/transpara-ai/eventgraph/go/pkg/event"
"github.com/transpara-ai/eventgraph/go/pkg/types"
)
// EmitRoleProposed records a role proposal submitted for governance review.
// Returns an error if the agent is retired or suspended.
func (a *Agent) EmitRoleProposed(content event.RoleProposedContent) error {
if err := a.checkCanEmit(); err != nil {
return fmt.Errorf("role proposed: %w", err)
}
_, err := a.recordAndTrack(event.EventTypeRoleProposed.Value(), content)
if err != nil {
return fmt.Errorf("role proposed: %w", err)
}
return nil
}
// EmitRoleProposedCausedBy records a role proposal with exactly one explicit
// cross-actor cause. The ordinary EmitRoleProposed private-chain behavior is
// unchanged.
func (a *Agent) EmitRoleProposedCausedBy(content event.RoleProposedContent, cause types.EventID) error {
if err := a.checkCanEmit(); err != nil {
return fmt.Errorf("role proposed: %w", err)
}
_, err := a.recordAndTrackCausedBy(event.EventTypeRoleProposed.Value(), content, cause)
if err != nil {
return fmt.Errorf("role proposed: %w", err)
}
return nil
}
// EmitRoleApproved records the approval of a proposed role.
// Returns an error if the agent is retired or suspended.
func (a *Agent) EmitRoleApproved(content event.RoleApprovedContent) error {
if err := a.checkCanEmit(); err != nil {
return fmt.Errorf("role approved: %w", err)
}
_, err := a.recordAndTrack(event.EventTypeRoleApproved.Value(), content)
if err != nil {
return fmt.Errorf("role approved: %w", err)
}
return nil
}
// EmitRoleApprovedCausedBy records a role approval with exactly one explicit
// proposal cause.
func (a *Agent) EmitRoleApprovedCausedBy(content event.RoleApprovedContent, cause types.EventID) error {
if err := a.checkCanEmit(); err != nil {
return fmt.Errorf("role approved: %w", err)
}
_, err := a.recordAndTrackCausedBy(event.EventTypeRoleApproved.Value(), content, cause)
if err != nil {
return fmt.Errorf("role approved: %w", err)
}
return nil
}
// EmitRoleRejected records the rejection of a proposed role.
// Returns an error if the agent is retired or suspended.
func (a *Agent) EmitRoleRejected(content event.RoleRejectedContent) error {
if err := a.checkCanEmit(); err != nil {
return fmt.Errorf("role rejected: %w", err)
}
_, err := a.recordAndTrack(event.EventTypeRoleRejected.Value(), content)
if err != nil {
return fmt.Errorf("role rejected: %w", err)
}
return nil
}
// EmitRoleRejectedCausedBy records a role rejection with exactly one explicit
// proposal cause.
func (a *Agent) EmitRoleRejectedCausedBy(content event.RoleRejectedContent, cause types.EventID) error {
if err := a.checkCanEmit(); err != nil {
return fmt.Errorf("role rejected: %w", err)
}
_, err := a.recordAndTrackCausedBy(event.EventTypeRoleRejected.Value(), content, cause)
if err != nil {
return fmt.Errorf("role rejected: %w", err)
}
return nil
}