1 Commits

Author SHA1 Message Date
aladac 74d68261df feat(characters): named prompt-fragment library + --character/--character-prompt
Adds a 'character' subsystem for reusable prompt fragments stored as YAML
lists in ~/.local/share/tensors/characters/<name>.yml.

New tensors.characters module:
- save_character / load_character / list_characters / delete_character
- parse_elements + resolve_character (named + inline merge with dedup)
- Path-traversal-safe name validation ([A-Za-z0-9_.-]+)
- JSON-encoded YAML scalars on write; tolerant reader (JSON, single-quoted YAML, bare)

New CLI:
- tsr character save -o <name> 'elem1, elem2, ...'
- tsr character list / show / delete

Wired into generate + template + style-sweep:
- tsr generate -C <name> / --character-prompt 'elems' injects character
  elements into the positive prompt (after quality_prefix, before user prompt)
- tsr template -C <name> / --character-prompt 'elems' embeds a 'character'
  list field in the dumped JSON template (named + inline merged, deduped)
- style-sweep templates accept 'character' (str|list) and 'character_prompt'
  keys; lists are passed through verbatim, names are looked up at run-time
- generate --input JSON honors both 'character' (str=name or list=inline)
  and 'character_prompt' keys

37 new tests cover module behavior. Bumps version to 0.1.23.
2026-05-18 02:12:15 +02:00