only notify on error if deliver is false
This commit is contained in:
parent
e6558f3ba7
commit
b914e85352
1 changed files with 22 additions and 9 deletions
|
|
@ -176,13 +176,9 @@ func (t *CronTool) addJob(ctx context.Context, args map[string]any) *ToolResult
|
||||||
}
|
}
|
||||||
|
|
||||||
command, _ := args["command"].(string)
|
command, _ := args["command"].(string)
|
||||||
if command != "" {
|
// Note: deliver parameter is now respected for commands too
|
||||||
// Commands must be processed by agent/exec tool, so deliver must be false (or handled specifically)
|
// deliver=true: send command result to user
|
||||||
// Actually, let's keep deliver=false to let the system know it's not a simple chat message
|
// deliver=false: silent on success, only notify on error
|
||||||
// But for our new logic in ExecuteJob, we can handle it regardless of deliver flag if Payload.Command is set.
|
|
||||||
// However, logically, it's not "delivered" to chat directly as is.
|
|
||||||
deliver = false
|
|
||||||
}
|
|
||||||
|
|
||||||
// Truncate message for job name (max 30 chars)
|
// Truncate message for job name (max 30 chars)
|
||||||
messagePreview := utils.Truncate(message, 30)
|
messagePreview := utils.Truncate(message, 30)
|
||||||
|
|
@ -285,8 +281,25 @@ func (t *CronTool) ExecuteJob(ctx context.Context, job *cron.CronJob) string {
|
||||||
}
|
}
|
||||||
|
|
||||||
result := t.execTool.Execute(ctx, args)
|
result := t.execTool.Execute(ctx, args)
|
||||||
// Only notify on error, silent on success
|
|
||||||
if result.IsError {
|
// If deliver=true, always send result; if deliver=false, only notify on error
|
||||||
|
if job.Payload.Deliver {
|
||||||
|
// Send result to user
|
||||||
|
var output string
|
||||||
|
if result.IsError {
|
||||||
|
output = fmt.Sprintf("Error executing scheduled command: %s", result.ForLLM)
|
||||||
|
} else {
|
||||||
|
output = fmt.Sprintf("Scheduled command '%s' executed:\n%s", job.Payload.Command, result.ForLLM)
|
||||||
|
}
|
||||||
|
pubCtx, pubCancel := context.WithTimeout(context.Background(), 5*time.Second)
|
||||||
|
defer pubCancel()
|
||||||
|
t.msgBus.PublishOutbound(pubCtx, bus.OutboundMessage{
|
||||||
|
Channel: channel,
|
||||||
|
ChatID: chatID,
|
||||||
|
Content: output,
|
||||||
|
})
|
||||||
|
} else if result.IsError {
|
||||||
|
// deliver=false, only notify on error
|
||||||
output := fmt.Sprintf("Error executing scheduled command: %s", result.ForLLM)
|
output := fmt.Sprintf("Error executing scheduled command: %s", result.ForLLM)
|
||||||
pubCtx, pubCancel := context.WithTimeout(context.Background(), 5*time.Second)
|
pubCtx, pubCancel := context.WithTimeout(context.Background(), 5*time.Second)
|
||||||
defer pubCancel()
|
defer pubCancel()
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue