fix(book-pipeline): inference hints + LLM-filled context vars + roster roundtable

- book_research.yml: add inference hint when genre_name/genre_audience/research_focus are empty
- book_outline.yml: add inference hint for genre/audience; change package schema to ask LLM
  to FILL genre_name/genre_audience/prose_style/chapter_target_words from the outline text
  (was using {template_vars} which stay empty unless planning sets them)
- devon/agent.yml: add chapter_roundtable to supported_templates
- lane/agent.yml: add chapter_roundtable to supported_templates
  (all three editors now participate in roundtable — roster-driven, not hardcoded)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
David Baity
2026-03-12 02:16:18 -04:00
parent dd00c07a90
commit df62a19c3f
4 changed files with 28 additions and 14 deletions

View File

@@ -21,4 +21,5 @@ manages: []
department: editorial department: editorial
supported_templates: supported_templates:
- chapter_review - chapter_review
- chapter_roundtable
- book_editorial - book_editorial

View File

@@ -20,3 +20,4 @@ manages: []
department: editorial department: editorial
supported_templates: supported_templates:
- chapter_review - chapter_review
- chapter_roundtable

View File

@@ -30,8 +30,9 @@ steps:
hint: | hint: |
You are {agent.name}. This is round {task.iteration} of the creative boardroom. You are {agent.name}. This is round {task.iteration} of the creative boardroom.
GENRE: {genre_name} | AUDIENCE: {genre_audience} GENRE: {genre_name|[infer from project description if blank]}
STRUCTURE GUIDE: {outline_structure} AUDIENCE: {genre_audience|[infer from project description if blank]}
STRUCTURE GUIDE: {outline_structure|[use standard 3-act structure with chapter hooks if blank]}
The room is deciding on ONE book concept to write. The trend research The room is deciding on ONE book concept to write. The trend research
is in the DELIVERABLES and RAG above — everyone has read it. is in the DELIVERABLES and RAG above — everyone has read it.
@@ -145,15 +146,21 @@ steps:
You are the Project Manager. The outline above describes a multi-chapter book. You are the Project Manager. The outline above describes a multi-chapter book.
Convert EVERY chapter in the outline into a sequential create_task action for Iris. Convert EVERY chapter in the outline into a sequential create_task action for Iris.
CRITICAL — Fill in these values from the outline document you just wrote:
- genre_name: the exact genre (e.g., "YA Romance", "Science Fiction", "Literary Fiction")
- genre_audience: the target audience (e.g., "Young adults 1418", "Adult romance readers")
- prose_style: copy the 3-sentence Voice & Tone Guide from the outline exactly
- chapter_target_words: the target word count per chapter as a number string (e.g., "3500")
- chapter_ref: zero-padded two-digit chapter number, e.g. "ch-01", "ch-02", ... "ch-18"
Rules: Rules:
- One action per chapter (minimum {chapter_count} chapters) - One action per chapter (minimum {chapter_count|10} chapters)
- task_name format: "Write Chapter N: [Chapter Title]" - task_name format: "Write Chapter N: [Chapter Title]"
- agent_name: always "Iris" - agent_name: always "Iris"
- task_type: always "book_chapter" - task_type: always "book_chapter"
- description: Include the chapter summary, POV character, emotional beat, and cliffhanger from the outline. - description: Include the chapter summary, POV character, emotional beat, and cliffhanger from the outline.
Start with: "You are writing Chapter N of [Book Title]. [chapter summary]. POV: [character name]." Start with: "You are writing Chapter N of [Book Title]. [chapter summary]. POV: [character name]."
- depends_on: the exact task_name of the PREVIOUS chapter (empty string for Chapter 1) - depends_on: the exact task_name of the PREVIOUS chapter (empty string for Chapter 1)
- chapter_ref: zero-padded two-digit chapter number, e.g. "ch-01", "ch-02", ... "ch-18"
The depends_on chain creates sequential writing — each chapter waits for the previous to be committed. The depends_on chain creates sequential writing — each chapter waits for the previous to be committed.
schema: schema:
@@ -165,10 +172,10 @@ steps:
description: "string" description: "string"
depends_on: "string" depends_on: "string"
context: context:
genre_name: "{genre_name}" genre_name: "string"
genre_audience: "{genre_audience}" genre_audience: "string"
prose_style: "{prose_style}" prose_style: "string"
chapter_target_words: "{chapter_target_words}" chapter_target_words: "string"
chapter_ref: "string" chapter_ref: "string"
- type: close - type: close

View File

@@ -26,14 +26,17 @@ builders:
steps: steps:
- type: think - type: think
hint: | hint: |
You are researching the current {genre_name} fiction landscape. You are researching the current fiction landscape for this book project.
TARGET AUDIENCE: {genre_audience} GENRE: {genre_name|[infer from the project description above]}
GENRE: {genre_name} TARGET AUDIENCE: {genre_audience|[infer from the project description above]}
RESEARCH FOCUS: {research_focus} RESEARCH FOCUS: {research_focus|[infer: what trends, tropes, and reader expectations matter most for this project?]}
NOTE: If GENRE, TARGET AUDIENCE, or RESEARCH FOCUS are blank above, read the
PROJECT DESCRIPTION section and infer them from the project's stated goal.
Your mission: identify the single best search query to find what's TRENDING RIGHT NOW Your mission: identify the single best search query to find what's TRENDING RIGHT NOW
in {genre_name} fiction in 20252026. in this fiction genre in 20252026.
State your analysis, then on the last line write: State your analysis, then on the last line write:
SEARCH QUERY: [your query here] SEARCH QUERY: [your query here]
@@ -49,7 +52,9 @@ steps:
You have live search results above (in PRIOR RESULTS). You have live search results above (in PRIOR RESULTS).
If the web search results are empty or unavailable, use your expert training knowledge. If the web search results are empty or unavailable, use your expert training knowledge.
Synthesize the findings into an actionable publishing brief for a {genre_name} book: Infer the GENRE and AUDIENCE from the PROJECT DESCRIPTION if not explicitly provided above.
Synthesize the findings into an actionable publishing brief for this book:
1. TOP TRENDING — What sub-genres and themes are hot right now? Rank them. 1. TOP TRENDING — What sub-genres and themes are hot right now? Rank them.
2. AUDIENCE INSIGHTS — What does the target reader ({genre_audience}) demand? 2. AUDIENCE INSIGHTS — What does the target reader ({genre_audience}) demand?