Reuse prepared glossary data across stage sections
This commit is contained in:
32
internal/framework/promptcontext/glossary.go
Normal file
32
internal/framework/promptcontext/glossary.go
Normal file
@@ -0,0 +1,32 @@
|
||||
package promptcontext
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
|
||||
"gitea.maximumdirect.net/eric/audita/v3/internal/core/glossary"
|
||||
)
|
||||
|
||||
// GlossaryVariables contains the glossary inputs shared by a stage's proposals.
|
||||
type GlossaryVariables struct {
|
||||
ContextJSON string
|
||||
ProtectionJSON string
|
||||
}
|
||||
|
||||
func PrepareGlossaryVariables(entries []glossary.Entry, terms []glossary.Term) (GlossaryVariables, error) {
|
||||
contextJSON, err := json.MarshalIndent(entries, "", " ")
|
||||
if err != nil {
|
||||
return GlossaryVariables{}, fmt.Errorf("marshal glossary prompt context: %w", err)
|
||||
}
|
||||
protected := make([]string, 0, len(terms))
|
||||
for _, term := range terms {
|
||||
if !term.Exempt {
|
||||
protected = append(protected, term.Spelling)
|
||||
}
|
||||
}
|
||||
protectionJSON, err := json.Marshal(protected)
|
||||
if err != nil {
|
||||
return GlossaryVariables{}, fmt.Errorf("marshal protected spellings: %w", err)
|
||||
}
|
||||
return GlossaryVariables{ContextJSON: string(contextJSON), ProtectionJSON: string(protectionJSON)}, nil
|
||||
}
|
||||
Reference in New Issue
Block a user