Retain repair diagnostics and correction lineage
This commit is contained in:
@@ -53,13 +53,14 @@ type ExecutionObservation struct {
|
||||
}
|
||||
|
||||
type LogicalCall struct {
|
||||
CallID uint64 `json:"call_id"`
|
||||
Context structuredoutput.DiagnosticContext `json:"context"`
|
||||
Prompt structuredoutput.PromptMetadata `json:"prompt"`
|
||||
Started time.Time `json:"started"`
|
||||
Finished time.Time `json:"finished,omitempty"`
|
||||
WallDuration time.Duration `json:"wall_duration_ns"`
|
||||
Failure structuredoutput.FailureKind `json:"failure,omitempty"`
|
||||
RequestedPromptID string `json:"requested_prompt_id,omitempty"`
|
||||
CallID uint64 `json:"call_id"`
|
||||
Context structuredoutput.DiagnosticContext `json:"context"`
|
||||
Prompt structuredoutput.PromptMetadata `json:"prompt"`
|
||||
Started time.Time `json:"started"`
|
||||
Finished time.Time `json:"finished,omitempty"`
|
||||
WallDuration time.Duration `json:"wall_duration_ns"`
|
||||
Failure structuredoutput.FailureKind `json:"failure,omitempty"`
|
||||
}
|
||||
|
||||
type ObservationSnapshot struct {
|
||||
@@ -92,6 +93,14 @@ func (c *ObservationCollector) Hooks() CallHooks {
|
||||
}
|
||||
|
||||
func copyContext(value structuredoutput.DiagnosticContext) structuredoutput.DiagnosticContext {
|
||||
if value.ProposalIndex != nil {
|
||||
index := *value.ProposalIndex
|
||||
value.ProposalIndex = &index
|
||||
}
|
||||
if value.RepairAttempt != nil {
|
||||
index := *value.RepairAttempt
|
||||
value.RepairAttempt = &index
|
||||
}
|
||||
if value.StageIndex != nil {
|
||||
index := *value.StageIndex
|
||||
value.StageIndex = &index
|
||||
@@ -117,7 +126,7 @@ func (c *ObservationCollector) recordCall(record structuredoutput.CallRecord) {
|
||||
}
|
||||
c.mu.Lock()
|
||||
defer c.mu.Unlock()
|
||||
call := LogicalCall{CallID: record.CallID, Context: copyContext(record.Context), Prompt: record.Prompt, Started: record.Started, Finished: record.Finished, Failure: record.Failure}
|
||||
call := LogicalCall{RequestedPromptID: record.RequestedPromptID, CallID: record.CallID, Context: copyContext(record.Context), Prompt: record.Prompt, Started: record.Started, Finished: record.Finished, Failure: record.Failure}
|
||||
if !record.Finished.IsZero() {
|
||||
call.WallDuration = record.Finished.Sub(record.Started)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user