Files
notarius/internal/modules/chunk/dnd/scenes/scriptorium_assets.go

46 lines
1.5 KiB
Go
Raw Normal View History

2026-07-05 18:13:10 +00:00
package scenes
import (
"fmt"
2026-07-05 18:13:10 +00:00
"sync"
"gitea.maximumdirect.net/eric/notarius/internal/framework/llm"
2026-07-06 01:17:13 +00:00
"gitea.maximumdirect.net/eric/notarius/internal/modules/sharedassets"
"gitea.maximumdirect.net/eric/notarius/internal/modules/sharedassets/dnd"
2026-07-05 18:13:10 +00:00
)
2026-07-06 01:27:02 +00:00
const scriptoriumPromptRoot = "assets/prompts"
2026-07-05 18:13:10 +00:00
func RegisterPromptAssets(registry *llm.AssetRegistry) error {
promptFS, err := dnd.ModulePromptFS("dnd.scenes", embeddedAssets, []sharedassets.ModulePromptFile{
{Name: "dnd.scenes.yaml", Path: "assets/prompts/dnd.scenes.yaml"},
{Name: "task.md", Path: "assets/prompts/task.md"},
{Name: "instructions.md", Path: "assets/prompts/instructions.md"},
})
2026-07-06 01:27:02 +00:00
if err != nil {
return fmt.Errorf("prepare scene prompt assets: %w", err)
}
if err := registry.RegisterPromptFS(promptFS, scriptoriumPromptRoot); err != nil {
2026-07-05 18:13:10 +00:00
return err
}
return registry.RegisterSchemaFS(embeddedAssets, "assets/schemas")
}
func scriptoriumPromptMetadata() (string, error) {
scriptoriumPromptHashOnce.Do(func() {
parts := append([]llm.AssetHashPart{
2026-07-06 01:27:02 +00:00
{FS: embeddedAssets, Path: "assets/prompts/dnd.scenes.yaml"},
{FS: embeddedAssets, Path: "assets/prompts/task.md"},
{FS: embeddedAssets, Path: "assets/prompts/instructions.md"},
}, append(dnd.CommonHashParts(), dnd.ReferenceHashParts()...)...)
2026-07-05 18:13:10 +00:00
scriptoriumPromptHash, scriptoriumPromptHashErr = llm.HashAssets(parts)
})
return scriptoriumPromptHash, scriptoriumPromptHashErr
}
var (
scriptoriumPromptHashOnce sync.Once
scriptoriumPromptHash string
scriptoriumPromptHashErr error
)