Documentation
¶
Overview ¶
Package messageworkflow provides helpers for workflow executors that buffer incoming messages and act when a turn token arrives, used by the agent-hosting and group-chat executors in workflow/agentworkflow.
Package messageworkflow extends a workflow executor with chat-message handling behavior, accumulating the messages received during a turn and invoking a caller-supplied handler when a turn token arrives.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ConfigureForwarding ¶
func ConfigureForwarding(executor *workflow.Executor, options *ForwardingOptions)
ConfigureForwarding extends executor with forwarding behavior for messages and turn tokens. The configured executor accepts *message.Message, []*message.Message, iter.Seq[*message.Message], and workflow.TurnToken. If options.StringMessageRole is set, it also accepts string and forwards it as a single text message with that role.
Types ¶
type ForwardingOptions ¶
type ForwardingOptions struct {
// StringMessageRole, when set, enables string input and forwards each
// string as a [message.Message] with this role.
StringMessageRole message.Role
}
ForwardingOptions configures ConfigureForwarding.
type MessageState ¶
type MessageState struct {
// contains filtered or unexported fields
}
MessageState is the checkpoint-restorable accumulator for a turn's messages. It wraps a StatefulExecutorCache holding the slice of messages received so far.
func NewMessageState ¶
func NewMessageState(stateKey string, scopeName string) *MessageState
NewMessageState returns a MessageState whose accumulated messages are keyed by stateKey within the given scopeName.
func (*MessageState) ProcessTurnMessages ¶
func (s *MessageState) ProcessTurnMessages(ctx *workflow.Context, fn func(ctx *workflow.Context, messages []*message.Message) ([]*message.Message, error)) error
ProcessTurnMessages transforms the accumulated turn messages by invoking fn via InvokeWithState, which reads the current state, calls fn, and queues the returned slice as the new accumulated state.
func (*MessageState) Reset ¶
func (s *MessageState) Reset() error
Reset clears the accumulated turn state. It is registered both as the executor's reset function and as its checkpoint-restored callback.
type Options ¶
type Options struct {
// StateKey identifies the accumulated turn state within the workflow.
StateKey string
// TakeTurnHandler is invoked with the accumulated messages when a turn token arrives.
TakeTurnHandler func(ctx *workflow.Context, token workflow.TurnToken, messages []*message.Message) error
// StringMessageRole, when set, registers a handler that wraps incoming
// string messages with this role.
StringMessageRole message.Role
// ScopeName scopes the accumulated turn state; used when constructing a default MessageState.
ScopeName string
// AutoSendTurnToken controls whether the turn token is automatically declared
// and forwarded. The default is true.
AutoSendTurnToken *bool
// MessageState supplies an existing accumulator; when nil a new one is created from StateKey and ScopeName.
MessageState *MessageState
}
Options configures the chat-message workflow behavior applied by Configure. StateKey and TakeTurnHandler are required; Configure panics if options is nil, StateKey is empty, or TakeTurnHandler is nil. The remaining fields are optional.