Add D&D enemy event extractor
This commit is contained in:
@@ -130,12 +130,9 @@ func (r *groundingResolver) Resolve(references contracts.ReferenceSet) (groundin
|
||||
if !npcs.Bound() {
|
||||
return grounding{}, fmt.Errorf("NPC registry reference is required")
|
||||
}
|
||||
scenes, err := r.scenes.Resolve(references)
|
||||
scenes, err := r.resolveScenes(references)
|
||||
if err != nil {
|
||||
return grounding{}, fmt.Errorf("resolve scene eligibility: %w", err)
|
||||
}
|
||||
if !scenes.Bound() {
|
||||
return grounding{}, fmt.Errorf("scene descriptions reference is required")
|
||||
return grounding{}, err
|
||||
}
|
||||
combatTurns, err := resolveInput(references, CombatTurnReferenceSlot, r.combatTurns, prepareCombatTurnInput)
|
||||
if err != nil {
|
||||
@@ -153,6 +150,28 @@ func (r *groundingResolver) Resolve(references contracts.ReferenceSet) (groundin
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (r *groundingResolver) SceneMatch(references contracts.ReferenceSet, chunk *source.Chunk) (sceneregistry.ChunkMatch, error) {
|
||||
if r == nil {
|
||||
return sceneregistry.ChunkMatch{}, fmt.Errorf("grounding resolver must not be nil")
|
||||
}
|
||||
scenes, err := r.resolveScenes(references)
|
||||
if err != nil {
|
||||
return sceneregistry.ChunkMatch{}, err
|
||||
}
|
||||
return scenes.Match(chunk), nil
|
||||
}
|
||||
|
||||
func (r *groundingResolver) resolveScenes(references contracts.ReferenceSet) (*sceneregistry.Registry, error) {
|
||||
scenes, err := r.scenes.Resolve(references)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("resolve scene eligibility: %w", err)
|
||||
}
|
||||
if !scenes.Bound() {
|
||||
return nil, fmt.Errorf("scene descriptions reference is required")
|
||||
}
|
||||
return scenes, nil
|
||||
}
|
||||
|
||||
func resolveInput(references contracts.ReferenceSet, slot string, seeded *contracts.LLMInputMaterial, prepare func(contracts.ReferenceSet) (*contracts.LLMInputMaterial, error)) (contracts.LLMInputMaterial, error) {
|
||||
if _, ok := references.Slots[slot]; ok {
|
||||
value, err := prepare(references)
|
||||
|
||||
Reference in New Issue
Block a user