34051a4631
- Updated labels in the AI Agents dashboard for clarity, changing "流程状态" to "Playbook 状态" and "未发布流程" to "未发布 Playbook". - Introduced AI Agent rollout percentage management in channel editing, allowing users to set and rollback rollout percentages. - Added new API endpoints for rolling back AI Agent rollout and fetching agent run metrics. - Implemented new UI components for displaying agent run details, including status, duration, and input/output tokens. - Enhanced type definitions for AdminChannel and AIAgent to include rollout percentages and runtime modes. - Updated navigation to include a section for agent runs. - Added new translations for agent run features in both English and Chinese.
65 lines
1.9 KiB
Go
65 lines
1.9 KiB
Go
package runtime
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"strings"
|
|
|
|
applicationruntime "agent-desk/internal/ai/application/runtime"
|
|
"agent-desk/internal/ai/runtime/graphs"
|
|
"agent-desk/internal/models"
|
|
)
|
|
|
|
type runtimeReplyExecutor struct{}
|
|
|
|
type runtimeReplyRunInput struct {
|
|
Conversation models.Conversation
|
|
Message models.Message
|
|
AIAgent models.AIAgent
|
|
}
|
|
|
|
type runtimeReplyResumeInput struct {
|
|
Conversation models.Conversation
|
|
Message models.Message
|
|
AIAgent models.AIAgent
|
|
PendingInterrupt *models.ConversationInterrupt
|
|
}
|
|
|
|
func newRuntimeReplyExecutor() *runtimeReplyExecutor {
|
|
return &runtimeReplyExecutor{}
|
|
}
|
|
|
|
func (e *runtimeReplyExecutor) Run(ctx context.Context, input runtimeReplyRunInput) (*applicationruntime.Summary, error) {
|
|
summary, err := applicationruntime.DefaultAgentApplicationService.Run(ctx, applicationruntime.ApplicationRunInput{
|
|
ConversationID: input.Conversation.ID,
|
|
MessageID: input.Message.ID,
|
|
AIAgentID: input.AIAgent.ID,
|
|
})
|
|
return summary, err
|
|
}
|
|
|
|
func (e *runtimeReplyExecutor) ResumePendingInterrupt(ctx context.Context, input runtimeReplyResumeInput) (*applicationruntime.Summary, error) {
|
|
if input.PendingInterrupt == nil {
|
|
return nil, fmt.Errorf("pending interrupt is required")
|
|
}
|
|
summary, err := applicationruntime.DefaultAgentApplicationService.Resume(ctx, applicationruntime.ApplicationResumeInput{
|
|
ApplicationRunInput: applicationruntime.ApplicationRunInput{
|
|
ConversationID: input.Conversation.ID,
|
|
MessageID: input.Message.ID,
|
|
AIAgentID: input.AIAgent.ID,
|
|
},
|
|
CheckPointID: strings.TrimSpace(input.PendingInterrupt.CheckPointID),
|
|
ResumeData: map[string]string{
|
|
strings.TrimSpace(input.PendingInterrupt.InterruptID): strings.TrimSpace(input.Message.Content),
|
|
},
|
|
})
|
|
return summary, err
|
|
}
|
|
|
|
func expiredInterruptSummary() *applicationruntime.Summary {
|
|
return &applicationruntime.Summary{
|
|
Status: "expired",
|
|
ReplyText: graphs.ConfirmationExpiredReply,
|
|
}
|
|
}
|