Track completed execution artifact paths

This commit is contained in:
2026-07-31 16:51:12 +00:00
parent 870b54a4a0
commit 34c395d7e5
5 changed files with 337 additions and 19 deletions

View File

@@ -534,6 +534,7 @@ type finalizeRenderedReportRequest struct {
Resolved report.Resolved
Metadata state.Metadata
MetadataPath string
ExecutionArtifact *state.PromptExecutionArtifact
ManagedReportPath string
OutputPath string
Notifier Notifier
@@ -556,15 +557,24 @@ func finalizeRenderedReport(ctx context.Context, req finalizeRenderedReportReque
if req.ManagedReportPath == "" {
return finalizeRenderedReportResult{}, fmt.Errorf("managed report path is required for report %q", req.Resolved.Definition.ID)
}
if req.ExecutionArtifact == nil {
return finalizeRenderedReportResult{}, fmt.Errorf("prompt execution artifact is required for report %q", req.Resolved.Definition.ID)
}
result := finalizeRenderedReportResult{Metadata: req.Metadata, MetadataPath: req.MetadataPath}
if req.OutputPath != "" {
if req.GenerationErr == nil && req.OutputPath != req.ManagedReportPath {
if req.OutputPath != "" && req.GenerationErr == nil {
if req.OutputPath != req.ManagedReportPath {
if err := fileutil.CopyFileAtomic(req.ManagedReportPath, req.OutputPath); err != nil {
return result, err
}
result.OutputPath = req.OutputPath
req.ExecutionArtifact.Paths.OutputPath = req.OutputPath
if _, err := req.Store.SavePromptExecution(ctx, req.Resolved, *req.ExecutionArtifact); err != nil {
return result, err
}
} else {
result.OutputPath = req.OutputPath
}
result.OutputPath = req.OutputPath
}
metadata := req.Metadata
@@ -588,6 +598,10 @@ func finalizeRenderedReport(ctx context.Context, req finalizeRenderedReportReque
result.Notification = notification
metadata.NotificationPath = notificationPath
result.Metadata = metadata
req.ExecutionArtifact.Paths.NotificationPath = notificationPath
if _, saveErr := req.Store.SavePromptExecution(ctx, req.Resolved, *req.ExecutionArtifact); saveErr != nil {
return result, saveErr
}
metadataPath, saveErr := req.Store.SaveMetadata(ctx, metadata)
if saveErr != nil {
return result, saveErr