fix(model selection): deploys from dotfiles-less machines no longer wipe the remote baked pi config (deploy.sh excludes docker/pi-agent); resync endpoint fixed for in-container runs (bash/rsync/python3/npm in daemon image, cross-device copy instead of rename)

This commit is contained in:
2026-09-02 11:51:47 +00:00
parent 09fc72556d
commit 310127cf7a
3 changed files with 19 additions and 3 deletions
+7 -2
View File
@@ -100,10 +100,15 @@ func (s *Server) handlePiConfigResync(w http.ResponseWriter, r *http.Request) {
writeError(w, http.StatusInternalServerError, "clear stale pi-agent: "+err.Error())
return
}
if err := os.Rename(bakeDir, filepath.Join(bakeCtx, "docker", "pi-agent")); err != nil {
writeError(w, http.StatusInternalServerError, "move bake dir: "+err.Error())
// copy, not rename: bakeDir (data volume) and bakeCtx (tmp) are
// different mounts — rename(2) fails with EXDEV
if err := copyTree(bakeDir, filepath.Join(bakeCtx, "docker", "pi-agent")); err != nil {
writeError(w, http.StatusInternalServerError, "copy bake dir: "+err.Error())
return
}
if err := os.RemoveAll(bakeDir); err != nil {
log.Printf("pi-config: remove bake dir after copy: %v", err)
}
if err := s.spawn.buildImage(ctx, bakeCtx, filepath.Join(bakeCtx, "docker", "worker.Dockerfile"), imageRefWorker); err != nil {
writeError(w, http.StatusInternalServerError, "worker rebuild: "+err.Error())