events

package
v0.3.16 Latest Latest
Warning

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

Go to latest
Published: Feb 26, 2026 License: MIT Imports: 7 Imported by: 0

Documentation

Index

Constants

View Source
const (
	TopicBeadCreated       = "beads.bead.created"
	TopicBeadUpdated       = "beads.bead.updated"
	TopicBeadClosed        = "beads.bead.closed"
	TopicBeadDeleted       = "beads.bead.deleted"
	TopicDependencyAdded   = "beads.dependency.added"
	TopicDependencyRemoved = "beads.dependency.removed"
	TopicLabelAdded        = "beads.label.added"
	TopicLabelRemoved      = "beads.label.removed"
	TopicCommentAdded      = "beads.comment.added"

	// Advice events
	TopicAdviceCreated = "beads.advice.created"
	TopicAdviceUpdated = "beads.advice.updated"
	TopicAdviceDeleted = "beads.advice.deleted"

	// Session lifecycle events (emitted by agents, consumed by hooks handler).
	TopicSessionEnd       = "beads.session.end"
	TopicSessionPreCommit = "beads.session.pre_commit"
	TopicSessionPrePush   = "beads.session.pre_push"
	TopicSessionHandoff   = "beads.session.handoff"

	// Jack events
	TopicJackOn       = "beads.jack.on"
	TopicJackOff      = "beads.jack.off"
	TopicJackExtended = "beads.jack.extended"
	TopicJackExpired  = "beads.jack.expired"
)

Event topic constants

Variables

This section is empty.

Functions

This section is empty.

Types

type AdviceCreated

type AdviceCreated struct {
	Bead *model.Bead `json:"bead"`
}

type AdviceDeleted

type AdviceDeleted struct {
	BeadID string `json:"bead_id"`
}

type AdviceUpdated

type AdviceUpdated struct {
	Bead    *model.Bead    `json:"bead"`
	Changes map[string]any `json:"changes"`
}

type BeadClosed

type BeadClosed struct {
	Bead     *model.Bead `json:"bead"`
	ClosedBy string      `json:"closed_by,omitempty"`
}

type BeadCreated

type BeadCreated struct {
	Bead *model.Bead `json:"bead"`
}

type BeadDeleted

type BeadDeleted struct {
	BeadID string `json:"bead_id"`
}

type BeadUpdated

type BeadUpdated struct {
	Bead    *model.Bead    `json:"bead"`
	Changes map[string]any `json:"changes"` // field name -> new value
}

type CommentAdded

type CommentAdded struct {
	Comment *model.Comment `json:"comment"`
}

type DependencyAdded

type DependencyAdded struct {
	Dependency *model.Dependency `json:"dependency"`
}

type DependencyRemoved

type DependencyRemoved struct {
	BeadID      string `json:"bead_id"`
	DependsOnID string `json:"depends_on_id"`
	Type        string `json:"type"`
}

type JackExpired

type JackExpired struct {
	BeadID string `json:"bead_id"`
	Target string `json:"target"`
}

type JackExtended

type JackExtended struct {
	Bead *model.Bead `json:"bead"`
	TTL  string      `json:"ttl"`
}

type JackOff

type JackOff struct {
	Bead   *model.Bead `json:"bead"`
	Reason string      `json:"reason"`
}

type JackOn

type JackOn struct {
	Bead *model.Bead `json:"bead"`
}

type LabelAdded

type LabelAdded struct {
	BeadID string `json:"bead_id"`
	Label  string `json:"label"`
}

type LabelRemoved

type LabelRemoved struct {
	BeadID string `json:"bead_id"`
	Label  string `json:"label"`
}

type NATSPublisher

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

NATSPublisher publishes events to NATS subjects. Connect to BEADS_NATS_URL, publish JSON-encoded events to the given topic.

func NewNATSPublisher

func NewNATSPublisher(url string) (*NATSPublisher, error)

func (*NATSPublisher) Close

func (p *NATSPublisher) Close() error

func (*NATSPublisher) Publish

func (p *NATSPublisher) Publish(ctx context.Context, topic string, event any) error

type NATSSubscriber

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

NATSSubscriber subscribes to events from NATS subjects.

func NewNATSSubscriber

func NewNATSSubscriber(url string, opts ...nats.Option) (*NATSSubscriber, error)

NewNATSSubscriber connects to NATS with automatic reconnection support. Extra nats.Option values (e.g. disconnect/reconnect handlers) can be appended.

func (*NATSSubscriber) Close

func (s *NATSSubscriber) Close() error

func (*NATSSubscriber) Subscribe

func (s *NATSSubscriber) Subscribe(topic string) (<-chan []byte, func(), error)

Subscribe returns a channel that receives raw event payloads for the given topic (supports NATS wildcards like "beads.>"). Call the returned cancel function to unsubscribe and close the channel.

type NoopPublisher

type NoopPublisher struct{}

NoopPublisher is a Publisher that does nothing (used when NATS is not configured).

func (*NoopPublisher) Close

func (n *NoopPublisher) Close() error

func (*NoopPublisher) Publish

func (n *NoopPublisher) Publish(ctx context.Context, topic string, event any) error

type Publisher

type Publisher interface {
	Publish(ctx context.Context, topic string, event any) error
	Close() error
}

Publisher is the interface for emitting events.

type Subscriber

type Subscriber interface {
	// Subscribe delivers raw event payloads on the returned channel.
	// Call the returned cancel function to unsubscribe and close the channel.
	Subscribe(topic string) (<-chan []byte, func(), error)
	Close() error
}

Subscriber receives events from the event bus.

Jump to

Keyboard shortcuts

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