package runtime import ( "context" "strings" applicationruntime "code.tczkiot.com/wlw/ai-agent/internal/ai/application/runtime" "code.tczkiot.com/wlw/ai-agent/internal/models" svc "code.tczkiot.com/wlw/ai-agent/internal/services" ) var AIReplyService = newAIReplyService() func init() { svc.TriggerAIReplyAsyncHook = AIReplyService.TriggerReplyAsync } func newAIReplyService() *aiReplyService { return &aiReplyService{ eligibility: newReplyEligibility(), executor: newRuntimeReplyExecutor(), interrupts: newReplyInterruptService(), commit: newReplyCommitService(), } } type aiReplyService struct { eligibility *replyEligibility executor *runtimeReplyExecutor interrupts *replyInterruptService commit *replyCommitService triggerReply func(context.Context, models.Conversation, models.Message, models.AIAgent) error } func firstInvokedToolCode(summary *applicationruntime.RunResult) string { if summary == nil { return "" } if len(summary.InvokedToolCodes) > 0 { return strings.TrimSpace(summary.InvokedToolCodes[0]) } return "" }