Files

316 lines
13 KiB
Markdown
Raw Permalink Normal View History

0.39.0 (#274) - **Help Agent** — A new agent that answers questions about Talemate itself — settings, agents, clients, the world editor — grounded in the bundled documentation, and able to change agent and application settings on request. - **Timeline Rollback** — Scrub a slider across a scene's automatic version history, preview the message history at any revision, then roll the scene back in place or fork the revision into a new save. - **Pi Bridge Client** — A new client type that drives generations through the pi coding agent's headless RPC mode, making any model pi can reach usable in Talemate. - **Application Settings** — Settings move out of their modal into an always-available Settings tab, with a single topic-grouped sidebar, a settings search, all API keys on one page, and unsaved-change tracking. - **Scene Library** — The home screen is rebuilt as a full-page landing view with a file-tree scene library, cover thumbnails and per-save metadata, scene and save deletion, and a drag-and-drop import dropzone. - **Fast Character Creation** — Generate a character in a single request instead of one prompt per aspect, with a Consolidate multi-select, a token budget, and a Fill in misses pass. Off by default. - **Scene Backdrop** — Set any scene illustration as a backdrop filling the scene view behind the messages, saved with the scene, with configurable text legibility and an Immersive quick-toggle. - **Scene Visual Manager** — World Editor → Scene gains a Visuals tab to browse, upload, generate and delete the scene's backgrounds and illustrations, and set the cover image and backdrop. - **Visual Prompt Finalization** — Post-processing actions — match and replace, or a free-form AI instruction — rewrite image prompts right before they reach the image backend, with per-scene and per-character overrides and reusable template sets. - fixes #271 - fixes #275 Plus 25 improvements and 39 bug fixes — see [CHANGELOG.md](https://github.com/vegu-ai/talemate/blob/prep-0.39.0/CHANGELOG.md#0390) for the full list.
2026-08-29 13:21:22 +03:00
# Creator Agent Nodes
Content creation through the creator agent: contextual generation, character creation and per-character derivations (name, description, dialogue instructions) plus thematic lists.
!!! note "Create Character module changes in 0.39.0"
The [Create Character](#create-character) module now builds its character through the [Generate Character](#generate-character) node, so it follows the Creator agent's [Character Creation settings](/talemate/user-guide/agents/creator/settings/) (including Fast mode). It also gained two inputs:
- `generate_dialogue_instructions` defaults **on** — existing graphs calling the module now generate dialogue instructions for the new character, which is an extra prompt whenever Fast mode is off (or not consolidating that aspect).
- `generate_example_dialogue` defaults **off**.
<!-- glossary:generated - everything below this line is generated by `python -m talemate.game.engine.nodes.tools glossary --write` - do not edit -->
_9 nodes._
| Node | Registry path |
| --- | --- |
| [Contextual Generate](#contextual-generate) | `agents/creator/ContextualGenerate` |
| [Create Character](#create-character) | `agents/creator/CreateCharacter` |
| [Determine Character Description](#determine-character-description) | `agents/creator/DetermineCharacterDescription` |
| [Determine Character Dialogue Instructions](#determine-character-dialogue-instructions) | `agents/creator/DetermineCharacterDialogueInstructions` |
| [Determine Character Name](#determine-character-name) | `agents/creator/DetermineCharacterName` |
| [Determine Content Context](#determine-content-context) | `agents/creator/DetermineContentContext` |
| [Generate Character](#generate-character) | `agents/creator/GenerateCharacter` |
| [Generate Thematic List](#generate-thematic-list) | `agents/creator/GenerateThematicList` |
| [Creator Settings](#creator-settings) | `agents/creator/Settings` |
## Contextual Generate
`agents/creator/ContextualGenerate`
Generates text based on the given context.
**Inputs**
| Input | Type | Description |
| --- | --- | --- |
| `state` | `any` | The current state of the graph |
| `context_type` | `str` | (optional) The type of context to use in generating the text |
| `context_name` | `str` | (optional) The name of the context to use in generating the text |
| `instructions` | `str` | (optional) The instructions to use in generating the text |
| `length` | `int` | (optional) The length of the text to generate |
| `character` | `character,str` | (optional) The character to generate the text for |
| `original` | `str` | (optional) The original text to use in generating the text |
| `partial` | `str` | (optional) The partial text to use in generating the text |
| `uid` | `str` | (optional) The uid to use in generating the text |
| `generation_options` | `generation_options` | (optional) The generation options to use in generating the text |
**Outputs**
| Output | Type | Description |
| --- | --- | --- |
| `state` | `any` | The updated state of the graph |
| `text` | `str` | The generated text |
| `character` | `character` | The character object resolved from the character input |
| `context_type` | `str` | The context type, passed through |
| `context_name` | `str` | The context name, passed through |
| `instructions` | `str` | The instructions, passed through |
| `original` | `str` | The original text, passed through |
**Properties**
| Property | Type | Default | Description |
| --- | --- | --- | --- |
| `context_type` | `str` | `"general"` | The type of context to use in generating the text. Choices: `character attribute`, `character detail`, `character dialogue`, `scene intro`, `scene intent`, `scene phase intent`, `scene type description`, `scene type instructions`, `general`, `list`, `scene`, `static history`, …. |
| `context_name` | `str` | `unset` | The name of the context to use in generating the text |
| `instructions` | `str` | `unset` | The instructions to use in generating the text |
| `length` | `int` | `100` | The length of the text to generate |
| `character` | `str` | `unset` | The character to generate the text for |
| `uid` | `str` | `unset` | The uid to use in generating the text |
| `context_aware` | `bool` | `True` | Whether to use the context in generating the text |
| `history_aware` | `bool` | `True` | Whether to use the history in generating the text |
## Create Character
`agents/creator/CreateCharacter`
Node module (base type `core/Graph`) defined in `src/talemate/agents/creator/modules/create-character.json`.
**Inputs**
| Input | Type | Description |
| --- | --- | --- |
| `state` | `any` | |
| `instructions` | `str` | |
| `character_name` | `str` | (optional) |
| `description` | `str` | (optional) |
| `generate` | `bool` | (optional) |
| `generate_attributes` | `bool` | (optional) |
| `generate_dialogue_instructions` | `bool` | (optional) |
| `generate_example_dialogue` | `bool` | (optional) |
| `is_active` | `bool` | (optional) |
| `generation_options` | `generation_options` | (optional) |
| `is_player` | `bool` | (optional) |
| `assign_voice` | `bool` | (optional) |
**Outputs**
| Output | Type | Description |
| --- | --- | --- |
| `state` | `` | |
| `character` | `character` | |
| `actor` | `actor` | |
## Determine Character Description
`agents/creator/DetermineCharacterDescription`
Determines the description for a character.
**Inputs**
| Input | Type | Description |
| --- | --- | --- |
| `state` | `any` | The current state of the graph |
| `character` | `character` | The character to determine the description for |
| `extra_context` | `str` | (optional) Extra context to use in determining the description |
**Outputs**
| Output | Type | Description |
| --- | --- | --- |
| `description` | `str` | The determined description (empty if the model produced nothing) |
## Determine Character Dialogue Instructions
`agents/creator/DetermineCharacterDialogueInstructions`
Determines dialogue (acting) instructions for a character, via the
creator agent. The result is returned but not stored on the character
by this node.
**Inputs**
| Input | Type | Description |
| --- | --- | --- |
| `state` | `any` | The current state of the graph |
| `character` | `character` | The character to determine dialogue instructions for |
| `instructions` | `str` | Additional instructions to guide the generation (optional) |
| `update_existing` | `bool` | Whether to base the result on the character's existing dialogue instructions (optional) |
**Outputs**
| Output | Type | Description |
| --- | --- | --- |
| `state` | `any` | The state input, passed through |
| `character` | `character` | The character, passed through |
| `dialogue_instructions` | `str` | The determined dialogue instructions |
| `original` | `str` | The character's dialogue instructions before generation |
**Properties**
| Property | Type | Default | Description |
| --- | --- | --- | --- |
| `instructions` | `text` | `""` | Any additional instructions to use in determining the dialogue instructions |
| `update_existing` | `bool` | `False` | Whether to update the existing dialogue instructions |
## Determine Character Name
`agents/creator/DetermineCharacterName`
Determines (or clarifies) a character name from an existing or descriptive name.
**Inputs**
| Input | Type | Description |
| --- | --- | --- |
| `state` | `any` | The current state of the graph |
| `character_name` | `str` | (optional) The current or descriptive character name |
| `allowed_names` | `list` | (optional) Optional list of allowed names to select from |
| `is_group` | `bool` | (optional) Whether the name describes a group of characters |
| `instructions` | `str` | (optional) Additional instructions to guide name generation |
**Outputs**
| Output | Type | Description |
| --- | --- | --- |
| `state` | `any` | The current state of the graph (pass-through) |
| `character_name` | `str` | The determined name |
| `original` | `str` | The original character_name input |
| `allowed_names` | `list` | The allowed_names input (pass-through) |
| `is_group` | `bool` | The is_group input (pass-through) |
| `instructions` | `str` | The instructions input (pass-through) |
**Properties**
| Property | Type | Default | Description |
| --- | --- | --- | --- |
| `character_name` | `str` | `""` | The current or descriptive character name |
| `allowed_names` | `list` | `[]` | Optional list of allowed names to select from |
| `is_group` | `bool` | `False` | Whether the name describes a group of characters |
| `instructions` | `text` | `""` | Additional instructions to guide name generation |
## Determine Content Context
`agents/creator/DetermineContentContext`
Determines a fitting content context label (genre / style descriptor)
for the given description, via the creator agent.
**Inputs**
| Input | Type | Description |
| --- | --- | --- |
| `state` | `any` | The current state of the graph |
| `description` | `str` | (optional) The description to determine the content context for (required at runtime despite the optional socket) |
**Outputs**
| Output | Type | Description |
| --- | --- | --- |
| `content_context` | `str` | The determined content context |
**Properties**
| Property | Type | Default | Description |
| --- | --- | --- | --- |
| `description` | `str` | `unset` | Description of the context |
## Generate Character
`agents/creator/GenerateCharacter`
Generates character data through the creator agent's character
generation pipeline, following the agent's "Character Creation"
settings.
With "Fast Character Generation" enabled, the aspects listed in the
agent's "Consolidate" setting are generated with a single
consolidated prompt (response budget from the "One-shot token budget"
setting; aspects the response misses are handled according to the
"Fill in misses" setting - individual follow-up requests or left
empty; a completely unparseable response raises an error). Remaining
aspects - or all of them, with Fast mode disabled - are generated
individually.
This node only generates data - it does not add the character to the
scene. Wire the outputs into an `agents/director/PersistCharacter` node
to persist the character (disable `determine_name` on that node when
wiring a generated name, and wire `description` through as well, so
nothing is generated twice).
Generating example dialogue requires a name: provide `character_name`
or enable `generate_name` - the node errors otherwise.
**Inputs**
| Input | Type | Description |
| --- | --- | --- |
| `state` | `any` | The current state of the graph |
| `character_name` | `str` | The current or descriptive character name (optional) |
| `instructions` | `str` | Guiding instructions / content for the creation (optional) |
| `description` | `str` | An existing description to use as context (optional) |
| `generation_options` | `generation_options` | Spice / writing style to shape the description (optional) |
| `generate_name` | `bool` | Whether to generate a name (optional) |
| `generate_description` | `bool` | Whether to generate a description (optional) |
| `generate_attributes` | `bool` | Whether to generate attributes (optional) |
| `generate_dialogue_instructions` | `bool` | Whether to generate dialogue instructions (optional) |
| `generate_example_dialogue` | `bool` | Whether to generate example dialogue lines (optional) |
**Outputs**
| Output | Type | Description |
| --- | --- | --- |
| `state` | `any` | The state input, passed through |
| `character_name` | `str` | The determined (or input) character name |
| `description` | `str` | The generated (or input) description |
| `attributes` | `dict` | The generated attributes (empty if not generated) |
| `dialogue_instructions` | `str` | The generated dialogue instructions (empty if not generated) |
| `example_dialogue` | `list` | The generated example dialogue lines (empty if not generated) |
**Properties**
| Property | Type | Default | Description |
| --- | --- | --- | --- |
| `generate_name` | `bool` | `False` | Determine a fitting character name |
| `generate_description` | `bool` | `True` | Generate the character description |
| `generate_attributes` | `bool` | `True` | Generate the character sheet (attributes) |
| `generate_dialogue_instructions` | `bool` | `True` | Generate dialogue (acting) instructions |
| `generate_example_dialogue` | `bool` | `False` | Generate example dialogue lines |
## Generate Thematic List
`agents/creator/GenerateThematicList`
Generates a list of thematic items based on the instructions.
**Inputs**
| Input | Type | Description |
| --- | --- | --- |
| `state` | `any` | |
| `instructions` | `str` | (optional) |
**Outputs**
| Output | Type | Description |
| --- | --- | --- |
| `state` | `any` | |
| `list` | `list` | |
**Properties**
| Property | Type | Default | Description |
| --- | --- | --- | --- |
| `instructions` | `str` | `unset` | The instructions to use in generating the list |
| `iterations` | `int` | `1` | The number of iterations to use in generating the list - 1 iteration will generate 20 items. Range: 1 10. |
## Creator Settings
`agents/creator/Settings`
Base node to render creator agent settings.
Every setting of the creator agent is exposed as an output socket named after the setting - see the agent's documentation under [Agents](../../../agents/index.md) for what each setting does.