package activity import ( "context" "github.com/rockliang/poimen/workflows/pkg/types" "go.temporal.io/sdk/activity" ) type ImplementerInput struct { Config types.OrchestratorConfig TaskID string WorktreePath string Lessons string } type ImplementerOutput struct { Success bool Changes string } func ImplementerActivity(ctx context.Context, in ImplementerInput) (ImplementerOutput, error) { activity.RecordHeartbeat(ctx, "starting implementer for "+in.TaskID) vars := map[string]any{ "SystemPrompt": in.Config.SystemPrompt, "Task": in.TaskID, "WorktreePath": in.WorktreePath, } if in.Lessons != "" { vars["Lessons"] = in.Lessons } response, err := CallRoleLLM(ctx, in.Config, "implementer", vars) if err != nil { return ImplementerOutput{}, err } activity.RecordHeartbeat(ctx, "implementer completed for "+in.TaskID) return ImplementerOutput{Success: true, Changes: response}, nil }