feat: establish NekoNest Cloud control and relay

This commit is contained in:
2026-08-12 23:25:43 +08:00
commit f27606b709
222 changed files with 71456 additions and 0 deletions
+24
View File
@@ -0,0 +1,24 @@
package auditsink
import (
"context"
"log/slog"
"github.com/klarkxy/nekonest/relaycore"
)
// Sink deliberately logs only event classification and error state. It never
// serializes prompt, transcript, path, attachment, or approval payloads.
type Sink struct{ Logger *slog.Logger }
func (sink Sink) Emit(_ context.Context, event relaycore.AuditEvent) {
logger := sink.Logger
if logger == nil {
logger = slog.Default()
}
arguments := []any{"component", event.Component, "event", event.Name}
if event.Err != nil {
arguments = append(arguments, "error", event.Err.Error())
}
logger.Info("relay data-plane event", arguments...)
}