- Marked the Executor Stub Enhancement section in TODO.md as complete, detailing the enhancements made to the executor's functionality. - Improved the Executor to simulate full execution with Job integration, including phase transitions and logging. - Introduced a Config struct for customizable executor behavior, allowing for testing with callbacks and job integration control. - Implemented phase-specific methods for modular execution, preparing for future real phase implementations. - Added comprehensive tests for the executor, including smoke tests and verification of phase progression and job logs. - Updated progress tracking in TODO.md to reflect the current status of the executor and integration testing.
48 lines
1.4 KiB
Go
48 lines
1.4 KiB
Go
package executor
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/yaoapp/yao/agent/robot/types"
|
|
)
|
|
|
|
// RunDelivery executes P4: Delivery phase
|
|
//
|
|
// Sends execution output via configured delivery channel.
|
|
// Supports: email, file, webhook, notify.
|
|
//
|
|
// Implementation (TODO Phase 8):
|
|
// 1. Build delivery content from execution results
|
|
// 2. Call Delivery Agent via Assistant.Stream() to format output
|
|
// 3. Send via configured channel (email/file/webhook/notify)
|
|
func (e *Executor) RunDelivery(_ *types.Context, exec *types.Execution, _ interface{}) error {
|
|
// TODO (Phase 8): Replace with real delivery
|
|
// agentID := robot.Config.Resources.GetPhaseAgent(types.PhaseDelivery)
|
|
// messages := buildDeliveryMessages(exec.Results, robot)
|
|
// response, err := callAgentStream(ctx, agentID, messages)
|
|
// if err != nil {
|
|
// return err
|
|
// }
|
|
// deliveryContent := parseDeliveryContent(response)
|
|
// err = sendDelivery(ctx, robot.Config.Delivery, deliveryContent)
|
|
// if err != nil {
|
|
// return err
|
|
// }
|
|
|
|
// Simulate Agent Stream delay
|
|
e.simulateStreamDelay()
|
|
|
|
// Generate mock delivery result
|
|
exec.Delivery = &types.DeliveryResult{
|
|
Type: types.DeliveryNotify,
|
|
Success: true,
|
|
Details: map[string]interface{}{
|
|
"message": "Mock delivery completed successfully",
|
|
"channel": "notify",
|
|
"recipient": "test-user",
|
|
"timestamp": time.Now().Format(time.RFC3339),
|
|
},
|
|
}
|
|
|
|
return nil
|
|
}
|