Add an hourly weather report prompt with JSON output
This commit is contained in:
137
schemas/pipeline-dnd/analyze/scene_map.schema.json
Normal file
137
schemas/pipeline-dnd/analyze/scene_map.schema.json
Normal file
@@ -0,0 +1,137 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"title": "D&D Session Scene Map",
|
||||
"description": "Structured scene segmentation for a D&D session transcript.",
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"artifact_type",
|
||||
"session_scope",
|
||||
"scenes",
|
||||
"boundary_caveats"
|
||||
],
|
||||
"properties": {
|
||||
"artifact_type": {
|
||||
"type": "string",
|
||||
"const": "current_session_scene_map"
|
||||
},
|
||||
"session_scope": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"source_description",
|
||||
"first_segment_id",
|
||||
"last_segment_id",
|
||||
"limitations"
|
||||
],
|
||||
"properties": {
|
||||
"source_description": {
|
||||
"type": "string",
|
||||
"description": "Brief description of the transcript or source material reviewed."
|
||||
},
|
||||
"first_segment_id": {
|
||||
"type": "integer",
|
||||
"description": "The first transcript segment covered by the scene map."
|
||||
},
|
||||
"last_segment_id": {
|
||||
"type": "integer",
|
||||
"description": "The final transcript segment covered by the scene map."
|
||||
},
|
||||
"limitations": {
|
||||
"type": "array",
|
||||
"description": "Known limitations affecting scene segmentation.",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"scenes": {
|
||||
"type": "array",
|
||||
"description": "Sequential, contiguous, non-overlapping scene divisions covering the transcript.",
|
||||
"minItems": 1,
|
||||
"items": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"scene_id",
|
||||
"start_segment_id",
|
||||
"end_segment_id",
|
||||
"short_title",
|
||||
"primary_mode",
|
||||
"main_participants",
|
||||
"summary",
|
||||
"boundary_note",
|
||||
"boundary_confidence"
|
||||
],
|
||||
"properties": {
|
||||
"scene_id": {
|
||||
"type": "string",
|
||||
"description": "Stable sequential scene identifier, such as SCN-001.",
|
||||
"pattern": "^SCN-[0-9]{3}$"
|
||||
},
|
||||
"start_segment_id": {
|
||||
"type": "integer",
|
||||
"description": "Exact segment ID where this scene begins."
|
||||
},
|
||||
"end_segment_id": {
|
||||
"type": "integer",
|
||||
"description": "Exact segment ID where this scene ends."
|
||||
},
|
||||
"short_title": {
|
||||
"type": "string",
|
||||
"description": "Compact descriptive title for the scene."
|
||||
},
|
||||
"primary_mode": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"Recap",
|
||||
"Combat",
|
||||
"Social",
|
||||
"Exploration",
|
||||
"Downtime",
|
||||
"Travel",
|
||||
"Planning",
|
||||
"Preparation",
|
||||
"Rest",
|
||||
"Rules",
|
||||
"Mixed"
|
||||
],
|
||||
"description": "The dominant mode of play in the scene."
|
||||
},
|
||||
"main_participants": {
|
||||
"type": "array",
|
||||
"description": "Principal player characters, NPCs, factions, or groups involved in the scene.",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"summary": {
|
||||
"type": "string",
|
||||
"description": "One- to three-sentence factual summary of what happened in the scene."
|
||||
},
|
||||
"boundary_note": {
|
||||
"type": "string",
|
||||
"description": "Brief explanation of why the scene starts and ends at these segment boundaries."
|
||||
},
|
||||
"boundary_confidence": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"High",
|
||||
"Medium",
|
||||
"Low"
|
||||
],
|
||||
"description": "Confidence that the chosen scene boundaries are natural and useful."
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"boundary_caveats": {
|
||||
"type": "array",
|
||||
"description": "Overall caveats about scene segmentation, ambiguous transitions, map-dependent context, or alternative reasonable divisions.",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
122
schemas/pipeline-dnd/trim/bounds.schema.json
Normal file
122
schemas/pipeline-dnd/trim/bounds.schema.json
Normal file
@@ -0,0 +1,122 @@
|
||||
{
|
||||
"schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"type": "object",
|
||||
"description": "Identifies the inclusive range of transcript segment IDs that covers the actual Dungeons & Dragons gameplay session, excluding pre-session chatter and post-session banter.",
|
||||
"required": [
|
||||
"trim_action",
|
||||
"start_segment_id",
|
||||
"end_segment_id",
|
||||
"confidence",
|
||||
"start_boundary_reason",
|
||||
"end_boundary_reason",
|
||||
"start_evidence",
|
||||
"end_evidence",
|
||||
"excluded_prefix_summary",
|
||||
"excluded_suffix_summary",
|
||||
"warnings"
|
||||
],
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"trim_action": {
|
||||
"type": "string",
|
||||
"description": "Whether the transcript should be trimmed, appears to need no trimming, or is too ambiguous for confident trimming.",
|
||||
"enum": [
|
||||
"trim",
|
||||
"no_trim_needed",
|
||||
"uncertain"
|
||||
]
|
||||
},
|
||||
"start_segment_id": {
|
||||
"type": "integer",
|
||||
"description": "The inclusive segment ID where actual gameplay begins. This should be the first meaningful gameplay segment, such as the DM's opening recap, scene-setting, or the first in-world decision.",
|
||||
"minimum": 0
|
||||
},
|
||||
"end_segment_id": {
|
||||
"type": "integer",
|
||||
"description": "The inclusive segment ID where actual gameplay ends. This should be the final meaningful gameplay segment, such as final in-world narration, an adjudicated action, a cliffhanger, or a next-session handoff.",
|
||||
"minimum": 0
|
||||
},
|
||||
"confidence": {
|
||||
"type": "string",
|
||||
"description": "Confidence in the selected boundaries.",
|
||||
"enum": [
|
||||
"high",
|
||||
"medium",
|
||||
"low"
|
||||
]
|
||||
},
|
||||
"start_boundary_reason": {
|
||||
"type": "string",
|
||||
"description": "Brief explanation of why the selected start segment is the first gameplay segment."
|
||||
},
|
||||
"end_boundary_reason": {
|
||||
"type": "string",
|
||||
"description": "Brief explanation of why the selected end segment is the last gameplay segment."
|
||||
},
|
||||
"start_evidence": {
|
||||
"type": "object",
|
||||
"description": "Short evidence supporting the selected start boundary.",
|
||||
"properties": {
|
||||
"segment_id": {
|
||||
"type": "integer",
|
||||
"description": "The segment ID used as evidence for the start boundary.",
|
||||
"minimum": 0
|
||||
},
|
||||
"speaker": {
|
||||
"type": "string",
|
||||
"description": "The speaker of the evidence segment."
|
||||
},
|
||||
"text_excerpt": {
|
||||
"type": "string",
|
||||
"description": "A short excerpt from the evidence segment showing why gameplay begins here."
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"segment_id",
|
||||
"speaker",
|
||||
"text_excerpt"
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"end_evidence": {
|
||||
"type": "object",
|
||||
"description": "Short evidence supporting the selected end boundary.",
|
||||
"properties": {
|
||||
"segment_id": {
|
||||
"type": "integer",
|
||||
"description": "The segment ID used as evidence for the end boundary.",
|
||||
"minimum": 0
|
||||
},
|
||||
"speaker": {
|
||||
"type": "string",
|
||||
"description": "The speaker of the evidence segment."
|
||||
},
|
||||
"text_excerpt": {
|
||||
"type": "string",
|
||||
"description": "A short excerpt from the evidence segment showing why gameplay ends here."
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"segment_id",
|
||||
"speaker",
|
||||
"text_excerpt"
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"excluded_prefix_summary": {
|
||||
"type": "string",
|
||||
"description": "Brief summary of the material excluded before the start segment. Use an empty string if no prefix was excluded."
|
||||
},
|
||||
"excluded_suffix_summary": {
|
||||
"type": "string",
|
||||
"description": "Brief summary of the material excluded after the end segment. Use an empty string if no suffix was excluded."
|
||||
},
|
||||
"warnings": {
|
||||
"type": "array",
|
||||
"description": "Any caveats, ambiguities, or reasons the boundary selection may need human review.",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user