Capture complete prompt resources for inspection

This commit is contained in:
2026-11-06 15:18:57 +00:00
parent 4cbd4e2da0
commit bf3d2e19bd
7 changed files with 108 additions and 6 deletions

View File

@@ -120,6 +120,7 @@ const (
type loaded struct {
result *configkit.Result[document]
promptMetadata map[string][]promptInputPresence
promptRepair map[string]bool
prompts map[string]*promptEntry
registry *backend.Registry
backendRecords map[string]backendConfig
@@ -234,7 +235,7 @@ func configurationDefinition(state *loaded) configkit.Definition[document] {
Sensitive: secretProviderPath,
Resolve: func(config *document, resolution *configkit.Resolution) error {
for _, resources := range resourceSets(config) {
capturePromptMetadata(resources.prompts, resources.bases.prompts, resources.namespace, resolution, state.promptMetadata)
capturePromptMetadata(resources.prompts, resources.bases.prompts, resources.namespace, resolution, state.promptMetadata, state.promptRepair)
}
for _, resources := range resourceSets(config) {
resolveBackends(resources.backends, resources.bases.backends, resolution)
@@ -253,6 +254,7 @@ func configurationDefinition(state *loaded) configkit.Definition[document] {
func load(main configkit.Input, underlays []configkit.Underlay) (*loaded, error) {
state := &loaded{
promptMetadata: make(map[string][]promptInputPresence),
promptRepair: make(map[string]bool),
}
result, err := configkit.LoadLayered(main, configkit.LayeredOptions[document]{
Underlays: underlays,
@@ -317,11 +319,12 @@ func checkConfigurationVersion(version configkit.Version, validation *configkit.
}
type promptInputPresence struct {
required fieldState
contentType fieldState
description fieldState
}
func capturePromptMetadata(prompts []promptConfig, basePath configkit.Path, namespace string, resolution *configkit.Resolution, destination map[string][]promptInputPresence) {
func capturePromptMetadata(prompts []promptConfig, basePath configkit.Path, namespace string, resolution *configkit.Resolution, destination map[string][]promptInputPresence, repair map[string]bool) {
for promptIndex, prompt := range prompts {
inputs := prompt.Inputs
states := make([]promptInputPresence, len(inputs))
@@ -329,11 +332,13 @@ func capturePromptMetadata(prompts []promptConfig, basePath configkit.Path, name
for index := range inputs {
path := base.Index(index)
states[index] = promptInputPresence{
required: captureFieldState(path.Key("required"), resolution),
contentType: captureFieldState(path.Key("content_type"), resolution),
description: captureFieldState(path.Key("description"), resolution),
}
}
destination[indexedResourceID(namespace, prompt.ID)] = states
repair[indexedResourceID(namespace, prompt.ID)] = captureFieldState(basePath.Index(promptIndex).Key("output").Key("repair_attempts"), resolution) == fieldValue
}
}