Add the Narratio D&D processing configuration

This commit is contained in:
2026-09-11 02:23:31 +00:00
parent bc6df2ac4b
commit 7ca812c228
11 changed files with 220 additions and 0 deletions

View File

@@ -50,3 +50,64 @@ dnd_pipeline_audita_context_description: >-
to actual D&D gameplay.
dnd_pipeline_audita_diagnostics_work_dir: /tmp/audita
dnd_pipeline_audita_diagnostics_retention: auto
dnd_pipeline_narratio_seriatim_output_schema: seriatim-intermediate
dnd_pipeline_narratio_normalize_output_path: transcripts/final.json
dnd_pipeline_narratio_normalize_output_schema: seriatim-intermediate
dnd_pipeline_narratio_trim_enabled: true
dnd_pipeline_narratio_trim_output_path: transcripts/final.trimmed.json
dnd_pipeline_narratio_trim_bounds_prompt_id: dnd.session_bounds
dnd_pipeline_narratio_trim_bounds_transcript_input_name: transcript
dnd_pipeline_narratio_trim_bounds_output_path: artifacts/session_bounds.json
dnd_pipeline_narratio_render_enabled: true
dnd_pipeline_narratio_render_format: markdown
dnd_pipeline_narratio_session_recap_artifact:
enabled: true
prompt_id: dnd.session_recap
output_path: artifacts/session_recap.md
inputs:
transcript:
source: narratio.transcript.final_trimmed
required: true
recap:
source: narratio.previous_session.artifact.session_recap
required: false
dnd_pipeline_narratio_hostile_rumors_artifact:
enabled: true
prompt_id: dnd.hostile_rumors
output_path: artifacts/hostile_rumors.md
inputs:
recap:
source: narratio.artifact.session_recap
required: true
dnd_pipeline_narratio_deranged_rumors_artifact:
enabled: true
prompt_id: dnd.deranged_rumors
output_path: artifacts/deranged_rumors.md
inputs:
recap:
source: narratio.artifact.session_recap
required: true
dnd_pipeline_narratio_scene_map_artifact:
enabled: false
prompt_id: dnd.scene_map
output_path: artifacts/scene_map.json
inputs:
transcript:
source: narratio.transcript.final_trimmed
required: true
dnd_pipeline_narratio_character_analysis_family:
enabled: false
for_each: party.characters
prompt_id: dnd.character_meta_analysis
output_path_pattern: artifacts/character_meta_analysis/{character_id}.md
inputs:
transcript:
source: narratio.transcript.final_trimmed
required: true
recap:
source: narratio.previous_session.artifact.session_recap
required: false
member_vars:
character_name: character.name
character_class: character.class_summary
dnd_pipeline_narratio_testing_scriptorium_profile: gemini-flash-latest

View File

@@ -180,3 +180,67 @@ argument_specs:
type: str
required: true
description: Audita diagnostics retention policy.
dnd_pipeline_narratio_seriatim_output_schema:
type: str
required: true
description: Seriatim schema consumed by the D&D processing workflow.
dnd_pipeline_narratio_normalize_output_path:
type: str
required: true
description: Canonical normalized transcript output path.
dnd_pipeline_narratio_normalize_output_schema:
type: str
required: true
description: Schema for the normalized transcript output.
dnd_pipeline_narratio_trim_enabled:
type: bool
required: true
description: Whether D&D transcript trimming is enabled.
dnd_pipeline_narratio_trim_output_path:
type: str
required: true
description: Canonical trimmed transcript output path.
dnd_pipeline_narratio_trim_bounds_prompt_id:
type: str
required: true
description: Prompt that identifies D&D session bounds.
dnd_pipeline_narratio_trim_bounds_transcript_input_name:
type: str
required: true
description: Bounds prompt input receiving the transcript.
dnd_pipeline_narratio_trim_bounds_output_path:
type: str
required: true
description: Canonical session-bounds artifact output path.
dnd_pipeline_narratio_render_enabled:
type: bool
required: true
description: Whether transcript rendering is enabled.
dnd_pipeline_narratio_render_format:
type: str
required: true
description: Format for rendered D&D transcripts.
dnd_pipeline_narratio_session_recap_artifact:
type: dict
required: true
description: Complete native mapping for the session recap artifact.
dnd_pipeline_narratio_hostile_rumors_artifact:
type: dict
required: true
description: Complete native mapping for the hostile rumors artifact.
dnd_pipeline_narratio_deranged_rumors_artifact:
type: dict
required: true
description: Complete native mapping for the deranged rumors artifact.
dnd_pipeline_narratio_scene_map_artifact:
type: dict
required: true
description: Complete native mapping for the scene map artifact.
dnd_pipeline_narratio_character_analysis_family:
type: dict
required: true
description: Complete native mapping for the character analysis family.
dnd_pipeline_narratio_testing_scriptorium_profile:
type: str
required: true
description: Scriptorium profile selected by the testing overlay.

View File

@@ -80,6 +80,13 @@ dependencies:
narratio_go_binary: "{{ dnd_pipeline_go_binary }}"
narratio_whisperx_transcribe_url: "{{ dnd_pipeline_whisperx_transcribe_url }}"
narratio_campaigns_root: "{{ dnd_pipeline_campaigns_root }}"
narratio_configkit_imports:
- path: conf.d/processing.yml
- path: artifacts/session-recap.yml
- path: artifacts/hostile-rumors.yml
- path: artifacts/deranged-rumors.yml
- path: artifacts/scene-map.yml
- path: artifact-families/character-meta-analysis.yml
narratio_seriatim_binary: /usr/local/bin/seriatim
narratio_audita_binary: /usr/local/bin/audita
narratio_audita_config_path: /usr/local/etc/audita/config.yml

View File

@@ -25,3 +25,41 @@
version: "{{ dnd_pipeline_prompt_library_revision }}"
update: true
force: true
- name: Create Narratio configuration directories
become: true
ansible.builtin.file:
path: "/usr/local/etc/narratio/{{ item }}"
state: directory
owner: root
group: narratio
mode: "0750"
loop:
- conf.d
- artifacts
- artifact-families
- profiles
- name: Deploy Narratio D&D configuration fragments
become: true
ansible.builtin.template:
src: "{{ item.src }}"
dest: "/usr/local/etc/narratio/{{ item.dest }}"
owner: root
group: narratio
mode: "0640"
loop:
- src: processing.yml.j2
dest: conf.d/processing.yml
- src: session-recap.yml.j2
dest: artifacts/session-recap.yml
- src: hostile-rumors.yml.j2
dest: artifacts/hostile-rumors.yml
- src: deranged-rumors.yml.j2
dest: artifacts/deranged-rumors.yml
- src: scene-map.yml.j2
dest: artifacts/scene-map.yml
- src: character-meta-analysis.yml.j2
dest: artifact-families/character-meta-analysis.yml
- src: testing.yml.j2
dest: profiles/testing.yml

View File

@@ -0,0 +1,4 @@
scriptorium:
artifact_families:
character_meta_analysis:
{{ dnd_pipeline_narratio_character_analysis_family | to_nice_yaml(indent=2) | indent(6, true) }}

View File

@@ -0,0 +1,4 @@
scriptorium:
artifacts:
deranged_rumors:
{{ dnd_pipeline_narratio_deranged_rumors_artifact | to_nice_yaml(indent=2) | indent(6, true) }}

View File

@@ -0,0 +1,4 @@
scriptorium:
artifacts:
hostile_rumors:
{{ dnd_pipeline_narratio_hostile_rumors_artifact | to_nice_yaml(indent=2) | indent(6, true) }}

View File

@@ -0,0 +1,17 @@
audita:
output_schema: {{ dnd_pipeline_audita_output_schema | to_json }}
seriatim:
output_schema: {{ dnd_pipeline_narratio_seriatim_output_schema | to_json }}
normalize:
output_path: {{ dnd_pipeline_narratio_normalize_output_path | to_json }}
output_schema: {{ dnd_pipeline_narratio_normalize_output_schema | to_json }}
trim:
enabled: {{ dnd_pipeline_narratio_trim_enabled | to_json }}
output_path: {{ dnd_pipeline_narratio_trim_output_path | to_json }}
bounds:
prompt_id: {{ dnd_pipeline_narratio_trim_bounds_prompt_id | to_json }}
transcript_input_name: {{ dnd_pipeline_narratio_trim_bounds_transcript_input_name | to_json }}
output_path: {{ dnd_pipeline_narratio_trim_bounds_output_path | to_json }}
render:
enabled: {{ dnd_pipeline_narratio_render_enabled | to_json }}
format: {{ dnd_pipeline_narratio_render_format | to_json }}

View File

@@ -0,0 +1,4 @@
scriptorium:
artifacts:
scene_map:
{{ dnd_pipeline_narratio_scene_map_artifact | to_nice_yaml(indent=2) | indent(6, true) }}

View File

@@ -0,0 +1,4 @@
scriptorium:
artifacts:
session_recap:
{{ dnd_pipeline_narratio_session_recap_artifact | to_nice_yaml(indent=2) | indent(6, true) }}

13
templates/testing.yml.j2 Normal file
View File

@@ -0,0 +1,13 @@
scriptorium:
artifacts:
session_recap:
profile_id: {{ dnd_pipeline_narratio_testing_scriptorium_profile | to_json }}
hostile_rumors:
profile_id: {{ dnd_pipeline_narratio_testing_scriptorium_profile | to_json }}
deranged_rumors:
profile_id: {{ dnd_pipeline_narratio_testing_scriptorium_profile | to_json }}
scene_map:
profile_id: {{ dnd_pipeline_narratio_testing_scriptorium_profile | to_json }}
artifact_families:
character_meta_analysis:
profile_id: {{ dnd_pipeline_narratio_testing_scriptorium_profile | to_json }}