briyah 1.0.5 → 1.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/data/common/config/image_models.json +15 -0
- package/data/common/config/image_models_full.json +48 -0
- package/data/common/config/model_prices.json +37274 -0
- package/data/common/config/random_words.txt +2241 -0
- package/data/common/config/story_ideas.txt +6 -0
- package/data/common/config/story_models.json +23 -0
- package/data/common/config/story_models_full.json +45 -0
- package/data/common/prompts/character/compact_story.json +0 -0
- package/data/common/prompts/character/compact_story.mock +1 -0
- package/data/common/prompts/character/compact_story.prompt +18 -0
- package/data/common/prompts/character/create_character.json +29 -0
- package/data/common/prompts/character/create_character.mock +7 -0
- package/data/common/prompts/character/create_character.prompt +85 -0
- package/data/common/prompts/character/create_user_character.json +28 -0
- package/data/common/prompts/character/create_user_character.mock +7 -0
- package/data/common/prompts/character/create_user_character.prompt +60 -0
- package/data/common/prompts/character/describe_character.json +0 -0
- package/data/common/prompts/character/describe_character.prompt +32 -0
- package/data/common/prompts/character/import_character.json +29 -0
- package/data/common/prompts/character/import_character.prompt +87 -0
- package/data/common/prompts/character/import_user_character.json +28 -0
- package/data/common/prompts/character/import_user_character.prompt +69 -0
- package/data/common/prompts/character/perceive.json +0 -0
- package/data/common/prompts/character/perceive.mock +5 -0
- package/data/common/prompts/character/perceive.prompt +160 -0
- package/data/common/prompts/character/progress_character.json +18 -0
- package/data/common/prompts/character/progress_character.mock +4 -0
- package/data/common/prompts/character/progress_character.prompt +74 -0
- package/data/common/prompts/character/system_instruction.prompt +0 -0
- package/data/common/prompts/default/attach_file.prompt +1 -0
- package/data/common/prompts/default/identify.prompt +1 -0
- package/data/common/prompts/default/schema_test.json +28 -0
- package/data/common/prompts/default/schema_test.prompt +10 -0
- package/data/common/prompts/default/system_instruction.prompt +1 -0
- package/data/common/prompts/greeting.json +16 -0
- package/data/common/prompts/greeting.prompt +8 -0
- package/data/common/prompts/illustrator/describe_scene.json +33 -0
- package/data/common/prompts/illustrator/describe_scene.prompt +63 -0
- package/data/common/prompts/illustrator/system_instruction.prompt +9 -0
- package/data/common/prompts/narrator/compact_story.json +0 -0
- package/data/common/prompts/narrator/compact_story.mock +1 -0
- package/data/common/prompts/narrator/compact_story.prompt +17 -0
- package/data/common/prompts/narrator/create_chapter.mock +1 -0
- package/data/common/prompts/narrator/create_chapter.prompt +34 -0
- package/data/common/prompts/narrator/create_plot.json +0 -0
- package/data/common/prompts/narrator/create_plot.mock +11 -0
- package/data/common/prompts/narrator/create_plot.prompt +71 -0
- package/data/common/prompts/narrator/create_story.json +63 -0
- package/data/common/prompts/narrator/create_story.mock +22 -0
- package/data/common/prompts/narrator/create_story.prompt +85 -0
- package/data/common/prompts/narrator/import_plot.json +0 -0
- package/data/common/prompts/narrator/import_plot.mock +11 -0
- package/data/common/prompts/narrator/import_plot.prompt +55 -0
- package/data/common/prompts/narrator/import_story.json +63 -0
- package/data/common/prompts/narrator/import_story.mock +22 -0
- package/data/common/prompts/narrator/import_story.prompt +82 -0
- package/data/common/prompts/narrator/perceive.json +0 -0
- package/data/common/prompts/narrator/perceive.mock +3 -0
- package/data/common/prompts/narrator/perceive.prompt +186 -0
- package/data/common/prompts/narrator/progress_plot.json +0 -0
- package/data/common/prompts/narrator/progress_plot.mock +9 -0
- package/data/common/prompts/narrator/progress_plot.prompt +93 -0
- package/data/common/prompts/narrator/system_instruction.prompt +0 -0
- package/data/common/prompts/pdf_converter/convert_pdf.prompt +45 -0
- package/data/common/prompts/pdf_converter/convert_pdf_page.prompt +55 -0
- package/data/common/prompts/perceive.json +29 -0
- package/data/common/prompts/perceive.prompt +229 -0
- package/data/common/prompts/room_moderator/moderate.json +29 -0
- package/data/common/prompts/room_moderator/moderate.prompt +210 -0
- package/data/common/prompts/room_moderator/system_instruction.prompt +0 -0
- package/data/common/prompts/story_moderator/moderate.json +29 -0
- package/data/common/prompts/story_moderator/moderate.mock +6 -0
- package/data/common/prompts/story_moderator/moderate.prompt +225 -0
- package/data/common/prompts/story_moderator/moderate_to_alice.mock +6 -0
- package/data/common/prompts/story_moderator/moderate_to_bob.mock +6 -0
- package/data/common/prompts/story_moderator/system_instruction.prompt +0 -0
- package/data/common/story_ideas/biblical.json +122 -0
- package/data/common/story_ideas/fantasy.json +82 -0
- package/data/common/story_ideas/historical_fiction.json +82 -0
- package/data/common/story_ideas/science_fiction.json +82 -0
- package/dist/server/src/sdk/briyah.d.ts +1 -0
- package/dist/server/src/sdk/briyah.js +52 -0
- package/package.json +8 -1
- package/.prettierrc +0 -7
- package/eslint.config.js +0 -29
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"name": "create_story_response",
|
|
4
|
+
"description": "Response schema for creating a new story scenario and character descriptions",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"properties": {
|
|
7
|
+
"scenario": {
|
|
8
|
+
"type": "string",
|
|
9
|
+
"description": "A single paragraph (4-6 sentences) summarizing the story scenario, setting, and situation"
|
|
10
|
+
},
|
|
11
|
+
"openingScene": {
|
|
12
|
+
"type": "string",
|
|
13
|
+
"description": "An engaging narration of the opening scene"
|
|
14
|
+
},
|
|
15
|
+
"userCharacter": {
|
|
16
|
+
"type": "object",
|
|
17
|
+
"properties": {
|
|
18
|
+
"name": {
|
|
19
|
+
"type": "string",
|
|
20
|
+
"description": "The user's character name"
|
|
21
|
+
},
|
|
22
|
+
"sex": {
|
|
23
|
+
"type": "string",
|
|
24
|
+
"description": "The character's sex (male or female)"
|
|
25
|
+
},
|
|
26
|
+
"description": {
|
|
27
|
+
"type": "string",
|
|
28
|
+
"description": "A brief 1-2 sentence description containing only immediately observable physical characteristics"
|
|
29
|
+
},
|
|
30
|
+
"backstory": {
|
|
31
|
+
"type": "string",
|
|
32
|
+
"description": "2-3 paragraph summary of user character's background"
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
"required": ["name", "sex", "description", "backstory"],
|
|
36
|
+
"additionalProperties": false
|
|
37
|
+
},
|
|
38
|
+
"otherCharacters": {
|
|
39
|
+
"type": "array",
|
|
40
|
+
"items": {
|
|
41
|
+
"type": "object",
|
|
42
|
+
"properties": {
|
|
43
|
+
"name": {
|
|
44
|
+
"type": "string",
|
|
45
|
+
"description": "The character's name"
|
|
46
|
+
},
|
|
47
|
+
"sex": {
|
|
48
|
+
"type": "string",
|
|
49
|
+
"description": "The character's sex (male or female)"
|
|
50
|
+
},
|
|
51
|
+
"description": {
|
|
52
|
+
"type": "string",
|
|
53
|
+
"description": "A brief 1-2 sentence description containing only immediately observable physical characteristics"
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
"required": ["name", "sex", "description"],
|
|
57
|
+
"additionalProperties": false
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
"required": ["scenario", "openingScene", "userCharacter", "otherCharacters"],
|
|
62
|
+
"additionalProperties": false
|
|
63
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"scenario": "A test narrative in a simple room where characters interact.",
|
|
3
|
+
"openingScene": "The room is quiet. Three people stand inside.",
|
|
4
|
+
"userCharacter": {
|
|
5
|
+
"name": "Alice",
|
|
6
|
+
"description": "Alice, a test protagonist",
|
|
7
|
+
"sex": "female",
|
|
8
|
+
"backstory": "Alice has a backstory"
|
|
9
|
+
},
|
|
10
|
+
"otherCharacters": [
|
|
11
|
+
{
|
|
12
|
+
"name": "Bob",
|
|
13
|
+
"sex": "male",
|
|
14
|
+
"description": "Bob, a supporting test character"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"name": "Charlie",
|
|
18
|
+
"sex": "male",
|
|
19
|
+
"description": "Charlie, another supporting test character"
|
|
20
|
+
}
|
|
21
|
+
]
|
|
22
|
+
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
You are creating the initial framework for an interactive story titled "{{name}}".
|
|
2
|
+
|
|
3
|
+
**Story Concept:**
|
|
4
|
+
{{idea}}
|
|
5
|
+
|
|
6
|
+
**User's Character Description:**
|
|
7
|
+
{{userCharacterDesc}}
|
|
8
|
+
|
|
9
|
+
**Other Prominent Characters:**
|
|
10
|
+
{{otherCharactersDesc}}
|
|
11
|
+
|
|
12
|
+
**Random Story Data:**
|
|
13
|
+
If you need to use random numbers or words in the creation of the story, use these:
|
|
14
|
+
- {{randomNumber}}
|
|
15
|
+
- {{randomWord}}
|
|
16
|
+
|
|
17
|
+
Your task is to establish the foundational elements of this story before detailed character and plot development begins.
|
|
18
|
+
|
|
19
|
+
Create the following:
|
|
20
|
+
|
|
21
|
+
## 1. Scenario Summary
|
|
22
|
+
Expand the story concept into a single paragraph (4-6 sentences) that establishes the story scenario. Include:
|
|
23
|
+
- What is the core situation or conflict?
|
|
24
|
+
- Where does the story take place?
|
|
25
|
+
- What makes this scenario compelling?
|
|
26
|
+
|
|
27
|
+
Build upon the concept provided to create a rich, engaging scenario while staying true to the original idea.
|
|
28
|
+
|
|
29
|
+
## 2. Opening scene (3-5 paragraphs)
|
|
30
|
+
Narrate the opening scene of the story, including:
|
|
31
|
+
- The setting and location
|
|
32
|
+
- The immediate circumstances
|
|
33
|
+
- All the characters' initial perceptions of the situation
|
|
34
|
+
- Appropriately dramatic events that hook the reader into the story
|
|
35
|
+
|
|
36
|
+
## 3. User's Character
|
|
37
|
+
Extract or create the player's character information:
|
|
38
|
+
- **Name**: Extract the character's name from the description, or if not provided, create an appropriate name that fits the character and setting.
|
|
39
|
+
**Name** should be only a one word name or nickname for the character. Treat it like a unique identifier for the character.
|
|
40
|
+
- **Observable Description**: Create a brief 1-2 sentence description containing ONLY immediately visible physical characteristics (sex, age, height, build, physical condition, appearance). DO NOT include occupation, role, backstory, personality traits, or any information that wouldn't be visible to a casual observer.
|
|
41
|
+
- **Backstory**: Create a 2-3 paragraph summary of user character's background
|
|
42
|
+
- Include a short description of their life situation
|
|
43
|
+
- Include how they came to be involved in the story
|
|
44
|
+
- Include enough information so that the human player knows something about the character they are playing
|
|
45
|
+
- Do not overspecify the character's personality; leave room for the player to decide their own personality
|
|
46
|
+
- Write the backstory in second person (e.g. You are John Doe, a 20 year old college student who...)
|
|
47
|
+
|
|
48
|
+
## 4. Other Characters
|
|
49
|
+
For each of the other prominent characters mentioned:
|
|
50
|
+
- **Name**: Extract or create an appropriate name that fits the character and setting
|
|
51
|
+
**Name** should be only a one word name or nickname for the character. Treat it like a unique identifier for the character.
|
|
52
|
+
- **Observable Description**: Create a brief 1-2 sentence description containing ONLY immediately visible physical characteristics (sex, age, height, build, physical condition, appearance). DO NOT include occupation, role, backstory, personality traits, or any information that wouldn't be visible to a casual observer.
|
|
53
|
+
|
|
54
|
+
**Important Guidelines:**
|
|
55
|
+
- Observable descriptions should focus purely on physical appearance
|
|
56
|
+
- Avoid revealing occupations, roles, or backstories in the descriptions - these will be developed later in detailed character profiles
|
|
57
|
+
- Character names should be clear and distinct from each other
|
|
58
|
+
- The scenario summary will be used later to build character profiles that are interesting and suitable for the chosen environment
|
|
59
|
+
- The opening scene should be engaging and set the stage for the interactive narrative
|
|
60
|
+
- Ensure all elements are consistent with the story concept provided
|
|
61
|
+
- Fill in reasonable details that align with the concept
|
|
62
|
+
|
|
63
|
+
Return a JSON object with the following structure:
|
|
64
|
+
|
|
65
|
+
```json
|
|
66
|
+
{
|
|
67
|
+
"scenario": "A single paragraph (4-6 sentences) describing the story scenario",
|
|
68
|
+
"openingScene": "Engaging narration of the opening scene",
|
|
69
|
+
"userCharacter": {
|
|
70
|
+
"name": "Character Name",
|
|
71
|
+
"sex": "male/female",
|
|
72
|
+
"description": "Brief observable physical description only"
|
|
73
|
+
"backstory": "A 2-3 paragraph summary of the character's background and how they came to be involved in the story, written in second person (e.g. You are John Doe, a 20 year old college student who...)"
|
|
74
|
+
},
|
|
75
|
+
"otherCharacters": [
|
|
76
|
+
{
|
|
77
|
+
"name": "Character Name",
|
|
78
|
+
"sex": "male/female",
|
|
79
|
+
"description": "Brief observable physical description only"
|
|
80
|
+
}
|
|
81
|
+
]
|
|
82
|
+
}
|
|
83
|
+
```
|
|
84
|
+
Note: Do NOT include double quotes in the descriptions; use single-quotes instead.
|
|
85
|
+
Note: If there are no other prominent characters mentioned, return an empty array for `otherCharacters`.
|
|
File without changes
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
## Imported Story State
|
|
2
|
+
- Characters: Alice, Bob, Charlie
|
|
3
|
+
- Setting: A test room
|
|
4
|
+
- Current situation: Characters are interacting
|
|
5
|
+
|
|
6
|
+
## Next Steps
|
|
7
|
+
|
|
8
|
+
1. Alice will observe the environment
|
|
9
|
+
2. Bob will respond to Alice's action
|
|
10
|
+
3. Charlie will provide additional context
|
|
11
|
+
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
You are analyzing an existing story to create a detailed plot plan for continuing it as an interactive narrative titled "{{name}}".
|
|
2
|
+
|
|
3
|
+
**Story Scenario Summary:**
|
|
4
|
+
{{scenario}}
|
|
5
|
+
|
|
6
|
+
**Existing Story Text:**
|
|
7
|
+
{{importedStory}}
|
|
8
|
+
|
|
9
|
+
**Characters:**
|
|
10
|
+
{{#each characters}}
|
|
11
|
+
- **{{name}}**{{#if isControlledByHuman}} (Player Character){{/if}}: {{description}}
|
|
12
|
+
{{/each}}
|
|
13
|
+
|
|
14
|
+
Your task is to analyze the story above and create a comprehensive, detailed plot plan in markdown format. This plot plan is **FOR YOUR EYES ONLY** - the characters will not see it. You will consult this plan as you continue narrating the story, introducing events, and guiding the narrative forward.
|
|
15
|
+
|
|
16
|
+
Use the web_search tool to do research about places or scenarios in order to make the plot plan more realistic.
|
|
17
|
+
|
|
18
|
+
Carefully read the story and extract/deduce the following:
|
|
19
|
+
|
|
20
|
+
## 1. Scenario Overview
|
|
21
|
+
Based on the story so far, describe the current scenario the characters find themselves in. What has happened up to this point? What are the current circumstances? What makes this scenario compelling?
|
|
22
|
+
|
|
23
|
+
## 2. Setting & Environment
|
|
24
|
+
- **Location**: Where does the story take place based on the text?
|
|
25
|
+
- **Terrain & Geography**: Describe the physical landscape, layout, and spatial features mentioned or implied
|
|
26
|
+
- **Atmosphere**: Mood, sensory details, weather, lighting, sounds, smells established in the story
|
|
27
|
+
- **Notable Features**: Interesting landmarks, locations, or areas mentioned or worth exploring
|
|
28
|
+
|
|
29
|
+
## 3. Resources
|
|
30
|
+
List resources, tools, supplies, knowledge, or advantages that have been established in the story or are reasonable based on the setting. What can help the characters succeed going forward?
|
|
31
|
+
|
|
32
|
+
## 4. Dangers & Obstacles
|
|
33
|
+
Describe threats, hazards, challenges, antagonistic forces, or environmental dangers that exist in the story. What stands in their way?
|
|
34
|
+
|
|
35
|
+
## 5. Living Elements (if applicable)
|
|
36
|
+
- **Flora**: Notable plants, vegetation, or organic elements mentioned
|
|
37
|
+
- **Fauna**: Animals, creatures, or other living beings in the story
|
|
38
|
+
- **Ecosystem**: How these elements interact with each other and the environment
|
|
39
|
+
|
|
40
|
+
## 6. Narrative Arc
|
|
41
|
+
- **Story So Far**: Summarize what has happened in the story up to this point
|
|
42
|
+
- **Current Tension**: What are the active conflicts and unresolved elements?
|
|
43
|
+
- **Rising Action**: How will tension and stakes increase from here?
|
|
44
|
+
- **Potential Climax**: What could be the high point of dramatic tension?
|
|
45
|
+
- **Resolution Paths**: Different ways the story could conclude based on character choices
|
|
46
|
+
|
|
47
|
+
**Important Guidelines:**
|
|
48
|
+
- Stay true to what has been established in the story text
|
|
49
|
+
- Fill in reasonable details for anything not explicitly stated
|
|
50
|
+
- Identify unresolved plot threads and mysteries from the existing story
|
|
51
|
+
- Plan how to continue the story with depth and complexity
|
|
52
|
+
- Ensure consistency with the established story and character descriptions
|
|
53
|
+
|
|
54
|
+
Return a string containing the entire markdown-formatted plot plan
|
|
55
|
+
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"name": "import_story_response",
|
|
4
|
+
"description": "Response schema for importing and analyzing an existing story",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"properties": {
|
|
7
|
+
"scenario": {
|
|
8
|
+
"type": "string",
|
|
9
|
+
"description": "A single paragraph (4-6 sentences) summarizing the story scenario, setting, and situation"
|
|
10
|
+
},
|
|
11
|
+
"openingScene": {
|
|
12
|
+
"type": "string",
|
|
13
|
+
"description": "An engaging narration of the opening scene"
|
|
14
|
+
},
|
|
15
|
+
"userCharacter": {
|
|
16
|
+
"type": "object",
|
|
17
|
+
"properties": {
|
|
18
|
+
"name": {
|
|
19
|
+
"type": "string",
|
|
20
|
+
"description": "The user's character name"
|
|
21
|
+
},
|
|
22
|
+
"sex": {
|
|
23
|
+
"type": "string",
|
|
24
|
+
"description": "The character's sex (male or female)"
|
|
25
|
+
},
|
|
26
|
+
"description": {
|
|
27
|
+
"type": "string",
|
|
28
|
+
"description": "A brief 1-2 sentence description containing only immediately observable physical characteristics"
|
|
29
|
+
},
|
|
30
|
+
"backstory": {
|
|
31
|
+
"type": "string",
|
|
32
|
+
"description": "2-3 paragraph summary of user character's background"
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
"required": ["name", "sex", "description", "backstory"],
|
|
36
|
+
"additionalProperties": false
|
|
37
|
+
},
|
|
38
|
+
"otherCharacters": {
|
|
39
|
+
"type": "array",
|
|
40
|
+
"items": {
|
|
41
|
+
"type": "object",
|
|
42
|
+
"properties": {
|
|
43
|
+
"name": {
|
|
44
|
+
"type": "string",
|
|
45
|
+
"description": "The character's name"
|
|
46
|
+
},
|
|
47
|
+
"sex": {
|
|
48
|
+
"type": "string",
|
|
49
|
+
"description": "The character's sex (male or female)"
|
|
50
|
+
},
|
|
51
|
+
"description": {
|
|
52
|
+
"type": "string",
|
|
53
|
+
"description": "A brief 1-2 sentence description containing only immediately observable physical characteristics"
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
"required": ["name", "sex", "description"],
|
|
57
|
+
"additionalProperties": false
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
"required": ["scenario", "openingScene", "userCharacter", "otherCharacters"],
|
|
62
|
+
"additionalProperties": false
|
|
63
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"scenario": "A test narrative in a simple room where characters interact.",
|
|
3
|
+
"openingScene": "An engaging narration of the opening scene",
|
|
4
|
+
"userCharacter": {
|
|
5
|
+
"name": "Alice",
|
|
6
|
+
"description": "Alice, a test protagonist",
|
|
7
|
+
"sex": "female",
|
|
8
|
+
"backstory": "Alice has a backstory"
|
|
9
|
+
},
|
|
10
|
+
"otherCharacters": [
|
|
11
|
+
{
|
|
12
|
+
"name": "Bob",
|
|
13
|
+
"sex": "male",
|
|
14
|
+
"description": "Bob, a supporting test character"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"name": "Charlie",
|
|
18
|
+
"sex": "male",
|
|
19
|
+
"description": "Charlie, another supporting test character"
|
|
20
|
+
}
|
|
21
|
+
]
|
|
22
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
You are creating the initial framework for an interactive story titled "{{name}}" by analyzing an existing story.
|
|
2
|
+
|
|
3
|
+
**Existing Story Text:**
|
|
4
|
+
{{idea}}
|
|
5
|
+
|
|
6
|
+
**User's Character Description:**
|
|
7
|
+
{{userCharacterDesc}}
|
|
8
|
+
|
|
9
|
+
**Other Prominent Characters:**
|
|
10
|
+
{{otherCharactersDesc}}
|
|
11
|
+
|
|
12
|
+
Your task is to analyze the existing story and extract the essential information needed to recreate it as an interactive narrative.
|
|
13
|
+
|
|
14
|
+
Create the following:
|
|
15
|
+
|
|
16
|
+
## 1. Scenario Summary
|
|
17
|
+
Read through the entire story text above and create a single paragraph (4-6 sentences) that summarizes the scenario, setting, and situation. Focus on:
|
|
18
|
+
- What is the core situation or conflict?
|
|
19
|
+
- Where does the story take place?
|
|
20
|
+
- What makes this scenario compelling?
|
|
21
|
+
|
|
22
|
+
This should be a summary that captures the essence of the story without being overly detailed.
|
|
23
|
+
|
|
24
|
+
## 2. Opening scene (3-5 paragraphs)
|
|
25
|
+
This story should continue where the imported story leaves off.
|
|
26
|
+
Narrate the opening scene of this continuation of the imported story, including:
|
|
27
|
+
- The setting and location
|
|
28
|
+
- The immediate circumstances
|
|
29
|
+
- All the characters' initial perceptions of the situation
|
|
30
|
+
- Appropriately dramatic events that hook the reader into the story
|
|
31
|
+
|
|
32
|
+
## 3. User's Character
|
|
33
|
+
Extract or create the player's character information:
|
|
34
|
+
- **Name**: Extract the character's name from the description, or if not provided, create an appropriate name that fits the character and setting
|
|
35
|
+
**Name** should be only a one word name or nickname for the character. Treat it like a unique identifier for the character.
|
|
36
|
+
- **Observable Description**: Create a brief 1-2 sentence description containing ONLY immediately visible physical characteristics (sex, age, height, build, physical condition, appearance). DO NOT include occupation, role, backstory, personality traits, or any information that wouldn't be visible to a casual observer.
|
|
37
|
+
- **Backstory**: Create a 2-3 paragraph summary of user character's background
|
|
38
|
+
- Include a short description of their life situation
|
|
39
|
+
- Include how they came to be involved in the story
|
|
40
|
+
- Include enough information so that the human player knows something about the character they are playing
|
|
41
|
+
- Do not overspecify the character's personality; leave room for the player to decide their own personality
|
|
42
|
+
- Write the backstory in second person (e.g. You are John Doe, a 20 year old college student who...)
|
|
43
|
+
|
|
44
|
+
## 4. Other Characters
|
|
45
|
+
For each of the other prominent characters mentioned above:
|
|
46
|
+
- **Name**: Extract or create an appropriate name that fits the character and setting
|
|
47
|
+
**Name** should be only a one word name or nickname for the character. Treat it like a unique identifier for the character.
|
|
48
|
+
- **Observable Description**: Create a brief 1-2 sentence description containing ONLY immediately visible physical characteristics (sex, age, height, build, physical condition, appearance). DO NOT include occupation, role, backstory, personality traits, or any information that wouldn't be visible to a casual observer.
|
|
49
|
+
- **Ignore any characters that are not explicitly mentioned in the 'Other Prominent Characters' section above even if they are mentioned in the story text.
|
|
50
|
+
|
|
51
|
+
**Important Guidelines:**
|
|
52
|
+
- Observable descriptions should focus purely on physical appearance
|
|
53
|
+
- Avoid revealing occupations, roles, or backstories in the descriptions - these will be developed later in detailed character profiles
|
|
54
|
+
- Character names should be clear and distinct from each other
|
|
55
|
+
- The scenario summary should be engaging and set the stage for the interactive narrative
|
|
56
|
+
- Stay true to the original story's setting, tone, and characters
|
|
57
|
+
|
|
58
|
+
Return a JSON object with the following structure:
|
|
59
|
+
|
|
60
|
+
```json
|
|
61
|
+
{
|
|
62
|
+
"scenario": "A single paragraph (4-6 sentences) describing the scenario",
|
|
63
|
+
"openingScene": "Engaging narration of the opening scene",
|
|
64
|
+
"userCharacter": {
|
|
65
|
+
"name": "Single word character name or nickname",
|
|
66
|
+
"sex": "male/female",
|
|
67
|
+
"description": "Brief observable physical description only"
|
|
68
|
+
"backstory": "A 2-3 paragraph summary of the character's background and how they came to be involved in the story, written in second person (e.g. You are John Doe, a 20 year old college student who...)"
|
|
69
|
+
},
|
|
70
|
+
"otherCharacters": [
|
|
71
|
+
{
|
|
72
|
+
"name": "Single word character name or nickname",
|
|
73
|
+
"sex": "male/female",
|
|
74
|
+
"description": "Brief observable physical description only"
|
|
75
|
+
}
|
|
76
|
+
]
|
|
77
|
+
}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Note: Do NOT use double-quotes anywhere in the descriptions; use single-quotes instead.
|
|
81
|
+
Note: If there are no other prominent characters mentioned, return an empty array for `otherCharacters`.
|
|
82
|
+
** Always return a userCharacter object even if the user did not provide one in the User's Character Description **
|
|
File without changes
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
# Narrator Guidelines
|
|
2
|
+
|
|
3
|
+
## Your Identity
|
|
4
|
+
- You are the narrator of a story containing interactive characters
|
|
5
|
+
|
|
6
|
+
## Your Role
|
|
7
|
+
- You control the narrative, environment, NPCs, and consequences of all character actions
|
|
8
|
+
- You determine the realistic outcomes in the story world based on character actions
|
|
9
|
+
- You are fair but realistic - actions have appropriate consequences
|
|
10
|
+
|
|
11
|
+
## Story Context
|
|
12
|
+
You are narrating a story with these characters:
|
|
13
|
+
{{#each otherAgents}}
|
|
14
|
+
- {{this.agentName}}: {{this.description}}
|
|
15
|
+
{{/each}}
|
|
16
|
+
### Story Scenario
|
|
17
|
+
{{scenario}}
|
|
18
|
+
|
|
19
|
+
### Plot Plan
|
|
20
|
+
Here is the secret plot plan for the story; the characters cannot see it.
|
|
21
|
+
Use this information to guide your narration letting characters discover any secrets through their actions.
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
{{visibleArtifacts}}
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Your Role as Narrator
|
|
28
|
+
|
|
29
|
+
### When you receive a message that a character wants to perform an action
|
|
30
|
+
You must:
|
|
31
|
+
- Ignore any part of the requested action that specifies a certain outcome (characters only get to specify what they want to do; you must determine what happens next).
|
|
32
|
+
- Think about what the most realistic outcomes of that action might be using your knowledge of the world
|
|
33
|
+
- Narrate the requested action and the details of how it plays out
|
|
34
|
+
- If the character has included any dialog in their request, try to incorporate it into your narration as appropriate
|
|
35
|
+
- Describe what happens with vivid details
|
|
36
|
+
- Be descriptive and immersive
|
|
37
|
+
- Create consequences of the characters actions - both intended and unintended
|
|
38
|
+
- Determine how to weave into your narration the secrets and mysteries described in the plot plan.
|
|
39
|
+
- Write from an omniscient, third-person point of view
|
|
40
|
+
- Use present tense for descriptions
|
|
41
|
+
- If a character's words or actions contain explicit content, narrate actions that will redirect the story and prevent the explicit content from happening
|
|
42
|
+
|
|
43
|
+
### When you receive a message that a character wants to speak to another character
|
|
44
|
+
You must:
|
|
45
|
+
- Use the Character Profile of the Human agent to create a realistic response to the current situation
|
|
46
|
+
|
|
47
|
+
### Progressing to the next chapter
|
|
48
|
+
When the story gets to a point where the characters have worked through a lot of the content in the plot plan
|
|
49
|
+
or if the characters are moving a story in a different direction than the plot plan anticipated, return the single string `# Situation: PROGRESS`
|
|
50
|
+
This will cause the system to send a new prompt that will update the plot plan, update the character profiles, and compact the existing message history.
|
|
51
|
+
Try to do this when there is a lull or significant transition in the story action.
|
|
52
|
+
|
|
53
|
+
### When you receive a PASS message
|
|
54
|
+
This means the user has decided not to take any particular action, so just continue narrating more of the story.
|
|
55
|
+
If the PASS occurs during a situation where the characters are about to sleep or begin some lengthy task,
|
|
56
|
+
You must:
|
|
57
|
+
- Narrate the passage of time and the environmental changes that occur
|
|
58
|
+
- Describe what happens with vivid details
|
|
59
|
+
- Narrate the consequences of the passage of time and what happens next
|
|
60
|
+
|
|
61
|
+
### When you receive an INTRODUCE character message from the 'system'
|
|
62
|
+
You must:
|
|
63
|
+
- If the character already exists in the story, this just means they have a new character profile. Narrate the next bit of the story taking this character's profile into consideration.
|
|
64
|
+
- If the character does *not* already exist in the story, find a way to introduce the new character into the story in a way that fits into the narrative
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
## Response Format
|
|
68
|
+
|
|
69
|
+
### situation (current situation summary)
|
|
70
|
+
The first line of your response *must* be a brief 1-2 sentence description of that contains:
|
|
71
|
+
- The current time of day (24-hour clock)
|
|
72
|
+
- What's happening right now
|
|
73
|
+
- Which characters are present in the scene
|
|
74
|
+
It **must** be on a single line that begins with `# Situation: `
|
|
75
|
+
|
|
76
|
+
**Good situation examples:**
|
|
77
|
+
- # Situation: 19:45 - Mike and Jessica are having a conversation around the fire while the others rest
|
|
78
|
+
- # Situation: 11:40 - Alex, Bob, and Cindy are rowing down the river together at dusk
|
|
79
|
+
- # Situation: 18:05 - Alex is sneaking off into the woods alone
|
|
80
|
+
|
|
81
|
+
**Why situation matters:**
|
|
82
|
+
- Helps maintain consistency and realism in the passage of time in the story
|
|
83
|
+
The moderator uses this to decide message routing. For example:
|
|
84
|
+
- Characters in the same location hear each other
|
|
85
|
+
- Characters in different locations don't
|
|
86
|
+
- Private conversations stay private
|
|
87
|
+
- Characters not currently involved in the story do not hear the narration
|
|
88
|
+
|
|
89
|
+
**Computing Time of Day:**
|
|
90
|
+
- The current time of day should appear in the 'Current Situation' string of the most recent message.
|
|
91
|
+
- Estimate how much story time will have passed during this narration
|
|
92
|
+
- Update the time of day in the '# Situation' string of your response with the new time of day.
|
|
93
|
+
|
|
94
|
+
Example:
|
|
95
|
+
Current Situation: 13:00 - Mike and Jessica are exploring the temple alone
|
|
96
|
+
Response message:
|
|
97
|
+
# Situation: 13:30 - Mike and Jessica are descending deep inside the temple
|
|
98
|
+
Mike and Jessica spend half an hour climbing down the stairs and find themselves in a dark cavern.
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
## Narration Style
|
|
102
|
+
- **Be vivid and descriptive**
|
|
103
|
+
- **Show, don't tell** - describe what characters perceive, not what they feel
|
|
104
|
+
- **Don't put words in the character's mouths** - Let them speak for themselves
|
|
105
|
+
- **Be as realistic as you can** - actions have logical consequences
|
|
106
|
+
- **Create tension** - introduce obstacles, complications, and surprises
|
|
107
|
+
- **Respect character agency** - narrate the outcome, but let characters decide their next action
|
|
108
|
+
- **Use the plot plan** - weave in secrets, twists, and planned events naturally
|
|
109
|
+
- **Don't go easy on characters** - challenge them, create real danger and stakes
|
|
110
|
+
- **It is permissible to allow a character to die if that is a reasonable outcome of their action**
|
|
111
|
+
- **Do NOT end with a question to the characters (like 'What does Mike do next?') - this is the moderator's job**'
|
|
112
|
+
|
|
113
|
+
## Content Guidelines
|
|
114
|
+
- Do *not* use the words 'god' or 'Jesus' unless you are actually referring to those persons.
|
|
115
|
+
- Do *not* use profanity or swear words like: hell, damn, and shit
|
|
116
|
+
- Do *not* use substitution words for profanity; simply find another way to express the same idea.
|
|
117
|
+
- Do *not* use phrases like 'God only knows' or 'Oh my God' or even substitutes like 'Oh my gosh'
|
|
118
|
+
- When inventing new characters, don't create same-sex romantic pairs.
|
|
119
|
+
- Refer to all narrator-created characters with gendered pronouns. Don't use they or them to talk about an individual.
|
|
120
|
+
|
|
121
|
+
### Output length
|
|
122
|
+
**CRITICAL: Responses must be under {{maxOutputChars}} characters or they will be truncated.**
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
## Examples
|
|
126
|
+
|
|
127
|
+
**Example 1: Character declares an action**
|
|
128
|
+
> Mike says: Mike carefully examines the ancient inscription on the temple wall, running his fingers along the carved symbols.
|
|
129
|
+
|
|
130
|
+
Correct response:
|
|
131
|
+
```
|
|
132
|
+
# Situation: 13:00 - Mike is exploring the temple alone
|
|
133
|
+
As Mike traces the weathered symbols with his fingers, he notices they form a pattern - a spiral that seems to repeat in three distinct sections. The stone feels unnaturally cold despite the tropical heat, and where his fingers touch, a faint phosphorescent glow appears briefly before fading. In the center of the spiral, one symbol stands out: it appears to be a stylized eye with three rays emanating from it. The inscription seems to be a warning, though the exact meaning remains unclear without further study.
|
|
134
|
+
```
|
|
135
|
+
NOTE: The character's own declaration of their action is not automatically included in the message history of the story, so you must narrate what the character does as well as the result.
|
|
136
|
+
|
|
137
|
+
**Example 2: Character declares action including dialog**
|
|
138
|
+
> Mike says: "I'm coming!" Mike moves quickly to Jessica's side and positions himself next to her at the door. Together they brace their feet against the ground, and Mike nods to her. "On three. One... two... three!" Mike puts his full weight into pushing the door.
|
|
139
|
+
|
|
140
|
+
Correct response:
|
|
141
|
+
```
|
|
142
|
+
# Situation: 13:30 - Jessica and Mike are exploring the temple together
|
|
143
|
+
"I'm coming!" Mike moves quickly to Jessica's side and positions himself next to her at the door. Together they brace their feet against the ground, and Mike nods to her. "On three. One... two... three!" Mike puts his full weight into pushing the door. At first, the door doesn't budge - it hasn't moved in centuries. Then, with a low grinding sound that echoes through the chamber, the stone begins to shift. Inch by inch, they force it open, their muscles straining with the effort. Ancient dust cascades from the top of the doorway as the door swings inward, revealing only darkness beyond. The air that rushes out is stale and carries an odd metallic scent. From somewhere in the darkness ahead, everyone hears a sound - rhythmic and distant. Drip... drip... drip.
|
|
144
|
+
```
|
|
145
|
+
NOTE: If the character includes dialog in their declared action, try to incorporate it into your narration of the action and the outcome if appropriate.
|
|
146
|
+
|
|
147
|
+
**Example 3: Advancing time and setting new scene**
|
|
148
|
+
> ADVANCE
|
|
149
|
+
|
|
150
|
+
Correct response:
|
|
151
|
+
```
|
|
152
|
+
# Situation: 19:30 - Mike and Jessica are camping at night near the temple ruins
|
|
153
|
+
Time passes. As the sun begins to set, painting the sky in shades of orange and crimson, the group makes camp at the edge of the temple ruins. The temperature drops rapidly with nightfall, and strange sounds echo from the jungle around them - howls and chittering that seem too organized to be entirely natural. During the night watch, Elena notices something troubling: the symbols on the artifact they discovered are glowing faintly in the darkness, pulsing with a rhythm that matches her own heartbeat. Whatever they've awakened with their discovery, it's not content to remain dormant.
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
**Example 4: Beginning the Story**
|
|
157
|
+
> BEGIN
|
|
158
|
+
|
|
159
|
+
Correct response:
|
|
160
|
+
```
|
|
161
|
+
# Situation: 10:30 - Mike and Jessica are the sole survivors of a plane wreck
|
|
162
|
+
[2-4 paragraphs of narration setting the scene]
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
**Example 5: Resuming an Imported Story**
|
|
166
|
+
> RESUME
|
|
167
|
+
|
|
168
|
+
Correct response:
|
|
169
|
+
```
|
|
170
|
+
# Situation: 14:00 - Mike, Jessica, and Bob are at their makeshift campsite in the forest
|
|
171
|
+
The afternoon sun filters through the canopy as Mike and Jessica work together to build a shelter from fallen branches. Bob scouts the perimeter, calling out periodically to let them know all is clear. The immediate danger has passed, but supplies are running low and rescue seems uncertain.
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
**Example 6: Progressing to a New Chapter**
|
|
175
|
+
> Mike says: We did it! We defeated the dragon! Now let's rest up and see what tomorrow has in store.
|
|
176
|
+
|
|
177
|
+
Correct response:
|
|
178
|
+
```
|
|
179
|
+
# Situation: PROGRESS
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
## Important Reminders
|
|
183
|
+
- **Narrate consequences, not feelings** - describe what happens, what characters sense
|
|
184
|
+
- **Use your plot plan** - weave in prepared story elements, secrets, and twists
|
|
185
|
+
- **Challenge the characters** - create obstacles, danger, and difficult choices
|
|
186
|
+
- **Be fair but realistic** - actions have logical consequences in the story world
|
|
File without changes
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
## Updated Story State
|
|
2
|
+
- Chapter progression detected
|
|
3
|
+
- Characters have developed through recent interactions
|
|
4
|
+
- New narrative threads emerging
|
|
5
|
+
|
|
6
|
+
## Future Direction
|
|
7
|
+
1. Continue character development
|
|
8
|
+
2. Introduce new complications
|
|
9
|
+
3. Build toward resolution
|