package domain import ( "time" ) // ArtifactRefType defines how an artifact is referenced. type ArtifactRefType string const ( ArtifactRefInline ArtifactRefType = "inline" ArtifactRefFile ArtifactRefType = "file" ArtifactRefS3 ArtifactRefType = "s3" ) // OutputFormat defines the desired format of the generated artifact. type OutputFormat string const ( FormatText OutputFormat = "text" FormatMarkdown OutputFormat = "markdown" FormatJSON OutputFormat = "json" ) // ValidationMode defines how the output should be validated. type ValidationMode string const ( ValidationNone ValidationMode = "none" ValidationBasic ValidationMode = "basic" ValidationJSON ValidationMode = "json" ValidationJSONSchema ValidationMode = "json_schema" ) // ValidationStatus defines the result of a validation check. type ValidationStatus string const ( ValidationPassed ValidationStatus = "passed" ValidationFailed ValidationStatus = "failed" ValidationSkipped ValidationStatus = "skipped" ) // RunRequest represents a request to generate a single artifact. type RunRequest struct { ProfileID string Inputs map[string]ArtifactRef Vars map[string]string Model *ModelTarget Metadata map[string]string } // RunResult represents the complete result of a prompt execution run. type RunResult struct { Artifact Artifact RawOutput string Validation ValidationResult ProfileID string ProfileVersion string ModelName string Endpoint string InputHashes map[string]string PromptHash string Usage TokenUsage StartTime time.Time EndTime time.Time Error error } // ArtifactRef represents a reference to an input artifact. type ArtifactRef struct { Type ArtifactRefType URI string Body string // Used for inline } // Artifact represents the actual loaded content of a reference. type Artifact struct { Name string ContentType string Body []byte URI string Size int64 Hash string } // PromptProfile represents a configured prompt execution profile. type PromptProfile struct { ID string `yaml:"id"` Version string `yaml:"version"` Description string `yaml:"description"` ExpectedInputs []string `yaml:"expected_inputs"` Templates []PromptMessageTemplate `yaml:"templates"` ModelDefaults ModelTarget `yaml:"model_defaults"` OutputFormat OutputFormat `yaml:"output_format"` Validation OutputContract `yaml:"validation"` } // PromptMessageTemplate defines a template for a chat message. type PromptMessageTemplate struct { Role string `yaml:"role"` Content string `yaml:"content"` } // ModelTarget represents the LLM endpoint and configuration. type ModelTarget struct { Endpoint string `yaml:"endpoint"` Model string `yaml:"model"` Temperature float64 `yaml:"temperature"` MaxTokens int `yaml:"max_tokens"` TopP float64 `yaml:"top_p"` } // OutputContract defines the requirements for the output artifact. type OutputContract struct { Format OutputFormat `yaml:"format"` ValidationMode ValidationMode `yaml:"validation_mode"` SchemaPath string `yaml:"schema_path"` RepairAttempts int `yaml:"repair_attempts"` } // RenderedPrompt represents the prompt after template application. type RenderedPrompt struct { Messages []RenderedMessage } // RenderedMessage is a single message in a rendered prompt. type RenderedMessage struct { Role string Content string } // GenerateRequest is the internal request passed to the LLM client. type GenerateRequest struct { Prompt RenderedPrompt Target ModelTarget } // GenerateResponse is the response received from the LLM client. type GenerateResponse struct { Content string Usage TokenUsage } // TokenUsage tracks token consumption. type TokenUsage struct { PromptTokens int CompletionTokens int TotalTokens int } // ValidationResult represents the outcome of an output validation. type ValidationResult struct { Status ValidationStatus Mode ValidationMode Errors []string SchemaPath string RepairAttempts int IsValid bool } // RunMetadata contains auditing information for a run. type RunMetadata struct { RunID string ProfileID string ProfileVersion string ProfileHash string PromptHash string InputHashes map[string]string ModelEndpoint string ModelName string Params ModelTarget Timestamp time.Time Duration time.Duration Usage TokenUsage ValidationMode ValidationMode ValidationStatus ValidationStatus RepairAttempts int }