Switch commands to ConfigKit configuration
This commit is contained in:
@@ -737,13 +737,13 @@ func TestProductionConfigValidationCoversModuleAndVariantFailures(t *testing.T)
|
||||
}{
|
||||
{
|
||||
name: "unknown module",
|
||||
content: replaceRequiredOnce(t, base, " input: seriatim\n", " input: missing/input\n"),
|
||||
content: replaceRequiredOnce(t, base, " input:\n module: seriatim\n", " input:\n module: missing/input\n"),
|
||||
options: productionCLIOptions(t),
|
||||
fragments: []string{"pipeline \"dnd-session\"", "input", "missing/input"},
|
||||
},
|
||||
{
|
||||
name: "unknown validator",
|
||||
content: replaceRequiredOnce(t, base, " extract: dnd/spells\n", " extract:\n module: dnd/spells\n validators:\n - module: missing/validator\n"),
|
||||
content: replaceRequiredOnce(t, base, " extract:\n module: dnd/spells\n", " extract:\n module: dnd/spells\n validators:\n - module: missing/validator\n"),
|
||||
options: productionCLIOptions(t),
|
||||
fragments: []string{"validator", "missing/validator"},
|
||||
},
|
||||
@@ -755,7 +755,7 @@ func TestProductionConfigValidationCoversModuleAndVariantFailures(t *testing.T)
|
||||
},
|
||||
{
|
||||
name: "deterministic validator with profile",
|
||||
content: replaceRequiredOnce(t, base, " extract: dnd/spells\n", " extract:\n module: dnd/spells\n validators:\n - module: generic/valid_json\n llm_profile: forbidden-profile\n"),
|
||||
content: replaceRequiredOnce(t, base, " extract:\n module: dnd/spells\n", " extract:\n module: dnd/spells\n validators:\n - module: generic/valid_json\n llm_profile: forbidden-profile\n"),
|
||||
options: productionCLIOptions(t),
|
||||
fragments: []string{"deterministic validator", "llm_profile"},
|
||||
},
|
||||
@@ -779,7 +779,7 @@ func TestProductionConfigValidationCoversModuleAndVariantFailures(t *testing.T)
|
||||
|
||||
func TestProductionNormalizeValidatorOverrideRemainsAuthoritative(t *testing.T) {
|
||||
base := string(readRepositoryFile(t, "examples", "dnd-minimal.config.yml"))
|
||||
content := replaceRequiredOnce(t, base, " normalize: dnd/spells\n", " normalize:\n module: dnd/spells\n validators:\n - module: generic/always_accept\n - module: generic/valid_json\n")
|
||||
content := replaceRequiredOnce(t, base, " normalize:\n module: dnd/spells\n", " normalize:\n module: dnd/spells\n validators:\n - module: generic/always_accept\n - module: generic/valid_json\n")
|
||||
path := writeProductionContractConfig(t, content)
|
||||
components := productionTestComponents(t)
|
||||
effective, err := loadMaintainedExample(t, path).Resolve(resolveInputForMaintainedExample(components, "dnd-session"))
|
||||
@@ -879,7 +879,7 @@ func maintainedExampleFiles(t *testing.T) []maintainedExample {
|
||||
|
||||
func productionSpellCatalogContractConfig(t *testing.T) string {
|
||||
t.Helper()
|
||||
return fmt.Sprintf(`version: 4
|
||||
return fmt.Sprintf(`version: 5
|
||||
cache:
|
||||
chunk_plans:
|
||||
mode: bypass
|
||||
@@ -888,21 +888,26 @@ cache:
|
||||
directory: ""
|
||||
pipelines:
|
||||
dnd-session:
|
||||
input: seriatim
|
||||
input:
|
||||
module: seriatim
|
||||
references:
|
||||
party: %q
|
||||
glossary: %q
|
||||
party:
|
||||
path: %q
|
||||
glossary:
|
||||
path: %q
|
||||
artifacts:
|
||||
spells:
|
||||
extract:
|
||||
module: dnd/spells
|
||||
retries: 2
|
||||
references:
|
||||
spell_catalog: %q
|
||||
spell_catalog:
|
||||
path: %q
|
||||
normalize:
|
||||
module: dnd/spells
|
||||
references:
|
||||
spell_catalog: %q
|
||||
spell_catalog:
|
||||
path: %q
|
||||
`, repositoryPath("examples", "dnd-party.txt"), repositoryPath("examples", "dnd-glossary.txt"), repositoryPath("examples", "dnd-spell-catalog.json"), repositoryPath("examples", "dnd-spell-catalog.json"))
|
||||
}
|
||||
|
||||
@@ -913,14 +918,11 @@ func writeProductionSpellCatalogContractConfig(t *testing.T) string {
|
||||
|
||||
func loadMaintainedExample(t *testing.T, path string) config.Config {
|
||||
t.Helper()
|
||||
fileConfig, err := config.LoadFileConfig(path)
|
||||
loaded, err := config.Load(path, config.LoadOptions{})
|
||||
if err != nil {
|
||||
t.Fatalf("load maintained config %q: %v", path, err)
|
||||
}
|
||||
cfg := config.Default()
|
||||
if err := cfg.ApplyFileConfig(fileConfig); err != nil {
|
||||
t.Fatalf("apply maintained config %q: %v", path, err)
|
||||
}
|
||||
cfg := loaded.RuntimeConfig()
|
||||
if err := cfg.Validate(); err != nil {
|
||||
t.Fatalf("validate maintained config %q: %v", path, err)
|
||||
}
|
||||
@@ -977,7 +979,7 @@ func productionRunOptions(t *testing.T, fake *productionFakeLLMClient) Options {
|
||||
}
|
||||
|
||||
func productionRunConfig(outputRoot, chunkModule string) string {
|
||||
return fmt.Sprintf(`version: 4
|
||||
return fmt.Sprintf(`version: 5
|
||||
output:
|
||||
directory: %q
|
||||
cache:
|
||||
@@ -988,8 +990,10 @@ debug:
|
||||
directory: %q
|
||||
pipelines:
|
||||
dnd-session:
|
||||
input: seriatim
|
||||
chunk: %s
|
||||
input:
|
||||
module: seriatim
|
||||
chunk:
|
||||
module: %s
|
||||
output:
|
||||
module: json
|
||||
options:
|
||||
@@ -998,8 +1002,10 @@ pipelines:
|
||||
- id: identify-items
|
||||
artifacts:
|
||||
item-registry:
|
||||
extract: dnd/item-registry
|
||||
normalize: dnd/item-registry
|
||||
extract:
|
||||
module: dnd/item-registry
|
||||
normalize:
|
||||
module: dnd/item-registry
|
||||
- id: extract-occurrences
|
||||
references:
|
||||
item_registry:
|
||||
@@ -1008,9 +1014,11 @@ pipelines:
|
||||
lane: item-registry
|
||||
artifacts:
|
||||
spells:
|
||||
extract: dnd/spells
|
||||
extract:
|
||||
module: dnd/spells
|
||||
item-occurrences:
|
||||
extract: dnd/item-occurrences
|
||||
extract:
|
||||
module: dnd/item-occurrences
|
||||
`, outputRoot, filepath.Join(filepath.Dir(outputRoot), "debug"), chunkModule)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user