Files
kandev/apps/backend/internal/agent/runtime/lifecycle/env_preparer_sprites.go
T
2026-05-16 20:07:57 +01:00

49 lines
1.4 KiB
Go

package lifecycle
import (
"context"
"time"
"go.uber.org/zap"
"github.com/kandev/kandev/internal/common/logger"
)
// SpritesPreparer validates prerequisites for Sprites-based execution.
// The actual sprite creation and setup happens in SpritesExecutor.CreateInstance,
// so this preparer only validates that the configuration is plausible.
type SpritesPreparer struct {
logger *logger.Logger
}
// NewSpritesPreparer creates a new SpritesPreparer.
func NewSpritesPreparer(log *logger.Logger) *SpritesPreparer {
return &SpritesPreparer{
logger: log.WithFields(zap.String("component", "sprites-preparer")),
}
}
func (p *SpritesPreparer) Name() string { return "sprites" }
func (p *SpritesPreparer) Prepare(_ context.Context, req *EnvPrepareRequest, onProgress PrepareProgressCallback) (*EnvPrepareResult, error) {
start := time.Now()
p.logger.Debug("preparing sprites environment",
zap.String("task_id", req.TaskID),
zap.String("session_id", req.SessionID))
// Validate: emit a single progress step (sprite provisioning happens in CreateInstance)
step := beginStep("Validate Sprites.dev configuration")
reportProgress(onProgress, step, 0, 1)
completeStepSuccess(&step)
reportProgress(onProgress, step, 0, 1)
return &EnvPrepareResult{
Success: true,
Steps: []PrepareStep{step},
WorkspacePath: req.WorkspacePath,
Duration: time.Since(start),
WorktreeBranch: nonWorktreeTaskBranch(req),
}, nil
}