Documentation
¶
Index ¶
- Constants
- Variables
- func CalculateContextTokens(usage ai.Usage) int64
- func CompleteSimpleWithRetries(ctx context.Context, complete CompleteFunc, model *ai.Model, ...) (*ai.AssistantMessage, error)
- func ContextMessages(entries []SessionEntry) engine.AgentMessages
- func DecodeSessionV4Header(line []byte) (SessionV4Header, *SessionV4DecodeError)
- func DecodeSessionV4Mutation(line []byte) (SessionV4Mutation, *SessionV4DecodeError)
- func EstimateTokens(message engine.AgentMessage) int64
- func FindTurnStartIndex(entries []SessionEntry, entryIndex, startIndex int) int
- func FormatFileOperations(readFiles, modifiedFiles []string) string
- func FormatPromptTemplateInvocation(template PromptTemplate, args []string) string
- func FormatSkillInvocation(skill Skill, additionalInstructions string) string
- func GenerateSummary(ctx context.Context, messages engine.AgentMessages, model *ai.Model, ...) (string, error)
- func LoadSourcedPromptTemplates[T any](env ResourceFileSystem, inputs []SourcedPromptTemplateInput[T], ...) ([]SourcedPromptTemplate[T], []SourcedPromptTemplateDiagnostic[T])
- func LoadSourcedSkills[T any](env ResourceFileSystem, inputs []SourcedSkillInput[T], ...) ([]SourcedSkill[T], []SourcedSkillDiagnostic[T])
- func MarshalSessionJSONL(storage SessionStorage, cwd string) ([]byte, error)
- func MarshalSessionTreeEntry(entry SessionTreeEntry) ([]byte, error)
- func MarshalSessionV4Header(header SessionV4Header) ([]byte, error)
- func MarshalSessionV4Mutation(mutation SessionV4Mutation) ([]byte, error)
- func SerializeConversation(messages engine.AgentMessages) string
- func ShouldCompact(contextTokens int64, contextWindow float64, settings CompactionSettings) bool
- type BashExecutionMessage
- type BranchPreparation
- type BranchSummary
- type BranchSummaryDetails
- type BranchSummaryResult
- type ByteSessionStorage
- type CollectEntriesResult
- type CompactionDetails
- type CompactionPreparation
- func PrepareCompaction(pathEntries []SessionEntry, settings CompactionSettings) (*CompactionPreparation, error)
- func PrepareLegacyCompaction(pathEntries []SessionEntry, settings CompactionSettings) (*CompactionPreparation, error)
- func PrepareTreeCompaction(pathEntries []SessionTreeEntry, settings CompactionSettings) (*CompactionPreparation, error)
- type CompactionResult
- type CompactionSettings
- type CompleteFunc
- type ContextEntryTransform
- type ContextUsage
- type ContextUsageEstimate
- type CustomEntryContextMessageProjector
- type CustomMessage
- type CutPointResult
- type Events
- type ExecOptions
- type ExecResult
- type ExecutionEnv
- type ExecutionError
- type ExecutionErrorCode
- type FileError
- type FileErrorCode
- type FileInfo
- type FileKind
- type FileOperations
- type FileSystem
- type ForkPosition
- type GenerateBranchSummaryOptions
- type HarnessEvent
- type HarnessEventBus
- type HarnessEventListener
- type HarnessEventType
- type HarnessEventWatch
- type HarnessPromptTemplatesResult
- type HarnessSkillsResult
- type InMemorySessionRepo
- func (repo *InMemorySessionRepo) Create(_ context.Context, options SessionCreateOptions) (*Session, error)
- func (repo *InMemorySessionRepo) Delete(_ context.Context, metadata SessionMetadata) error
- func (repo *InMemorySessionRepo) Fork(ctx context.Context, sourceMetadata SessionMetadata, ...) (*Session, error)
- func (repo *InMemorySessionRepo) List(context.Context, SessionListOptions) ([]SessionMetadata, error)
- func (repo *InMemorySessionRepo) Open(_ context.Context, metadata SessionMetadata) (*Session, error)
- type InMemorySessionStorage
- func (storage *InMemorySessionStorage) AppendEntry(entry SessionTreeEntry) error
- func (storage *InMemorySessionStorage) CreateEntryID() (string, error)
- func (storage *InMemorySessionStorage) Entries(options ...SessionEntryCursorOptions) []SessionTreeEntry
- func (storage *InMemorySessionStorage) EntriesByType(entryType string) []SessionTreeEntry
- func (storage *InMemorySessionStorage) Entry(id string) (*SessionTreeEntry, bool)
- func (storage *InMemorySessionStorage) Label(id string) (string, bool)
- func (storage *InMemorySessionStorage) LeafID() (*string, error)
- func (storage *InMemorySessionStorage) Metadata() SessionMetadata
- func (storage *InMemorySessionStorage) PathToRootOrCompaction(leafID *string) ([]SessionTreeEntry, error)
- func (storage *InMemorySessionStorage) SessionName() (string, bool)
- func (storage *InMemorySessionStorage) SessionStats() SessionStats
- func (storage *InMemorySessionStorage) SetLeafID(leafID *string) error
- type InMemorySessionV4Repo
- func (repo *InMemorySessionV4Repo) Create(options SessionV4CreateOptions) (*InMemorySessionV4Storage, error)
- func (repo *InMemorySessionV4Repo) Delete(metadata SessionV4Metadata)
- func (repo *InMemorySessionV4Repo) Fork(source SessionV4Metadata, options SessionV4RepoForkOptions) (*InMemorySessionV4Storage, error)
- func (repo *InMemorySessionV4Repo) List() []SessionV4Metadata
- func (repo *InMemorySessionV4Repo) Open(metadata SessionV4Metadata) (*InMemorySessionV4Storage, error)
- type InMemorySessionV4Storage
- func (storage *InMemorySessionV4Storage) AppendEntry(payload json.RawMessage, lane string) (SessionV4Entry, error)
- func (storage *InMemorySessionV4Storage) AppendRecord(payload json.RawMessage) (SessionV4Record, error)
- func (storage *InMemorySessionV4Storage) ClearName() error
- func (storage *InMemorySessionV4Storage) CreateLane(lane string, at *string) error
- func (storage *InMemorySessionV4Storage) Entry(id string) (SessionV4Entry, bool)
- func (storage *InMemorySessionV4Storage) FindEntries(query SessionV4EntryQuery) ([]SessionV4Entry, error)
- func (storage *InMemorySessionV4Storage) FindEntriesOnBranch(query SessionV4BranchQuery) ([]SessionV4Entry, error)
- func (storage *InMemorySessionV4Storage) FindOpenOperations(lane string, limit *int) ([]SessionV4Record, error)
- func (storage *InMemorySessionV4Storage) FindRecords(query SessionV4RecordQuery) ([]SessionV4Record, error)
- func (storage *InMemorySessionV4Storage) Label(id string) (string, bool)
- func (storage *InMemorySessionV4Storage) Lanes() []SessionV4LanePointer
- func (storage *InMemorySessionV4Storage) Log(options SessionV4LogOptions) ([]SessionV4LogItem, error)
- func (storage *InMemorySessionV4Storage) Metadata() SessionV4Metadata
- func (storage *InMemorySessionV4Storage) MoveLane(lane string, to *string) error
- func (storage *InMemorySessionV4Storage) Name() (string, bool)
- func (storage *InMemorySessionV4Storage) SetLabel(id string, label *string) error
- func (storage *InMemorySessionV4Storage) SetName(name string) error
- func (storage *InMemorySessionV4Storage) Stats() SessionStats
- type JSONLSessionRepo
- func (repo *JSONLSessionRepo) Create(ctx context.Context, options SessionCreateOptions) (*Session, error)
- func (repo *JSONLSessionRepo) Delete(ctx context.Context, metadata SessionMetadata) error
- func (repo *JSONLSessionRepo) Fork(ctx context.Context, sourceMetadata SessionMetadata, ...) (*Session, error)
- func (repo *JSONLSessionRepo) ImportJSONL(ctx context.Context, content []byte) (*Session, error)
- func (repo *JSONLSessionRepo) ImportJSONLAt(ctx context.Context, content []byte, path string) (*Session, error)
- func (repo *JSONLSessionRepo) List(ctx context.Context, options SessionListOptions) ([]SessionMetadata, error)
- func (repo *JSONLSessionRepo) Open(ctx context.Context, metadata SessionMetadata) (*Session, error)
- func (repo *JSONLSessionRepo) OpenPath(ctx context.Context, path string) (*Session, error)
- func (repo *JSONLSessionRepo) OpenRuntimeBytes(ctx context.Context, path string, content []byte) (*Session, error)
- func (repo *JSONLSessionRepo) OpenRuntimePath(ctx context.Context, path, cwd string) (*Session, error)
- type JSONLSessionStorage
- func (storage *JSONLSessionStorage) AppendEntry(entry SessionTreeEntry) error
- func (storage *JSONLSessionStorage) Bytes() ([]byte, error)
- func (storage *JSONLSessionStorage) CreateEntryID() (string, error)
- func (storage *JSONLSessionStorage) Entries(options ...SessionEntryCursorOptions) []SessionTreeEntry
- func (storage *JSONLSessionStorage) EntriesByType(entryType string) []SessionTreeEntry
- func (storage *JSONLSessionStorage) Entry(id string) (*SessionTreeEntry, bool)
- func (storage *JSONLSessionStorage) HeaderJSON() []byte
- func (storage *JSONLSessionStorage) IsPersistent() bool
- func (storage *JSONLSessionStorage) Label(id string) (string, bool)
- func (storage *JSONLSessionStorage) LeafID() (*string, error)
- func (storage *JSONLSessionStorage) Metadata() SessionMetadata
- func (storage *JSONLSessionStorage) PathToRootOrCompaction(leafID *string) ([]SessionTreeEntry, error)
- func (storage *JSONLSessionStorage) SessionName() (string, bool)
- func (storage *JSONLSessionStorage) SessionStats() SessionStats
- func (storage *JSONLSessionStorage) SessionVersion() float64
- func (storage *JSONLSessionStorage) SetLeafID(leafID *string) error
- type JSONLSessionV4CreateOptions
- type JSONLSessionV4ForkOptions
- type JSONLSessionV4Metadata
- type JSONLSessionV4Repo
- func (repo *JSONLSessionV4Repo) Create(ctx context.Context, options JSONLSessionV4CreateOptions) (*JSONLSessionV4Storage, error)
- func (repo *JSONLSessionV4Repo) Delete(ctx context.Context, metadata JSONLSessionV4Metadata) error
- func (repo *JSONLSessionV4Repo) Fork(ctx context.Context, source JSONLSessionV4Metadata, ...) (*JSONLSessionV4Storage, error)
- func (repo *JSONLSessionV4Repo) List(ctx context.Context, cwd *string) ([]JSONLSessionV4Metadata, error)
- func (repo *JSONLSessionV4Repo) Open(ctx context.Context, metadata JSONLSessionV4Metadata) (*JSONLSessionV4Storage, error)
- type JSONLSessionV4Storage
- func CreateJSONLSessionV4Storage(ctx context.Context, fs FileSystem, path string, header SessionV4Header) (*JSONLSessionV4Storage, error)
- func LoadJSONLSessionV4Storage(ctx context.Context, fs FileSystem, path string) (*JSONLSessionV4Storage, error)
- func OpenJSONLSessionV4Storage(ctx context.Context, fs FileSystem, sessionsRoot string, ...) (*JSONLSessionV4Storage, error)
- func (storage *JSONLSessionV4Storage) AppendEntry(payload json.RawMessage, lane string) (SessionV4Entry, error)
- func (storage *JSONLSessionV4Storage) AppendRecord(payload json.RawMessage) (SessionV4Record, error)
- func (storage *JSONLSessionV4Storage) ClearName() error
- func (storage *JSONLSessionV4Storage) CreateLane(lane string, at *string) error
- func (storage *JSONLSessionV4Storage) Entry(id string) (SessionV4Entry, bool)
- func (storage *JSONLSessionV4Storage) FindEntries(query SessionV4EntryQuery) ([]SessionV4Entry, error)
- func (storage *JSONLSessionV4Storage) FindEntriesOnBranch(query SessionV4BranchQuery) ([]SessionV4Entry, error)
- func (storage *JSONLSessionV4Storage) FindOpenOperations(lane string, limit *int) ([]SessionV4Record, error)
- func (storage *JSONLSessionV4Storage) FindRecords(query SessionV4RecordQuery) ([]SessionV4Record, error)
- func (storage *JSONLSessionV4Storage) Fork(ctx context.Context, path string, header SessionV4Header, ...) (*JSONLSessionV4Storage, error)
- func (storage *JSONLSessionV4Storage) Label(id string) (string, bool)
- func (storage *JSONLSessionV4Storage) Lanes() []SessionV4LanePointer
- func (storage *JSONLSessionV4Storage) Log(options SessionV4LogOptions) ([]SessionV4LogItem, error)
- func (storage *JSONLSessionV4Storage) Metadata() JSONLSessionV4Metadata
- func (storage *JSONLSessionV4Storage) MoveLane(lane string, to *string) error
- func (storage *JSONLSessionV4Storage) Name() (string, bool)
- func (storage *JSONLSessionV4Storage) SetLabel(id string, label *string) error
- func (storage *JSONLSessionV4Storage) SetName(name string) error
- func (storage *JSONLSessionV4Storage) Stats() SessionStats
- type LocalExecutionEnv
- type NodeExecutionEnv
- func (env *NodeExecutionEnv) AbsolutePath(ctx context.Context, path string) (string, error)
- func (env *NodeExecutionEnv) AppendFile(ctx context.Context, path string, content []byte) error
- func (env *NodeExecutionEnv) CanonicalPath(ctx context.Context, path string) (string, error)
- func (env *NodeExecutionEnv) Cleanup() error
- func (env *NodeExecutionEnv) CreateDir(ctx context.Context, path string, recursive bool) error
- func (env *NodeExecutionEnv) CreateTempDir(ctx context.Context, prefix string) (string, error)
- func (env *NodeExecutionEnv) CreateTempFile(ctx context.Context, prefix, suffix string) (string, error)
- func (env *NodeExecutionEnv) Exec(ctx context.Context, command string, options ExecOptions) (ExecResult, error)
- func (env *NodeExecutionEnv) Exists(ctx context.Context, path string) (bool, error)
- func (env *NodeExecutionEnv) FileInfo(ctx context.Context, path string) (FileInfo, error)
- func (env *NodeExecutionEnv) JoinPath(ctx context.Context, parts ...string) (string, error)
- func (env *NodeExecutionEnv) ListDir(ctx context.Context, path string) ([]FileInfo, error)
- func (env *NodeExecutionEnv) ReadBinaryFile(ctx context.Context, path string) ([]byte, error)
- func (env *NodeExecutionEnv) ReadTextFile(ctx context.Context, path string) (string, error)
- func (env *NodeExecutionEnv) ReadTextLines(ctx context.Context, path string, maxLines int) ([]string, error)
- func (env *NodeExecutionEnv) Remove(ctx context.Context, path string, recursive, force bool) error
- func (env *NodeExecutionEnv) RenameFile(ctx context.Context, from, to string) error
- func (env *NodeExecutionEnv) ResourceCanonicalPath(path string) (string, error)
- func (env *NodeExecutionEnv) ResourceFileInfo(path string) (FileInfo, error)
- func (env *NodeExecutionEnv) ResourceListDir(path string) ([]FileInfo, error)
- func (env *NodeExecutionEnv) ResourceReadTextFile(path string) (string, error)
- func (env *NodeExecutionEnv) WorkingDirectory() string
- func (env *NodeExecutionEnv) WriteFile(ctx context.Context, path string, content []byte) error
- func (env *NodeExecutionEnv) WriteFileExclusive(ctx context.Context, path string, content []byte) error
- type PromptTemplate
- type PromptTemplateDiagnostic
- type PromptTemplateDiagnosticCode
- type ResourceFileSystem
- type RunOutcome
- type Session
- func (session *Session) AppendActiveToolsChange(toolNames []string) (string, error)
- func (session *Session) AppendCompaction(summary, firstKeptEntryID string, tokensBefore float64, details any, ...) (string, error)
- func (session *Session) AppendCompactionWithTail(summary, firstKeptEntryID string, tokensBefore float64, details any, ...) (string, error)
- func (session *Session) AppendCustom(customType string, data ...any) (string, error)
- func (session *Session) AppendCustomMessage(customType string, content any, display bool, details ...any) (string, error)
- func (session *Session) AppendLabel(targetID string, label *string) (string, error)
- func (session *Session) AppendMessage(message any) (string, error)
- func (session *Session) AppendModelChange(provider, modelID string) (string, error)
- func (session *Session) AppendName(name string) (string, error)
- func (session *Session) AppendThinkingLevelChange(level string) (string, error)
- func (session *Session) Branch(fromID ...string) ([]SessionTreeEntry, error)
- func (session *Session) Context(options ...SessionContextBuildOptions) (SessionContext, error)
- func (session *Session) ContextEntries(options ...SessionContextBuildOptions) ([]SessionTreeEntry, error)
- func (session *Session) Entries(options ...SessionEntryCursorOptions) []SessionTreeEntry
- func (session *Session) Entry(id string) (*SessionTreeEntry, bool)
- func (session *Session) Label(id string) (string, bool)
- func (session *Session) LeafID() (*string, error)
- func (session *Session) Metadata() SessionMetadata
- func (session *Session) MoveTo(entryID *string, summary *BranchSummary) (string, error)
- func (session *Session) Name() (string, bool, error)
- func (session *Session) Stats() SessionStats
- func (session *Session) Storage() SessionStorage
- type SessionContext
- type SessionContextBuildOptions
- type SessionCreateOptions
- type SessionEntry
- type SessionEntryCursorOptions
- type SessionError
- type SessionErrorCode
- type SessionForkOptions
- type SessionListOptions
- type SessionMetadata
- type SessionModel
- type SessionRepo
- type SessionStats
- type SessionStorage
- type SessionTreeEntry
- func BuildContextEntries(entries []SessionTreeEntry, options ...SessionContextBuildOptions) []SessionTreeEntry
- func DefaultContextEntryTransform(entries []SessionTreeEntry) []SessionTreeEntry
- func EntriesToFork(storage SessionStorage, entryID string, position ForkPosition) ([]SessionTreeEntry, error)
- func ParseSessionTreeEntry(data []byte) (SessionTreeEntry, error)
- type SessionV4
- func (session *SessionV4) AppendCustomEntry(customType string, data json.RawMessage, lane ...string) (string, error)
- func (session *SessionV4) AppendMessage(message json.RawMessage) (string, error)
- func (session *SessionV4) FindEntryOnBranch(query SessionV4BranchQuery, lane ...string) (*SessionV4Entry, error)
- func (session *SessionV4) LeafID(lane ...string) (*string, error)
- func (session *SessionV4) Stats() SessionStats
- type SessionV4BranchQuery
- type SessionV4ContextOptions
- type SessionV4ContextProjector
- type SessionV4ContextTransform
- type SessionV4CreateOptions
- type SessionV4DecodeError
- type SessionV4DecodeErrorKind
- type SessionV4Entry
- type SessionV4EntryQuery
- type SessionV4ForkOptions
- type SessionV4Header
- type SessionV4LanePointer
- type SessionV4LogItem
- type SessionV4LogOptions
- type SessionV4Metadata
- type SessionV4Mutation
- type SessionV4NameClearer
- type SessionV4Record
- type SessionV4RecordQuery
- type SessionV4RepoForkOptions
- type SessionV4Storage
- type SessionV4Usage
- type Shell
- type Skill
- type SkillDiagnostic
- type SkillDiagnosticCode
- type SourcedPromptTemplate
- type SourcedPromptTemplateDiagnostic
- type SourcedPromptTemplateInput
- type SourcedSkill
- type SourcedSkillDiagnostic
- type SourcedSkillInput
- type SummaryMessage
- type SummaryResult
Constants ¶
const BranchSummaryPreamble = `The user explored a different conversation branch before returning here.
Summary of that exploration:
`
const BranchSummaryPrompt = `` /* 689-byte string literal not displayed */
const SummarizationPrompt = `` /* 879-byte string literal not displayed */
const SummarizationSystemPrompt = `` /* 310-byte string literal not displayed */
const TurnPrefixSummarizationPrompt = `` /* 440-byte string literal not displayed */
const UpdateSummarizationPrompt = `` /* 1257-byte string literal not displayed */
Variables ¶
var DefaultCompactionSettings = CompactionSettings{ Enabled: true, ReserveTokens: 16384, KeepRecentTokens: 20000, }
Functions ¶
func CalculateContextTokens ¶
func CompleteSimpleWithRetries ¶
func CompleteSimpleWithRetries( ctx context.Context, complete CompleteFunc, model *ai.Model, request ai.Context, options *ai.SimpleStreamOptions, retry *ai.RetryPolicy, callbacks *ai.RetryCallbacks, ) (*ai.AssistantMessage, error)
CompleteSimpleWithRetries applies the shared assistant retry policy to one harness completion request.
func ContextMessages ¶
func ContextMessages(entries []SessionEntry) engine.AgentMessages
func DecodeSessionV4Header ¶
func DecodeSessionV4Header(line []byte) (SessionV4Header, *SessionV4DecodeError)
DecodeSessionV4Header decodes and validates a v4 header line, mirroring upstream parseHeader: failures carry no file or line context.
func DecodeSessionV4Mutation ¶
func DecodeSessionV4Mutation(line []byte) (SessionV4Mutation, *SessionV4DecodeError)
DecodeSessionV4Mutation decodes one v4 mutation line, mirroring upstream parseMutation: failures carry no file or line context.
func EstimateTokens ¶
func EstimateTokens(message engine.AgentMessage) int64
func FindTurnStartIndex ¶
func FindTurnStartIndex(entries []SessionEntry, entryIndex, startIndex int) int
func FormatFileOperations ¶
func FormatPromptTemplateInvocation ¶
func FormatPromptTemplateInvocation(template PromptTemplate, args []string) string
FormatPromptTemplateInvocation follows the harness's sequential replacement passes; unlike coding-agent templates, the harness treats default syntax as literal text and later passes can expand placeholders introduced earlier.
func FormatSkillInvocation ¶
FormatSkillInvocation embeds a loaded skill and optional explicit instructions.
func GenerateSummary ¶
func GenerateSummary( ctx context.Context, messages engine.AgentMessages, model *ai.Model, complete CompleteFunc, reserveTokens int64, customInstructions string, previousSummary *string, thinkingLevel ai.ModelThinkingLevel, ) (string, error)
func LoadSourcedPromptTemplates ¶
func LoadSourcedPromptTemplates[T any](env ResourceFileSystem, inputs []SourcedPromptTemplateInput[T], mapTemplate ...func(PromptTemplate, T) PromptTemplate) ([]SourcedPromptTemplate[T], []SourcedPromptTemplateDiagnostic[T])
func LoadSourcedSkills ¶
func LoadSourcedSkills[T any](env ResourceFileSystem, inputs []SourcedSkillInput[T], mapSkill ...func(Skill, T) Skill) ([]SourcedSkill[T], []SourcedSkillDiagnostic[T])
func MarshalSessionJSONL ¶
func MarshalSessionJSONL(storage SessionStorage, cwd string) ([]byte, error)
MarshalSessionJSONL serializes a non-byte-backed session using the harness object insertion order. cwd supplies the coding-session context omitted by generic in-memory harness metadata.
func MarshalSessionTreeEntry ¶
func MarshalSessionTreeEntry(entry SessionTreeEntry) ([]byte, error)
MarshalSessionTreeEntry serializes one entry with upstream field order. Exported for module embedders; not referenced inside this repo.
func MarshalSessionV4Header ¶
func MarshalSessionV4Header(header SessionV4Header) ([]byte, error)
MarshalSessionV4Header serializes a header with upstream's member order.
func MarshalSessionV4Mutation ¶
func MarshalSessionV4Mutation(mutation SessionV4Mutation) ([]byte, error)
MarshalSessionV4Mutation serializes one mutation with upstream member order.
func SerializeConversation ¶
func SerializeConversation(messages engine.AgentMessages) string
func ShouldCompact ¶
func ShouldCompact(contextTokens int64, contextWindow float64, settings CompactionSettings) bool
Types ¶
type BashExecutionMessage ¶
type BashExecutionMessage struct {
Role string `json:"role"`
Command string `json:"command"`
Output string `json:"output"`
ExitCode *int `json:"exitCode"`
Cancelled bool `json:"cancelled"`
Truncated bool `json:"truncated"`
FullOutputPath *string `json:"fullOutputPath,omitempty"`
Timestamp int64 `json:"timestamp"`
ExcludeFromContext *bool `json:"excludeFromContext,omitempty"`
}
type BranchPreparation ¶
type BranchPreparation struct {
Messages engine.AgentMessages
FileOps FileOperations
TotalTokens int64
}
func PrepareBranchEntries ¶
func PrepareBranchEntries(entries []SessionEntry, tokenBudget float64) BranchPreparation
type BranchSummary ¶
type BranchSummaryDetails ¶
type BranchSummaryResult ¶
type BranchSummaryResult struct {
Summary string
Usage *ai.Usage
ReadFiles []string
ModifiedFiles []string
}
func GenerateBranchSummary ¶
func GenerateBranchSummary(ctx context.Context, entries []SessionEntry, options GenerateBranchSummaryOptions) (*BranchSummaryResult, error)
type ByteSessionStorage ¶
type ByteSessionStorage interface {
SessionStorage
Bytes() ([]byte, error)
HeaderJSON() []byte
}
ByteSessionStorage exposes the exact serialized representation of a byte-backed session.
type CollectEntriesResult ¶
type CollectEntriesResult struct {
Entries []SessionEntry
CommonAncestorID *string
}
func CollectEntriesForBranchSummary ¶
func CollectEntriesForBranchSummary(entries []SessionEntry, oldLeafID *string, targetID string) (CollectEntriesResult, error)
type CompactionDetails ¶
type CompactionPreparation ¶
type CompactionPreparation struct {
FirstKeptEntryID string
MessagesToSummarize engine.AgentMessages
TurnPrefixMessages engine.AgentMessages
RetainedTail engine.AgentMessages
IsSplitTurn bool
TokensBefore int64
PreviousSummary *string
FileOps FileOperations
Settings CompactionSettings
}
func PrepareCompaction ¶
func PrepareCompaction(pathEntries []SessionEntry, settings CompactionSettings) (*CompactionPreparation, error)
func PrepareLegacyCompaction ¶
func PrepareLegacyCompaction(pathEntries []SessionEntry, settings CompactionSettings) (*CompactionPreparation, error)
PrepareLegacyCompaction retains the coding-agent compaction behavior, whose persisted session format has not adopted harness retained-tail checkpoints.
func PrepareTreeCompaction ¶
func PrepareTreeCompaction(pathEntries []SessionTreeEntry, settings CompactionSettings) (*CompactionPreparation, error)
PrepareTreeCompaction prepares the canonical persisted session entries.
type CompactionResult ¶
type CompactionResult struct {
Summary string
FirstKeptEntryID string
TokensBefore int64
Usage *ai.Usage
RetainedTail engine.AgentMessages
Details any
}
func Compact ¶
func Compact( ctx context.Context, preparation *CompactionPreparation, model *ai.Model, complete CompleteFunc, customInstructions string, thinkingLevel ai.ModelThinkingLevel, ) (*CompactionResult, error)
func (CompactionResult) MarshalJSON ¶
func (result CompactionResult) MarshalJSON() ([]byte, error)
type CompactionSettings ¶
type CompleteFunc ¶
type CompleteFunc func( context.Context, *ai.Model, ai.Context, *ai.SimpleStreamOptions, ) (*ai.AssistantMessage, error)
func RetryingCompleteFunc ¶
func RetryingCompleteFunc(complete CompleteFunc, retry *ai.RetryPolicy, callbacks *ai.RetryCallbacks) CompleteFunc
RetryingCompleteFunc decorates the existing compaction completion seam. It lets compaction retry each generated summary without changing its core API.
type ContextEntryTransform ¶
type ContextEntryTransform func([]SessionTreeEntry) []SessionTreeEntry
type ContextUsage ¶
type ContextUsageEstimate ¶
type ContextUsageEstimate struct {
Tokens int64 `json:"tokens"`
UsageTokens int64 `json:"usageTokens"`
TrailingTokens int64 `json:"trailingTokens"`
LastUsageIndex *int `json:"lastUsageIndex"`
}
func EstimateContextTokens ¶
func EstimateContextTokens(messages engine.AgentMessages) ContextUsageEstimate
type CustomEntryContextMessageProjector ¶
type CustomEntryContextMessageProjector func(SessionTreeEntry, int, []SessionTreeEntry) engine.AgentMessages
type CustomMessage ¶
type CutPointResult ¶
type CutPointResult struct {
FirstKeptEntryIndex int `json:"firstKeptEntryIndex"`
TurnStartIndex int `json:"turnStartIndex"`
IsSplitTurn bool `json:"isSplitTurn"`
}
func FindCutPoint ¶
func FindCutPoint(entries []SessionEntry, startIndex, endIndex int, keepRecentTokens int64) CutPointResult
type Events ¶
type Events interface {
On(eventType HarnessEventType, listener HarnessEventListener) (unsubscribe func())
}
Events is the passive subscription seam: future events only. Earlier events are not replayed and no current-state snapshot is provided; a watch gives both.
type ExecOptions ¶
type ExecOptions struct {
CWD string
// Env overrides inherited defaults when the environment is inherited, and
// is the entire child environment otherwise.
Env map[string]string
// InheritEnv controls whether the execution environment's default
// variables are inherited. Nil defaults to true.
InheritEnv *bool
TimeoutSeconds *float64
OnStdout func(string) error
OnStderr func(string) error
}
type ExecResult ¶
type ExecutionEnv ¶
type ExecutionEnv interface {
FileSystem
Shell
}
type ExecutionError ¶
type ExecutionError struct {
Code ExecutionErrorCode
Err error
}
ExecutionError keeps expected shell failures stable across execution backends.
func (*ExecutionError) Error ¶
func (err *ExecutionError) Error() string
func (*ExecutionError) Unwrap ¶
func (err *ExecutionError) Unwrap() error
type ExecutionErrorCode ¶
type ExecutionErrorCode string
const ( ExecutionErrorAborted ExecutionErrorCode = "aborted" ExecutionErrorTimeout ExecutionErrorCode = "timeout" ExecutionErrorSpawn ExecutionErrorCode = "spawn_error" ExecutionErrorCallback ExecutionErrorCode = "callback_error" ExecutionErrorUnknown ExecutionErrorCode = "unknown" )
type FileError ¶
type FileError struct {
Code FileErrorCode
Path string
Err error
}
FileError keeps expected filesystem failures typed across local and remote environments.
type FileErrorCode ¶
type FileErrorCode string
const ( FileErrorAborted FileErrorCode = "aborted" FileErrorNotFound FileErrorCode = "not_found" FileErrorPermissionDenied FileErrorCode = "permission_denied" FileErrorNotDirectory FileErrorCode = "not_directory" FileErrorIsDirectory FileErrorCode = "is_directory" FileErrorInvalid FileErrorCode = "invalid" FileErrorNotSupported FileErrorCode = "not_supported" FileErrorUnknown FileErrorCode = "unknown" )
type FileOperations ¶
type FileSystem ¶
type FileSystem interface {
WorkingDirectory() string
AbsolutePath(context.Context, string) (string, error)
JoinPath(context.Context, ...string) (string, error)
ReadTextFile(context.Context, string) (string, error)
ReadTextLines(context.Context, string, int) ([]string, error)
ReadBinaryFile(context.Context, string) ([]byte, error)
WriteFile(context.Context, string, []byte) error
AppendFile(context.Context, string, []byte) error
RenameFile(context.Context, string, string) error
FileInfo(context.Context, string) (FileInfo, error)
ListDir(context.Context, string) ([]FileInfo, error)
CanonicalPath(context.Context, string) (string, error)
Exists(context.Context, string) (bool, error)
CreateDir(context.Context, string, bool) error
Remove(context.Context, string, bool, bool) error
CreateTempDir(context.Context, string) (string, error)
CreateTempFile(context.Context, string, string) (string, error)
Cleanup() error
}
FileSystem is the harness filesystem seam. Context cancellation maps to FileErrorAborted.
type ForkPosition ¶
type ForkPosition string
const ( ForkBefore ForkPosition = "before" ForkAt ForkPosition = "at" )
type GenerateBranchSummaryOptions ¶
type GenerateBranchSummaryOptions struct {
Model *ai.Model
Complete CompleteFunc
CustomInstructions string
ReplaceInstructions bool
ReserveTokens *int64
Retry *ai.RetryPolicy
Callbacks *ai.RetryCallbacks
}
type HarnessEvent ¶
type HarnessEvent struct {
Type HarnessEventType `json:"type"`
Lane string `json:"lane"`
RunID string `json:"runId"`
// Outcome and LeafID are carried by run_end only.
Outcome RunOutcome `json:"outcome,omitempty"`
LeafID string `json:"leafId,omitempty"`
}
HarnessEvent is one run lifecycle event.
type HarnessEventBus ¶
type HarnessEventBus struct {
// contains filtered or unexported fields
}
HarnessEventBus fans events out to per-type listeners and to watches. Listeners run outside the bus lock, so they may subscribe or emit reentrantly.
func (*HarnessEventBus) Emit ¶
func (bus *HarnessEventBus) Emit(event HarnessEvent)
Emit publishes to this type's listeners and to every watch.
func (*HarnessEventBus) On ¶
func (bus *HarnessEventBus) On(eventType HarnessEventType, listener HarnessEventListener) func()
On registers a listener for future events of one type and returns its unsubscribe.
type HarnessEventListener ¶
type HarnessEventListener func(HarnessEvent)
type HarnessEventType ¶
type HarnessEventType string
const ( HarnessEventRunStart HarnessEventType = "run_start" HarnessEventRunEnd HarnessEventType = "run_end" )
type HarnessEventWatch ¶
type HarnessEventWatch struct {
// contains filtered or unexported fields
}
HarnessEventWatch buffers events until Start hands them to a listener.
func WatchHarnessEvents ¶
func WatchHarnessEvents[TSnapshot any](bus *HarnessEventBus, capture func() TSnapshot) (TSnapshot, *HarnessEventWatch)
WatchHarnessEvents captures a snapshot with no event gap: everything emitted from capture onward — including reentrant emissions from capture itself — is buffered until Start.
func (*HarnessEventWatch) Start ¶
func (watch *HarnessEventWatch) Start(listener HarnessEventListener)
Start drains the buffer and then delivers live events. Buffering stays on while draining so reentrant emissions keep their order.
func (*HarnessEventWatch) Unsubscribe ¶
func (watch *HarnessEventWatch) Unsubscribe()
type HarnessPromptTemplatesResult ¶
type HarnessPromptTemplatesResult struct {
PromptTemplates []PromptTemplate
Diagnostics []PromptTemplateDiagnostic
}
func LoadPromptTemplates ¶
func LoadPromptTemplates(env ResourceFileSystem, paths ...string) HarnessPromptTemplatesResult
LoadPromptTemplates loads explicit files or direct markdown children through the execution environment.
type HarnessSkillsResult ¶
type HarnessSkillsResult struct {
Skills []Skill
Diagnostics []SkillDiagnostic
}
func LoadSkills ¶
func LoadSkills(env ResourceFileSystem, dirs ...string) HarnessSkillsResult
LoadSkills traverses one or more roots with upstream's SKILL.md stopping rule.
type InMemorySessionRepo ¶
type InMemorySessionRepo struct {
// contains filtered or unexported fields
}
InMemorySessionRepo retains insertion ordering, matching upstream's Map.
func NewInMemorySessionRepo ¶
func NewInMemorySessionRepo() *InMemorySessionRepo
func (*InMemorySessionRepo) Create ¶
func (repo *InMemorySessionRepo) Create(_ context.Context, options SessionCreateOptions) (*Session, error)
func (*InMemorySessionRepo) Delete ¶
func (repo *InMemorySessionRepo) Delete(_ context.Context, metadata SessionMetadata) error
func (*InMemorySessionRepo) Fork ¶
func (repo *InMemorySessionRepo) Fork(ctx context.Context, sourceMetadata SessionMetadata, options SessionForkOptions) (*Session, error)
func (*InMemorySessionRepo) List ¶
func (repo *InMemorySessionRepo) List(context.Context, SessionListOptions) ([]SessionMetadata, error)
func (*InMemorySessionRepo) Open ¶
func (repo *InMemorySessionRepo) Open(_ context.Context, metadata SessionMetadata) (*Session, error)
type InMemorySessionStorage ¶
type InMemorySessionStorage struct {
// contains filtered or unexported fields
}
InMemorySessionStorage stores the complete physical entry log in memory.
func NewInMemorySessionStorage ¶
func NewInMemorySessionStorage(entries []SessionTreeEntry, metadata SessionMetadata) (*InMemorySessionStorage, error)
func (*InMemorySessionStorage) AppendEntry ¶
func (storage *InMemorySessionStorage) AppendEntry(entry SessionTreeEntry) error
func (*InMemorySessionStorage) CreateEntryID ¶
func (storage *InMemorySessionStorage) CreateEntryID() (string, error)
func (*InMemorySessionStorage) Entries ¶
func (storage *InMemorySessionStorage) Entries(options ...SessionEntryCursorOptions) []SessionTreeEntry
func (*InMemorySessionStorage) EntriesByType ¶
func (storage *InMemorySessionStorage) EntriesByType(entryType string) []SessionTreeEntry
func (*InMemorySessionStorage) Entry ¶
func (storage *InMemorySessionStorage) Entry(id string) (*SessionTreeEntry, bool)
func (*InMemorySessionStorage) Label ¶
func (storage *InMemorySessionStorage) Label(id string) (string, bool)
func (*InMemorySessionStorage) LeafID ¶
func (storage *InMemorySessionStorage) LeafID() (*string, error)
func (*InMemorySessionStorage) Metadata ¶
func (storage *InMemorySessionStorage) Metadata() SessionMetadata
func (*InMemorySessionStorage) PathToRootOrCompaction ¶
func (storage *InMemorySessionStorage) PathToRootOrCompaction(leafID *string) ([]SessionTreeEntry, error)
func (*InMemorySessionStorage) SessionName ¶
func (storage *InMemorySessionStorage) SessionName() (string, bool)
func (*InMemorySessionStorage) SessionStats ¶
func (storage *InMemorySessionStorage) SessionStats() SessionStats
func (*InMemorySessionStorage) SetLeafID ¶
func (storage *InMemorySessionStorage) SetLeafID(leafID *string) error
type InMemorySessionV4Repo ¶
type InMemorySessionV4Repo struct {
// Now overrides the created-at clock (epoch milliseconds).
Now func() int64
// contains filtered or unexported fields
}
InMemorySessionV4Repo keeps v4 sessions keyed by id in process memory.
func NewInMemorySessionV4Repo ¶
func NewInMemorySessionV4Repo() *InMemorySessionV4Repo
func (*InMemorySessionV4Repo) Create ¶
func (repo *InMemorySessionV4Repo) Create(options SessionV4CreateOptions) (*InMemorySessionV4Storage, error)
func (*InMemorySessionV4Repo) Delete ¶
func (repo *InMemorySessionV4Repo) Delete(metadata SessionV4Metadata)
func (*InMemorySessionV4Repo) Fork ¶
func (repo *InMemorySessionV4Repo) Fork(source SessionV4Metadata, options SessionV4RepoForkOptions) (*InMemorySessionV4Storage, error)
func (*InMemorySessionV4Repo) List ¶
func (repo *InMemorySessionV4Repo) List() []SessionV4Metadata
func (*InMemorySessionV4Repo) Open ¶
func (repo *InMemorySessionV4Repo) Open(metadata SessionV4Metadata) (*InMemorySessionV4Storage, error)
type InMemorySessionV4Storage ¶
type InMemorySessionV4Storage struct {
// Now overrides the append timestamp clock (epoch milliseconds).
Now func() int64
// contains filtered or unexported fields
}
InMemorySessionV4Storage keeps the whole mutation log in memory.
func NewInMemorySessionV4Storage ¶
func NewInMemorySessionV4Storage(metadata SessionV4Metadata) *InMemorySessionV4Storage
func (*InMemorySessionV4Storage) AppendEntry ¶
func (storage *InMemorySessionV4Storage) AppendEntry(payload json.RawMessage, lane string) (SessionV4Entry, error)
func (*InMemorySessionV4Storage) AppendRecord ¶
func (storage *InMemorySessionV4Storage) AppendRecord(payload json.RawMessage) (SessionV4Record, error)
func (*InMemorySessionV4Storage) ClearName ¶
func (storage *InMemorySessionV4Storage) ClearName() error
ClearName records upstream's `setName(undefined)`: the session name is dropped durably, and forks of this session start unnamed.
func (*InMemorySessionV4Storage) CreateLane ¶
func (storage *InMemorySessionV4Storage) CreateLane(lane string, at *string) error
func (*InMemorySessionV4Storage) Entry ¶
func (storage *InMemorySessionV4Storage) Entry(id string) (SessionV4Entry, bool)
func (*InMemorySessionV4Storage) FindEntries ¶
func (storage *InMemorySessionV4Storage) FindEntries(query SessionV4EntryQuery) ([]SessionV4Entry, error)
func (*InMemorySessionV4Storage) FindEntriesOnBranch ¶
func (storage *InMemorySessionV4Storage) FindEntriesOnBranch(query SessionV4BranchQuery) ([]SessionV4Entry, error)
func (*InMemorySessionV4Storage) FindOpenOperations ¶
func (storage *InMemorySessionV4Storage) FindOpenOperations(lane string, limit *int) ([]SessionV4Record, error)
func (*InMemorySessionV4Storage) FindRecords ¶
func (storage *InMemorySessionV4Storage) FindRecords(query SessionV4RecordQuery) ([]SessionV4Record, error)
func (*InMemorySessionV4Storage) Label ¶
func (storage *InMemorySessionV4Storage) Label(id string) (string, bool)
func (*InMemorySessionV4Storage) Lanes ¶
func (storage *InMemorySessionV4Storage) Lanes() []SessionV4LanePointer
func (*InMemorySessionV4Storage) Log ¶
func (storage *InMemorySessionV4Storage) Log(options SessionV4LogOptions) ([]SessionV4LogItem, error)
func (*InMemorySessionV4Storage) Metadata ¶
func (storage *InMemorySessionV4Storage) Metadata() SessionV4Metadata
func (*InMemorySessionV4Storage) MoveLane ¶
func (storage *InMemorySessionV4Storage) MoveLane(lane string, to *string) error
func (*InMemorySessionV4Storage) Name ¶
func (storage *InMemorySessionV4Storage) Name() (string, bool)
func (*InMemorySessionV4Storage) SetLabel ¶
func (storage *InMemorySessionV4Storage) SetLabel(id string, label *string) error
func (*InMemorySessionV4Storage) SetName ¶
func (storage *InMemorySessionV4Storage) SetName(name string) error
func (*InMemorySessionV4Storage) Stats ¶
func (storage *InMemorySessionV4Storage) Stats() SessionStats
type JSONLSessionRepo ¶
type JSONLSessionRepo struct {
FS FileSystem
SessionsRoot string
// contains filtered or unexported fields
}
func NewJSONLSessionRepo ¶
func NewJSONLSessionRepo(fileSystem FileSystem, sessionsRoot string) *JSONLSessionRepo
func (*JSONLSessionRepo) Create ¶
func (repo *JSONLSessionRepo) Create(ctx context.Context, options SessionCreateOptions) (*Session, error)
func (*JSONLSessionRepo) Delete ¶
func (repo *JSONLSessionRepo) Delete(ctx context.Context, metadata SessionMetadata) error
func (*JSONLSessionRepo) Fork ¶
func (repo *JSONLSessionRepo) Fork(ctx context.Context, sourceMetadata SessionMetadata, options SessionForkOptions) (*Session, error)
func (*JSONLSessionRepo) ImportJSONL ¶
ImportJSONL installs exact upstream bytes into this repository and returns a storage whose later appends remain durable.
func (*JSONLSessionRepo) ImportJSONLAt ¶
func (repo *JSONLSessionRepo) ImportJSONLAt(ctx context.Context, content []byte, path string) (*Session, error)
ImportJSONLAt installs exact upstream bytes at the runtime-selected import destination and keeps later appends bound to that file.
func (*JSONLSessionRepo) List ¶
func (repo *JSONLSessionRepo) List(ctx context.Context, options SessionListOptions) ([]SessionMetadata, error)
func (*JSONLSessionRepo) Open ¶
func (repo *JSONLSessionRepo) Open(ctx context.Context, metadata SessionMetadata) (*Session, error)
func (*JSONLSessionRepo) OpenPath ¶
OpenPath resolves and opens one explicit JSONL path without filtering it through List, so malformed sessions remain observable to callers.
func (*JSONLSessionRepo) OpenRuntimeBytes ¶
func (repo *JSONLSessionRepo) OpenRuntimeBytes(ctx context.Context, path string, content []byte) (*Session, error)
OpenRuntimeBytes binds an unmaterialized coding-session snapshot to a path. The bytes remain pending until the first assistant message, matching the coding runtime's delayed persistence.
func (*JSONLSessionRepo) OpenRuntimePath ¶
func (repo *JSONLSessionRepo) OpenRuntimePath(ctx context.Context, path, cwd string) (*Session, error)
OpenRuntimePath composes the harness repository with coding-session resume semantics for missing and zero-byte explicit files.
type JSONLSessionStorage ¶
type JSONLSessionStorage struct {
// contains filtered or unexported fields
}
JSONLSessionStorage retains the exact input bytes until a mutation appends the same JSON line that upstream would append.
func RehydrateJSONLSession ¶
func RehydrateJSONLSession(content []byte, filePath string) (*JSONLSessionStorage, error)
RehydrateJSONLSession opens an upstream v3 JSONL session directly from bytes without first materializing a temporary file.
func (*JSONLSessionStorage) AppendEntry ¶
func (storage *JSONLSessionStorage) AppendEntry(entry SessionTreeEntry) error
func (*JSONLSessionStorage) Bytes ¶
func (storage *JSONLSessionStorage) Bytes() ([]byte, error)
func (*JSONLSessionStorage) CreateEntryID ¶
func (storage *JSONLSessionStorage) CreateEntryID() (string, error)
func (*JSONLSessionStorage) Entries ¶
func (storage *JSONLSessionStorage) Entries(options ...SessionEntryCursorOptions) []SessionTreeEntry
func (*JSONLSessionStorage) EntriesByType ¶
func (storage *JSONLSessionStorage) EntriesByType(entryType string) []SessionTreeEntry
func (*JSONLSessionStorage) Entry ¶
func (storage *JSONLSessionStorage) Entry(id string) (*SessionTreeEntry, bool)
func (*JSONLSessionStorage) HeaderJSON ¶
func (storage *JSONLSessionStorage) HeaderJSON() []byte
func (*JSONLSessionStorage) IsPersistent ¶
func (storage *JSONLSessionStorage) IsPersistent() bool
func (*JSONLSessionStorage) Label ¶
func (storage *JSONLSessionStorage) Label(id string) (string, bool)
func (*JSONLSessionStorage) LeafID ¶
func (storage *JSONLSessionStorage) LeafID() (*string, error)
func (*JSONLSessionStorage) Metadata ¶
func (storage *JSONLSessionStorage) Metadata() SessionMetadata
func (*JSONLSessionStorage) PathToRootOrCompaction ¶
func (storage *JSONLSessionStorage) PathToRootOrCompaction(leafID *string) ([]SessionTreeEntry, error)
func (*JSONLSessionStorage) SessionName ¶
func (storage *JSONLSessionStorage) SessionName() (string, bool)
func (*JSONLSessionStorage) SessionStats ¶
func (storage *JSONLSessionStorage) SessionStats() SessionStats
func (*JSONLSessionStorage) SessionVersion ¶
func (storage *JSONLSessionStorage) SessionVersion() float64
SessionVersion exposes the original byte-backed header version to adapters.
func (*JSONLSessionStorage) SetLeafID ¶
func (storage *JSONLSessionStorage) SetLeafID(leafID *string) error
type JSONLSessionV4CreateOptions ¶
type JSONLSessionV4CreateOptions struct {
SessionV4CreateOptions
CWD string
Metadata json.RawMessage
}
JSONLSessionV4CreateOptions mirrors upstream JsonlSessionCreateOptions.
type JSONLSessionV4ForkOptions ¶
type JSONLSessionV4ForkOptions struct {
SessionV4ForkOptions
JSONLSessionV4CreateOptions
}
JSONLSessionV4ForkOptions combines fork selection with new-session identity.
type JSONLSessionV4Metadata ¶
type JSONLSessionV4Metadata struct {
ID string `json:"id"`
CreatedAt int64 `json:"createdAt"`
CWD string `json:"cwd"`
Path string `json:"path"`
ModifiedAt float64 `json:"modifiedAt"`
SourceFormat int `json:"sourceFormat"`
ParentSessionID *string `json:"parentSessionId,omitempty"`
LegacyParentSessionPath *string `json:"legacyParentSessionPath,omitempty"`
Metadata json.RawMessage `json:"metadata,omitempty"`
}
JSONLSessionV4Metadata identifies a JSONL-backed v4 session.
func ListJSONLSessionV4Metadata ¶
func ListJSONLSessionV4Metadata(ctx context.Context, fs FileSystem, sessionsRoot string, cwd *string) ([]JSONLSessionV4Metadata, error)
ListJSONLSessionV4Metadata lists v4 sessions below a sessions root without opening them: only each file's header line is read, and a file whose header is missing or undecodable is skipped instead of failing the listing.
type JSONLSessionV4Repo ¶
type JSONLSessionV4Repo struct {
// Now overrides the created-at clock (epoch milliseconds).
Now func() int64
// contains filtered or unexported fields
}
JSONLSessionV4Repo stores v4 sessions in coding-agent-compatible cwd-encoded directories below one sessions root.
func NewJSONLSessionV4Repo ¶
func NewJSONLSessionV4Repo(fs FileSystem, sessionsRoot string) *JSONLSessionV4Repo
func (*JSONLSessionV4Repo) Create ¶
func (repo *JSONLSessionV4Repo) Create(ctx context.Context, options JSONLSessionV4CreateOptions) (*JSONLSessionV4Storage, error)
func (*JSONLSessionV4Repo) Delete ¶
func (repo *JSONLSessionV4Repo) Delete(ctx context.Context, metadata JSONLSessionV4Metadata) error
func (*JSONLSessionV4Repo) Fork ¶
func (repo *JSONLSessionV4Repo) Fork(ctx context.Context, source JSONLSessionV4Metadata, options JSONLSessionV4ForkOptions) (*JSONLSessionV4Storage, error)
func (*JSONLSessionV4Repo) List ¶
func (repo *JSONLSessionV4Repo) List(ctx context.Context, cwd *string) ([]JSONLSessionV4Metadata, error)
func (*JSONLSessionV4Repo) Open ¶
func (repo *JSONLSessionV4Repo) Open(ctx context.Context, metadata JSONLSessionV4Metadata) (*JSONLSessionV4Storage, error)
type JSONLSessionV4Storage ¶
type JSONLSessionV4Storage struct {
// Now overrides the append timestamp clock (epoch milliseconds).
Now func() int64
// contains filtered or unexported fields
}
JSONLSessionV4Storage appends every mutation to one v4 JSONL file.
func CreateJSONLSessionV4Storage ¶
func CreateJSONLSessionV4Storage(ctx context.Context, fs FileSystem, path string, header SessionV4Header) (*JSONLSessionV4Storage, error)
CreateJSONLSessionV4Storage initializes a new session file holding only the header.
func LoadJSONLSessionV4Storage ¶
func LoadJSONLSessionV4Storage(ctx context.Context, fs FileSystem, path string) (*JSONLSessionV4Storage, error)
LoadJSONLSessionV4Storage replays an existing session file, repairing a torn or unterminated trailing line in place.
func OpenJSONLSessionV4Storage ¶
func OpenJSONLSessionV4Storage(ctx context.Context, fs FileSystem, sessionsRoot string, metadata JSONLSessionV4Metadata) (*JSONLSessionV4Storage, error)
OpenJSONLSessionV4Storage loads one listed v4 session, rejecting metadata whose id no longer matches the file header.
func (*JSONLSessionV4Storage) AppendEntry ¶
func (storage *JSONLSessionV4Storage) AppendEntry(payload json.RawMessage, lane string) (SessionV4Entry, error)
func (*JSONLSessionV4Storage) AppendRecord ¶
func (storage *JSONLSessionV4Storage) AppendRecord(payload json.RawMessage) (SessionV4Record, error)
func (*JSONLSessionV4Storage) ClearName ¶
func (storage *JSONLSessionV4Storage) ClearName() error
ClearName records upstream's `setName(undefined)`: the session name is dropped durably, and forks of this session start unnamed.
func (*JSONLSessionV4Storage) CreateLane ¶
func (storage *JSONLSessionV4Storage) CreateLane(lane string, at *string) error
func (*JSONLSessionV4Storage) Entry ¶
func (storage *JSONLSessionV4Storage) Entry(id string) (SessionV4Entry, bool)
func (*JSONLSessionV4Storage) FindEntries ¶
func (storage *JSONLSessionV4Storage) FindEntries(query SessionV4EntryQuery) ([]SessionV4Entry, error)
func (*JSONLSessionV4Storage) FindEntriesOnBranch ¶
func (storage *JSONLSessionV4Storage) FindEntriesOnBranch(query SessionV4BranchQuery) ([]SessionV4Entry, error)
func (*JSONLSessionV4Storage) FindOpenOperations ¶
func (storage *JSONLSessionV4Storage) FindOpenOperations(lane string, limit *int) ([]SessionV4Record, error)
func (*JSONLSessionV4Storage) FindRecords ¶
func (storage *JSONLSessionV4Storage) FindRecords(query SessionV4RecordQuery) ([]SessionV4Record, error)
func (*JSONLSessionV4Storage) Fork ¶
func (storage *JSONLSessionV4Storage) Fork(ctx context.Context, path string, header SessionV4Header, options SessionV4ForkOptions) (*JSONLSessionV4Storage, error)
Fork copies the selected slice of this session into a new session file.
func (*JSONLSessionV4Storage) Label ¶
func (storage *JSONLSessionV4Storage) Label(id string) (string, bool)
func (*JSONLSessionV4Storage) Lanes ¶
func (storage *JSONLSessionV4Storage) Lanes() []SessionV4LanePointer
func (*JSONLSessionV4Storage) Log ¶
func (storage *JSONLSessionV4Storage) Log(options SessionV4LogOptions) ([]SessionV4LogItem, error)
func (*JSONLSessionV4Storage) Metadata ¶
func (storage *JSONLSessionV4Storage) Metadata() JSONLSessionV4Metadata
func (*JSONLSessionV4Storage) MoveLane ¶
func (storage *JSONLSessionV4Storage) MoveLane(lane string, to *string) error
func (*JSONLSessionV4Storage) Name ¶
func (storage *JSONLSessionV4Storage) Name() (string, bool)
func (*JSONLSessionV4Storage) SetLabel ¶
func (storage *JSONLSessionV4Storage) SetLabel(id string, label *string) error
func (*JSONLSessionV4Storage) SetName ¶
func (storage *JSONLSessionV4Storage) SetName(name string) error
func (*JSONLSessionV4Storage) Stats ¶
func (storage *JSONLSessionV4Storage) Stats() SessionStats
type LocalExecutionEnv ¶
type LocalExecutionEnv = NodeExecutionEnv
LocalExecutionEnv is the platform-neutral Go name for NodeExecutionEnv.
type NodeExecutionEnv ¶
type NodeExecutionEnv struct {
CWD string
ShellPath string
ShellEnv map[string]string
// contains filtered or unexported fields
}
NodeExecutionEnv is the pure-Go local filesystem and shell backend.
func (*NodeExecutionEnv) AbsolutePath ¶
func (*NodeExecutionEnv) AppendFile ¶
func (*NodeExecutionEnv) CanonicalPath ¶
func (*NodeExecutionEnv) Cleanup ¶
func (env *NodeExecutionEnv) Cleanup() error
func (*NodeExecutionEnv) CreateTempDir ¶
func (*NodeExecutionEnv) CreateTempFile ¶
func (*NodeExecutionEnv) Exec ¶
func (env *NodeExecutionEnv) Exec(ctx context.Context, command string, options ExecOptions) (ExecResult, error)
func (*NodeExecutionEnv) ReadBinaryFile ¶
func (*NodeExecutionEnv) ReadTextFile ¶
func (*NodeExecutionEnv) ReadTextLines ¶
func (*NodeExecutionEnv) RenameFile ¶
func (env *NodeExecutionEnv) RenameFile(ctx context.Context, from, to string) error
func (*NodeExecutionEnv) ResourceCanonicalPath ¶
func (env *NodeExecutionEnv) ResourceCanonicalPath(path string) (string, error)
func (*NodeExecutionEnv) ResourceFileInfo ¶
func (env *NodeExecutionEnv) ResourceFileInfo(path string) (FileInfo, error)
func (*NodeExecutionEnv) ResourceListDir ¶
func (env *NodeExecutionEnv) ResourceListDir(path string) ([]FileInfo, error)
func (*NodeExecutionEnv) ResourceReadTextFile ¶
func (env *NodeExecutionEnv) ResourceReadTextFile(path string) (string, error)
func (*NodeExecutionEnv) WorkingDirectory ¶
func (env *NodeExecutionEnv) WorkingDirectory() string
func (*NodeExecutionEnv) WriteFileExclusive ¶
func (env *NodeExecutionEnv) WriteFileExclusive(ctx context.Context, path string, content []byte) error
WriteFileExclusive creates a new file without replacing a concurrent writer.
type PromptTemplate ¶
PromptTemplate is the harness-level explicit prompt expansion resource.
type PromptTemplateDiagnostic ¶
type PromptTemplateDiagnostic struct {
Type string
Code PromptTemplateDiagnosticCode
Message string
Path string
}
type PromptTemplateDiagnosticCode ¶
type PromptTemplateDiagnosticCode string
const ( PromptTemplateDiagnosticFileInfoFailed PromptTemplateDiagnosticCode = "file_info_failed" PromptTemplateDiagnosticListFailed PromptTemplateDiagnosticCode = "list_failed" PromptTemplateDiagnosticReadFailed PromptTemplateDiagnosticCode = "read_failed" PromptTemplateDiagnosticParseFailed PromptTemplateDiagnosticCode = "parse_failed" )
type ResourceFileSystem ¶
type ResourceFileSystem interface {
ResourceFileInfo(path string) (FileInfo, error)
ResourceListDir(path string) ([]FileInfo, error)
ResourceReadTextFile(path string) (string, error)
ResourceCanonicalPath(path string) (string, error)
}
ResourceFileSystem is the read-only filesystem slice used by resource discovery.
type RunOutcome ¶
type RunOutcome string
RunOutcome is how a run reached its end.
const ( RunCompleted RunOutcome = "completed" RunAborted RunOutcome = "aborted" RunFailed RunOutcome = "failed" )
type Session ¶
type Session struct {
// contains filtered or unexported fields
}
Session is the storage-backed facade used by embedders and repositories.
func NewSession ¶
func NewSession(storage SessionStorage, options ...SessionContextBuildOptions) *Session
func (*Session) AppendActiveToolsChange ¶
func (*Session) AppendCompaction ¶
func (*Session) AppendCompactionWithTail ¶
func (session *Session) AppendCompactionWithTail( summary, firstKeptEntryID string, tokensBefore float64, details any, fromHook *bool, usage *ai.Usage, retainedTail engine.AgentMessages, ) (string, error)
AppendCompactionWithTail persists the v0.81 checkpoint form. A non-nil retained tail, including an empty one, marks the compaction as a complete ancestry checkpoint.
func (*Session) AppendCustom ¶
func (*Session) AppendCustomMessage ¶
func (*Session) AppendLabel ¶
func (*Session) AppendModelChange ¶
func (*Session) AppendThinkingLevelChange ¶
func (*Session) Branch ¶
func (session *Session) Branch(fromID ...string) ([]SessionTreeEntry, error)
func (*Session) Context ¶
func (session *Session) Context(options ...SessionContextBuildOptions) (SessionContext, error)
func (*Session) ContextEntries ¶
func (session *Session) ContextEntries(options ...SessionContextBuildOptions) ([]SessionTreeEntry, error)
func (*Session) Entries ¶
func (session *Session) Entries(options ...SessionEntryCursorOptions) []SessionTreeEntry
func (*Session) Metadata ¶
func (session *Session) Metadata() SessionMetadata
func (*Session) MoveTo ¶
func (session *Session) MoveTo(entryID *string, summary *BranchSummary) (string, error)
func (*Session) Stats ¶
func (session *Session) Stats() SessionStats
func (*Session) Storage ¶
func (session *Session) Storage() SessionStorage
type SessionContext ¶
type SessionContext struct {
ThinkingLevel string `json:"thinkingLevel"`
Model *SessionModel `json:"model"`
ActiveToolNames []string `json:"activeToolNames"`
Messages []any `json:"messages"`
}
func BuildSessionContext ¶
func BuildSessionContext(entries []SessionTreeEntry, options ...SessionContextBuildOptions) SessionContext
BuildSessionContext reduces one active path using the same state and latest compaction rules as upstream's harness Session.
func BuildSessionV4Context ¶
func BuildSessionV4Context(pathEntries []SessionV4Entry, options ...SessionV4ContextOptions) SessionContext
BuildSessionV4Context reduces one root-to-leaf entry path into the model context, mirroring packages/agent/src/harness/session/context.ts.
type SessionContextBuildOptions ¶
type SessionContextBuildOptions struct {
EntryTransforms []ContextEntryTransform
EntryProjectors map[string]CustomEntryContextMessageProjector
}
type SessionCreateOptions ¶
type SessionCreateOptions struct {
ID string
CWD string
ParentSessionPath *string
Metadata json.RawMessage
}
type SessionEntry ¶
type SessionEntry struct {
Type string
ID string
ParentID *string
Timestamp string
Message engine.AgentMessage
Summary string
FirstKeptEntryID string
RetainedTail engine.AgentMessages
TokensBefore float64
Details any
Usage *ai.Usage
FromHook bool
FromID string
CustomType string
Content any
Display bool
}
SessionEntry is the compaction-facing projection of a v3 session entry. Harness storage owns generic session persistence; agent/session remains an upper-layer wire manager.
type SessionEntryCursorOptions ¶
SessionEntryCursorOptions follows Array.slice semantics for the ordinary non-negative cursors emitted by upstream consumers.
type SessionError ¶
type SessionError struct {
Code SessionErrorCode
Err error
}
SessionError preserves upstream's machine-readable error code.
func (*SessionError) Error ¶
func (failure *SessionError) Error() string
func (*SessionError) Unwrap ¶
func (failure *SessionError) Unwrap() error
type SessionErrorCode ¶
type SessionErrorCode string
SessionErrorCode is the stable failure classification used by harness storage, repositories, and tree operations.
const ( SessionErrorNotFound SessionErrorCode = "not_found" SessionErrorInvalidSession SessionErrorCode = "invalid_session" SessionErrorInvalidEntry SessionErrorCode = "invalid_entry" SessionErrorInvalidFork SessionErrorCode = "invalid_fork_target" SessionErrorStorage SessionErrorCode = "storage" SessionErrorUnknown SessionErrorCode = "unknown" SessionErrorAlreadyExists SessionErrorCode = "already_exists" SessionErrorInvalidPayload SessionErrorCode = "invalid_payload" SessionErrorInvalidLane SessionErrorCode = "invalid_lane" SessionErrorInvalidQuery SessionErrorCode = "invalid_query" )
type SessionForkOptions ¶
type SessionForkOptions struct {
SessionCreateOptions
EntryID string
Position ForkPosition
}
type SessionListOptions ¶
type SessionListOptions struct {
CWD string
}
type SessionMetadata ¶
type SessionMetadata struct {
ID string `json:"id"`
CreatedAt string `json:"createdAt"`
CWD string `json:"cwd,omitempty"`
Path string `json:"path,omitempty"`
ParentSessionPath *string `json:"parentSessionPath,omitempty"`
Metadata json.RawMessage `json:"metadata,omitempty"`
}
SessionMetadata is shared by memory and JSONL repositories. JSONL-only fields are omitted for memory sessions.
type SessionModel ¶
type SessionRepo ¶
type SessionRepo interface {
Create(context.Context, SessionCreateOptions) (*Session, error)
Open(context.Context, SessionMetadata) (*Session, error)
List(context.Context, SessionListOptions) ([]SessionMetadata, error)
Delete(context.Context, SessionMetadata) error
Fork(context.Context, SessionMetadata, SessionForkOptions) (*Session, error)
}
type SessionStats ¶
type SessionStats struct {
MessageCount int `json:"messageCount"`
CachedTokens float64 `json:"cachedTokens"`
UncachedTokens float64 `json:"uncachedTokens"`
TotalTokens float64 `json:"totalTokens"`
CostTotal float64 `json:"costTotal"`
}
SessionStats accounts for all physical session entries, including summary entries outside the active branch.
type SessionStorage ¶
type SessionStorage interface {
Metadata() SessionMetadata
LeafID() (*string, error)
SetLeafID(*string) error
CreateEntryID() (string, error)
AppendEntry(SessionTreeEntry) error
Entry(string) (*SessionTreeEntry, bool)
EntriesByType(string) []SessionTreeEntry
Label(string) (string, bool)
SessionName() (string, bool)
SessionStats() SessionStats
PathToRootOrCompaction(*string) ([]SessionTreeEntry, error)
Entries(...SessionEntryCursorOptions) []SessionTreeEntry
}
SessionStorage is the backend-neutral session tree contract.
type SessionTreeEntry ¶
type SessionTreeEntry struct {
Type string
ID string
ParentID *string
Timestamp string
Message json.RawMessage
ThinkingLevel string
Provider string
ModelID string
ActiveToolNames []string
Summary string
FirstKeptEntryID string
RetainedTail []json.RawMessage
TokensBefore float64
Details json.RawMessage
Usage *ai.Usage
FromHook *bool
FromID string
CustomType string
Data json.RawMessage
Content json.RawMessage
Display bool
TargetID *string
HasTargetID bool
Label *string
Name string
// contains filtered or unexported fields
}
SessionTreeEntry is the v3 harness session union. Raw JSON members stay opaque so unknown application data can round-trip without coercion.
func BuildContextEntries ¶
func BuildContextEntries(entries []SessionTreeEntry, options ...SessionContextBuildOptions) []SessionTreeEntry
func DefaultContextEntryTransform ¶
func DefaultContextEntryTransform(entries []SessionTreeEntry) []SessionTreeEntry
func EntriesToFork ¶
func EntriesToFork(storage SessionStorage, entryID string, position ForkPosition) ([]SessionTreeEntry, error)
EntriesToFork selects the source entries copied by repository fork.
func ParseSessionTreeEntry ¶
func ParseSessionTreeEntry(data []byte) (SessionTreeEntry, error)
ParseSessionTreeEntry decodes one upstream session entry while retaining unknown members for a later wire-compatible marshal. Exported for module embedders with external session stores; not referenced inside this repo.
func (SessionTreeEntry) RawJSON ¶
func (entry SessionTreeEntry) RawJSON() json.RawMessage
RawJSON returns the original object for entries rehydrated from JSONL.
type SessionV4 ¶
type SessionV4 struct {
// contains filtered or unexported fields
}
SessionV4 is the thin tree facade over a v4 storage, mirroring upstream's Session class for the main lane plus per-lane views.
func NewSessionV4 ¶
func NewSessionV4(storage SessionV4Storage, nextID ...func() string) *SessionV4
func (*SessionV4) AppendCustomEntry ¶
func (*SessionV4) AppendMessage ¶
func (session *SessionV4) AppendMessage(message json.RawMessage) (string, error)
func (*SessionV4) FindEntryOnBranch ¶
func (session *SessionV4) FindEntryOnBranch(query SessionV4BranchQuery, lane ...string) (*SessionV4Entry, error)
func (*SessionV4) Stats ¶
func (session *SessionV4) Stats() SessionStats
type SessionV4BranchQuery ¶
type SessionV4BranchQuery struct {
SessionV4EntryQuery
Start string
// StopAtType and StopAtID end the scan after the first match, inclusive.
StopAtType string
StopAtID string
}
SessionV4BranchQuery bounds a branch walk from Start toward the root. Unbounded, it covers the whole path from leaf to root.
type SessionV4ContextOptions ¶
type SessionV4ContextOptions struct {
EntryTransforms []SessionV4ContextTransform
EntryProjectors map[string]SessionV4ContextProjector
}
SessionV4ContextOptions mirrors upstream SessionContextBuildOptions.
type SessionV4ContextProjector ¶
type SessionV4ContextProjector func(SessionV4Entry, int, []SessionV4Entry) engine.AgentMessages
SessionV4ContextProjector maps one custom entry to context messages.
type SessionV4ContextTransform ¶
type SessionV4ContextTransform func([]SessionV4Entry) []SessionV4Entry
SessionV4ContextTransform rewrites the entry slice a context is built from.
type SessionV4CreateOptions ¶
SessionV4CreateOptions mirrors upstream SessionCreateOptions.
type SessionV4DecodeError ¶
type SessionV4DecodeError struct {
Kind SessionV4DecodeErrorKind
Message string
}
SessionV4DecodeError is a line-local decode failure carrying no file or line context of its own, mirroring upstream JsonlDecodeError.
func (*SessionV4DecodeError) Error ¶
func (failure *SessionV4DecodeError) Error() string
type SessionV4DecodeErrorKind ¶
type SessionV4DecodeErrorKind string
SessionV4DecodeErrorKind separates malformed JSON from well-formed JSON that violates the v4 schema. Only a syntax failure on the final line is a torn append and gets repaired.
const ( SessionV4DecodeSyntax SessionV4DecodeErrorKind = "syntax" SessionV4DecodeSchema SessionV4DecodeErrorKind = "schema" )
type SessionV4Entry ¶
type SessionV4Entry struct {
Type string
ID string
ParentID *string
Seq int
Timestamp int64
Message json.RawMessage
ThinkingLevel string
Provider string
ModelID string
ActiveToolNames []string
Summary string
FromID string
TokensBefore float64
RetainedTail []json.RawMessage
CustomType string
Data json.RawMessage
Details json.RawMessage
// contains filtered or unexported fields
}
SessionV4Entry is one immutable tree entry of a v4 session. Its serialized member order is retained for wire-compatible re-encoding. ParentID (the appending lane's leaf), Seq (the session-wide sequence), and Timestamp (Unix ms) are storage-assigned.
func DefaultSessionV4ContextTransform ¶
func DefaultSessionV4ContextTransform(pathEntries []SessionV4Entry) []SessionV4Entry
DefaultSessionV4ContextTransform keeps only the latest compaction and the entries after it.
func ParseSessionV4Entry ¶
func ParseSessionV4Entry(data []byte) (SessionV4Entry, error)
ParseSessionV4Entry decodes one bare entry object (no kind/lane wrapper), as used for context-building inputs.
func (SessionV4Entry) MarshalJSON ¶
func (entry SessionV4Entry) MarshalJSON() ([]byte, error)
type SessionV4EntryQuery ¶
type SessionV4EntryQuery struct {
Type string
CustomType string // for Type "custom"
Order string // "" is newestFirst
Limit *int
AfterSeq *int
}
SessionV4EntryQuery mirrors upstream EntryQuery. A nil Limit means unlimited; zero and negative limits are invalid.
type SessionV4ForkOptions ¶
type SessionV4ForkOptions struct {
Scope string
EntryID *string
Position ForkPosition
}
SessionV4ForkOptions selects what a fork copies: the main branch up to a message entry, or the whole tree.
type SessionV4Header ¶
type SessionV4Header struct {
ID string
CreatedAt int64
CWD string
ParentSessionID *string
LegacyParentSessionPath *string
Metadata json.RawMessage
}
SessionV4Header mirrors upstream JsonlV4Header.
func ParseSessionV4Header ¶
func ParseSessionV4Header(line []byte, path string) (SessionV4Header, error)
ParseSessionV4Header decodes and validates the first line of a v4 session, reporting failures with the session file context upstream's invalidFile adds.
type SessionV4LanePointer ¶
SessionV4LanePointer names one lane and its current leaf entry.
type SessionV4LogItem ¶
type SessionV4LogItem struct {
Kind string
Seq int
Entry *SessionV4Entry
Record *SessionV4Record
Lane string
LeafID *string
Fact string
Name string
TargetID string
Label *string
// NameCleared marks a `fact:"name"` item that cleared the session name
// (upstream `name: undefined`); the `name` member is then omitted.
NameCleared bool
}
SessionV4LogItem is one replayed mutation of the session log.
func (SessionV4LogItem) MarshalJSON ¶
func (item SessionV4LogItem) MarshalJSON() ([]byte, error)
type SessionV4LogOptions ¶
SessionV4LogOptions pages the replayed mutation log.
type SessionV4Metadata ¶
type SessionV4Metadata struct {
ID string `json:"id"`
CreatedAt int64 `json:"createdAt"`
ParentSessionID *string `json:"parentSessionId,omitempty"`
}
SessionV4Metadata identifies an in-memory v4 session.
type SessionV4Mutation ¶
type SessionV4Mutation struct {
Kind string
EntryLane *string
Entry *SessionV4Entry
Record *SessionV4Record
Seq int
Lane string
LeafID *string
Fact string
Name string
TargetID string
Label *string
// NameCleared marks a `fact:"name"` mutation that clears the session name
// (upstream `name: undefined`); the `name` member is then omitted on the wire.
NameCleared bool
}
SessionV4Mutation is one decoded JSONL mutation line.
func ParseSessionV4Mutation ¶
func ParseSessionV4Mutation(line []byte, path string, lineNumber int) (SessionV4Mutation, error)
ParseSessionV4Mutation decodes one v4 mutation line, reporting failures with the session file context upstream's invalidFile adds.
type SessionV4NameClearer ¶
type SessionV4NameClearer interface {
ClearName() error
}
SessionV4NameClearer is upstream's `setName(undefined)` half of the storage contract. It stays a separate interface so SessionV4Storage keeps its published method set for existing implementations.
type SessionV4Record ¶
type SessionV4Record struct {
Type string
ID string
Lane string
Seq int
Timestamp int64
RunID string
IntentKind string
Usage *SessionV4Usage
// contains filtered or unexported fields
}
SessionV4Record is one lane record (operation, queue, usage, ...) of a v4 session log.
func (SessionV4Record) MarshalJSON ¶
func (record SessionV4Record) MarshalJSON() ([]byte, error)
type SessionV4RecordQuery ¶
type SessionV4RecordQuery struct {
Lane string
Type string
// RunID is operation identity: it matches an operation_started record's own
// id and the RunID of operation-owned records. Records without an operation
// identity never match.
RunID string
// OperationKind is valid only with Type "operation_started".
OperationKind string
// AfterSeq is an exclusive chronological lower bound regardless of Order.
AfterSeq *int
Order string // "" is newestFirst
Limit *int
}
SessionV4RecordQuery mirrors upstream RecordQuery. Empty string fields match every value.
type SessionV4RepoForkOptions ¶
type SessionV4RepoForkOptions struct {
SessionV4ForkOptions
SessionV4CreateOptions
}
SessionV4RepoForkOptions combines fork selection with new-session identity.
type SessionV4Storage ¶
type SessionV4Storage interface {
Lanes() []SessionV4LanePointer
CreateLane(lane string, at *string) error
MoveLane(lane string, to *string) error
AppendEntry(payload json.RawMessage, lane string) (SessionV4Entry, error)
AppendRecord(payload json.RawMessage) (SessionV4Record, error)
Entry(id string) (SessionV4Entry, bool)
FindEntries(query SessionV4EntryQuery) ([]SessionV4Entry, error)
FindEntriesOnBranch(query SessionV4BranchQuery) ([]SessionV4Entry, error)
FindRecords(query SessionV4RecordQuery) ([]SessionV4Record, error)
FindOpenOperations(lane string, limit *int) ([]SessionV4Record, error)
Log(options SessionV4LogOptions) ([]SessionV4LogItem, error)
Name() (string, bool)
SetName(name string) error
Label(id string) (string, bool)
SetLabel(id string, label *string) error
Stats() SessionStats
}
SessionV4Storage is the backend-neutral v4 session log contract.
type SessionV4Usage ¶
type SessionV4Usage struct {
Input float64
Output float64
CacheRead float64
CacheWrite float64
TotalTokens float64
CostTotal float64
}
SessionV4Usage carries the token accounting consumed by session stats.
type Shell ¶
type Shell interface {
Exec(context.Context, string, ExecOptions) (ExecResult, error)
Cleanup() error
}
type Skill ¶
type Skill struct {
Name string
Description string
Content string
FilePath string
DisableModelInvocation bool
}
Skill is the harness-level, execution-environment-neutral Agent Skills shape.
type SkillDiagnostic ¶
type SkillDiagnostic struct {
Type string
Code SkillDiagnosticCode
Message string
Path string
}
type SkillDiagnosticCode ¶
type SkillDiagnosticCode string
const ( SkillDiagnosticFileInfoFailed SkillDiagnosticCode = "file_info_failed" SkillDiagnosticListFailed SkillDiagnosticCode = "list_failed" SkillDiagnosticReadFailed SkillDiagnosticCode = "read_failed" SkillDiagnosticParseFailed SkillDiagnosticCode = "parse_failed" SkillDiagnosticInvalidMeta SkillDiagnosticCode = "invalid_metadata" )
type SourcedPromptTemplate ¶
type SourcedPromptTemplate[T any] struct { PromptTemplate PromptTemplate Source T }
type SourcedPromptTemplateDiagnostic ¶
type SourcedPromptTemplateDiagnostic[T any] struct { PromptTemplateDiagnostic Source T }
type SourcedSkill ¶
type SourcedSkillDiagnostic ¶
type SourcedSkillDiagnostic[T any] struct { SkillDiagnostic Source T }
type SourcedSkillInput ¶
type SummaryMessage ¶
type SummaryResult ¶
func GenerateSummaryWithUsage ¶
func GenerateSummaryWithUsage( ctx context.Context, messages engine.AgentMessages, model *ai.Model, complete CompleteFunc, reserveTokens int64, customInstructions string, previousSummary *string, thinkingLevel ai.ModelThinkingLevel, ) (*SummaryResult, error)
Source Files
¶
- branch_summary.go
- compaction.go
- doc.go
- env.go
- env_process_unix.go
- events.go
- prompt_templates.go
- retry.go
- session.go
- session_codec.go
- session_context.go
- session_repo.go
- session_storage.go
- session_storage_v4.go
- session_types.go
- session_v4_codec.go
- session_v4_context.go
- session_v4_repo.go
- session_v4_state.go
- session_v4_storage.go
- skills.go
- types.go