server

package
v1.15.1 Latest Latest
Warning

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

Go to latest
Published: Apr 30, 2026 License: MIT Imports: 12 Imported by: 0

Documentation

Overview

Package server provides the HTTP API for Engram.

This is how external clients (OpenCode plugin, Claude Code hooks, any agent) communicate with the memory engine. Simple JSON REST API.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type SemanticPromptBuilder added in v1.15.0

type SemanticPromptBuilder func(a, b store.ObservationSnippet) string

SemanticPromptBuilder constructs the LLM prompt for a given pair of observation snippets. Injected from cmd/engram/main.go alongside SemanticRunnerFactory.

type SemanticRunnerFactory added in v1.15.0

type SemanticRunnerFactory func(name string) (store.SemanticRunner, error)

SemanticRunnerFactory is a function that resolves a store.SemanticRunner by name. It is injected from cmd/engram/main.go so that internal/server does not depend on internal/llm directly (preserving the import-cycle boundary).

type Server

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

func New

func New(s *store.Store, port int) *Server

func (*Server) Handler

func (s *Server) Handler() http.Handler

func (*Server) SetOnWrite added in v1.8.0

func (s *Server) SetOnWrite(fn func())

SetOnWrite configures a callback invoked after every successful local write. This is used to notify autosync.Manager via NotifyDirty().

func (*Server) SetPromptBuilder added in v1.15.0

func (s *Server) SetPromptBuilder(fn SemanticPromptBuilder)

SetPromptBuilder configures the LLM prompt builder for semantic scan pairs. When not set, an empty-string builder is used (valid for tests, not production).

func (*Server) SetRunnerFactory added in v1.15.0

func (s *Server) SetRunnerFactory(fn SemanticRunnerFactory)

SetRunnerFactory configures the semantic runner factory used by POST /conflicts/scan when semantic=true. When not set, semantic=true requests fail with 500.

func (*Server) SetSyncStatus added in v1.8.0

func (s *Server) SetSyncStatus(provider SyncStatusProvider)

SetSyncStatus configures the sync status provider for the /sync/status endpoint.

func (*Server) Start

func (s *Server) Start() error

type SyncStatus added in v1.8.0

type SyncStatus struct {
	Enabled              bool       `json:"enabled"`
	Phase                string     `json:"phase"`
	LastError            string     `json:"last_error,omitempty"`
	ConsecutiveFailures  int        `json:"consecutive_failures"`
	BackoffUntil         *time.Time `json:"backoff_until,omitempty"`
	LastSyncAt           *time.Time `json:"last_sync_at,omitempty"`
	ReasonCode           string     `json:"reason_code,omitempty"`
	ReasonMessage        string     `json:"reason_message,omitempty"`
	UpgradeStage         string     `json:"upgrade_stage,omitempty"`
	UpgradeReasonCode    string     `json:"upgrade_reason_code,omitempty"`
	UpgradeReasonMessage string     `json:"upgrade_reason_message,omitempty"`
	// Phase 2: deferred relation retry counts surfaced from sync_apply_deferred.
	DeferredCount int `json:"deferred_count"`
	DeadCount     int `json:"dead_count"`
}

SyncStatus mirrors autosync.Status to avoid a direct import cycle.

type SyncStatusProvider added in v1.8.0

type SyncStatusProvider interface {
	Status(project string) SyncStatus
}

SyncStatusProvider returns the current sync status. This is implemented by autosync.Manager and injected from cmd/engram/main.go.

Jump to

Keyboard shortcuts

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