122 lines
6.0 KiB
Go
122 lines
6.0 KiB
Go
// Package state persists report artifacts and metadata.
|
|
package state
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
"time"
|
|
|
|
"gitea.maximumdirect.net/eric/weatherreporter/internal/module"
|
|
"gitea.maximumdirect.net/eric/weatherreporter/internal/promptinput"
|
|
"gitea.maximumdirect.net/eric/weatherreporter/internal/report"
|
|
)
|
|
|
|
type Store interface {
|
|
Paths(report.Resolved) (ArtifactPaths, error)
|
|
SaveModuleSnapshot(context.Context, report.Resolved, module.Snapshot) (string, error)
|
|
SaveDataPackage(context.Context, report.Resolved, promptinput.Package) (string, error)
|
|
SaveDataPackageBytes(context.Context, report.Resolved, []byte) (string, error)
|
|
SavePreflight(context.Context, report.Resolved, PreflightArtifact) (string, error)
|
|
SavePromptPreparation(context.Context, report.Resolved, PromptPreparationArtifact) (string, error)
|
|
SavePromptExecution(context.Context, report.Resolved, PromptExecutionArtifact) (string, error)
|
|
SaveDistributorNotification(context.Context, report.Resolved, DistributorNotificationArtifact) (string, error)
|
|
SaveBatchDistributorNotification(context.Context, BatchDistributorNotificationRef, BatchDistributorNotificationArtifact) (string, error)
|
|
SaveGeneratedTextRaw(context.Context, report.Resolved, []byte) (string, error)
|
|
SaveGeneratedTextResult(context.Context, report.Resolved, any) (string, error)
|
|
SaveGeneratedText(context.Context, report.Resolved, []byte) (string, error)
|
|
SaveRenderContext(context.Context, report.Resolved, any) (string, error)
|
|
PrepareRenderedReport(context.Context, report.Resolved) (string, error)
|
|
SaveMetadata(context.Context, Metadata) (string, error)
|
|
FindPriorSnapshot(context.Context, report.Resolved) (*PriorSnapshot, error)
|
|
LoadModuleSnapshot(context.Context, string) (module.Snapshot, error)
|
|
LoadGeneratedText(context.Context, string) ([]byte, error)
|
|
LoadGeneratedTextResult(context.Context, string, any) error
|
|
LoadPromptPreparation(context.Context, string) (PromptPreparationArtifact, error)
|
|
LoadPromptExecution(context.Context, string) (PromptExecutionArtifact, error)
|
|
LoadRenderContext(context.Context, string, any) error
|
|
}
|
|
|
|
type PriorSnapshot struct {
|
|
Metadata Metadata
|
|
ModuleSnapshotPath string
|
|
}
|
|
|
|
type PreflightArtifact struct {
|
|
Command []string `json:"command"`
|
|
Stdout string `json:"stdout"`
|
|
Stderr string `json:"stderr"`
|
|
StdoutTruncated bool `json:"stdoutTruncated,omitempty"`
|
|
StderrTruncated bool `json:"stderrTruncated,omitempty"`
|
|
ExitCode int `json:"exitCode"`
|
|
}
|
|
|
|
const DistributorNotificationSchemaVersion = "weatherreporter.distributor_notification.v1"
|
|
const BatchDistributorNotificationSchemaVersion = "weatherreporter.batch_distributor_notification.v1"
|
|
|
|
type BatchDistributorNotificationRef struct {
|
|
Batch string
|
|
BatchRunID string
|
|
StartedAt time.Time
|
|
Location *time.Location
|
|
}
|
|
|
|
type DistributorNotificationArtifact struct {
|
|
SchemaVersion string `json:"schemaVersion"`
|
|
RunID string `json:"runId"`
|
|
ReportID report.ID `json:"reportId"`
|
|
AttemptedAt time.Time `json:"attemptedAt"`
|
|
Endpoint string `json:"endpoint"`
|
|
PipelineID string `json:"pipelineId,omitempty"`
|
|
BundleID string `json:"bundleId,omitempty"`
|
|
IdempotencyKey string `json:"idempotencyKey,omitempty"`
|
|
SourcePath string `json:"sourcePath,omitempty"`
|
|
BundlePaths []string `json:"bundlePaths,omitempty"`
|
|
BundleCreated time.Time `json:"bundleCreated,omitempty"`
|
|
Status string `json:"status"`
|
|
Upload *DistributorUploadResult `json:"upload,omitempty"`
|
|
RunStatus *DistributorRunStatus `json:"runStatus,omitempty"`
|
|
StatusError string `json:"statusError,omitempty"`
|
|
Error string `json:"error,omitempty"`
|
|
}
|
|
|
|
type DistributorUploadResult struct {
|
|
RunID string `json:"runId,omitempty"`
|
|
Status string `json:"status,omitempty"`
|
|
}
|
|
|
|
type DistributorRunStatus struct {
|
|
RunID string `json:"runId,omitempty"`
|
|
PipelineID string `json:"pipelineId,omitempty"`
|
|
Status string `json:"status,omitempty"`
|
|
AcceptedAt time.Time `json:"acceptedAt,omitempty"`
|
|
StartedAt *time.Time `json:"startedAt,omitempty"`
|
|
FinishedAt *time.Time `json:"finishedAt,omitempty"`
|
|
Report json.RawMessage `json:"report,omitempty"`
|
|
Error string `json:"error,omitempty"`
|
|
}
|
|
|
|
type BatchDistributorNotificationArtifact struct {
|
|
SchemaVersion string `json:"schemaVersion"`
|
|
Batch string `json:"batch"`
|
|
BatchRunID string `json:"batchRunId"`
|
|
AttemptedAt time.Time `json:"attemptedAt"`
|
|
Endpoint string `json:"endpoint"`
|
|
PipelineID string `json:"pipelineId,omitempty"`
|
|
BundleID string `json:"bundleId,omitempty"`
|
|
IdempotencyKey string `json:"idempotencyKey,omitempty"`
|
|
BundleCreated time.Time `json:"bundleCreated,omitempty"`
|
|
Reports []BatchDistributorNotificationReportArtifact `json:"includedReports,omitempty"`
|
|
Status string `json:"status"`
|
|
Upload *DistributorUploadResult `json:"upload,omitempty"`
|
|
RunStatus *DistributorRunStatus `json:"runStatus,omitempty"`
|
|
StatusError string `json:"statusError,omitempty"`
|
|
Error string `json:"error,omitempty"`
|
|
}
|
|
|
|
type BatchDistributorNotificationReportArtifact struct {
|
|
ReportID report.ID `json:"reportId"`
|
|
RunID string `json:"runId"`
|
|
SourcePath string `json:"sourcePath"`
|
|
BundlePaths []string `json:"bundlePaths"`
|
|
}
|