Documentation
¶
Overview ¶
Package agentharness exposes the host/UI durable conversation API.
AgentHarness owns durable threads backed by sessiontree.Repo. Thread.Run, Thread.Retry, Thread.MoveTo, and Thread.Compact are safe to call concurrently across different ThreadIDs, including source and forked threads. A single durable ThreadID admits at most one active turn or mutation at a time; callers that race the same thread receive ErrActiveTurn before new turn entries are appended. This serialization is enforced through the repository turn lease contract when the repo implements sessiontree.TurnLeaseRepo, so two harnesses sharing one durable repo observe the same active-turn invariant.
The lower-level engine remains a turn executor. Harness callers configure engine behavior through TurnPolicy and LoopLimits rather than raw engine.Options so run identity, provider/model identity, and control tool definitions are generated by the harness for the active durable thread.
Thread.Read returns the host-facing snapshot: lifecycle status, appendability, retry availability, and display messages. Thread.Journal is the explicit raw session-tree inspection API for tests, debug consoles, and admin tooling.
Index ¶
- Constants
- Variables
- type AgentHarness
- func (h *AgentHarness) BindCreatedRoot(meta sessiontree.ThreadMeta, replayed bool) (*Thread, error)
- func (h *AgentHarness) CloseSubAgent(ctx context.Context, opts CloseSubAgentOptions) (SubAgentSnapshot, error)
- func (h *AgentHarness) ForkThread(ctx context.Context, opts ForkOptions) (*Thread, error)
- func (h *AgentHarness) ForkThreadWithResult(ctx context.Context, opts ForkOptions) (ForkResult, error)
- func (h *AgentHarness) ListCanonicalTurnDetailEvents(ctx context.Context, opts sessiontree.ListCanonicalTurnsOptions, ...) (CanonicalTurnDetailsPage, error)
- func (h *AgentHarness) ListPendingToolSettlementTargets(ctx context.Context, threadID string) ([]sessiontree.PendingToolSettlementTarget, error)
- func (h *AgentHarness) ListRootThreadSummaries(ctx context.Context, opts ListRootThreadSummariesOptions) ([]ThreadSummary, error)
- func (h *AgentHarness) ListSubAgentPendingToolSettlementTargets(ctx context.Context, parentThreadID, childThreadID string) ([]sessiontree.PendingToolSettlementTarget, error)
- func (h *AgentHarness) ListSubAgents(ctx context.Context, parentThreadID string) ([]SubAgentSnapshot, error)
- func (h *AgentHarness) ListThreadDetailEvents(ctx context.Context, opts ListThreadDetailEventsOptions) (ThreadDetailEvents, error)
- func (h *AgentHarness) OwnedActiveThread(ctx context.Context, id, turnID string) (*Thread, sessiontree.TurnLease, bool, error)
- func (h *AgentHarness) PublishSubAgentPendingToolCompletion(ctx context.Context, opts PublishSubAgentPendingToolCompletionOptions) (SubAgentSnapshot, error)
- func (h *AgentHarness) ReadApprovalQueue(ctx context.Context, opts ReadApprovalQueueOptions) (ApprovalQueueSnapshot, error)
- func (h *AgentHarness) ReadCanonicalTurnDetailEvents(ctx context.Context, threadID, turnID string, includeRaw bool) (CanonicalTurnDetailRead, error)
- func (h *AgentHarness) ReadLatestThreadDetailEvents(ctx context.Context, threadID string, includeRaw bool) (ThreadDetailEvents, error)
- func (h *AgentHarness) ReadSubAgentDetail(ctx context.Context, opts ReadSubAgentDetailOptions) (SubAgentDetail, error)
- func (h *AgentHarness) ReadThread(ctx context.Context, id string) (ThreadSnapshot, error)
- func (h *AgentHarness) ReadThreadContext(ctx context.Context, threadID string) (ThreadContextSnapshot, error)
- func (h *AgentHarness) ReadThreadOverview(ctx context.Context, id string) (ThreadOverview, error)
- func (h *AgentHarness) ReadTurnDetailEvents(ctx context.Context, threadID, turnID, runID string, includeRaw bool) (ThreadDetailEvents, bool, error)
- func (h *AgentHarness) RecoverInterruptedTurn(ctx context.Context, opts RecoverInterruptedTurnOptions) (RecoverInterruptedTurnResult, error)
- func (h *AgentHarness) RecoverPendingAutomaticThreadTitles(ctx context.Context) error
- func (h *AgentHarness) ResolveApproval(ctx context.Context, opts ResolveApprovalOptions) (ResolveApprovalResult, error)
- func (h *AgentHarness) ResumeThread(ctx context.Context, id string, _ ResumeOptions) (*Thread, error)
- func (h *AgentHarness) SendSubAgentInput(ctx context.Context, opts SendSubAgentInputOptions) (SubAgentSnapshot, error)
- func (h *AgentHarness) SetThreadTitle(ctx context.Context, id, rawTitle string) (ThreadSnapshot, error)
- func (h *AgentHarness) SpawnSubAgent(ctx context.Context, opts SpawnSubAgentOptions) (SubAgentSnapshot, error)
- func (h *AgentHarness) ValidateSubAgentAuthority(ctx context.Context, parentThreadID, childThreadID string) error
- func (h *AgentHarness) ValidateSubAgentDescendantAuthority(ctx context.Context, parentThreadID, childThreadID string) error
- func (h *AgentHarness) WaitSubAgents(ctx context.Context, opts WaitSubAgentsOptions) (WaitSubAgentsResult, error)
- type ApprovalQueueSnapshot
- type ApprovalRecord
- type ApprovalResource
- type AuthorizedEffect
- type CanonicalTurnDetail
- type CanonicalTurnDetailRead
- type CanonicalTurnDetailsPage
- type CloseSubAgentOptions
- type CommittedEffectError
- type CompactOptions
- type CompactResult
- type EffectAuthorizationGate
- type EffectAuthorizationGateFunc
- type EffectAuthorizationProof
- type EffectAuthorizationRequest
- type EffectDispatchResult
- type ForkOptions
- type ForkResult
- type HarnessEvent
- type HarnessEventType
- type HarnessRecorder
- type HarnessSink
- type ListRootThreadSummariesOptions
- type ListThreadDetailEventsOptions
- type LoopLimits
- type Options
- type PendingToolCompletion
- type PendingToolCompletionStatus
- type PendingToolSettlement
- type PendingToolSettlementStatus
- type ProviderTitleGenerator
- type PublishSubAgentPendingToolCompletionOptions
- type ReadApprovalQueueOptions
- type ReadSubAgentDetailOptions
- type RecoverInterruptedTurnOptions
- type RecoverInterruptedTurnResult
- type ResolveApprovalOptions
- type ResolveApprovalResult
- type ResumeOptions
- type RetryOptions
- type RunOptions
- type SendSubAgentInputOptions
- type SpawnSubAgentOptions
- type SubAgentDetail
- type SubAgentDetailApproval
- type SubAgentDetailCompaction
- type SubAgentDetailControlSignal
- type SubAgentDetailEvent
- type SubAgentDetailEventKind
- type SubAgentDetailMessage
- type SubAgentDetailToolCall
- type SubAgentDetailToolResult
- type SubAgentDetailTurnMarker
- type SubAgentForkMode
- type SubAgentSnapshot
- type SubAgentStatus
- type Thread
- func (t *Thread) Compact(ctx context.Context, opts CompactOptions) (CompactResult, error)
- func (t *Thread) CompletePendingTool(ctx context.Context, completion PendingToolCompletion) (TurnResult, error)
- func (t *Thread) ID() string
- func (t *Thread) Journal(ctx context.Context) (ThreadJournalSnapshot, error)
- func (t *Thread) Read(ctx context.Context) (ThreadSnapshot, error)
- func (t *Thread) Retry(ctx context.Context, opts RetryOptions) (TurnResult, error)
- func (t *Thread) Run(ctx context.Context, input string, opts RunOptions) (TurnResult, error)
- func (t *Thread) SettlePendingTool(ctx context.Context, settlement PendingToolSettlement) (SubAgentDetailEvent, error)
- func (t *Thread) SettlePendingToolActive(ctx context.Context, settlement PendingToolSettlement, ...) (SubAgentDetailEvent, error)
- func (t *Thread) Summary(ctx context.Context) (ThreadSummary, error)
- type ThreadContextCompaction
- type ThreadContextModel
- type ThreadContextPolicy
- type ThreadContextSnapshot
- type ThreadDetailEvents
- type ThreadJournalSnapshot
- type ThreadMessage
- type ThreadOverview
- type ThreadSnapshot
- type ThreadSummary
- type TitleGenerator
- type TitleRequest
- type TitleResult
- type TurnExecutionRegistry
- type TurnPolicy
- type TurnResult
- type WaitSubAgentsOptions
- type WaitSubAgentsResult
Constants ¶
const ( DefaultSubAgentWaitTimeout = 5 * time.Minute MaxSubAgentWaitTimeout = 20 * time.Minute DefaultSubAgentRunTimeout = 20 * time.Minute MaxSubAgentRunTimeout = 20 * time.Minute DefaultSubAgentDetailLimit = 200 MaxSubAgentDetailLimit = 500 DefaultThreadDetailEventLimit = DefaultSubAgentDetailLimit MaxThreadDetailEventLimit = MaxSubAgentDetailLimit )
const ThreadTitleLogicalRequestID = "thread_title"
Variables ¶
var ( ErrInvalidAuthorizationProof = errors.New("effect authorization proof is invalid") ErrEffectDispatchConsumed = errors.New("authorized effect dispatch was already consumed") ErrAuthorizationContract = errors.New("effect authorization gate contract failed") )
var ( ErrActiveTurn = errors.New("thread already has an active turn") ErrNoRetryTarget = errors.New("thread has no retryable turn") ErrPendingToolSettlementTargetTurnNotFound = errors.New("pending tool settlement target turn was not found") ErrPendingToolSettlementTargetRunNotFound = errors.New("pending tool settlement target run was not found") ErrPendingToolSettlementTargetToolNotFound = errors.New("pending tool settlement target tool call was not found") ErrPendingToolSettlementTargetNotActive = errors.New("pending tool settlement target is not an active pending tool result") ErrPendingToolSettlementConflict = errors.New("pending tool settlement conflicts with existing settlement") ErrForkOperationConflict = errors.New("fork operation conflicts with existing request") ErrJournalInvariant = errors.New("thread journal invariant violated") )
var ( ErrSubAgentNotFound = errors.New("subagent not found") ErrSubAgentClosed = errors.New("subagent is closed") )
Functions ¶
This section is empty.
Types ¶
type AgentHarness ¶
type AgentHarness struct {
// contains filtered or unexported fields
}
func New ¶
func New(options Options) *AgentHarness
func (*AgentHarness) BindCreatedRoot ¶ added in v0.18.0
func (h *AgentHarness) BindCreatedRoot(meta sessiontree.ThreadMeta, replayed bool) (*Thread, error)
BindCreatedRoot attaches the harness cache to a root already committed by the storage authority kernel. It never creates or repairs canonical state.
func (*AgentHarness) CloseSubAgent ¶ added in v0.3.17
func (h *AgentHarness) CloseSubAgent(ctx context.Context, opts CloseSubAgentOptions) (SubAgentSnapshot, error)
func (*AgentHarness) ForkThread ¶
func (h *AgentHarness) ForkThread(ctx context.Context, opts ForkOptions) (*Thread, error)
func (*AgentHarness) ForkThreadWithResult ¶ added in v0.3.86
func (h *AgentHarness) ForkThreadWithResult(ctx context.Context, opts ForkOptions) (ForkResult, error)
func (*AgentHarness) ListCanonicalTurnDetailEvents ¶ added in v0.20.0
func (h *AgentHarness) ListCanonicalTurnDetailEvents(ctx context.Context, opts sessiontree.ListCanonicalTurnsOptions, includeRaw bool) (CanonicalTurnDetailsPage, error)
func (*AgentHarness) ListPendingToolSettlementTargets ¶ added in v0.28.0
func (h *AgentHarness) ListPendingToolSettlementTargets(ctx context.Context, threadID string) ([]sessiontree.PendingToolSettlementTarget, error)
ListPendingToolSettlementTargets returns every active pending tool target on the thread's canonical path. It intentionally does not use detail-event projections, whose pagination and sanitization are presentation concerns.
func (*AgentHarness) ListRootThreadSummaries ¶ added in v0.29.0
func (h *AgentHarness) ListRootThreadSummaries(ctx context.Context, opts ListRootThreadSummariesOptions) ([]ThreadSummary, error)
func (*AgentHarness) ListSubAgentPendingToolSettlementTargets ¶ added in v0.28.0
func (h *AgentHarness) ListSubAgentPendingToolSettlementTargets(ctx context.Context, parentThreadID, childThreadID string) ([]sessiontree.PendingToolSettlementTarget, error)
ListSubAgentPendingToolSettlementTargets returns canonical pending targets for one direct child of the supplied parent.
func (*AgentHarness) ListSubAgents ¶ added in v0.3.17
func (h *AgentHarness) ListSubAgents(ctx context.Context, parentThreadID string) ([]SubAgentSnapshot, error)
func (*AgentHarness) ListThreadDetailEvents ¶ added in v0.3.42
func (h *AgentHarness) ListThreadDetailEvents(ctx context.Context, opts ListThreadDetailEventsOptions) (ThreadDetailEvents, error)
func (*AgentHarness) OwnedActiveThread ¶ added in v0.18.0
func (h *AgentHarness) OwnedActiveThread(ctx context.Context, id, turnID string) (*Thread, sessiontree.TurnLease, bool, error)
OwnedActiveThread returns a cached thread only when its in-process owner and the durable turn lease are the same exact authority generation.
func (*AgentHarness) PublishSubAgentPendingToolCompletion ¶ added in v0.18.0
func (h *AgentHarness) PublishSubAgentPendingToolCompletion(ctx context.Context, opts PublishSubAgentPendingToolCompletionOptions) (SubAgentSnapshot, error)
func (*AgentHarness) ReadApprovalQueue ¶ added in v0.20.0
func (h *AgentHarness) ReadApprovalQueue(ctx context.Context, opts ReadApprovalQueueOptions) (ApprovalQueueSnapshot, error)
func (*AgentHarness) ReadCanonicalTurnDetailEvents ¶ added in v0.31.0
func (h *AgentHarness) ReadCanonicalTurnDetailEvents(ctx context.Context, threadID, turnID string, includeRaw bool) (CanonicalTurnDetailRead, error)
func (*AgentHarness) ReadLatestThreadDetailEvents ¶ added in v0.11.4
func (h *AgentHarness) ReadLatestThreadDetailEvents(ctx context.Context, threadID string, includeRaw bool) (ThreadDetailEvents, error)
ReadLatestThreadDetailEvents reads only the active-path entries required to project the latest admitted turn. It walks backwards until it has the latest started marker and the canonical user input used by that turn.
func (*AgentHarness) ReadSubAgentDetail ¶ added in v0.3.21
func (h *AgentHarness) ReadSubAgentDetail(ctx context.Context, opts ReadSubAgentDetailOptions) (SubAgentDetail, error)
func (*AgentHarness) ReadThread ¶ added in v0.11.0
func (h *AgentHarness) ReadThread(ctx context.Context, id string) (ThreadSnapshot, error)
func (*AgentHarness) ReadThreadContext ¶ added in v0.10.0
func (h *AgentHarness) ReadThreadContext(ctx context.Context, threadID string) (ThreadContextSnapshot, error)
func (*AgentHarness) ReadThreadOverview ¶ added in v0.12.0
func (h *AgentHarness) ReadThreadOverview(ctx context.Context, id string) (ThreadOverview, error)
func (*AgentHarness) ReadTurnDetailEvents ¶ added in v0.20.0
func (h *AgentHarness) ReadTurnDetailEvents(ctx context.Context, threadID, turnID, runID string, includeRaw bool) (ThreadDetailEvents, bool, error)
func (*AgentHarness) RecoverInterruptedTurn ¶ added in v0.18.0
func (h *AgentHarness) RecoverInterruptedTurn(ctx context.Context, opts RecoverInterruptedTurnOptions) (RecoverInterruptedTurnResult, error)
func (*AgentHarness) RecoverPendingAutomaticThreadTitles ¶ added in v0.20.0
func (h *AgentHarness) RecoverPendingAutomaticThreadTitles(ctx context.Context) error
func (*AgentHarness) ResolveApproval ¶ added in v0.20.0
func (h *AgentHarness) ResolveApproval(ctx context.Context, opts ResolveApprovalOptions) (ResolveApprovalResult, error)
func (*AgentHarness) ResumeThread ¶
func (h *AgentHarness) ResumeThread(ctx context.Context, id string, _ ResumeOptions) (*Thread, error)
func (*AgentHarness) SendSubAgentInput ¶ added in v0.3.17
func (h *AgentHarness) SendSubAgentInput(ctx context.Context, opts SendSubAgentInputOptions) (SubAgentSnapshot, error)
func (*AgentHarness) SetThreadTitle ¶ added in v0.12.0
func (h *AgentHarness) SetThreadTitle(ctx context.Context, id, rawTitle string) (ThreadSnapshot, error)
func (*AgentHarness) SpawnSubAgent ¶ added in v0.3.17
func (h *AgentHarness) SpawnSubAgent(ctx context.Context, opts SpawnSubAgentOptions) (SubAgentSnapshot, error)
func (*AgentHarness) ValidateSubAgentAuthority ¶ added in v0.18.0
func (h *AgentHarness) ValidateSubAgentAuthority(ctx context.Context, parentThreadID, childThreadID string) error
func (*AgentHarness) ValidateSubAgentDescendantAuthority ¶ added in v0.29.0
func (h *AgentHarness) ValidateSubAgentDescendantAuthority(ctx context.Context, parentThreadID, childThreadID string) error
func (*AgentHarness) WaitSubAgents ¶ added in v0.3.17
func (h *AgentHarness) WaitSubAgents(ctx context.Context, opts WaitSubAgentsOptions) (WaitSubAgentsResult, error)
type ApprovalQueueSnapshot ¶ added in v0.20.0
type ApprovalQueueSnapshot struct {
RootThreadID string `json:"root_thread_id"`
Generation int64 `json:"generation"`
Revision int64 `json:"revision"`
CurrentApprovalID string `json:"current_approval_id,omitempty"`
Approvals []ApprovalRecord `json:"approvals"`
GeneratedAt time.Time `json:"generated_at"`
}
type ApprovalRecord ¶ added in v0.20.0
type ApprovalRecord struct {
ApprovalID string `json:"approval_id,omitempty"`
RootThreadID string `json:"root_thread_id,omitempty"`
ParentThreadID string `json:"parent_thread_id,omitempty"`
ToolCallID string `json:"tool_call_id,omitempty"`
EffectAttemptID string `json:"effect_attempt_id,omitempty"`
ToolName string `json:"tool_name,omitempty"`
ToolKind string `json:"tool_kind,omitempty"`
RunID string `json:"run_id,omitempty"`
ThreadID string `json:"thread_id,omitempty"`
TurnID string `json:"turn_id,omitempty"`
Step int `json:"step,omitempty"`
BatchIndex int `json:"batch_index"`
BatchSize int `json:"batch_size"`
State string `json:"state,omitempty"`
Revision int64 `json:"revision,omitempty"`
QueueSequence int64 `json:"queue_sequence,omitempty"`
DecisionID string `json:"decision_id,omitempty"`
RequestedAt time.Time `json:"requested_at,omitempty"`
UpdatedAt time.Time `json:"updated_at,omitempty"`
ResolvedAt time.Time `json:"resolved_at,omitempty"`
ArgsHash string `json:"args_hash,omitempty"`
RequestFingerprint string `json:"request_fingerprint,omitempty"`
AuthorizationProofHash string `json:"authorization_proof_hash,omitempty"`
Resources []ApprovalResource `json:"resources,omitempty"`
Effects []string `json:"effects,omitempty"`
Labels map[string]string `json:"labels,omitempty"`
HostContext map[string]string `json:"host_context,omitempty"`
ReadOnly bool `json:"read_only,omitempty"`
Destructive bool `json:"destructive,omitempty"`
OpenWorld bool `json:"open_world,omitempty"`
Reason string `json:"reason,omitempty"`
}
type ApprovalResource ¶ added in v0.20.0
type AuthorizedEffect ¶ added in v0.18.0
type AuthorizedEffect func(context.Context, EffectAuthorizationProof) (EffectDispatchResult, error)
AuthorizedEffect crosses the canonical effect boundary under the execution context selected by the host authorization gate.
type CanonicalTurnDetail ¶ added in v0.20.0
type CanonicalTurnDetail struct {
TurnID string
RunID string
StartedOrdinal int64
RetrySource *sessiontree.CanonicalTurnRetrySource
Events []SubAgentDetailEvent
}
type CanonicalTurnDetailRead ¶ added in v0.31.0
type CanonicalTurnDetailsPage ¶ added in v0.20.0
type CanonicalTurnDetailsPage struct {
Turns []CanonicalTurnDetail
BeforeCursor *sessiontree.CanonicalTurnBeforeCursor
SinceCursor sessiontree.CanonicalTurnSinceCursor
HasMore bool
ThroughOrdinal int64
LatestTurnID string
LatestStatus string
LatestRecoverable bool
LatestCanRetry bool
GeneratedAt time.Time
}
type CloseSubAgentOptions ¶ added in v0.3.17
type CommittedEffectError ¶ added in v0.18.0
func (*CommittedEffectError) Error ¶ added in v0.18.0
func (e *CommittedEffectError) Error() string
func (*CommittedEffectError) Unwrap ¶ added in v0.18.0
func (e *CommittedEffectError) Unwrap() error
type CompactOptions ¶ added in v0.3.37
type CompactResult ¶ added in v0.3.37
type EffectAuthorizationGate ¶ added in v0.18.0
type EffectAuthorizationGate interface {
Dispatch(context.Context, EffectAuthorizationRequest, AuthorizedEffect) (EffectDispatchResult, error)
}
type EffectAuthorizationGateFunc ¶ added in v0.18.0
type EffectAuthorizationGateFunc func(context.Context, EffectAuthorizationRequest, AuthorizedEffect) (EffectDispatchResult, error)
func (EffectAuthorizationGateFunc) Dispatch ¶ added in v0.18.0
func (f EffectAuthorizationGateFunc) Dispatch(ctx context.Context, req EffectAuthorizationRequest, effect AuthorizedEffect) (EffectDispatchResult, error)
type EffectAuthorizationProof ¶ added in v0.18.0
type EffectAuthorizationRequest ¶ added in v0.18.0
type EffectAuthorizationRequest struct {
EffectAttemptID string
RequestFingerprint string
ThreadID string
TurnID string
RunID string
ToolCallID string
ToolName string
ArgumentHash string
Step int
BatchIndex int
BatchSize int
Labels map[string]string
HostContext map[string]string
Resources []tools.ResourceRef
Effects []tools.Effect
Permission tools.PermissionSpec
ReadOnly bool
Destructive bool
OpenWorld bool
LeaseOwnerID string
LeaseGeneration int64
ObservedHeartbeat int64
}
type EffectDispatchResult ¶ added in v0.18.0
type EffectDispatchResult struct {
// contains filtered or unexported fields
}
type ForkOptions ¶
type ForkOptions struct {
SourceThreadID string
EntryID string
Position sessiontree.ForkPosition
NewThreadID string
OperationID string
}
type ForkResult ¶ added in v0.3.86
type ForkResult struct {
OperationID string
Thread *Thread
Summary ThreadSummary
}
type HarnessEvent ¶
type HarnessEvent struct {
Type HarnessEventType `json:"type"`
RunID string `json:"run_id,omitempty"`
ThreadID string `json:"thread_id,omitempty"`
TurnID string `json:"turn_id,omitempty"`
EntryID string `json:"entry_id,omitempty"`
ParentID string `json:"parent_id,omitempty"`
Message string `json:"message,omitempty"`
Status string `json:"status,omitempty"`
Metadata map[string]string `json:"metadata,omitempty"`
Timestamp time.Time `json:"timestamp"`
}
type HarnessEventType ¶
type HarnessEventType string
const ( EventThreadStarted HarnessEventType = "thread_started" EventThreadForked HarnessEventType = "thread_forked" EventTurnStarted HarnessEventType = "turn_started" EventTurnCompleted HarnessEventType = "turn_completed" EventTurnFailed HarnessEventType = "turn_failed" EventTurnAborted HarnessEventType = "turn_aborted" EventEntryAppended HarnessEventType = "entry_appended" EventRetryStarted HarnessEventType = "retry_started" EventTitlePending HarnessEventType = "thread_title_pending" EventTitleUpdated HarnessEventType = "thread_title_updated" EventTitleFailed HarnessEventType = "thread_title_failed" EventSubAgentSpawned HarnessEventType = "subagent_spawned" EventSubAgentInput HarnessEventType = "subagent_input" EventSubAgentClosed HarnessEventType = "subagent_closed" EventSubAgentCompleted HarnessEventType = "subagent_completed" )
type HarnessRecorder ¶
type HarnessRecorder struct {
Events []HarnessEvent
// contains filtered or unexported fields
}
func (*HarnessRecorder) EmitHarness ¶
func (r *HarnessRecorder) EmitHarness(ev HarnessEvent)
func (*HarnessRecorder) Snapshot ¶
func (r *HarnessRecorder) Snapshot() []HarnessEvent
type HarnessSink ¶
type HarnessSink interface {
EmitHarness(HarnessEvent)
}
type ListRootThreadSummariesOptions ¶ added in v0.29.0
type ListThreadDetailEventsOptions ¶ added in v0.3.42
type LoopLimits ¶
type Options ¶
type Options struct {
Provider provider.Provider
ProviderName string
Model string
SystemPrompt string
Tools *tools.Registry
PromptStore cache.Store
Repo sessiontree.JournalRepo
ForkOperations storage.ForkOperationStore
StateCompatibilityKey string
Sink event.Sink
SinkPolicy event.SinkPolicy
HarnessSink HarnessSink
EffectAuthorizationGate EffectAuthorizationGate
ToolSurfaceProvider engine.ToolSurfaceProvider
StopHook engine.StopHook
CompactionGenerator compaction.SummaryGenerator
CompactionPrompt compaction.PromptOptions
CompactionPromptIdentity string
TitleGenerator TitleGenerator
Reasoning provider.ReasoningCapability
TurnPolicy TurnPolicy
LoopLimits LoopLimits
SubAgentRunTimeout time.Duration
AutomaticTitleTimeout time.Duration
BeginBackgroundExecution func() (context.Context, func(), error)
ReportBackgroundError func(error)
TurnExecutions *TurnExecutionRegistry
NewID func(string) string
Now func() time.Time
}
type PendingToolCompletion ¶ added in v0.3.10
type PendingToolCompletion struct {
CompletionRequestID string
Target sessiontree.PendingToolSettlementTarget
ContinuationTurnID string
ContinuationRunID string
Status PendingToolCompletionStatus
Summary string
Output string
Input session.Message
Labels engine.RunLabels
}
type PendingToolCompletionStatus ¶ added in v0.3.10
type PendingToolCompletionStatus string
const ( PendingToolCompleted PendingToolCompletionStatus = "completed" PendingToolFailed PendingToolCompletionStatus = "failed" PendingToolCanceled PendingToolCompletionStatus = "canceled" )
type PendingToolSettlement ¶ added in v0.3.54
type PendingToolSettlement struct {
TurnID string
RunID string
ToolCallID string
ToolName string
Handle string
EffectAttemptID string
Status PendingToolSettlementStatus
Summary string
Output string
Activity *observation.ActivityPresentation
}
type PendingToolSettlementStatus ¶ added in v0.3.54
type PendingToolSettlementStatus string
const ( PendingToolSettledCompleted PendingToolSettlementStatus = "completed" PendingToolSettledFailed PendingToolSettlementStatus = "failed" PendingToolSettledCanceled PendingToolSettlementStatus = "canceled" )
type ProviderTitleGenerator ¶
type ProviderTitleGenerator struct {
Provider provider.Provider
ProviderName string
Model string
Reasoning provider.ReasoningCapability
MaxRunes int
MaxOutputTokens int64
}
func (ProviderTitleGenerator) GenerateTitle ¶
func (g ProviderTitleGenerator) GenerateTitle(ctx context.Context, req TitleRequest) (TitleResult, error)
type PublishSubAgentPendingToolCompletionOptions ¶ added in v0.18.0
type PublishSubAgentPendingToolCompletionOptions struct {
InputRequestID string
ParentThreadID string
ChildThreadID string
Target sessiontree.PendingToolSettlementTarget
Status PendingToolCompletionStatus
Summary string
Output string
Message string
Attachments []session.MessageAttachment
References []session.MessageReference
Labels engine.RunLabels
}
type ReadApprovalQueueOptions ¶ added in v0.20.0
type ReadApprovalQueueOptions struct {
ThreadID string
}
type ReadSubAgentDetailOptions ¶ added in v0.3.21
type RecoverInterruptedTurnOptions ¶ added in v0.18.0
type RecoverInterruptedTurnOptions struct {
ThreadID string
ParentThreadID string
ExpectedLease sessiontree.TurnLease
}
type RecoverInterruptedTurnResult ¶ added in v0.18.0
type RecoverInterruptedTurnResult struct {
ThreadID string
TurnID string
RunID string
Status sessiontree.TurnMarkerStatus
Replayed bool
Terminal sessiontree.Entry
}
type ResolveApprovalOptions ¶ added in v0.20.0
type ResolveApprovalOptions struct {
DecisionID string
ExpectedRootThreadID string
ExpectedGeneration int64
ExpectedRevision int64
ExpectedCurrent sessiontree.ApprovalIdentity
ExpectedApprovalRevision int64
Decision sessiontree.ApprovalDecision
}
type ResolveApprovalResult ¶ added in v0.20.0
type ResolveApprovalResult struct {
Receipt sessiontree.ApprovalDecisionReceipt
Queue ApprovalQueueSnapshot
Approval ApprovalRecord
Replayed bool
}
type ResumeOptions ¶
type ResumeOptions struct{}
type RetryOptions ¶
type RunOptions ¶
type RunOptions struct {
RunID string
TurnID string
AdmittedInputID string
AdmissionCommitted bool
AdmissionBaseLeafID string
Labels engine.RunLabels
TerminalMetadata map[string]string
DeadlineMetadata map[string]string
CompletionPolicy engine.CompletionPolicy
ControlSpec engine.ControlSpec
Reasoning provider.ReasoningSelection
MaxInputTokens int64
MaxTotalTokens int64
MaxCostUSD float64
MaxToolCalls int
MaxLengthContinuations int
MaxStopHookContinuations int
ManualCompactions engine.ManualCompactionSource
ToolSurfaceProvider engine.ToolSurfaceProvider
SupplementalContext []engine.TurnSupplementalContextItem
Attachments []session.MessageAttachment
References []session.MessageReference
Sink event.Sink
}
type SendSubAgentInputOptions ¶ added in v0.3.17
type SpawnSubAgentOptions ¶ added in v0.3.17
type SpawnSubAgentOptions struct {
PublicationID string
ParentThreadID string
ParentTurnID string
ThreadID string
TaskName string
TaskDescription string
Message string
Attachments []session.MessageAttachment
References []session.MessageReference
HostProfileRef string
ForkMode SubAgentForkMode
Labels engine.RunLabels
}
type SubAgentDetail ¶ added in v0.3.21
type SubAgentDetail struct {
Snapshot SubAgentSnapshot `json:"snapshot"`
Events []SubAgentDetailEvent `json:"events"`
ActivityTimeline observation.ActivityTimeline `json:"activity_timeline"`
Context ThreadContextSnapshot `json:"context,omitempty"`
NextOrdinal int64 `json:"next_ordinal,omitempty"`
HasMore bool `json:"has_more,omitempty"`
RetainedFrom int64 `json:"retained_from,omitempty"`
GeneratedAt time.Time `json:"generated_at"`
}
type SubAgentDetailApproval ¶ added in v0.3.21
type SubAgentDetailApproval struct {
State string `json:"state,omitempty"`
ToolID string `json:"tool_id,omitempty"`
ToolName string `json:"tool_name,omitempty"`
ToolKind string `json:"tool_kind,omitempty"`
ArgsHash string `json:"args_hash,omitempty"`
Reason string `json:"reason,omitempty"`
Metadata map[string]string `json:"metadata,omitempty"`
}
type SubAgentDetailCompaction ¶ added in v0.3.21
type SubAgentDetailCompaction struct {
OperationID string `json:"operation_id,omitempty"`
RequestID string `json:"request_id,omitempty"`
Source string `json:"source,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"`
Trigger string `json:"trigger,omitempty"`
Reason string `json:"reason,omitempty"`
Phase string `json:"phase,omitempty"`
TokensBefore int64 `json:"tokens_before,omitempty"`
TokensAfterEstimate int64 `json:"tokens_after_estimate,omitempty"`
Metadata map[string]string `json:"metadata,omitempty"`
}
type SubAgentDetailControlSignal ¶ added in v0.11.0
type SubAgentDetailControlSignal struct {
Name string `json:"name,omitempty"`
CallID string `json:"call_id,omitempty"`
Disposition string `json:"disposition,omitempty"`
Text string `json:"text,omitempty"`
ArgsHash string `json:"args_hash,omitempty"`
Payload map[string]any `json:"payload,omitempty"`
}
type SubAgentDetailEvent ¶ added in v0.3.21
type SubAgentDetailEvent struct {
ID string `json:"id"`
Ordinal int64 `json:"ordinal"`
ParentID string `json:"parent_id,omitempty"`
ThreadID string `json:"thread_id"`
TurnID string `json:"turn_id,omitempty"`
Kind SubAgentDetailEventKind `json:"kind"`
Type string `json:"type,omitempty"`
CreatedAt time.Time `json:"created_at"`
Message *SubAgentDetailMessage `json:"message,omitempty"`
ToolCall *SubAgentDetailToolCall `json:"tool_call,omitempty"`
ToolResult *SubAgentDetailToolResult `json:"tool_result,omitempty"`
Approval *SubAgentDetailApproval `json:"approval,omitempty"`
TurnMarker *SubAgentDetailTurnMarker `json:"turn_marker,omitempty"`
Compaction *SubAgentDetailCompaction `json:"compaction,omitempty"`
Error string `json:"error,omitempty"`
Metadata map[string]string `json:"metadata,omitempty"`
ActivityTimeline *observation.ActivityTimeline `json:"activity_timeline,omitempty"`
}
type SubAgentDetailEventKind ¶ added in v0.3.21
type SubAgentDetailEventKind string
const ( SubAgentDetailEventUserMessage SubAgentDetailEventKind = "user_message" SubAgentDetailEventAssistantMessage SubAgentDetailEventKind = "assistant_message" SubAgentDetailEventToolCall SubAgentDetailEventKind = "tool_call" SubAgentDetailEventToolDispatch SubAgentDetailEventKind = "tool_dispatch" SubAgentDetailEventToolActivity SubAgentDetailEventKind = "tool_activity" SubAgentDetailEventToolResult SubAgentDetailEventKind = "tool_result" SubAgentDetailEventTurnMarker SubAgentDetailEventKind = "turn_marker" SubAgentDetailEventCompaction SubAgentDetailEventKind = "compaction" SubAgentDetailEventError SubAgentDetailEventKind = "error" SubAgentDetailEventApproval SubAgentDetailEventKind = "approval" SubAgentDetailEventCustom SubAgentDetailEventKind = "custom" )
type SubAgentDetailMessage ¶ added in v0.3.21
type SubAgentDetailMessage struct {
Role string `json:"role,omitempty"`
Kind string `json:"kind,omitempty"`
Preview string `json:"preview,omitempty"`
Content string `json:"content,omitempty"`
Attachments []session.MessageAttachment `json:"attachments,omitempty"`
References []session.MessageReference `json:"references,omitempty"`
Reasoning string `json:"reasoning,omitempty"`
Activity *observation.ActivityPresentation `json:"activity,omitempty"`
}
type SubAgentDetailToolCall ¶ added in v0.3.21
type SubAgentDetailToolCall struct {
ID string `json:"id,omitempty"`
Name string `json:"name,omitempty"`
ArgsPreview string `json:"args_preview,omitempty"`
ArgsJSON string `json:"args_json,omitempty"`
ArgsHash string `json:"args_hash,omitempty"`
ControlSignal *SubAgentDetailControlSignal `json:"control_signal,omitempty"`
}
type SubAgentDetailToolResult ¶ added in v0.3.21
type SubAgentDetailToolResult struct {
CallID string `json:"call_id,omitempty"`
ToolName string `json:"tool_name,omitempty"`
EffectAttemptID string `json:"effect_attempt_id,omitempty"`
Status string `json:"status,omitempty"`
Preview string `json:"preview,omitempty"`
Content string `json:"content,omitempty"`
Truncated bool `json:"truncated,omitempty"`
OriginalBytes int `json:"original_bytes,omitempty"`
VisibleBytes int `json:"visible_bytes,omitempty"`
OriginalLines int `json:"original_lines,omitempty"`
VisibleLines int `json:"visible_lines,omitempty"`
Strategy string `json:"strategy,omitempty"`
ContentSHA256 string `json:"content_sha256,omitempty"`
FullOutput *artifact.Ref `json:"full_output,omitempty"`
}
type SubAgentDetailTurnMarker ¶ added in v0.3.21
type SubAgentForkMode ¶ added in v0.3.17
type SubAgentForkMode string
const ( SubAgentForkNone SubAgentForkMode = "none" SubAgentForkFullPath SubAgentForkMode = "full_path" )
type SubAgentSnapshot ¶ added in v0.3.17
type SubAgentSnapshot struct {
ThreadID string `json:"thread_id"`
Path string `json:"path"`
TaskName string `json:"task_name"`
TaskDescription string `json:"task_description,omitempty"`
ParentThreadID string `json:"parent_thread_id"`
ParentTurnID string `json:"parent_turn_id,omitempty"`
HostProfileRef string `json:"host_profile_ref,omitempty"`
ForkMode SubAgentForkMode `json:"fork_mode,omitempty"`
Status SubAgentStatus `json:"status"`
LatestTurnID string `json:"latest_turn_id,omitempty"`
LastMessage string `json:"last_message,omitempty"`
WaitingPrompt string `json:"waiting_prompt,omitempty"`
QueuedInputs int `json:"queued_inputs,omitempty"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
Closed bool `json:"closed,omitempty"`
CanSendInput bool `json:"can_send_input"`
CanInterrupt bool `json:"can_interrupt"`
CanClose bool `json:"can_close"`
}
type SubAgentStatus ¶ added in v0.3.17
type SubAgentStatus string
const ( SubAgentStatusIdle SubAgentStatus = "idle" SubAgentStatusRunning SubAgentStatus = "running" SubAgentStatusWaiting SubAgentStatus = "waiting" SubAgentStatusCompleted SubAgentStatus = "completed" SubAgentStatusFailed SubAgentStatus = "failed" SubAgentStatusCancelled SubAgentStatus = "cancelled" SubAgentStatusInterrupted SubAgentStatus = "interrupted" SubAgentStatusClosing SubAgentStatus = "closing" SubAgentStatusClosed SubAgentStatus = "closed" )
type Thread ¶
type Thread struct {
// contains filtered or unexported fields
}
func (*Thread) Compact ¶
func (t *Thread) Compact(ctx context.Context, opts CompactOptions) (CompactResult, error)
func (*Thread) CompletePendingTool ¶ added in v0.3.10
func (t *Thread) CompletePendingTool(ctx context.Context, completion PendingToolCompletion) (TurnResult, error)
func (*Thread) Journal ¶
func (t *Thread) Journal(ctx context.Context) (ThreadJournalSnapshot, error)
func (*Thread) Retry ¶
func (t *Thread) Retry(ctx context.Context, opts RetryOptions) (TurnResult, error)
func (*Thread) Run ¶
func (t *Thread) Run(ctx context.Context, input string, opts RunOptions) (TurnResult, error)
func (*Thread) SettlePendingTool ¶ added in v0.3.54
func (t *Thread) SettlePendingTool(ctx context.Context, settlement PendingToolSettlement) (SubAgentDetailEvent, error)
func (*Thread) SettlePendingToolActive ¶ added in v0.18.0
func (t *Thread) SettlePendingToolActive(ctx context.Context, settlement PendingToolSettlement, lease sessiontree.TurnLease) (SubAgentDetailEvent, error)
type ThreadContextCompaction ¶ added in v0.10.0
type ThreadContextCompaction struct {
RunID string `json:"run_id,omitempty"`
ThreadID string `json:"thread_id,omitempty"`
TurnID string `json:"turn_id,omitempty"`
Step int `json:"step,omitempty"`
OperationID string `json:"operation_id,omitempty"`
RequestID string `json:"request_id,omitempty"`
Phase string `json:"phase,omitempty"`
Status string `json:"status,omitempty"`
Trigger string `json:"trigger,omitempty"`
Reason string `json:"reason,omitempty"`
Source string `json:"source,omitempty"`
TokensBefore int64 `json:"tokens_before,omitempty"`
TokensAfterEstimate int64 `json:"tokens_after_estimate,omitempty"`
Error string `json:"error,omitempty"`
ObservedAt time.Time `json:"observed_at,omitempty"`
}
type ThreadContextModel ¶ added in v0.10.0
type ThreadContextPolicy ¶ added in v0.10.0
type ThreadContextSnapshot ¶ added in v0.10.0
type ThreadContextSnapshot struct {
Model ThreadContextModel `json:"model,omitempty"`
Policy ThreadContextPolicy `json:"policy,omitempty"`
Usage *observation.ContextStatus `json:"usage,omitempty"`
Compactions []ThreadContextCompaction `json:"compactions,omitempty"`
UpdatedAt time.Time `json:"updated_at,omitempty"`
}
type ThreadDetailEvents ¶ added in v0.3.42
type ThreadJournalSnapshot ¶
type ThreadJournalSnapshot struct {
Meta sessiontree.ThreadMeta `json:"meta"`
Path []sessiontree.Entry `json:"path"`
Entries []sessiontree.Entry `json:"entries"`
Context []session.Message `json:"context"`
Phase string `json:"phase"`
}
type ThreadMessage ¶
type ThreadMessage struct {
Role session.Role `json:"role"`
Content string `json:"content"`
Attachments []session.MessageAttachment `json:"attachments,omitempty"`
References []session.MessageReference `json:"references,omitempty"`
TurnID string `json:"turn_id,omitempty"`
CreatedAt time.Time `json:"created_at"`
}
type ThreadOverview ¶ added in v0.12.0
type ThreadOverview struct {
Thread ThreadSnapshot
LatestTurn ThreadDetailEvents
}
type ThreadSnapshot ¶
type ThreadSnapshot struct {
ID string `json:"id"`
Title string `json:"title,omitempty"`
TitleStatus string `json:"title_status,omitempty"`
TitleSource string `json:"title_source,omitempty"`
TitleUpdatedAt time.Time `json:"title_updated_at,omitempty"`
TitleError string `json:"title_error,omitempty"`
TitleGeneration int64 `json:"title_generation,omitempty"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
Phase string `json:"phase"`
Status string `json:"status"`
LatestTurnID string `json:"latest_turn_id,omitempty"`
LatestRunID string `json:"latest_run_id,omitempty"`
ThroughOrdinal int64 `json:"through_ordinal"`
WaitingPrompt string `json:"waiting_prompt,omitempty"`
Recoverable bool `json:"recoverable"`
CanAppendMessage bool `json:"can_append_message"`
CanRetry bool `json:"can_retry"`
Messages []ThreadMessage `json:"messages"`
}
type ThreadSummary ¶ added in v0.3.44
type ThreadSummary struct {
ID string `json:"id"`
Title string `json:"title,omitempty"`
TitleStatus string `json:"title_status,omitempty"`
TitleSource string `json:"title_source,omitempty"`
TitleUpdatedAt time.Time `json:"title_updated_at,omitempty"`
TitleError string `json:"title_error,omitempty"`
TitleGeneration int64 `json:"title_generation,omitempty"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
Phase string `json:"phase"`
Status string `json:"status"`
LatestTurnID string `json:"latest_turn_id,omitempty"`
WaitingPrompt string `json:"waiting_prompt,omitempty"`
Recoverable bool `json:"recoverable"`
CanAppendMessage bool `json:"can_append_message"`
CanRetry bool `json:"can_retry"`
}
type TitleGenerator ¶
type TitleGenerator interface {
GenerateTitle(context.Context, TitleRequest) (TitleResult, error)
}
type TitleRequest ¶
type TitleResult ¶
type TitleResult struct {
Title string
Source sessiontree.ThreadTitleSource
}
type TurnExecutionRegistry ¶ added in v0.20.0
type TurnExecutionRegistry struct {
Register func(sessiontree.TurnLease) error
Renew func(sessiontree.TurnLease, sessiontree.TurnLease) error
Unregister func(sessiontree.TurnLease)
Active func(string) (sessiontree.TurnLease, bool)
}
type TurnPolicy ¶
type TurnPolicy struct {
ContextPolicy contextpolicy.Policy
Reasoning provider.ReasoningSelection
CacheRetention cache.Retention
HostedToolDefinitions []provider.HostedToolDefinition
CompletionPolicy engine.CompletionPolicy
}
type TurnResult ¶
type TurnResult struct {
ID string
RunID string
Status engine.Status
Output string
Err error
FailureCode string
Diagnostics map[string]string
Metrics engine.RunMetrics
CompletionReason engine.CompletionReason
ContinuationReason engine.ContinuationReason
FinishReason provider.FinishReason
RawFinishReason string
FinishInferred bool
ControlSignal *engine.ControlSignal
CanonicalEvents []SubAgentDetailEvent
Replayed bool
AdmissionRunning bool
}
type WaitSubAgentsOptions ¶ added in v0.3.17
type WaitSubAgentsResult ¶ added in v0.3.17
type WaitSubAgentsResult struct {
Snapshots []SubAgentSnapshot `json:"snapshots"`
TimedOut bool `json:"timed_out,omitempty"`
}