Files
beads/internal/daemonrunner/rpc.go
Steve Yegge b5839b656d Fix compilation errors in internal/daemonrunner package
Created missing files:
- logger.go: Logger type, setupLogger method, and env helpers
- signals_unix.go: Unix signal definitions (SIGTERM, SIGINT, SIGHUP)
- signals_windows.go: Windows signal definitions
- sync.go: Sync loop implementation with export/import/validation helpers

Fixed errors:
- Added missing 'version' parameter to acquireDaemonLock call
- Removed duplicate setupLock method from process.go (kept in daemon.go)
- Removed duplicate startRPCServer from daemon.go (kept in rpc.go)
- Fixed LogPath -> LogFile config field reference
- Removed unused 'io' import from process.go

Implementation notes:
- exportToJSONL: Full implementation with dependencies, labels, comments
- importFromJSONL: Placeholder (TODO: extract from cmd/bd/import.go)
- countDBIssues: Uses SQL COUNT(*) optimization with fallback
- validatePostImport: Checks for data loss
- runSyncLoop/runEventLoop: Main daemon event loops with signal handling

All packages now compile successfully with 'go build ./...'

Amp-Thread-ID: https://ampcode.com/threads/T-36a7f730-3420-426f-9e23-f13d5fa089c4
Co-authored-by: Amp <amp@ampcode.com>
2025-11-01 19:10:27 -07:00

38 lines
994 B
Go

package daemonrunner
import (
"context"
"time"
"github.com/steveyegge/beads/internal/rpc"
)
// startRPCServer initializes and starts the RPC server
func (d *Daemon) startRPCServer(ctx context.Context) (*rpc.Server, chan error, error) {
// Sync daemon version with CLI version
rpc.ServerVersion = d.Version
server := rpc.NewServer(d.cfg.SocketPath, d.store, d.cfg.WorkspacePath, d.cfg.DBPath)
serverErrChan := make(chan error, 1)
go func() {
d.log.log("Starting RPC server: %s", d.cfg.SocketPath)
if err := server.Start(ctx); err != nil {
d.log.log("RPC server error: %v", err)
serverErrChan <- err
}
}()
select {
case err := <-serverErrChan:
d.log.log("RPC server failed to start: %v", err)
return nil, nil, err
case <-server.WaitReady():
d.log.log("RPC server ready (socket listening)")
case <-time.After(5 * time.Second):
d.log.log("WARNING: Server didn't signal ready after 5 seconds (may still be starting)")
}
return server, serverErrChan, nil
}