91 lines
3.2 KiB
Go
91 lines
3.2 KiB
Go
package domain
|
|
|
|
import "time"
|
|
|
|
// ExecutionObserver receives one immutable metadata event synchronously.
|
|
type ExecutionObserver func(ExecutionEvent)
|
|
|
|
type ExecutionEventKind string
|
|
|
|
const (
|
|
ExecutionStarted ExecutionEventKind = "started"
|
|
ExecutionAttempt ExecutionEventKind = "attempt"
|
|
ExecutionRetryDelay ExecutionEventKind = "retry_delay"
|
|
ExecutionFinished ExecutionEventKind = "finished"
|
|
)
|
|
|
|
type ExecutionOutcome string
|
|
|
|
const (
|
|
ExecutionOutcomeSuccess ExecutionOutcome = "success"
|
|
ExecutionOutcomeInvalidOutput ExecutionOutcome = "invalid_output"
|
|
ExecutionOutcomeError ExecutionOutcome = "error"
|
|
)
|
|
|
|
type ExecutionFailureKind string
|
|
|
|
const (
|
|
ExecutionFailureNone ExecutionFailureKind = ""
|
|
ExecutionFailureCanceled ExecutionFailureKind = "canceled"
|
|
ExecutionFailureDeadline ExecutionFailureKind = "deadline"
|
|
ExecutionFailureTransport ExecutionFailureKind = "transport"
|
|
ExecutionFailureProviderStatus ExecutionFailureKind = "provider_status"
|
|
ExecutionFailureMalformedResponse ExecutionFailureKind = "malformed_response"
|
|
ExecutionFailureCapacity ExecutionFailureKind = "capacity"
|
|
ExecutionFailureInvalidConfig ExecutionFailureKind = "invalid_config"
|
|
ExecutionFailureInvalidRequest ExecutionFailureKind = "invalid_request"
|
|
ExecutionFailurePromptNotFound ExecutionFailureKind = "prompt_not_found"
|
|
ExecutionFailureProfileNotFound ExecutionFailureKind = "profile_not_found"
|
|
ExecutionFailurePromptLoad ExecutionFailureKind = "prompt_load"
|
|
ExecutionFailureProfileLoad ExecutionFailureKind = "profile_load"
|
|
ExecutionFailureArtifactLoad ExecutionFailureKind = "artifact_load"
|
|
ExecutionFailurePromptRender ExecutionFailureKind = "prompt_render"
|
|
ExecutionFailureValidation ExecutionFailureKind = "validation"
|
|
ExecutionFailureGeneration ExecutionFailureKind = "generation"
|
|
ExecutionFailureOther ExecutionFailureKind = "other"
|
|
)
|
|
|
|
// ObservedTokenCount distinguishes omitted usage from reported zero.
|
|
type ObservedTokenCount struct {
|
|
Value int
|
|
Known bool
|
|
Complete bool
|
|
}
|
|
|
|
// ObservedTokenUsage reports presence-aware token counts.
|
|
type ObservedTokenUsage struct {
|
|
PromptTokens ObservedTokenCount
|
|
CompletionTokens ObservedTokenCount
|
|
TotalTokens ObservedTokenCount
|
|
CachedTokens ObservedTokenCount
|
|
CacheWriteTokens ObservedTokenCount
|
|
}
|
|
|
|
// ExecutionEvent contains metadata only; it carries no mutable containers or
|
|
// error values. Nonterminal events leave aggregate counters at zero.
|
|
type ExecutionEvent struct {
|
|
Kind ExecutionEventKind
|
|
RunID string
|
|
Time time.Time
|
|
PromptID string
|
|
PromptVersion string
|
|
ProfileID string
|
|
BackendID string
|
|
Model string
|
|
Generation uint64
|
|
Attempt uint64
|
|
Dispatched bool
|
|
CapacityWait time.Duration
|
|
GenerationDuration time.Duration
|
|
RetryDelay time.Duration
|
|
Duration time.Duration
|
|
Outcome ExecutionOutcome
|
|
Failure ExecutionFailureKind
|
|
StatusCode int
|
|
RetriesExhausted bool
|
|
Usage ObservedTokenUsage
|
|
Attempts uint64
|
|
TransientRetries uint64
|
|
RepairCalls uint64
|
|
}
|