observe

package
v0.8.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 14, 2026 License: Apache-2.0 Imports: 10 Imported by: 0

Documentation

Overview

Package observe provides optional, vendor-neutral action lifecycle observation for Nexss Kernel.

Index

Constants

View Source
const (
	KindExecuted     = "executed"
	KindError        = "error"
	KindRetry        = "retry"
	KindCacheHit     = "cache_hit"
	KindCacheMiss    = "cache_miss"
	KindCanceled     = "canceled"
	KindPanic        = "panic"
	KindCoalesced    = "coalesced"
	KindDeduplicated = "deduplicated"
)

Lifecycle kind constants.

Variables

This section is empty.

Functions

func Hook

func Hook(sink Sink) action.AnyHook

Hook constructs an action.AnyHook that forwards selected lifecycle events to sink. Passing a nil sink returns an empty action.AnyHook{}, ensuring zero overhead when disabled.

Types

type Event

type Event struct {
	Time        time.Time
	Duration    time.Duration
	Kind        string
	Action      string
	ExecutionID string
	TraceID     string
	SpanID      string
	Request     any
	Response    any
	Error       error
	Recovered   any
	Attempt     int
}

Event is a structured observation emitted during an action execution lifecycle.

type JSONLSink

type JSONLSink struct {
	// contains filtered or unexported fields
}

JSONLSink emits bounded structured lifecycle records to w.

func NewJSONLSink

func NewJSONLSink(writer io.Writer, maxBytes int) *JSONLSink

NewJSONLSink creates a synchronized JSONL sink. Non-positive maxBytes defaults to 4096.

func (*JSONLSink) Emit

func (s *JSONLSink) Emit(_ context.Context, event Event)

type MemorySink

type MemorySink struct {
	// contains filtered or unexported fields
}

MemorySink stores recent events up to Capacity in a thread-safe ring buffer. Intended for unit tests, local debugging, and CLI diagnostic inspection.

func NewMemorySink

func NewMemorySink(capacity int) *MemorySink

func (*MemorySink) Emit

func (s *MemorySink) Emit(_ context.Context, event Event)

func (*MemorySink) Events

func (s *MemorySink) Events() []Event

Events returns a snapshot copy in oldest-to-newest order.

type MetricKey

type MetricKey struct {
	Action string
	Kind   string
}

MetricKey uniquely identifies a lifecycle event counter.

type MetricsSink

type MetricsSink struct {
	// contains filtered or unexported fields
}

MetricsSink aggregates lifecycle event counts in memory.

func NewMetricsSink

func NewMetricsSink() *MetricsSink

NewMetricsSink creates an empty metrics sink.

func (*MetricsSink) Emit

func (s *MetricsSink) Emit(_ context.Context, event Event)

func (*MetricsSink) Snapshot

func (s *MetricsSink) Snapshot() map[MetricKey]uint64

Snapshot returns an isolated thread-safe copy of all counters.

type PrometheusSink

type PrometheusSink struct {
	// contains filtered or unexported fields
}

PrometheusSink aggregates lifecycle counters and formats text exposition output.

func NewPrometheusSink

func NewPrometheusSink() *PrometheusSink

NewPrometheusSink creates a Prometheus text exporter sink.

func (*PrometheusSink) Emit

func (s *PrometheusSink) Emit(ctx context.Context, event Event)

func (*PrometheusSink) Snapshot

func (s *PrometheusSink) Snapshot() map[MetricKey]uint64

Snapshot returns a copy of current metric counters.

func (*PrometheusSink) WritePrometheus

func (s *PrometheusSink) WritePrometheus(w io.Writer) error

WritePrometheus writes deterministic Prometheus text exposition lines to w.

type Sink

type Sink interface {
	Emit(context.Context, Event)
}

Sink receives lifecycle events. Implementations must be safe for concurrent use.

type SlogSink

type SlogSink struct {
	// contains filtered or unexported fields
}

SlogSink writes structured lifecycle events to a standard-library slog.Logger.

func NewSlogSink

func NewSlogSink(logger *slog.Logger) *SlogSink

NewSlogSink creates a sink using logger. If logger is nil, slog.Default() is used.

func (*SlogSink) Emit

func (s *SlogSink) Emit(ctx context.Context, event Event)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL