Files
ADHDbot/PromptLibrary.py
2025-11-11 23:11:59 -06:00

52 lines
1.8 KiB
Python

import json
import os
from AppConfig import promptsFolderPath, schemaTemplateName
class PromptLibrary:
"""Simple prompt storage; swap with DB/API later without touching callers."""
promptCatalog = {}
@staticmethod
def reloadCatalog():
catalog = {}
if os.path.isdir(promptsFolderPath):
for fileName in os.listdir(promptsFolderPath):
if not fileName.endswith(".json"):
continue
if fileName == schemaTemplateName:
continue
filePath = os.path.join(promptsFolderPath, fileName)
try:
with open(filePath, "r", encoding="utf-8") as promptFile:
records = json.load(promptFile)
except (json.JSONDecodeError, OSError):
continue
if not isinstance(records, list):
records = [records]
for record in records:
category = record.get("category")
name = record.get("name")
template = record.get("template")
if not category or not name or not template:
continue
categoryPrompts = catalog.setdefault(category, {})
categoryPrompts[name] = template
generalPrompts = catalog.setdefault("general", {})
if "fallback" not in generalPrompts:
generalPrompts["fallback"] = "Still working on that, {user}. Here's what I can do next: {context}"
PromptLibrary.promptCatalog = catalog
@staticmethod
def fetch(category, promptName):
return PromptLibrary.promptCatalog.get(category, {}).get(promptName)
@staticmethod
def fallback():
return PromptLibrary.promptCatalog["general"]["fallback"]
PromptLibrary.reloadCatalog()