Files
notarius/internal/modules/dnd/normalize/npcs/prompt_assets.go

67 lines
1.7 KiB
Go
Raw Normal View History

2026-07-26 01:27:34 +00:00
package npcs
import (
"fmt"
2026-08-05 00:40:47 +00:00
"io/fs"
2026-07-26 01:27:34 +00:00
"sync"
2026-08-05 00:40:47 +00:00
rootassets "gitea.maximumdirect.net/eric/notarius/assets"
2026-07-26 01:27:34 +00:00
"gitea.maximumdirect.net/eric/notarius/internal/framework/llm"
"gitea.maximumdirect.net/eric/notarius/internal/framework/promptfs"
"gitea.maximumdirect.net/eric/notarius/internal/modules/dnd/shared"
)
const promptAssetRoot = "assets/prompts"
2026-07-26 01:27:34 +00:00
var promptAssetManifest = shared.PromptAssetManifest{
ModuleDir: PromptID,
ModuleFiles: []promptfs.ModulePromptFile{
2026-08-05 14:37:18 +00:00
{Name: "prompt.yaml", Path: "prompts/prompt.yaml"},
2026-08-05 00:40:47 +00:00
{Name: "task.md", Path: "prompts/task.md"},
{Name: "candidates.md", Path: "prompts/candidates.md"},
2026-07-26 01:27:34 +00:00
},
SharedFiles: []string{
"common-dnd-system.md",
"common-dnd-entity-reconciliation.md",
2026-08-05 14:33:00 +00:00
"common-dnd-transcript-windows.md",
2026-07-26 01:27:34 +00:00
},
}
2026-08-05 00:40:47 +00:00
func moduleAssetFS() (fs.FS, error) {
assets, err := fs.Sub(rootassets.FS(), "dnd/npcs/normalize")
if err != nil {
return nil, fmt.Errorf("scope NPC normalization assets: %w", err)
}
return assets, nil
}
2026-07-26 01:27:34 +00:00
func RegisterPromptAssets(registry *llm.AssetRegistry) error {
2026-08-05 00:40:47 +00:00
assets, err := moduleAssetFS()
if err != nil {
return err
}
promptFS, err := promptAssetManifest.PromptFS(assets)
2026-07-26 01:27:34 +00:00
if err != nil {
return fmt.Errorf("prepare NPC normalization prompt assets: %w", err)
}
return registry.RegisterPromptFS(promptFS, promptAssetRoot)
2026-07-26 01:27:34 +00:00
}
func promptAssetMetadata() (string, error) {
promptAssetHashOnce.Do(func() {
2026-08-05 00:40:47 +00:00
assets, err := moduleAssetFS()
if err != nil {
promptAssetHashErr = err
return
}
promptAssetHash, promptAssetHashErr = promptAssetManifest.Hash(assets)
2026-07-26 01:27:34 +00:00
})
return promptAssetHash, promptAssetHashErr
2026-07-26 01:27:34 +00:00
}
var (
promptAssetHashOnce sync.Once
promptAssetHash string
promptAssetHashErr error
2026-07-26 01:27:34 +00:00
)