sessiontree

package
v0.19.0 Latest Latest
Warning

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

Go to latest
Published: Jul 19, 2026 License: MIT Imports: 23 Imported by: 0

Documentation

Overview

Package sessiontree stores durable conversation journals.

Repo implementations own thread metadata, append-only entries, forks, leaf movement, and provider-visible context reconstruction. FileRepo and MemoryRepo are safe for concurrent use. Repos used by agentharness should implement TurnLeaseRepo so active-turn serialization is durable per ThreadID and shared across harness instances that use the same backend. Different ThreadIDs, including forked threads, may run concurrently.

Index

Constants

View Source
const (
	InterruptedTurnRecoveryKindKey        = "authority_kind"
	InterruptedTurnRecoveryKind           = "interrupted_turn_recovery"
	InterruptedTurnRecoveryFingerprintKey = "authority_fingerprint"
	InterruptedTurnRecoveryParentKey      = "authority_parent_thread_id"
	InterruptedTurnFailureMessage         = "turn interrupted during previous process"
)
View Source
const (
	PendingToolSettlementKindKey        = "authority_kind"
	PendingToolSettlementKind           = "pending_tool_settlement"
	PendingToolSettlementFingerprintKey = "authority_fingerprint"
	PendingToolEffectAttemptIDKey       = "effect_attempt_id"
)
View Source
const CompactionMutationKind = "compaction"

Variables

View Source
var (
	ErrArtifactNotFound           = errors.New("session tree artifact not found")
	ErrSubAgentNotFound           = errors.New("session tree subagent not found")
	ErrSubAgentParentRequired     = errors.New("session tree subagent requires parent authority")
	ErrUnsupportedStoreCapability = errors.New("session tree store capability is unsupported")
)
View Source
var (
	ErrRequestConflict         = errors.New("session tree authority request conflicts with persisted request")
	ErrSubAgentRequestConflict = fmt.Errorf("subagent request identity conflicts with persisted request: %w", ErrRequestConflict)
	ErrSubAgentInputNotFound   = errors.New("session tree subagent input not found")
	ErrEffectAttemptNotFound   = errors.New("session tree effect attempt not found")
	ErrEffectOutcomeUnknown    = errors.New("session tree effect outcome is unknown")
)
View Source
var (
	ErrPendingToolTurnNotFound = errors.New("session tree pending tool turn not found")
	ErrPendingToolRunNotFound  = errors.New("session tree pending tool run not found")
	ErrPendingToolNotFound     = errors.New("session tree pending tool not found")
	ErrPendingToolNotPending   = errors.New("session tree pending tool is not pending")
)
View Source
var (
	ErrThreadNotFound           = errors.New("session tree thread not found")
	ErrEntryNotFound            = errors.New("session tree entry not found")
	ErrInvalidParent            = errors.New("session tree invalid parent")
	ErrActiveTurn               = errors.New("session tree thread already has an active turn")
	ErrThreadExists             = errors.New("session tree thread already exists")
	ErrInvalidThreadAuthority   = errors.New("session tree invalid thread authority")
	ErrThreadAuthorityBusy      = errors.New("session tree thread authority is busy")
	ErrThreadClosed             = errors.New("session tree thread is closed")
	ErrThreadDeleted            = errors.New("session tree thread is deleted")
	ErrSubAgentClosing          = errors.New("session tree subagent is closing")
	ErrStaleAuthority           = errors.New("session tree authority proof is stale")
	ErrRecoveryTargetResolved   = errors.New("session tree interrupted recovery target is resolved")
	ErrAuthorityCorrupt         = errors.New("session tree authority state is corrupt")
	ErrForkDestinationConflict  = errors.New("session tree fork destination conflicts with operation marker")
	ErrAgentTodoVersionConflict = errors.New("session tree agent todo version conflict")
)
View Source
var DefaultLeasePolicy = LeasePolicy{
	TTL:                30 * time.Second,
	RenewInterval:      10 * time.Second,
	ClockSkewAllowance: 2 * time.Second,
}
View Source
var ErrProviderStateNotFound = errors.New("provider state not found")

Functions

func ActivePathHash added in v0.18.0

func ActivePathHash(path []Entry) string

func BuildContext

func BuildContext(path []Entry, opts ContextOptions) []session.Message

func ContextWithTurnLease added in v0.18.0

func ContextWithTurnLease(ctx context.Context, lease TurnLease) context.Context

ContextWithTurnLease binds the exact durable mutation owner to journal writes.

func CreateRootFingerprint added in v0.18.0

func CreateRootFingerprint(req CreateRootRequest) string

CreateRootFingerprint is the stable identity used by root-create replay.

func CreateRootReplayMatches added in v0.18.0

func CreateRootReplayMatches(meta ThreadMeta, threadID string) bool

CreateRootReplayMatches reports whether a live row is the exact canonical root shape eligible for root-create replay.

func EffectResultRequestMatches added in v0.18.0

func EffectResultRequestMatches(committed, requested Entry, effectAttemptID string) bool

func InterruptedTurnRecoveryFingerprint added in v0.18.0

func InterruptedTurnRecoveryFingerprint(
	expectedLease TurnLease,
	parentThreadID string,
	runID string,
	status TurnMarkerStatus,
	failureMessage string,
) (string, error)

func InterruptedTurnToolResult added in v0.18.0

func InterruptedTurnToolResult(call session.Message) session.Message

func MatchesForkDestinationMeta added in v0.17.0

func MatchesForkDestinationMeta(meta ThreadMeta, destination *ForkDestinationMeta) bool

MatchesForkDestinationMeta reports whether persisted ownership metadata exactly matches the fork plan. It is used for replay idempotency.

func NormalizeSubAgentCloseIntent added in v0.18.0

func NormalizeSubAgentCloseIntent(operationID, parentThreadID, targetThreadID, reason string) (string, string, string, string, string, error)

NormalizeSubAgentCloseIntent validates the storage-kernel close identity and returns its normalized fields plus immutable intent fingerprint.

func PublishSubAgentChildMatches added in v0.18.0

func PublishSubAgentChildMatches(req PublishSubAgentRequest, child ThreadMeta) bool

PublishSubAgentChildMatches verifies the durable child authority produced by or replayed for one exact publication request.

func RawForEntry

func RawForEntry(entry Entry) string

func SameThreadAuthority added in v0.17.0

func SameThreadAuthority(left, right ThreadMeta) bool

SameThreadAuthority reports whether an update preserves immutable ownership and lineage identity.

func SameTurnLease added in v0.18.0

func SameTurnLease(left, right TurnLease) bool

func SortThreadsByCreatedAtDesc

func SortThreadsByCreatedAtDesc(threads []ThreadMeta)

func StableHash

func StableHash(value string) string

func SubAgentCloseRequestFingerprint added in v0.18.0

func SubAgentCloseRequestFingerprint(intentFingerprint string, nodes []SubAgentCloseNode) (string, error)

SubAgentCloseRequestFingerprint binds one close intent to the subtree membership derived by the storage transaction.

func ThreadAuthorityTreeIDs added in v0.17.0

func ThreadAuthorityTreeIDs(threads []ThreadMeta, rootThreadID string) ([]string, error)

ThreadAuthorityTreeIDs returns one root and all descendants owned through ParentThreadID after validating the complete authority graph.

func UpdateTurnLeaseContext added in v0.18.0

func UpdateTurnLeaseContext(ctx context.Context, previous, renewed TurnLease) error

UpdateTurnLeaseContext advances one context binding after a successful durable renewal. It cannot replace a different owner or generation.

func ValidateAdmitPendingToolCompletionRequest added in v0.18.0

func ValidateAdmitPendingToolCompletionRequest(req AdmitPendingToolCompletionRequest) error

func ValidateBeginCompactionRequest added in v0.18.0

func ValidateBeginCompactionRequest(req BeginCompactionRequest) error

func ValidateCreateRootRequest added in v0.18.0

func ValidateCreateRootRequest(req CreateRootRequest) error

ValidateCreateRootRequest validates the exact root-create contract.

func ValidateForkPrepareState added in v0.18.0

func ValidateForkPrepareState(rootThreadID string, nodes []ForkOptions, states []ForkPrepareThreadState) error

ValidateForkPrepareState rejects a plan whose pinned source snapshot or terminal-child set no longer matches the canonical state at claim time.

func ValidateInterruptedTurnAdmissionPath added in v0.19.0

func ValidateInterruptedTurnAdmissionPath(path []Entry, threadID, turnID, runID, turnStartedID string) error

func ValidateInterruptedTurnLeaseSuccessor added in v0.19.0

func ValidateInterruptedTurnLeaseSuccessor(target, current TurnLease) error

ValidateInterruptedTurnLeaseSuccessor verifies that current is a canonical monotonic successor of the exact recovery target proof.

func ValidateInterruptedTurnRecoveryPath added in v0.18.0

func ValidateInterruptedTurnRecoveryPath(path []Entry, turnID, runID string) error

func ValidateInterruptedTurnStartedEntry added in v0.19.0

func ValidateInterruptedTurnStartedEntry(entry Entry, threadID, turnID, runID, turnStartedID string) error

func ValidatePendingToolCompletionPath added in v0.18.0

func ValidatePendingToolCompletionPath(path []Entry) error

func ValidatePublishSubAgentIdentity added in v0.18.0

func ValidatePublishSubAgentIdentity(req PublishSubAgentRequest) error

ValidatePublishSubAgentIdentity validates the durable request-ledger key and conflict identity before a backend interprets the requested child shape.

func ValidatePublishSubAgentPendingToolCompletionRequest added in v0.18.0

func ValidatePublishSubAgentPendingToolCompletionRequest(req PublishSubAgentPendingToolCompletionRequest) error

func ValidatePublishSubAgentRequest added in v0.18.0

func ValidatePublishSubAgentRequest(req PublishSubAgentRequest) error

ValidatePublishSubAgentRequest enforces the exact parent, child, fork, and first-input identity before a backend starts the atomic publication.

func ValidateRecoverInterruptedTurnRequest added in v0.18.0

func ValidateRecoverInterruptedTurnRequest(req RecoverInterruptedTurnRequest) error

func ValidateSetThreadTitleRequest added in v0.18.0

func ValidateSetThreadTitleRequest(req SetThreadTitleRequest) error

func ValidateThreadAuthorityGraph added in v0.17.0

func ValidateThreadAuthorityGraph(threads []ThreadMeta) error

ValidateThreadAuthorityGraph requires every SubAgent parent chain to be acyclic and terminate at an existing root thread.

func ValidateThreadAuthoritySnapshot added in v0.19.0

func ValidateThreadAuthoritySnapshot(meta ThreadMeta, path []Entry, lease *TurnLease, claimOperationID string, leaseGeneration int64) error

func ValidateThreadAuthorityState added in v0.18.0

func ValidateThreadAuthorityState(path []Entry, lease *TurnLease, claimOperationID string) error

func ValidateThreadMetaAuthority added in v0.17.0

func ValidateThreadMetaAuthority(meta ThreadMeta) error

ValidateThreadMetaAuthority enforces the durable distinction between independent root threads and parent-owned SubAgent threads.

Types

type AdmitPendingToolCompletionRequest added in v0.18.0

type AdmitPendingToolCompletionRequest struct {
	CompletionRequestID   string
	RequestFingerprint    string
	SettlementFingerprint string
	Target                PendingToolSettlementTarget
	Settlement            Entry
	ContinuationTurnID    string
	ContinuationRunID     string
	OwnerID               string
	Input                 session.Message
	Now                   time.Time
}

type AdmitPendingToolCompletionResult added in v0.18.0

type AdmitPendingToolCompletionResult struct {
	Settlement         Entry
	SettlementReplayed bool
	Admission          AdmitTurnResult
	Replayed           bool
}

type AdmitSubAgentInputRequest added in v0.18.0

type AdmitSubAgentInputRequest struct {
	ParentThreadID string
	ChildThreadID  string
	TurnID         string
	RunID          string
	OwnerID        string
	Now            time.Time
}

type AdmitSubAgentInputResult added in v0.18.0

type AdmitSubAgentInputResult struct {
	Input       SubAgentInputRecord
	Lease       TurnLease
	TurnStarted Entry
	UserMessage Entry
	Replayed    bool
}

type AdmitTurnRequest added in v0.18.0

type AdmitTurnRequest struct {
	ThreadID           string
	TurnID             string
	RunID              string
	OwnerID            string
	Input              session.Message
	RetryLeafID        string
	RequestFingerprint string
	Now                time.Time
}

type AdmitTurnResult added in v0.18.0

type AdmitTurnResult struct {
	Lease            TurnLease
	BoundaryTerminal Entry
	TurnStarted      Entry
	UserMessage      Entry
	BaseLeafID       string
	Replayed         bool
}

type AgentTodoItem added in v0.11.0

type AgentTodoItem struct {
	ID      string          `json:"id"`
	Content string          `json:"content"`
	Status  AgentTodoStatus `json:"status"`
}

type AgentTodoState added in v0.11.0

type AgentTodoState struct {
	ThreadID          string          `json:"thread_id"`
	Version           int64           `json:"version"`
	Items             []AgentTodoItem `json:"items"`
	UpdatedAt         time.Time       `json:"updated_at,omitempty"`
	UpdatedByTurnID   string          `json:"updated_by_turn_id,omitempty"`
	UpdatedByRunID    string          `json:"updated_by_run_id,omitempty"`
	UpdatedByToolCall string          `json:"updated_by_tool_call_id,omitempty"`
}

type AgentTodoStateRepo added in v0.11.0

type AgentTodoStateRepo interface {
	ReadAgentTodoState(context.Context, string) (AgentTodoState, error)
	CompareAndSwapAgentTodoState(context.Context, AgentTodoState, int64) (AgentTodoState, error)
}

type AgentTodoStatus added in v0.11.0

type AgentTodoStatus string
const (
	AgentTodoPending    AgentTodoStatus = "pending"
	AgentTodoInProgress AgentTodoStatus = "in_progress"
	AgentTodoCompleted  AgentTodoStatus = "completed"
)

type AppendCommittedError

type AppendCommittedError struct {
	Err error
}

func (AppendCommittedError) Error

func (e AppendCommittedError) Error() string

func (AppendCommittedError) Unwrap

func (e AppendCommittedError) Unwrap() error

type AppendOptions

type AppendOptions struct {
	ID       string
	ParentID string
	Now      time.Time
}

type ArtifactAuthorityRepo added in v0.18.0

type ArtifactAuthorityRepo interface {
	ReadArtifact(context.Context, ArtifactReadRequest) (ArtifactContent, error)
	ArtifactClosure(context.Context, ArtifactClosureRequest) (artifact.Closure, error)
}

type ArtifactClosureRequest added in v0.18.0

type ArtifactClosureRequest struct {
	SourceThreadID      string
	DestinationThreadID string
	EntryIDs            []string
}

type ArtifactContent added in v0.18.0

type ArtifactContent struct {
	Ref  artifact.Ref
	Text string
}

type ArtifactReadRequest added in v0.18.0

type ArtifactReadRequest struct {
	ParentThreadID string
	ThreadID       string
	ArtifactID     string
}

type BeginCompactionRequest added in v0.18.0

type BeginCompactionRequest struct {
	ThreadID             string
	RequestID            string
	RequestFingerprint   string
	Source               string
	SourceLeafID         string
	ActivePathHash       string
	SummarySchemaVersion string
	PromptIdentity       string
	RequestPayloadHash   string
	OwnerID              string
	Now                  time.Time
}

type BeginCompactionResult added in v0.18.0

type BeginCompactionResult struct {
	Operation        CompactionOperation
	Owner            bool
	TakeoverEligible bool
	Replayed         bool
}

type BeginEffectDispatchRequest added in v0.18.0

type BeginEffectDispatchRequest struct {
	Lease                  TurnLease
	EffectAttemptID        string
	RequestFingerprint     string
	ObservedHeartbeat      int64
	AuthorizationProofHash string
	Now                    time.Time
}

type CompactionOperation added in v0.18.0

type CompactionOperation struct {
	ThreadID             string
	RequestID            string
	RequestFingerprint   string
	Source               string
	SourceLeafID         string
	ActivePathHash       string
	SummarySchemaVersion string
	PromptIdentity       string
	RequestPayloadHash   string
	State                CompactionOperationState
	Lease                TurnLease
	ResultEntryID        string
	ErrorCode            string
	ErrorMessage         string
	OutcomeFingerprint   string
	FinishedOwnerID      string
	FinishedGeneration   int64
	CreatedAt            time.Time
	UpdatedAt            time.Time
	FinishedAt           time.Time
}

type CompactionOperationState added in v0.18.0

type CompactionOperationState string
const (
	CompactionOperationPrepared  CompactionOperationState = "prepared"
	CompactionOperationCompleted CompactionOperationState = "completed"
	CompactionOperationFailed    CompactionOperationState = "failed"
)

type ContextOptions

type ContextOptions struct{}

type ContextProjection

type ContextProjection struct {
	Messages []session.Message  `json:"messages"`
	Segments []ProjectedSegment `json:"segments,omitempty"`
}

func BuildContextProjection

func BuildContextProjection(path []Entry, opts ContextProjectionOptions) ContextProjection

type ContextProjectionOptions

type ContextProjectionOptions struct {
	Purpose ProjectionPurpose
}

type CreateRootRequest added in v0.18.0

type CreateRootRequest struct {
	ThreadID        string
	CreateIntentID  string
	ContractVersion string
	Meta            ThreadMeta
}

type CreateRootResult added in v0.18.0

type CreateRootResult struct {
	Thread   ThreadMeta
	Replayed bool
}

type DeleteRootTreeResult added in v0.18.0

type DeleteRootTreeResult struct {
	ThreadIDs []string
	Replayed  bool
}

type EffectAttempt added in v0.18.0

type EffectAttempt struct {
	EffectAttemptID     string
	Invocation          EffectInvocationIdentity
	RequestFingerprint  string
	State               EffectAttemptState
	RejectionCode       string
	TerminalFingerprint string
	ResultEntryID       string
	OwnerID             string
	Generation          int64
	CreatedAt           time.Time
	UpdatedAt           time.Time
}

type EffectAttemptState added in v0.18.0

type EffectAttemptState string
const (
	EffectAttemptPrepared    EffectAttemptState = "prepared"
	EffectAttemptDispatching EffectAttemptState = "dispatching"
	EffectAttemptCompleted   EffectAttemptState = "completed"
	EffectAttemptFailed      EffectAttemptState = "failed"
	EffectAttemptRejected    EffectAttemptState = "rejected"
	EffectAttemptUnknown     EffectAttemptState = "unknown"
	EffectAttemptCancelled   EffectAttemptState = "cancelled"
)

type EffectInvocationIdentity added in v0.18.0

type EffectInvocationIdentity struct {
	ThreadID     string
	TurnID       string
	RunID        string
	ToolCallID   string
	ToolName     string
	ArgumentHash string
}

type Entry

type Entry struct {
	ID                      string              `json:"id"`
	ThreadID                string              `json:"thread_id"`
	ParentID                string              `json:"parent_id,omitempty"`
	Type                    EntryType           `json:"type"`
	TurnID                  string              `json:"turn_id,omitempty"`
	CreatedAt               time.Time           `json:"created_at"`
	Message                 session.Message     `json:"message,omitempty"`
	Raw                     string              `json:"raw,omitempty"`
	RawHash                 string              `json:"raw_hash,omitempty"`
	TurnStatus              TurnMarkerStatus    `json:"turn_status,omitempty"`
	Provider                string              `json:"provider,omitempty"`
	Model                   string              `json:"model,omitempty"`
	CompactionID            string              `json:"compaction_id,omitempty"`
	PreviousCompactionID    string              `json:"previous_compaction_id,omitempty"`
	CompactedThroughEntryID string              `json:"compacted_through_entry_id,omitempty"`
	SummarySchemaVersion    string              `json:"summary_schema_version,omitempty"`
	CompactionGeneration    int                 `json:"compaction_generation,omitempty"`
	CompactionWindowID      string              `json:"compaction_window_id,omitempty"`
	FirstKeptEntryID        string              `json:"first_kept_entry_id,omitempty"`
	KeptUserEntryIDs        []string            `json:"kept_user_entry_ids,omitempty"`
	Summary                 string              `json:"summary,omitempty"`
	CompactionTrigger       string              `json:"compaction_trigger,omitempty"`
	CompactionReason        string              `json:"compaction_reason,omitempty"`
	CompactionPhase         string              `json:"compaction_phase,omitempty"`
	CompactionOperationID   string              `json:"compaction_operation_id,omitempty"`
	CompactionRequestID     string              `json:"compaction_request_id,omitempty"`
	CompactionSource        string              `json:"compaction_source,omitempty"`
	TokensBefore            int64               `json:"tokens_before,omitempty"`
	TokensAfterEstimate     int64               `json:"tokens_after_estimate,omitempty"`
	ContextUsageBefore      contextpolicy.Usage `json:"context_usage_before,omitempty"`
	ContextUsageAfter       contextpolicy.Usage `json:"context_usage_after,omitempty"`
	Error                   string              `json:"error,omitempty"`
	Metadata                map[string]string   `json:"metadata,omitempty"`
}

func AppendActiveTools

func AppendActiveTools(ctx context.Context, repo JournalRepo, threadID string, metadata map[string]string) (Entry, error)

func AppendCompaction

func AppendCompaction(ctx context.Context, repo JournalRepo, threadID, turnID string, result compaction.Result) (Entry, error)

func AppendFailure

func AppendFailure(ctx context.Context, repo JournalRepo, threadID, turnID string, message string) (Entry, error)

func AppendMessage

func AppendMessage(ctx context.Context, repo JournalRepo, threadID, turnID string, msg session.Message) (Entry, error)

func AppendMessageAt added in v0.3.56

func AppendMessageAt(ctx context.Context, repo JournalRepo, threadID, turnID string, msg session.Message, observedAt time.Time) (Entry, error)

func AppendTurnMarker

func AppendTurnMarker(ctx context.Context, repo JournalRepo, threadID, turnID string, status TurnMarkerStatus, metadata map[string]string) (Entry, error)

func AppendTurnMarkerWithID added in v0.11.0

func AppendTurnMarkerWithID(ctx context.Context, repo JournalRepo, threadID, turnID, entryID string, status TurnMarkerStatus, metadata map[string]string) (Entry, error)

func CompactionEntry added in v0.18.0

func CompactionEntry(threadID, turnID string, result compaction.Result) (Entry, error)

func PrepareBranchBoundaryEntry added in v0.18.0

func PrepareBranchBoundaryEntry(path []Entry, threadID, parentEntryID, entryID, reason string, now time.Time) (Entry, error)

PrepareBranchBoundaryEntry closes one copied or rewound unfinished turn so a fork or retry path is idle before another turn authority is admitted.

func PrepareEntry

func PrepareEntry(entry Entry) Entry

func PrepareSubAgentCloseLifecycleEntry added in v0.18.0

func PrepareSubAgentCloseLifecycleEntry(operation SubAgentCloseOperation, threadID, parentEntryID, entryID string, now time.Time) Entry

PrepareSubAgentCloseLifecycleEntry builds the canonical lifecycle entry that FinishSubAgentClose persists atomically with terminal child state.

func UnresolvedInterruptedTurnCalls added in v0.18.0

func UnresolvedInterruptedTurnCalls(path []Entry, turnID string) []Entry

type EntryType

type EntryType string
const (
	EntryThreadInfo       EntryType = "thread_info"
	EntryTurnMarker       EntryType = "turn_marker"
	EntryUserMessage      EntryType = "user_message"
	EntryAssistantMessage EntryType = "assistant_message"
	EntryToolCall         EntryType = "tool_call"
	EntryToolResult       EntryType = "tool_result"
	EntryModelChange      EntryType = "model_change"
	EntryActiveTools      EntryType = "active_tools_change"
	EntryCompaction       EntryType = "compaction"
	EntryBranchSummary    EntryType = "branch_summary"
	EntryRunFailure       EntryType = "run_failure"
	EntryCustom           EntryType = "custom"
)

type FileRepo

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

func NewFileRepo

func NewFileRepo(root string) *FileRepo

func (*FileRepo) AcquireTurnLease

func (r *FileRepo) AcquireTurnLease(ctx context.Context, lease TurnLease) error

func (*FileRepo) ActiveTurnLease

func (r *FileRepo) ActiveTurnLease(ctx context.Context, threadID string) (TurnLease, bool, error)

func (*FileRepo) Append

func (r *FileRepo) Append(ctx context.Context, entry Entry, opts AppendOptions) (Entry, error)

func (*FileRepo) ArtifactClosure added in v0.18.0

func (*FileRepo) ClearExpiredTurnLease

func (r *FileRepo) ClearExpiredTurnLease(ctx context.Context, threadID string, cutoff time.Time) (TurnLease, bool, error)

func (*FileRepo) CompareAndSwapAgentTodoState added in v0.11.0

func (r *FileRepo) CompareAndSwapAgentTodoState(ctx context.Context, state AgentTodoState, expectedVersion int64) (AgentTodoState, error)

func (*FileRepo) CreateThread

func (r *FileRepo) CreateThread(ctx context.Context, meta ThreadMeta) (ThreadMeta, error)

func (*FileRepo) DeleteThread

func (r *FileRepo) DeleteThread(ctx context.Context, threadID string) error

func (*FileRepo) Entries

func (r *FileRepo) Entries(ctx context.Context, threadID string) ([]Entry, error)

func (*FileRepo) Entry

func (r *FileRepo) Entry(ctx context.Context, threadID, entryID string) (Entry, error)

func (*FileRepo) Fork

func (r *FileRepo) Fork(ctx context.Context, opts ForkOptions) (ThreadMeta, error)

func (*FileRepo) ListThreads

func (r *FileRepo) ListThreads(ctx context.Context, opts ListThreadsOptions) ([]ThreadMeta, error)

func (*FileRepo) MoveLeaf

func (r *FileRepo) MoveLeaf(ctx context.Context, threadID, entryID string) error

func (*FileRepo) Path

func (r *FileRepo) Path(ctx context.Context, threadID, leafID string) ([]Entry, error)

func (*FileRepo) PathPage added in v0.11.4

func (r *FileRepo) PathPage(ctx context.Context, threadID, leafID, beforeEntryID string, limit int) (PathPage, error)

func (*FileRepo) ReadAgentTodoState added in v0.11.0

func (r *FileRepo) ReadAgentTodoState(ctx context.Context, threadID string) (AgentTodoState, error)

func (*FileRepo) ReadArtifact added in v0.18.0

func (*FileRepo) ReleaseTurnLease

func (r *FileRepo) ReleaseTurnLease(ctx context.Context, lease TurnLease) error

func (*FileRepo) Thread

func (r *FileRepo) Thread(ctx context.Context, threadID string) (ThreadMeta, error)

func (*FileRepo) UpdateThread

func (r *FileRepo) UpdateThread(ctx context.Context, meta ThreadMeta) error

type FinishCompactionRequest added in v0.18.0

type FinishCompactionRequest struct {
	Lease              TurnLease
	RequestID          string
	RequestFingerprint string
	OutcomeFingerprint string
	Result             *Entry
	ErrorCode          string
	ErrorMessage       string
	Now                time.Time
}

type FinishCompactionResult added in v0.18.0

type FinishCompactionResult struct {
	Operation CompactionOperation
	Entry     *Entry
	Replayed  bool
}

type FinishEffectDispatchRequest added in v0.18.0

type FinishEffectDispatchRequest struct {
	Lease              TurnLease
	EffectAttemptID    string
	RequestFingerprint string
	OutcomeFingerprint string
	Failed             bool
	Result             Entry
	FullOutput         *artifact.FullOutput
	Now                time.Time
}

type FinishEffectDispatchResult added in v0.18.0

type FinishEffectDispatchResult struct {
	Attempt  EffectAttempt
	Result   Entry
	Artifact *artifact.Ref
	Replayed bool
}

type FinishSubAgentCloseRequest added in v0.18.0

type FinishSubAgentCloseRequest struct {
	CloseOperationID string
	ParentThreadID   string
	TargetThreadID   string
	Reason           string
	Now              time.Time
}

type FinishSubAgentCloseResult added in v0.18.0

type FinishSubAgentCloseResult struct {
	Operation         SubAgentCloseOperation
	Threads           []ThreadMeta
	Entries           []Entry
	CancelledInputIDs []string
	Replayed          bool
}

type FinishTurnRequest added in v0.18.0

type FinishTurnRequest struct {
	Lease              TurnLease
	RunID              string
	TerminalEntryID    string
	Status             TurnMarkerStatus
	Metadata           map[string]string
	FailureMessage     string
	ProviderState      *ProviderStateRecord
	ClearProviderState bool
	OutcomeFingerprint string
	Now                time.Time
}

type FinishTurnResult added in v0.18.0

type FinishTurnResult struct {
	Failure  *Entry
	Terminal Entry
	Replayed bool
}

type ForkDestinationMeta added in v0.17.0

type ForkDestinationMeta struct {
	ParentThreadID  string          `json:"parent_thread_id"`
	ParentTurnID    string          `json:"parent_turn_id,omitempty"`
	TaskName        string          `json:"task_name,omitempty"`
	TaskDescription string          `json:"task_description,omitempty"`
	AgentPath       string          `json:"agent_path,omitempty"`
	HostProfileRef  string          `json:"host_profile_ref,omitempty"`
	ForkMode        string          `json:"fork_mode,omitempty"`
	Lifecycle       ThreadLifecycle `json:"lifecycle,omitempty"`
}

ForkDestinationMeta is the child ownership metadata written atomically with a fork destination. A nil value creates an independent root fork.

type ForkEntryIdentity added in v0.10.0

type ForkEntryIdentity struct {
	SourceThreadID      string
	DestinationThreadID string
	TurnIDMap           map[string]string
	RunIDMap            map[string]string
}

type ForkOptions

type ForkOptions struct {
	SourceThreadID       string
	EntryID              string
	EntryIDPinned        bool
	ExpectedSourceLeafID string
	Position             ForkPosition
	NewThreadID          string
	OperationID          string
	OperationNodeID      string
	Now                  time.Time
	TurnIDMap            map[string]string
	RunIDMap             map[string]string
	DestinationMeta      *ForkDestinationMeta
	ArtifactClosure      artifact.Closure
	RewriteEntry         func(Entry, ForkEntryIdentity) (Entry, error)
}

type ForkPosition

type ForkPosition string
const (
	ForkAt     ForkPosition = "at"
	ForkBefore ForkPosition = "before"
)

type ForkPrepareThreadState added in v0.18.0

type ForkPrepareThreadState struct {
	Meta              ThreadMeta
	Path              []Entry
	PinnedPath        []Entry
	PendingInputCount int
}

ForkPrepareThreadState is the transaction-local source state used to validate one complete replayable fork plan before any structural claim is published.

type InterruptedTurnRecoveryPlan added in v0.18.0

type InterruptedTurnRecoveryPlan struct {
	RunID              string
	Status             TurnMarkerStatus
	FailureMessage     string
	OutcomeFingerprint string
	TerminalEntryID    string
}

func DeriveInterruptedTurnRecoveryPlan added in v0.18.0

func DeriveInterruptedTurnRecoveryPlan(path []Entry, expectedLease TurnLease, parentThreadID string) (InterruptedTurnRecoveryPlan, error)

type InterruptedTurnRecoveryRepo added in v0.18.0

type InterruptedTurnRecoveryRepo interface {
	RecoverInterruptedTurn(context.Context, RecoverInterruptedTurnRequest) (RecoverInterruptedTurnResult, error)
}

type InterruptedTurnResolutionValidationRepo added in v0.19.0

type InterruptedTurnResolutionValidationRepo interface {
	ValidateInterruptedTurnResolution(context.Context, RecoverInterruptedTurnRequest) error
}

type JournalRepo added in v0.18.0

JournalRepo is the durable journal capability used by normal Agent execution. It intentionally excludes lifecycle creation, deletion, fork, and metadata replacement capabilities.

type LeasePolicy added in v0.18.0

type LeasePolicy struct {
	TTL                time.Duration
	RenewInterval      time.Duration
	ClockSkewAllowance time.Duration
}

func (LeasePolicy) Validate added in v0.18.0

func (p LeasePolicy) Validate() error

type LeasePolicyRepo added in v0.18.0

type LeasePolicyRepo interface {
	AuthorityLeasePolicy() LeasePolicy
}

type ListThreadsOptions

type ListThreadsOptions struct {
	IncludeArchived bool
	Limit           int
	AfterCreatedAt  time.Time
	AfterID         string
}

type MarkEffectUnknownRequest added in v0.18.0

type MarkEffectUnknownRequest struct {
	Lease              TurnLease
	EffectAttemptID    string
	RequestFingerprint string
	OutcomeFingerprint string
	Now                time.Time
}

type MemoryRepo

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

func NewMemoryRepo

func NewMemoryRepo() *MemoryRepo

func NewMemoryRepoWithLeasePolicy added in v0.18.0

func NewMemoryRepoWithLeasePolicy(policy LeasePolicy, now func() time.Time) (*MemoryRepo, error)

func (*MemoryRepo) AcquireThreadAuthorityClaim added in v0.18.0

func (r *MemoryRepo) AcquireThreadAuthorityClaim(_ context.Context, operationID string, requiredSourceThreadIDs, authorityThreadIDs []string) error

AcquireThreadAuthorityClaim reserves identities for one replayable structural operation. Required source threads must exist and have no active turn lease.

func (*MemoryRepo) AcquireTurnLease

func (r *MemoryRepo) AcquireTurnLease(_ context.Context, request TurnLease) (TurnLease, error)

func (*MemoryRepo) ActiveTurnLease

func (r *MemoryRepo) ActiveTurnLease(_ context.Context, threadID string) (TurnLease, bool, error)

func (*MemoryRepo) AdmitPendingToolCompletion added in v0.18.0

func (*MemoryRepo) AdmitSubAgentInput added in v0.18.0

func (*MemoryRepo) AdmitTurn added in v0.18.0

func (*MemoryRepo) Append

func (r *MemoryRepo) Append(ctx context.Context, entry Entry, opts AppendOptions) (Entry, error)

func (*MemoryRepo) ArtifactClosure added in v0.18.0

func (r *MemoryRepo) ArtifactClosure(_ context.Context, req ArtifactClosureRequest) (artifact.Closure, error)

func (*MemoryRepo) AuthorityLeasePolicy added in v0.18.0

func (r *MemoryRepo) AuthorityLeasePolicy() LeasePolicy

func (*MemoryRepo) BeginCompaction added in v0.18.0

func (*MemoryRepo) BeginEffectDispatch added in v0.18.0

func (r *MemoryRepo) BeginEffectDispatch(_ context.Context, req BeginEffectDispatchRequest) (EffectAttempt, error)

func (*MemoryRepo) CommitForkBatch added in v0.18.0

func (r *MemoryRepo) CommitForkBatch(ctx context.Context, operationID string, nodes []ForkOptions, commit func() error) ([]ThreadMeta, error)

CommitForkBatch publishes every destination and releases the operation's complete claim set in one MemoryRepo critical section. The callback persists the terminal operation record before readers can observe the destinations.

func (*MemoryRepo) CompareAndSwapAgentTodoState added in v0.11.0

func (r *MemoryRepo) CompareAndSwapAgentTodoState(ctx context.Context, state AgentTodoState, expectedVersion int64) (AgentTodoState, error)

func (*MemoryRepo) CreateRoot added in v0.18.0

func (*MemoryRepo) CreateThread

func (r *MemoryRepo) CreateThread(_ context.Context, meta ThreadMeta) (ThreadMeta, error)

func (*MemoryRepo) CreateThreadWithInitialEntry added in v0.18.0

func (r *MemoryRepo) CreateThreadWithInitialEntry(ctx context.Context, meta ThreadMeta, initial Entry) (ThreadMeta, Entry, error)

func (*MemoryRepo) DeleteProviderState added in v0.18.0

func (r *MemoryRepo) DeleteProviderState(ctx context.Context, threadID string) error

func (*MemoryRepo) DeleteRootTree added in v0.18.0

func (r *MemoryRepo) DeleteRootTree(_ context.Context, rootThreadID string) (DeleteRootTreeResult, error)

func (*MemoryRepo) DeleteThread

func (r *MemoryRepo) DeleteThread(_ context.Context, threadID string) error

func (*MemoryRepo) Entries

func (r *MemoryRepo) Entries(_ context.Context, threadID string) ([]Entry, error)

func (*MemoryRepo) Entry

func (r *MemoryRepo) Entry(_ context.Context, threadID, entryID string) (Entry, error)

func (*MemoryRepo) FailForkClaim added in v0.18.0

func (r *MemoryRepo) FailForkClaim(operationID string, sourceThreadIDs, authorityThreadIDs []string, commit func() error) error

FailForkClaim records one deterministic pre-publication failure and releases the complete claim set without exposing an unclaimed prepared operation.

func (*MemoryRepo) FinishCompaction added in v0.18.0

func (*MemoryRepo) FinishEffectDispatch added in v0.18.0

func (*MemoryRepo) FinishSubAgentClose added in v0.18.0

func (*MemoryRepo) FinishTurn added in v0.18.0

func (*MemoryRepo) Fork

func (r *MemoryRepo) Fork(ctx context.Context, opts ForkOptions) (ThreadMeta, error)

func (*MemoryRepo) ForkWithInitialEntry added in v0.18.0

func (r *MemoryRepo) ForkWithInitialEntry(ctx context.Context, opts ForkOptions, initial Entry) (ThreadMeta, Entry, error)

func (*MemoryRepo) InspectSubAgentThreadAuthority added in v0.19.0

func (r *MemoryRepo) InspectSubAgentThreadAuthority(_ context.Context, parentThreadID, childThreadID string) (SubAgentThreadAuthoritySnapshot, error)

func (*MemoryRepo) InspectThreadAuthority added in v0.18.0

func (r *MemoryRepo) InspectThreadAuthority(_ context.Context, threadID string) (ThreadAuthoritySnapshot, error)

func (*MemoryRepo) ListSubAgentInputs added in v0.18.0

func (r *MemoryRepo) ListSubAgentInputs(_ context.Context, childThreadID string, state SubAgentInputState) ([]SubAgentInputRecord, error)

func (*MemoryRepo) ListThreads

func (r *MemoryRepo) ListThreads(_ context.Context, opts ListThreadsOptions) ([]ThreadMeta, error)

func (*MemoryRepo) MarkEffectUnknown added in v0.18.0

func (r *MemoryRepo) MarkEffectUnknown(_ context.Context, req MarkEffectUnknownRequest) (EffectAttempt, error)

func (*MemoryRepo) MoveLeaf

func (r *MemoryRepo) MoveLeaf(_ context.Context, threadID, entryID string) error

func (*MemoryRepo) Path

func (r *MemoryRepo) Path(_ context.Context, threadID, leafID string) ([]Entry, error)

func (*MemoryRepo) PathPage added in v0.11.4

func (r *MemoryRepo) PathPage(_ context.Context, threadID, leafID, beforeEntryID string, limit int) (PathPage, error)

func (*MemoryRepo) PrepareEffectAttempt added in v0.18.0

func (*MemoryRepo) PrepareForkClaim added in v0.18.0

func (r *MemoryRepo) PrepareForkClaim(ctx context.Context, operationID, rootThreadID string, nodes []ForkOptions) error

PrepareForkClaim validates and publishes one complete Memory authority claim in the same critical section.

func (*MemoryRepo) PrepareSubAgentClose added in v0.18.0

func (*MemoryRepo) ProviderState added in v0.18.0

func (r *MemoryRepo) ProviderState(_ context.Context, threadID string) (ProviderStateRecord, error)

func (*MemoryRepo) PublishSubAgent added in v0.18.0

func (*MemoryRepo) PublishSubAgentInput added in v0.18.0

func (*MemoryRepo) PublishSubAgentPendingToolCompletion added in v0.18.0

func (*MemoryRepo) PutProviderState added in v0.18.0

func (r *MemoryRepo) PutProviderState(ctx context.Context, record ProviderStateRecord) error

func (*MemoryRepo) ReadAgentTodoState added in v0.11.0

func (r *MemoryRepo) ReadAgentTodoState(_ context.Context, threadID string) (AgentTodoState, error)

func (*MemoryRepo) ReadArtifact added in v0.18.0

func (*MemoryRepo) ReadCompaction added in v0.18.0

func (r *MemoryRepo) ReadCompaction(_ context.Context, threadID, requestID string) (CompactionOperation, bool, error)

func (*MemoryRepo) ReadPendingToolCompletion added in v0.18.0

func (*MemoryRepo) RecoverInterruptedTurn added in v0.18.0

func (*MemoryRepo) RejectEffectAttempt added in v0.18.0

func (r *MemoryRepo) RejectEffectAttempt(_ context.Context, req RejectEffectAttemptRequest) (EffectAttempt, error)

func (*MemoryRepo) ReleaseThreadAuthorityClaim added in v0.18.0

func (r *MemoryRepo) ReleaseThreadAuthorityClaim(_ context.Context, operationID string)

ReleaseThreadAuthorityClaim releases every identity held by one operation.

func (*MemoryRepo) ReleaseTurnLease

func (r *MemoryRepo) ReleaseTurnLease(_ context.Context, proof TurnLease) error

func (*MemoryRepo) RenewTurnLease added in v0.18.0

func (r *MemoryRepo) RenewTurnLease(_ context.Context, proof TurnLease) (TurnLease, error)

func (*MemoryRepo) SetThreadTitle added in v0.18.0

func (*MemoryRepo) SettlePendingToolRecovery added in v0.18.0

func (*MemoryRepo) TakeOverCompaction added in v0.18.0

func (*MemoryRepo) Thread

func (r *MemoryRepo) Thread(_ context.Context, threadID string) (ThreadMeta, error)

func (*MemoryRepo) ThreadTombstone added in v0.18.0

func (r *MemoryRepo) ThreadTombstone(_ context.Context, threadID string) (ThreadTombstone, error)

func (*MemoryRepo) UpdateThread

func (r *MemoryRepo) UpdateThread(ctx context.Context, meta ThreadMeta) error

func (*MemoryRepo) ValidateArtifactForkDestination added in v0.18.0

func (r *MemoryRepo) ValidateArtifactForkDestination(_ context.Context, closure artifact.Closure) error

ValidateArtifactForkDestination verifies the complete copied artifact set without relying on the source thread still being live.

func (*MemoryRepo) ValidateInterruptedTurnResolution added in v0.19.0

func (r *MemoryRepo) ValidateInterruptedTurnResolution(_ context.Context, req RecoverInterruptedTurnRequest) error

type PathPage added in v0.11.4

type PathPage struct {
	Entries     []Entry
	NextEntryID string
	HasMore     bool
	// NewestOrdinal is the active-path ordinal of Entries[0]. Entries are
	// returned newest first, so later entries decrement this value by one.
	NewestOrdinal int64
}

type PendingToolCompletionAuthorityRepo added in v0.18.0

type PendingToolCompletionAuthorityRepo interface {
	AdmitPendingToolCompletion(context.Context, AdmitPendingToolCompletionRequest) (AdmitPendingToolCompletionResult, error)
	ReadPendingToolCompletion(context.Context, AdmitPendingToolCompletionRequest) (AdmitPendingToolCompletionResult, bool, error)
}

type PendingToolRecoveryRepo added in v0.18.0

type PendingToolRecoveryRepo interface {
	SettlePendingToolRecovery(context.Context, SettlePendingToolRecoveryRequest) (SettlePendingToolRecoveryResult, error)
}

type PendingToolSettlementTarget added in v0.18.0

type PendingToolSettlementTarget struct {
	ThreadID        string
	TurnID          string
	RunID           string
	ToolCallID      string
	ToolName        string
	Handle          string
	EffectAttemptID string
}

type PrepareEffectAttemptRequest added in v0.18.0

type PrepareEffectAttemptRequest struct {
	Lease              TurnLease
	Invocation         EffectInvocationIdentity
	RequestFingerprint string
	Now                time.Time
}

type PrepareEffectAttemptResult added in v0.18.0

type PrepareEffectAttemptResult struct {
	Attempt  EffectAttempt
	Replayed bool
}

type PrepareSubAgentCloseRequest added in v0.18.0

type PrepareSubAgentCloseRequest struct {
	CloseOperationID string
	ParentThreadID   string
	TargetThreadID   string
	Reason           string
	TargetLease      *TurnLease
	Now              time.Time
}

type PrepareSubAgentCloseResult added in v0.18.0

type PrepareSubAgentCloseResult struct {
	Operation SubAgentCloseOperation
	Replayed  bool
}

type ProjectedSegment

type ProjectedSegment struct {
	EntryID       string         `json:"entry_id,omitempty"`
	EntryType     EntryType      `json:"entry_type,omitempty"`
	MessageIndex  int            `json:"message_index"`
	Role          session.Role   `json:"role,omitempty"`
	ToolCallID    string         `json:"tool_call_id,omitempty"`
	ToolName      string         `json:"tool_name,omitempty"`
	TokenEstimate int64          `json:"token_estimate,omitempty"`
	ArtifactRefs  []artifact.Ref `json:"artifact_refs,omitempty"`
	UIPreview     string         `json:"ui_preview,omitempty"`
}

type ProjectionPurpose

type ProjectionPurpose string
const (
	ProjectionProviderRequest ProjectionPurpose = "provider_request"
	ProjectionCompaction      ProjectionPurpose = "compaction"
	ProjectionTestUI          ProjectionPurpose = "test_ui"
)

type ProviderStateReader added in v0.18.0

type ProviderStateReader interface {
	ProviderState(context.Context, string) (ProviderStateRecord, error)
}

type ProviderStateRecord added in v0.18.0

type ProviderStateRecord struct {
	ThreadID         string
	LeafEntryID      string
	CompatibilityKey string
	State            provider.State
	CreatedByRunID   string
	CreatedByTurnID  string
	UpdatedAt        time.Time
}

type ProviderStateStore added in v0.18.0

type ProviderStateStore interface {
	ProviderStateReader
	PutProviderState(context.Context, ProviderStateRecord) error
	DeleteProviderState(context.Context, string) error
}

type PublishSubAgentInputRequest added in v0.18.0

type PublishSubAgentInputRequest struct {
	InputRequestID     string
	RequestFingerprint string
	ParentThreadID     string
	ChildThreadID      string
	Message            session.Message
	HostLabels         map[string]string
	CorrelationLabels  map[string]string
	Interrupt          bool
	Now                time.Time
}

type PublishSubAgentPendingToolCompletionRequest added in v0.18.0

type PublishSubAgentPendingToolCompletionRequest struct {
	InputRequestID        string
	RequestFingerprint    string
	SettlementFingerprint string
	ParentThreadID        string
	ChildThreadID         string
	Target                PendingToolSettlementTarget
	Settlement            Entry
	Message               session.Message
	HostLabels            map[string]string
	CorrelationLabels     map[string]string
	Now                   time.Time
}

type PublishSubAgentPendingToolCompletionResult added in v0.18.0

type PublishSubAgentPendingToolCompletionResult struct {
	Settlement         Entry
	SettlementReplayed bool
	Input              SubAgentInputRecord
	Replayed           bool
}

type PublishSubAgentRequest added in v0.18.0

type PublishSubAgentRequest struct {
	PublicationID      string
	RequestFingerprint string
	ParentThreadID     string
	ChildMeta          ThreadMeta
	ForkOptions        *ForkOptions
	ArtifactClosure    artifact.Closure
	Message            session.Message
	HostLabels         map[string]string
	CorrelationLabels  map[string]string
	Now                time.Time
}

type PublishSubAgentResult added in v0.18.0

type PublishSubAgentResult struct {
	Thread   ThreadMeta
	Input    SubAgentInputRecord
	Replayed bool
}

type RecoverInterruptedTurnRequest added in v0.18.0

type RecoverInterruptedTurnRequest struct {
	ExpectedLease  TurnLease
	ParentThreadID string
	Now            time.Time
}

type RecoverInterruptedTurnResult added in v0.18.0

type RecoverInterruptedTurnResult struct {
	RunID              string
	Status             TurnMarkerStatus
	OutcomeFingerprint string
	Failure            *Entry
	ToolResults        []Entry
	Terminal           Entry
	Generation         int64
	Replayed           bool
}

type RejectEffectAttemptRequest added in v0.18.0

type RejectEffectAttemptRequest struct {
	Lease                TurnLease
	EffectAttemptID      string
	RequestFingerprint   string
	RejectionCode        string
	RejectionFingerprint string
	Now                  time.Time
}

type Repo

type Repo interface {
	JournalRepo
	CreateThread(context.Context, ThreadMeta) (ThreadMeta, error)
	UpdateThread(context.Context, ThreadMeta) error
	DeleteThread(context.Context, string) error
	MoveLeaf(context.Context, string, string) error
	Fork(context.Context, ForkOptions) (ThreadMeta, error)
}

Repo is the internal storage implementation contract. Production runtime actors receive narrower capabilities such as JournalRepo instead.

type RootAuthorityRepo added in v0.18.0

type RootAuthorityRepo interface {
	ThreadTombstoneRepo
	CreateRoot(context.Context, CreateRootRequest) (CreateRootResult, error)
	DeleteRootTree(context.Context, string) (DeleteRootTreeResult, error)
}

type SetThreadTitleRequest added in v0.18.0

type SetThreadTitleRequest struct {
	ThreadID string
	Mode     ThreadTitleMutationMode
	Title    string
	Status   ThreadTitleStatus
	Source   ThreadTitleSource
	Error    string
	Now      time.Time
}

type SetThreadTitleResult added in v0.18.0

type SetThreadTitleResult struct {
	Thread  ThreadMeta
	Changed bool
}

type SettlePendingToolRecoveryRequest added in v0.18.0

type SettlePendingToolRecoveryRequest struct {
	Target             PendingToolSettlementTarget
	RequestFingerprint string
	Settlement         Entry
	Now                time.Time
}

type SettlePendingToolRecoveryResult added in v0.18.0

type SettlePendingToolRecoveryResult struct {
	Entry    Entry
	Replayed bool
}

type SubAgentCloseAuthorityRepo added in v0.18.0

type SubAgentCloseAuthorityRepo interface {
	PrepareSubAgentClose(context.Context, PrepareSubAgentCloseRequest) (PrepareSubAgentCloseResult, error)
	FinishSubAgentClose(context.Context, FinishSubAgentCloseRequest) (FinishSubAgentCloseResult, error)
}

type SubAgentCloseNode added in v0.18.0

type SubAgentCloseNode struct {
	ThreadID string `json:"thread_id"`
	WasOpen  bool   `json:"was_open"`
}

type SubAgentCloseOperation added in v0.18.0

type SubAgentCloseOperation struct {
	CloseOperationID   string
	ParentThreadID     string
	TargetThreadID     string
	Reason             string
	IntentFingerprint  string
	RequestFingerprint string
	State              SubAgentCloseState
	Nodes              []SubAgentCloseNode
	ResultEntryIDs     []string
	PreparedAt         time.Time
	FinishedAt         time.Time
}

type SubAgentCloseState added in v0.18.0

type SubAgentCloseState string
const (
	SubAgentClosePrepared  SubAgentCloseState = "prepared"
	SubAgentCloseCompleted SubAgentCloseState = "completed"
)

type SubAgentInputRecord added in v0.18.0

type SubAgentInputRecord struct {
	SubAgentInputID    string
	ParentThreadID     string
	ChildThreadID      string
	RequestKind        SubAgentRequestKind
	RequestID          string
	RequestFingerprint string
	Sequence           int64
	State              SubAgentInputState
	Message            session.Message
	HostLabels         map[string]string
	CorrelationLabels  map[string]string
	AdmittedTurnID     string
	AdmittedRunID      string
	CreatedAt          time.Time
	AdmittedAt         time.Time
	CancelledAt        time.Time
}

type SubAgentInputState added in v0.18.0

type SubAgentInputState string
const (
	SubAgentInputPending   SubAgentInputState = "pending"
	SubAgentInputAdmitted  SubAgentInputState = "admitted"
	SubAgentInputCancelled SubAgentInputState = "cancelled"
)

type SubAgentRequestKind added in v0.18.0

type SubAgentRequestKind string
const (
	SubAgentRequestPublication           SubAgentRequestKind = "publication"
	SubAgentRequestInput                 SubAgentRequestKind = "input"
	SubAgentRequestPendingToolCompletion SubAgentRequestKind = "pending_tool_completion"
)

type SubAgentThreadAuthorityInspectionRepo added in v0.19.0

type SubAgentThreadAuthorityInspectionRepo interface {
	InspectSubAgentThreadAuthority(context.Context, string, string) (SubAgentThreadAuthoritySnapshot, error)
}

type SubAgentThreadAuthoritySnapshot added in v0.19.0

type SubAgentThreadAuthoritySnapshot struct {
	Parent ThreadMeta
	Child  ThreadAuthoritySnapshot
}

type TakeOverCompactionRequest added in v0.18.0

type TakeOverCompactionRequest struct {
	ThreadID           string
	RequestID          string
	RequestFingerprint string
	ExpectedLease      TurnLease
	OwnerID            string
	Now                time.Time
}

type ThreadAuthorityInspectionRepo added in v0.18.0

type ThreadAuthorityInspectionRepo interface {
	InspectThreadAuthority(context.Context, string) (ThreadAuthoritySnapshot, error)
}

type ThreadAuthoritySnapshot added in v0.18.0

type ThreadAuthoritySnapshot struct {
	Thread           ThreadMeta
	Lease            *TurnLease
	ClaimOperationID string
	LeaseGeneration  int64
}

type ThreadLifecycle added in v0.18.0

type ThreadLifecycle string

ThreadLifecycle is the durable canonical lifecycle of a thread identity. A deleted identity is represented by a tombstone rather than by absence.

const (
	ThreadLifecycleOpen    ThreadLifecycle = "open"
	ThreadLifecycleClosing ThreadLifecycle = "closing"
	ThreadLifecycleClosed  ThreadLifecycle = "closed"
	ThreadLifecycleDeleted ThreadLifecycle = "deleted"
)

func (ThreadLifecycle) Valid added in v0.18.0

func (l ThreadLifecycle) Valid() bool

type ThreadListRepo

type ThreadListRepo interface {
	ListThreads(context.Context, ListThreadsOptions) ([]ThreadMeta, error)
}

type ThreadMeta

type ThreadMeta struct {
	ID                  string            `json:"id"`
	LeafID              string            `json:"leaf_id,omitempty"`
	ParentThreadID      string            `json:"parent_thread_id,omitempty"`
	ParentTurnID        string            `json:"parent_turn_id,omitempty"`
	ForkedFromThreadID  string            `json:"forked_from_thread_id,omitempty"`
	ForkedFromEntryID   string            `json:"forked_from_entry_id,omitempty"`
	ForkOperationID     string            `json:"fork_operation_id,omitempty"`
	ForkOperationNodeID string            `json:"fork_operation_node_id,omitempty"`
	TaskName            string            `json:"task_name,omitempty"`
	TaskDescription     string            `json:"task_description,omitempty"`
	AgentPath           string            `json:"agent_path,omitempty"`
	HostProfileRef      string            `json:"host_profile_ref,omitempty"`
	ForkMode            string            `json:"fork_mode,omitempty"`
	Lifecycle           ThreadLifecycle   `json:"lifecycle,omitempty"`
	CloseOperationID    string            `json:"close_operation_id,omitempty"`
	Archived            bool              `json:"archived,omitempty"`
	Title               string            `json:"title,omitempty"`
	TitleStatus         ThreadTitleStatus `json:"title_status,omitempty"`
	TitleSource         ThreadTitleSource `json:"title_source,omitempty"`
	TitleUpdatedAt      time.Time         `json:"title_updated_at,omitempty"`
	TitleError          string            `json:"title_error,omitempty"`
	CreatedAt           time.Time         `json:"created_at"`
	UpdatedAt           time.Time         `json:"updated_at"`
	LastViewedAt        time.Time         `json:"last_viewed_at,omitempty"`
}

func ApplyThreadListOptions

func ApplyThreadListOptions(threads []ThreadMeta, opts ListThreadsOptions) []ThreadMeta

func ListThreads

func ListThreads(ctx context.Context, repo JournalRepo, opts ListThreadsOptions) ([]ThreadMeta, error)

func (ThreadMeta) CanonicalLifecycle added in v0.18.0

func (m ThreadMeta) CanonicalLifecycle() (ThreadLifecycle, error)

func (ThreadMeta) IsClosed added in v0.18.0

func (m ThreadMeta) IsClosed() bool

func (ThreadMeta) IsClosing added in v0.18.0

func (m ThreadMeta) IsClosing() bool

type ThreadPublishRepo added in v0.18.0

type ThreadPublishRepo interface {
	CreateThreadWithInitialEntry(context.Context, ThreadMeta, Entry) (ThreadMeta, Entry, error)
	ForkWithInitialEntry(context.Context, ForkOptions, Entry) (ThreadMeta, Entry, error)
}

type ThreadTitleAuthorityRepo added in v0.18.0

type ThreadTitleAuthorityRepo interface {
	SetThreadTitle(context.Context, SetThreadTitleRequest) (SetThreadTitleResult, error)
}

type ThreadTitleMutationMode added in v0.18.0

type ThreadTitleMutationMode string
const (
	ThreadTitleMutationManual    ThreadTitleMutationMode = "manual"
	ThreadTitleMutationAutomatic ThreadTitleMutationMode = "automatic"
)

type ThreadTitleSource

type ThreadTitleSource string
const (
	ThreadTitleSourceProvider ThreadTitleSource = "provider"
	ThreadTitleSourceHost     ThreadTitleSource = "host"
)

type ThreadTitleStatus

type ThreadTitleStatus string
const (
	ThreadTitleReady  ThreadTitleStatus = "ready"
	ThreadTitleFailed ThreadTitleStatus = "failed"
)

type ThreadTombstone added in v0.18.0

type ThreadTombstone struct {
	ThreadID            string
	RootThreadID        string
	ParentThreadID      string
	CreateIntentID      string
	ForkOperationID     string
	ForkOperationNodeID string
	ForkedFromThreadID  string
	ForkedFromEntryID   string
	DeletedAt           time.Time
}

ThreadTombstone retains identity provenance after queryable Agent state is deleted. It is intentionally not a ThreadMeta and is never returned as a normal thread read.

type ThreadTombstoneRepo added in v0.18.0

type ThreadTombstoneRepo interface {
	ThreadTombstone(context.Context, string) (ThreadTombstone, error)
}

type TurnAuthorityRepo added in v0.18.0

type TurnAuthorityRepo interface {
	AdmitTurn(context.Context, AdmitTurnRequest) (AdmitTurnResult, error)
	FinishTurn(context.Context, FinishTurnRequest) (FinishTurnResult, error)
}

type TurnLease

type TurnLease struct {
	ThreadID     string           `json:"thread_id"`
	Purpose      TurnLeasePurpose `json:"purpose"`
	TurnID       string           `json:"turn_id,omitempty"`
	MutationID   string           `json:"mutation_id,omitempty"`
	MutationKind string           `json:"mutation_kind,omitempty"`
	OwnerID      string           `json:"owner_id"`
	Generation   int64            `json:"generation"`
	Heartbeat    int64            `json:"heartbeat"`
	AcquiredAt   time.Time        `json:"acquired_at"`
	RenewedAt    time.Time        `json:"renewed_at"`
	ExpiresAt    time.Time        `json:"expires_at"`
}

func TurnLeaseFromContext added in v0.18.0

func TurnLeaseFromContext(ctx context.Context) (TurnLease, bool)

TurnLeaseFromContext returns the durable mutation owner bound to ctx.

func (TurnLease) Fresh added in v0.18.0

func (l TurnLease) Fresh(now time.Time) bool

func (TurnLease) TakeoverEligible added in v0.18.0

func (l TurnLease) TakeoverEligible(now time.Time, policy LeasePolicy) bool

func (TurnLease) Validate added in v0.18.0

func (l TurnLease) Validate() error

type TurnLeasePurpose added in v0.18.0

type TurnLeasePurpose string
const (
	TurnLeasePurposeTurn     TurnLeasePurpose = "turn"
	TurnLeasePurposeMutation TurnLeasePurpose = "mutation"
)

func (TurnLeasePurpose) Normalize added in v0.18.0

func (p TurnLeasePurpose) Normalize() (TurnLeasePurpose, error)

type TurnLeaseRepo

type TurnLeaseRepo interface {
	AcquireTurnLease(context.Context, TurnLease) (TurnLease, error)
	RenewTurnLease(context.Context, TurnLease) (TurnLease, error)
	ReleaseTurnLease(context.Context, TurnLease) error
	ActiveTurnLease(context.Context, string) (TurnLease, bool, error)
}

type TurnMarkerStatus

type TurnMarkerStatus string
const (
	TurnStarted   TurnMarkerStatus = "started"
	TurnSavePoint TurnMarkerStatus = "save_point"
	TurnCompleted TurnMarkerStatus = "completed"
	TurnWaiting   TurnMarkerStatus = "waiting"
	TurnFailed    TurnMarkerStatus = "failed"
	TurnAborted   TurnMarkerStatus = "aborted"
)

Jump to

Keyboard shortcuts

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