Add typed artifact codec foundation

This commit is contained in:
2026-07-17 05:41:20 +00:00
parent 075888c97f
commit fc1b57bde2
22 changed files with 795 additions and 33 deletions

View File

@@ -23,6 +23,7 @@ func newProductionComponents() (productionComponents, error) {
registries := pipeline.Registries{
Inputs: pipeline.NewInputAdapterRegistry(),
Chunkers: pipeline.NewChunkerRegistry(),
ArtifactCodecs: pipeline.NewArtifactCodecRegistry(),
Extractors: pipeline.NewExtractorRegistry(),
Mergers: pipeline.NewMergerRegistry(),
Normalizers: pipeline.NewNormalizerRegistry(),
@@ -89,6 +90,7 @@ func catalogFromRegistries(registries pipeline.Registries) pipeline.ModuleCatalo
return pipeline.ModuleCatalog{
Inputs: registries.Inputs,
Chunkers: registries.Chunkers,
ArtifactCodecs: registries.ArtifactCodecs,
Extractors: registries.Extractors,
Mergers: registries.Mergers,
Normalizers: registries.Normalizers,
@@ -102,6 +104,7 @@ func registriesFromCatalog(catalog pipeline.ModuleCatalog) pipeline.Registries {
return pipeline.Registries{
Inputs: catalog.Inputs,
Chunkers: catalog.Chunkers,
ArtifactCodecs: catalog.ArtifactCodecs,
Extractors: catalog.Extractors,
Mergers: catalog.Mergers,
Normalizers: catalog.Normalizers,
@@ -114,6 +117,7 @@ func registriesFromCatalog(catalog pipeline.ModuleCatalog) pipeline.Registries {
func isEmptyCatalog(catalog pipeline.ModuleCatalog) bool {
return catalog.Inputs == nil &&
catalog.Chunkers == nil &&
catalog.ArtifactCodecs == nil &&
catalog.Extractors == nil &&
catalog.Mergers == nil &&
catalog.Normalizers == nil &&
@@ -125,6 +129,7 @@ func isEmptyCatalog(catalog pipeline.ModuleCatalog) bool {
func isEmptyRegistries(registries pipeline.Registries) bool {
return registries.Inputs == nil &&
registries.Chunkers == nil &&
registries.ArtifactCodecs == nil &&
registries.Extractors == nil &&
registries.Mergers == nil &&
registries.Normalizers == nil &&

View File

@@ -135,6 +135,12 @@ func TestProductionCatalogIncludesProductionModulesValidatorsAndDefaults(t *test
if err != nil {
t.Fatalf("productionCatalog() error = %v, want nil", err)
}
if catalog.ArtifactCodecs == nil {
t.Fatal("production artifact codec registry = nil, want initialized empty registry")
}
if got := catalog.ArtifactCodecs.RegisteredKinds(); len(got) != 0 {
t.Fatalf("production artifact codec kinds = %#v, want legacy raw production path", got)
}
moduleTests := []struct {
name string
@@ -227,6 +233,23 @@ func TestProductionCatalogIncludesProductionModulesValidatorsAndDefaults(t *test
}
}
func TestCatalogConversionsPreserveArtifactCodecRegistry(t *testing.T) {
codecs := pipeline.NewArtifactCodecRegistry()
registries := pipeline.Registries{ArtifactCodecs: codecs}
if isEmptyRegistries(registries) {
t.Fatal("registries with artifact codecs reported empty")
}
catalog := catalogFromRegistries(registries)
if catalog.ArtifactCodecs != codecs || isEmptyCatalog(catalog) {
t.Fatalf("catalog artifact codecs = %p empty=%t, want %p and non-empty", catalog.ArtifactCodecs, isEmptyCatalog(catalog), codecs)
}
converted := registriesFromCatalog(catalog)
if converted.ArtifactCodecs != codecs {
t.Fatalf("converted artifact codecs = %p, want %p", converted.ArtifactCodecs, codecs)
}
}
func TestProductionPromptAssetsRegisterAndPrepareDndPrompts(t *testing.T) {
registry, err := productionPromptAssets()
if err != nil {
@@ -3572,12 +3595,13 @@ func fakeExecutionRegistries(t *testing.T) pipeline.Registries {
}
return pipeline.Registries{
Inputs: inputs,
Chunkers: chunkers,
Extractors: extractors,
Mergers: mergers,
Normalizers: normalizers,
Outputs: outputs,
Inputs: inputs,
Chunkers: chunkers,
ArtifactCodecs: pipeline.NewArtifactCodecRegistry(),
Extractors: extractors,
Mergers: mergers,
Normalizers: normalizers,
Outputs: outputs,
}
}
@@ -3953,6 +3977,7 @@ func fakeCatalog(t *testing.T, overrides ...pipeline.ModuleSpec) pipeline.Module
return pipeline.ModuleCatalog{
Inputs: inputs,
Chunkers: chunkers,
ArtifactCodecs: pipeline.NewArtifactCodecRegistry(),
Extractors: extractors,
Mergers: mergers,
Normalizers: normalizers,