Expand canonical party artifact families

This commit is contained in:
2026-08-30 14:15:57 +00:00
parent c4435b76c4
commit fb9a4d14f4
10 changed files with 616 additions and 15 deletions

View File

@@ -34,7 +34,16 @@ type PipelineConfig struct {
Notarius *NotariusConfig `yaml:"notarius"`
Notification NotificationConfig `yaml:"notification"`
resolution *pipelineResolutionMetadata `yaml:"-"`
resolution *pipelineResolutionMetadata `yaml:"-"`
familyCatalog ArtifactFamilyCatalog `yaml:"-"`
}
// ArtifactFamilies returns a copy of runtime-only expansion provenance.
func ArtifactFamilies(cfg *PipelineConfig) ArtifactFamilyCatalog {
if cfg == nil {
return ArtifactFamilyCatalog{}
}
return cloneArtifactFamilyCatalog(cfg.familyCatalog)
}
// CampaignsConfig configures the local campaign registry.
@@ -236,11 +245,12 @@ type RenderConfig struct {
// ScriptoriumConfig configures Scriptorium-backed artifact generation.
type ScriptoriumConfig struct {
Binary string `yaml:"binary"`
ConfigPath string `yaml:"config_path"`
Timeout string `yaml:"timeout"`
RenderDebug bool `yaml:"render_debug"`
Artifacts map[string]ScriptoriumArtifactConfig `yaml:"artifacts"`
Binary string `yaml:"binary"`
ConfigPath string `yaml:"config_path"`
Timeout string `yaml:"timeout"`
RenderDebug bool `yaml:"render_debug"`
Artifacts map[string]ScriptoriumArtifactConfig `yaml:"artifacts"`
ArtifactFamilies map[string]ScriptoriumArtifactFamilyConfig `yaml:"artifact_families"`
}
// ScriptoriumArtifactConfig configures one named output artifact workflow.
@@ -256,6 +266,55 @@ type ScriptoriumArtifactConfig struct {
Vars map[string]any `yaml:"vars"`
}
// ScriptoriumArtifactFamilyConfig declares the shared configuration expanded
// into one ordinary artifact for each canonical party character.
type ScriptoriumArtifactFamilyConfig struct {
Enabled bool `yaml:"enabled"`
ForEach string `yaml:"for_each"`
DependsOn []string `yaml:"depends_on"`
RenderDebug *bool `yaml:"render_debug"`
PromptID string `yaml:"prompt_id"`
ProfileID string `yaml:"profile_id"`
OutputPathPattern string `yaml:"output_path_pattern"`
Timeout string `yaml:"timeout"`
Inputs map[string]ScriptoriumInputConfig `yaml:"inputs"`
Vars map[string]any `yaml:"vars"`
MemberVars map[string]string `yaml:"member_vars"`
MemberDependencies []string `yaml:"member_dependencies"`
Publish *ScriptoriumArtifactFamilyPublishConfig `yaml:"publish"`
}
// ScriptoriumArtifactFamilyPublishConfig retains the typed declaration for
// family publishing. It is resolved by the publish owner.
type ScriptoriumArtifactFamilyPublishConfig struct {
Enabled bool `yaml:"enabled"`
Required bool `yaml:"required"`
DestPattern string `yaml:"dest_pattern"`
}
// ArtifactFamilyCatalog records the runtime-only origin of expanded artifacts.
// It is intentionally kept outside the Scriptorium adapter configuration.
type ArtifactFamilyCatalog struct {
Families map[string]ArtifactFamilyOrigin
Members map[string]ArtifactFamilyMemberOrigin
}
// ArtifactFamilyOrigin records one declared family and its source ownership.
type ArtifactFamilyOrigin struct {
Members []string
MemberDependencies []string
Publish *ScriptoriumArtifactFamilyPublishConfig
Source string
}
// ArtifactFamilyMemberOrigin identifies the canonical party member that
// produced one ordinary concrete artifact.
type ArtifactFamilyMemberOrigin struct {
Family string
CharacterID string
Source string
}
// ScriptoriumInputConfig configures one named prompt input source.
type ScriptoriumInputConfig struct {
Source string `yaml:"source"`