@kienmatu/inkos-core 0.1.3 → 3.3.0

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.
Files changed (99) hide show
  1. package/dist/agent/agent-session.js +2 -2
  2. package/dist/agent/agent-session.js.map +1 -1
  3. package/dist/agent/agent-system-prompt.d.ts.map +1 -1
  4. package/dist/agent/agent-system-prompt.js +3 -2
  5. package/dist/agent/agent-system-prompt.js.map +1 -1
  6. package/dist/agent/agent-tools.d.ts +1 -0
  7. package/dist/agent/agent-tools.d.ts.map +1 -1
  8. package/dist/agent/agent-tools.js +16 -8
  9. package/dist/agent/agent-tools.js.map +1 -1
  10. package/dist/agent/pi-stream.d.ts.map +1 -1
  11. package/dist/agent/pi-stream.js +74 -3
  12. package/dist/agent/pi-stream.js.map +1 -1
  13. package/dist/agents/architect.js +7 -7
  14. package/dist/agents/continuity.d.ts.map +1 -1
  15. package/dist/agents/continuity.js +2 -1
  16. package/dist/agents/continuity.js.map +1 -1
  17. package/dist/agents/fanfic-prompt-sections.d.ts +3 -3
  18. package/dist/agents/fanfic-prompt-sections.d.ts.map +1 -1
  19. package/dist/agents/fanfic-prompt-sections.js +83 -3
  20. package/dist/agents/fanfic-prompt-sections.js.map +1 -1
  21. package/dist/agents/observer-prompts.js +1 -1
  22. package/dist/agents/observer-prompts.js.map +1 -1
  23. package/dist/agents/planner-prompts.d.ts +1 -1
  24. package/dist/agents/planner-prompts.d.ts.map +1 -1
  25. package/dist/agents/planner-prompts.js +15 -14
  26. package/dist/agents/planner-prompts.js.map +1 -1
  27. package/dist/agents/planner.d.ts.map +1 -1
  28. package/dist/agents/planner.js +2 -2
  29. package/dist/agents/planner.js.map +1 -1
  30. package/dist/agents/post-write-validator.d.ts +2 -0
  31. package/dist/agents/post-write-validator.d.ts.map +1 -1
  32. package/dist/agents/post-write-validator.js +6 -2
  33. package/dist/agents/post-write-validator.js.map +1 -1
  34. package/dist/agents/settler-prompts.d.ts +1 -0
  35. package/dist/agents/settler-prompts.d.ts.map +1 -1
  36. package/dist/agents/settler-prompts.js +200 -13
  37. package/dist/agents/settler-prompts.js.map +1 -1
  38. package/dist/agents/short-fiction.d.ts +12 -9
  39. package/dist/agents/short-fiction.d.ts.map +1 -1
  40. package/dist/agents/short-fiction.js +269 -49
  41. package/dist/agents/short-fiction.js.map +1 -1
  42. package/dist/agents/writer-prompts.d.ts +6 -0
  43. package/dist/agents/writer-prompts.d.ts.map +1 -1
  44. package/dist/agents/writer-prompts.js +97 -36
  45. package/dist/agents/writer-prompts.js.map +1 -1
  46. package/dist/agents/writer.d.ts.map +1 -1
  47. package/dist/agents/writer.js +6 -1
  48. package/dist/agents/writer.js.map +1 -1
  49. package/dist/interaction/action-envelope.d.ts +10 -10
  50. package/dist/interaction/action-envelope.d.ts.map +1 -1
  51. package/dist/interaction/action-envelope.js +13 -6
  52. package/dist/interaction/action-envelope.js.map +1 -1
  53. package/dist/interaction/project-tools.d.ts +3 -1
  54. package/dist/interaction/project-tools.d.ts.map +1 -1
  55. package/dist/interaction/project-tools.js +27 -8
  56. package/dist/interaction/project-tools.js.map +1 -1
  57. package/dist/llm/provider.d.ts +6 -0
  58. package/dist/llm/provider.d.ts.map +1 -1
  59. package/dist/llm/provider.js +28 -2
  60. package/dist/llm/provider.js.map +1 -1
  61. package/dist/models/short-fiction-format.d.ts +10 -0
  62. package/dist/models/short-fiction-format.d.ts.map +1 -0
  63. package/dist/models/short-fiction-format.js +41 -0
  64. package/dist/models/short-fiction-format.js.map +1 -0
  65. package/dist/pipeline/chapter-review-cycle.d.ts +3 -8
  66. package/dist/pipeline/chapter-review-cycle.d.ts.map +1 -1
  67. package/dist/pipeline/chapter-review-cycle.js +3 -1
  68. package/dist/pipeline/chapter-review-cycle.js.map +1 -1
  69. package/dist/pipeline/chapter-state-recovery.d.ts +2 -4
  70. package/dist/pipeline/chapter-state-recovery.d.ts.map +1 -1
  71. package/dist/pipeline/chapter-state-recovery.js.map +1 -1
  72. package/dist/pipeline/chapter-truth-validation.d.ts +2 -4
  73. package/dist/pipeline/chapter-truth-validation.d.ts.map +1 -1
  74. package/dist/pipeline/chapter-truth-validation.js.map +1 -1
  75. package/dist/pipeline/runner.d.ts +14 -0
  76. package/dist/pipeline/runner.d.ts.map +1 -1
  77. package/dist/pipeline/runner.js +55 -38
  78. package/dist/pipeline/runner.js.map +1 -1
  79. package/dist/pipeline/short-fiction-runner.d.ts.map +1 -1
  80. package/dist/pipeline/short-fiction-runner.js +19 -6
  81. package/dist/pipeline/short-fiction-runner.js.map +1 -1
  82. package/dist/prompts/short-fiction.d.ts +3 -0
  83. package/dist/prompts/short-fiction.d.ts.map +1 -1
  84. package/dist/prompts/short-fiction.js +155 -85
  85. package/dist/prompts/short-fiction.js.map +1 -1
  86. package/dist/utils/chapter-memo-parser.d.ts +10 -0
  87. package/dist/utils/chapter-memo-parser.d.ts.map +1 -1
  88. package/dist/utils/chapter-memo-parser.js +59 -10
  89. package/dist/utils/chapter-memo-parser.js.map +1 -1
  90. package/dist/utils/golden-opening.d.ts +12 -0
  91. package/dist/utils/golden-opening.d.ts.map +1 -0
  92. package/dist/utils/golden-opening.js +18 -0
  93. package/dist/utils/golden-opening.js.map +1 -0
  94. package/dist/utils/log-message.d.ts +13 -0
  95. package/dist/utils/log-message.d.ts.map +1 -0
  96. package/dist/utils/log-message.js +2 -0
  97. package/dist/utils/log-message.js.map +1 -0
  98. package/package.json +1 -1
  99. package/skills/inkos-short-writing/SKILL.md +2 -2
@@ -1,11 +1,27 @@
1
- export function buildShortFictionOutlineSystemPrompt(language = "zh") {
1
+ import { SHORT_FICTION_MIN_CHAPTERS, SHORT_FICTION_MAX_CHAPTERS, SHORT_FICTION_DEFAULT_CHARS_PER_CHAPTER, SHORT_FICTION_MIN_CHARS_PER_CHAPTER, SHORT_FICTION_MAX_CHARS_PER_CHAPTER, SHORT_FICTION_EN_DEFAULT_WORDS_PER_CHAPTER, SHORT_FICTION_EN_MIN_WORDS_PER_CHAPTER, SHORT_FICTION_EN_MAX_WORDS_PER_CHAPTER, } from "../models/short-fiction-format.js";
2
+ function rangeChapters(input) {
3
+ const [from, to] = input.chapterRange ?? [1, input.chapterCount];
4
+ const chapters = [];
5
+ for (let n = from; n <= to; n += 1)
6
+ chapters.push(n);
7
+ return chapters;
8
+ }
9
+ function isFirstBatch(input) {
10
+ return (input.chapterRange?.[0] ?? 1) === 1;
11
+ }
12
+ /** "4-6" for a span, "13" for a single chapter — never "13-13". */
13
+ function chapterRangeLabel(from, to) {
14
+ return from === to ? `${from}` : `${from}-${to}`;
15
+ }
16
+ export function buildShortFictionOutlineSystemPrompt(language = "en") {
2
17
  if (language === "en") {
3
18
  return [
4
19
  "You are the managing editor for short web fiction. Your job is to turn one creative direction into a complete short-story plan.",
5
20
  "Work only from this direction and any reference text the user supplied; never claim to have read, quoted, or inherited material that was not provided.",
6
21
  "Content comes first: the title, the opening, the pressure on the protagonist, the evidence/relationship/identity leverage, the escalation chain, the reversal chain, and the payoff landing must be strong enough to carry a single-pass full draft.",
7
22
  "Do not over-structure and do not output JSON/YAML. Write human-readable Markdown, but the chapter plan must be dense enough that a writer can draft the whole story in one pass.",
8
- "A short defaults to 12-18 chapters at roughly 600-800 words per chapter. The story must be complete — not the first five chapters of a novel starter kit.",
23
+ `A short defaults to ${SHORT_FICTION_MIN_CHAPTERS}-${SHORT_FICTION_MAX_CHAPTERS} chapters at roughly ${SHORT_FICTION_EN_DEFAULT_WORDS_PER_CHAPTER} words per chapter (accepted range ${SHORT_FICTION_EN_MIN_WORDS_PER_CHAPTER}-${SHORT_FICTION_EN_MAX_WORDS_PER_CHAPTER} words). The story must be complete — not the first five chapters of a novel starter kit.`,
24
+ "A platform-ready English title is concrete and promises a specific reversal — for example \"The Ledger She Kept\", \"Nine Days to Prove It\", \"What the Night Shift Saw\". Avoid abstract one-word titles and avoid literary summaries of the theme.",
9
25
  "Return only the final story plan for the writer; do not place task restatement, analysis, or internal reasoning in the deliverable.",
10
26
  ].join("\n");
11
27
  }
@@ -14,11 +30,11 @@ export function buildShortFictionOutlineSystemPrompt(language = "zh") {
14
30
  "只基于本次创作方向和用户提供的参考文本创作;没有提供的资料,不要声称读过、引用过或继承过。",
15
31
  "目标是内容优先:标题、开篇、人物压力、证据/关系/身份杠杆、升级链、反转链和回报落点必须能支撑一次写完整篇。",
16
32
  "不要过度结构化,不要输出 JSON/YAML。用人能读的 Markdown,但章节方案必须足够密,写手拿到后能直接一次写完。",
17
- "短篇默认 12-18 章,每章约 900-1200 字。故事要完整,不是长篇前 5 章启动包。",
33
+ `短篇默认 ${SHORT_FICTION_MIN_CHAPTERS}-${SHORT_FICTION_MAX_CHAPTERS} 章,每章约 ${SHORT_FICTION_DEFAULT_CHARS_PER_CHAPTER} 字(可接受范围 ${SHORT_FICTION_MIN_CHARS_PER_CHAPTER}-${SHORT_FICTION_MAX_CHARS_PER_CHAPTER} 字)。故事要完整,不是长篇前 5 章启动包。`,
18
34
  "回复只包含交付给写手的最终故事方案;不要把分析过程、任务复述或内部推理写进交付物。",
19
35
  ].join("\n");
20
36
  }
21
- export function buildShortFictionOutlineUserPrompt(input, language = "zh") {
37
+ export function buildShortFictionOutlineUserPrompt(input, language = "en") {
22
38
  if (language === "en") {
23
39
  return [
24
40
  "## Creative Direction",
@@ -60,7 +76,7 @@ export function buildShortFictionOutlineUserPrompt(input, language = "zh") {
60
76
  "用 Markdown 写完整故事方案,包含:题材/受众、标题方向、开篇小钩子、人物与关系、核心压力、主角赢法、升级链、反转链、结尾回报、逐章方案。",
61
77
  ].filter(Boolean).join("\n");
62
78
  }
63
- export function buildShortFictionOutlineReviewSystemPrompt(language = "zh") {
79
+ export function buildShortFictionOutlineReviewSystemPrompt(language = "en") {
64
80
  if (language === "en") {
65
81
  return [
66
82
  "You are a short-fiction outline reviewer. You do not assign scores and you do not police plagiarism.",
@@ -76,7 +92,7 @@ export function buildShortFictionOutlineReviewSystemPrompt(language = "zh") {
76
92
  "输出 Markdown,直接指出会导致成稿不好看的硬伤和可保留优点。",
77
93
  ].join("\n");
78
94
  }
79
- export function buildShortFictionOutlineReviewUserPrompt(input, language = "zh") {
95
+ export function buildShortFictionOutlineReviewUserPrompt(input, language = "en") {
80
96
  if (language === "en") {
81
97
  return [
82
98
  "## Creative Direction",
@@ -110,7 +126,7 @@ export function buildShortFictionOutlineReviewUserPrompt(input, language = "zh")
110
126
  "- 读者会不会因为时间线、人物关系、证据权限、身体状态、常识问题出戏。",
111
127
  ].join("\n");
112
128
  }
113
- export function buildShortFictionOutlineRevisionFollowup(input, language = "zh") {
129
+ export function buildShortFictionOutlineRevisionFollowup(input, language = "en") {
114
130
  if (language === "en") {
115
131
  return [
116
132
  "Based on the outline review above, produce the complete second version of the story plan.",
@@ -144,32 +160,37 @@ export function buildShortFictionOutlineRevisionFollowup(input, language = "zh")
144
160
  "用 Markdown 写完整第二版故事方案。",
145
161
  ].join("\n");
146
162
  }
147
- export function buildShortFictionWriterSystemPrompt(language = "zh") {
163
+ export function buildShortFictionWriterSystemPrompt(language = "en") {
148
164
  if (language === "en") {
149
165
  return [
150
- "You are an English short-fiction BatchWriter. You write the complete short story in one API pass, following the story plan.",
166
+ "You are an English short-fiction BatchWriter. You write short-story prose following the story plan.",
167
+ "This pipeline writes one specific engine: a vindication arc — the protagonist is pinned down, accumulates leverage, turns the tables, absorbs a counterattack, and lands a comeuppance the reader has been waiting for. Write that engine deliberately rather than treating it as generic storytelling.",
151
168
  "Write natural, native English prose. Vary sentence length; mix short punchy sentences with longer flowing ones, and keep the narrative voice consistent throughout.",
152
- "This is not serialized-novel continuation and not chapter synopsis. Every chapter needs drama happening on the page: character action, dialogue or reaction, a shift in the situation, and a reason to keep reading at the chapter break.",
169
+ "This is not serialized-novel continuation and not chapter synopsis. Every chapter needs drama happening on the page: character action, dialogue or reaction, a shift in the situation, and a reason to keep reading at the chapter break — that reason need not be a cliffhanger; a decision, an opened question, a discovery or dread all qualify.",
153
170
  "Keep the drama dialed up, web-fiction style: real-world pressure may be amplified as far as readers will still believe, but never so absurd that immersion breaks.",
154
171
  "The story title and chapter titles must read like platform content, not literary summaries. Keep the prose paced for mobile reading — short paragraphs, but never telegram-style fragments.",
172
+ "A platform-ready English title is concrete and promises a specific reversal — for example \"The Ledger She Kept\", \"Nine Days to Prove It\", \"What the Night Shift Saw\". Avoid abstract one-word titles and avoid literary summaries of the theme.",
155
173
  "The word count is a calibration, not an averaging exercise. Big scenes may run long and transitions short; a clearly short chapter usually means you wrote a synopsis and must add real scenes.",
156
174
  "Output must strictly use the specified blocks. No author notes, no word-count remarks, no review comments, no format explanations.",
157
175
  ].join("\n");
158
176
  }
159
177
  return [
160
- "你是中文短篇 BatchWriter。你要根据故事方案一次 API 写完整短篇正文。",
161
- "这不是长篇连载续写,也不是章节梗概。每章都要有当场发生的戏:人物行动、对话或反应、局面变化、章尾继续读的理由。",
178
+ "你是中文短篇 BatchWriter。你要根据故事方案写短篇正文。",
179
+ "这条流水线写的是一种特定引擎:翻盘弧线——主角被压制、积累筹码、扭转局面、承受反扑,最后落下读者一直在等的那个报应。要有意识地写这个引擎,不要当成泛泛的讲故事。",
180
+ "这不是长篇连载续写,也不是章节梗概。每章都要有当场发生的戏:人物行动、对话或反应、局面变化、章尾继续读的理由——这个理由不一定是悬崖式断章,一个决定、一个被打开的疑问、一处发现或一股不安都算。",
162
181
  "网文戏剧性要足:现实压力可以放大到读者愿意信的程度,但不能荒诞到失去代入。",
163
182
  "标题和章节标题要像平台内容,不要文艺化总结。正文保持移动端节奏,段落短但不要写成电报体。",
164
183
  "字数是校准,不是平均数学题。大场面可略长,过渡章可略短;明显偏短通常说明写成了梗概,必须补有效场面。",
165
184
  "输出必须严格使用指定 block,不要写作者说明、字数说明、审稿意见或格式解释。",
166
185
  ].join("\n");
167
186
  }
168
- export function buildShortFictionWriterUserPrompt(input, language = "zh") {
187
+ export function buildShortFictionWriterUserPrompt(input, language = "en") {
169
188
  if (language === "en") {
170
189
  return [
171
190
  "## Task",
172
- `Write the complete ${input.chapterCount}-chapter story in one pass, about ${input.charsPerChapter} words per chapter.`,
191
+ input.chapterRange
192
+ ? `Write ONLY ${input.chapterRange[0] === input.chapterRange[1] ? `chapter ${input.chapterRange[0]}, about ${input.charsPerChapter} words` : `chapters ${chapterRangeLabel(input.chapterRange[0], input.chapterRange[1])}, about ${input.charsPerChapter} words each`}. The complete story is ${input.chapterCount} chapters — calibrate pacing to the whole story, not to this batch.`
193
+ : `Write the complete ${input.chapterCount}-chapter story in one pass, about ${input.charsPerChapter} words per chapter.`,
173
194
  "Read the full story plan before writing. The prose must carry the plan's pressure chain, evidence chain, reversal chain, and emotional payoff — do not swerve into a different story midway.",
174
195
  "",
175
196
  buildShortFictionCraftPrompt("en"),
@@ -181,27 +202,32 @@ export function buildShortFictionWriterUserPrompt(input, language = "zh") {
181
202
  input.outlineMarkdown,
182
203
  "",
183
204
  "## Output Format",
184
- "=== SHORT_FICTION_TITLE ===",
185
- "The story title — plain text, platform-ready, nothing else",
186
- "=== SHORT_FICTION_OPENING_HOOK ===",
187
- "An optional pre-story hook of about 130 words; if no standalone teaser is needed, still write the small first-screen scene that opens chapter 1",
188
- ...Array.from({ length: input.chapterCount }, (_, index) => {
189
- const chapter = index + 1;
190
- return [
191
- `=== CHAPTER ${chapter} TITLE ===`,
192
- "Chapter title plain text only, no #, no \"Chapter N\" prefix",
193
- `=== CHAPTER ${chapter} CONTENT ===`,
194
- `Chapter ${chapter} prose — full scenes, no synopsis, no author notes`,
195
- ].join("\n");
196
- }),
205
+ ...(isFirstBatch(input) ? [
206
+ "=== SHORT_FICTION_TITLE ===",
207
+ "The story title — plain text, platform-ready, nothing else",
208
+ "=== SHORT_FICTION_OPENING_HOOK ===",
209
+ // Basis: proportion to the chapter it precedes, not a word-count
210
+ // conversion. The zh format's ~200-character hook sits in front of
211
+ // ~1,000-character chapters — about one fifth. One fifth of a
212
+ // 1,200-word en chapter is 240.
213
+ "An optional pre-story hook of about 240 words; if no standalone teaser is needed, still write the small first-screen scene that opens chapter 1",
214
+ ] : []),
215
+ ...rangeChapters(input).map((chapter) => [
216
+ `=== CHAPTER ${chapter} TITLE ===`,
217
+ "Chapter title — plain text only, no #, no \"Chapter N\" prefix",
218
+ `=== CHAPTER ${chapter} CONTENT ===`,
219
+ `Chapter ${chapter} prose — full scenes, no synopsis, no author notes`,
220
+ ].join("\n")),
197
221
  ].join("\n");
198
222
  }
199
223
  return [
200
224
  "## 任务",
201
- `一次写完整 ${input.chapterCount} 章,每章约 ${input.charsPerChapter} 字。`,
225
+ input.chapterRange
226
+ ? `只写第 ${chapterRangeLabel(input.chapterRange[0], input.chapterRange[1])} 章,每章约 ${input.charsPerChapter} 字。整篇共 ${input.chapterCount} 章,节奏按整篇校准,不要按这一批校准。`
227
+ : `一次写完整 ${input.chapterCount} 章,每章约 ${input.charsPerChapter} 字。`,
202
228
  "先读完整故事方案,再写正文。正文要承接大纲的压力链、证据链、反转链和情绪回报,不要临时改成另一种故事。",
203
229
  "",
204
- buildShortFictionCraftPrompt(),
230
+ buildShortFictionCraftPrompt("zh"),
205
231
  "",
206
232
  "## 创作方向",
207
233
  input.direction,
@@ -210,29 +236,40 @@ export function buildShortFictionWriterUserPrompt(input, language = "zh") {
210
236
  input.outlineMarkdown,
211
237
  "",
212
238
  "## 输出格式",
213
- "=== SHORT_FICTION_TITLE ===",
214
- "短篇标题,只写纯文本平台标题",
215
- "=== SHORT_FICTION_OPENING_HOOK ===",
216
- "可选正文前小钩子,约 200 字;如果不需要独立引子,也要写第 1 章第一屏的入局小场面",
217
- ...Array.from({ length: input.chapterCount }, (_, index) => {
218
- const chapter = index + 1;
219
- return [
220
- `=== CHAPTER ${chapter} TITLE ===`,
221
- "章节标题,只写纯文本,不要 #,不要第几章前缀",
222
- `=== CHAPTER ${chapter} CONTENT ===`,
223
- `第${chapter}章正文,写完整场面,不要梗概,不要作者备注`,
224
- ].join("\n");
225
- }),
239
+ ...(isFirstBatch(input) ? [
240
+ "=== SHORT_FICTION_TITLE ===",
241
+ "短篇标题,只写纯文本平台标题",
242
+ "=== SHORT_FICTION_OPENING_HOOK ===",
243
+ "可选正文前小钩子,约 200 字;如果不需要独立引子,也要写第 1 章第一屏的入局小场面",
244
+ ] : []),
245
+ ...rangeChapters(input).map((chapter) => [
246
+ `=== CHAPTER ${chapter} TITLE ===`,
247
+ "章节标题,只写纯文本,不要 #,不要第几章前缀",
248
+ `=== CHAPTER ${chapter} CONTENT ===`,
249
+ `第${chapter}章正文,写完整场面,不要梗概,不要作者备注`,
250
+ ].join("\n")),
226
251
  ].join("\n");
227
252
  }
228
- export function buildShortFictionDraftContinuationUserPrompt(input, language = "zh") {
253
+ export function buildShortFictionDraftContinuationUserPrompt(input, language = "en") {
229
254
  const missing = input.missingChapters.join(", ");
255
+ const first = input.missingChapters[0] ?? 1;
256
+ const last = input.missingChapters[input.missingChapters.length - 1] ?? first;
257
+ const label = chapterRangeLabel(first, last);
230
258
  if (language === "en") {
231
259
  return [
232
260
  "## Task",
233
- `The previous draft was truncated or skipped chapters. Write ONLY the missing chapters: ${missing}.`,
261
+ input.mode === "batch"
262
+ ? first === last
263
+ ? `Continue the same story: now write chapter ${label}, and only that one.`
264
+ : `Continue the same story: now write chapters ${label}, and only those.`
265
+ : `The previous draft was truncated or skipped chapters. Write ONLY the missing chapters: ${missing}.`,
234
266
  `Stay calibrated to the complete ${input.chapterCount}-chapter short at about ${input.charsPerChapter} words per chapter.`,
235
267
  "Do not rewrite finished chapters, do not write summary notes, do not apologize, do not output review comments.",
268
+ ...(input.mode === "batch" ? [
269
+ "Before writing, find these chapter entries in the story plan below and follow them: this batch's job is that specific beat, not a generic escalation.",
270
+ "Vary how the chapter earns its ending. Every chapter still needs a reason to read on — but that reason can be a decision just made, a question just opened, a small discovery, or dread, not only a cliffhanger. Ten consecutive cliffhangers read as exhausting rather than gripping; the hook is the reason, not the bang.",
271
+ "Do not open a chapter by summarizing what already happened. Continue from inside the story; the reader has just read the previous chapter.",
272
+ ] : []),
236
273
  "",
237
274
  buildShortFictionCraftPrompt("en"),
238
275
  "",
@@ -256,11 +293,20 @@ export function buildShortFictionDraftContinuationUserPrompt(input, language = "
256
293
  }
257
294
  return [
258
295
  "## 任务",
259
- `上一次正文被截断或漏章。现在只补写缺失章节:${missing}。`,
296
+ input.mode === "batch"
297
+ ? first === last
298
+ ? `继续同一篇的写作:现在写第 ${label} 章,只写这一章。`
299
+ : `继续同一篇的写作:现在写第 ${label} 章,只写这几章。`
300
+ : `上一次正文被截断或漏章。现在只补写缺失章节:${missing}。`,
260
301
  `仍然按完整短篇 ${input.chapterCount} 章、每章约 ${input.charsPerChapter} 字校准。`,
261
302
  "不要重写已完成章节,不要写总结说明,不要道歉,不要输出审稿意见。",
303
+ ...(input.mode === "batch" ? [
304
+ "动笔前先在下面的故事方案里找到这几章的条目并照着写:这一批的任务是那个具体的节拍,不是泛泛地加码。",
305
+ "章尾的写法要有变化。每一章仍然要给出继续读的理由,但那个理由可以是刚做出的决定、刚打开的疑问、一处小发现或一股不安,不是只有悬崖式断章。连着十章都用悬崖结尾读起来只会累,不会抓人;钩子是那个理由,不是那声炸响。",
306
+ "不要用回顾前情开场。直接从故事内部接着写,读者刚读完上一章。",
307
+ ] : []),
262
308
  "",
263
- buildShortFictionCraftPrompt(),
309
+ buildShortFictionCraftPrompt("zh"),
264
310
  "",
265
311
  "## 创作方向",
266
312
  input.direction,
@@ -280,7 +326,7 @@ export function buildShortFictionDraftContinuationUserPrompt(input, language = "
280
326
  ].join("\n")),
281
327
  ].join("\n");
282
328
  }
283
- export function buildShortFictionDraftReviewSystemPrompt(language = "zh") {
329
+ export function buildShortFictionDraftReviewSystemPrompt(language = "en") {
284
330
  if (language === "en") {
285
331
  return [
286
332
  "You are a short-fiction draft reviewer.",
@@ -296,7 +342,7 @@ export function buildShortFictionDraftReviewSystemPrompt(language = "zh") {
296
342
  "输出 Markdown,写清哪些问题会明显影响读者读下去,哪些只是可接受的小瑕疵。",
297
343
  ].join("\n");
298
344
  }
299
- export function buildShortFictionDraftReviewUserPrompt(input, language = "zh") {
345
+ export function buildShortFictionDraftReviewUserPrompt(input, language = "en") {
300
346
  if (language === "en") {
301
347
  return [
302
348
  "## Creative Direction",
@@ -328,12 +374,16 @@ export function buildShortFictionDraftReviewUserPrompt(input, language = "zh") {
328
374
  "不要因为某章略短或略长就判死;先判断内容是否完整、有戏、有回报。",
329
375
  ].join("\n");
330
376
  }
331
- export function buildShortFictionDraftRevisionFollowup(input, language = "zh") {
377
+ export function buildShortFictionDraftRevisionFollowup(input, language = "en") {
332
378
  if (language === "en") {
333
379
  return [
334
- "Based on the review notes, write the complete second-version draft.",
380
+ input.chapterRange
381
+ ? `Based on the review notes, write the second-version prose for ${input.chapterRange[0] === input.chapterRange[1] ? `chapter ${input.chapterRange[0]}` : `chapters ${chapterRangeLabel(input.chapterRange[0], input.chapterRange[1])}`} ONLY.`
382
+ : "Based on the review notes, write the complete second-version draft.",
335
383
  "This is round two of the same story: keep what worked in the last version, fix what breaks immersion or kills the desire to keep reading.",
336
- "Do not output a list of suggested edits, and do not patch just a few chapters — output the complete draft.",
384
+ input.chapterRange
385
+ ? "Do not output a list of suggested edits, and do not rewrite chapters outside this range — output the full prose of these chapters."
386
+ : "Do not output a list of suggested edits, and do not patch just a few chapters — output the complete draft.",
337
387
  "",
338
388
  "## Review Notes",
339
389
  input.review.trim(),
@@ -344,26 +394,38 @@ export function buildShortFictionDraftRevisionFollowup(input, language = "zh") {
344
394
  "- Keep the title, opening, chapter titles, and main title consistent with the prose, though the title may be re-sharpened from the final draft for platform click appeal.",
345
395
  "- Word count is calibration only: pad short chapters with real scenes; trim long ones by cutting explanation and repeated reactions.",
346
396
  "",
397
+ ...(input.revisedSoFarMarkdown ? [
398
+ "## Second-Version Chapters Already Written (for continuity — do not rewrite)",
399
+ input.revisedSoFarMarkdown,
400
+ "",
401
+ ] : []),
347
402
  "## Output Format",
348
- "=== SHORT_FICTION_TITLE ===",
349
- "The story title — plain text, platform-ready, nothing else",
350
- "=== SHORT_FICTION_OPENING_HOOK ===",
351
- "An optional pre-story hook of about 130 words; if no standalone teaser is needed, still write the small first-screen scene that opens chapter 1",
352
- ...Array.from({ length: input.chapterCount }, (_, index) => {
353
- const chapter = index + 1;
354
- return [
355
- `=== CHAPTER ${chapter} TITLE ===`,
356
- "Chapter title plain text only, no #, no \"Chapter N\" prefix",
357
- `=== CHAPTER ${chapter} CONTENT ===`,
358
- `Chapter ${chapter} prose — full scenes, no synopsis, no author notes`,
359
- ].join("\n");
360
- }),
403
+ ...(isFirstBatch(input) ? [
404
+ "=== SHORT_FICTION_TITLE ===",
405
+ "The story title — plain text, platform-ready, nothing else",
406
+ "=== SHORT_FICTION_OPENING_HOOK ===",
407
+ // Basis: proportion to the chapter it precedes, not a word-count
408
+ // conversion. The zh format's ~200-character hook sits in front of
409
+ // ~1,000-character chapters — about one fifth. One fifth of a
410
+ // 1,200-word en chapter is 240.
411
+ "An optional pre-story hook of about 240 words; if no standalone teaser is needed, still write the small first-screen scene that opens chapter 1",
412
+ ] : []),
413
+ ...rangeChapters(input).map((chapter) => [
414
+ `=== CHAPTER ${chapter} TITLE ===`,
415
+ "Chapter title — plain text only, no #, no \"Chapter N\" prefix",
416
+ `=== CHAPTER ${chapter} CONTENT ===`,
417
+ `Chapter ${chapter} prose — full scenes, no synopsis, no author notes`,
418
+ ].join("\n")),
361
419
  ].join("\n");
362
420
  }
363
421
  return [
364
- "根据审稿意见,继续写第二版完整正文。",
422
+ input.chapterRange
423
+ ? `根据审稿意见,只写第 ${chapterRangeLabel(input.chapterRange[0], input.chapterRange[1])} 章的第二版正文。`
424
+ : "根据审稿意见,继续写第二版完整正文。",
365
425
  "这是同一篇的第二轮写作:保留上一版能打的地方,修掉会让读者出戏或不想读的问题。",
366
- "不要只列修改建议,不要只改几章片段,输出完整正文。",
426
+ input.chapterRange
427
+ ? "不要只列修改建议,不要改这个区间以外的章节,把这几章的完整正文写出来。"
428
+ : "不要只列修改建议,不要只改几章片段,输出完整正文。",
367
429
  "",
368
430
  "## 审稿意见",
369
431
  input.review.trim(),
@@ -374,26 +436,30 @@ export function buildShortFictionDraftRevisionFollowup(input, language = "zh") {
374
436
  "- 保持标题、开篇、章节标题和正文主标题一致,但标题可以基于正文重新压得更有平台点击感。",
375
437
  "- 字数只做校准:偏短补有效场面,偏长删解释和重复反应。",
376
438
  "",
439
+ ...(input.revisedSoFarMarkdown ? [
440
+ "## 第二版已完成章节(只用于承接,不要重写)",
441
+ input.revisedSoFarMarkdown,
442
+ "",
443
+ ] : []),
377
444
  "## 输出格式",
378
- "=== SHORT_FICTION_TITLE ===",
379
- "短篇标题,只写纯文本平台标题",
380
- "=== SHORT_FICTION_OPENING_HOOK ===",
381
- "可选正文前小钩子,约 200 字;如果不需要独立引子,也要写第 1 章第一屏的入局小场面",
382
- ...Array.from({ length: input.chapterCount }, (_, index) => {
383
- const chapter = index + 1;
384
- return [
385
- `=== CHAPTER ${chapter} TITLE ===`,
386
- "章节标题,只写纯文本,不要 #,不要第几章前缀",
387
- `=== CHAPTER ${chapter} CONTENT ===`,
388
- `第${chapter}章正文,写完整场面,不要梗概,不要作者备注`,
389
- ].join("\n");
390
- }),
445
+ ...(isFirstBatch(input) ? [
446
+ "=== SHORT_FICTION_TITLE ===",
447
+ "短篇标题,只写纯文本平台标题",
448
+ "=== SHORT_FICTION_OPENING_HOOK ===",
449
+ "可选正文前小钩子,约 200 字;如果不需要独立引子,也要写第 1 章第一屏的入局小场面",
450
+ ] : []),
451
+ ...rangeChapters(input).map((chapter) => [
452
+ `=== CHAPTER ${chapter} TITLE ===`,
453
+ "章节标题,只写纯文本,不要 #,不要第几章前缀",
454
+ `=== CHAPTER ${chapter} CONTENT ===`,
455
+ `第${chapter}章正文,写完整场面,不要梗概,不要作者备注`,
456
+ ].join("\n")),
391
457
  ].join("\n");
392
458
  }
393
- export function buildShortFictionPackageSystemPrompt(language = "zh") {
459
+ export function buildShortFictionPackageSystemPrompt(language = "en") {
394
460
  if (language === "en") {
395
461
  return [
396
- "You are a short-fiction packaging editor. From the final draft you produce the synopsis, the selling points, and the cover-image prompt.",
462
+ "You are a short-fiction packaging editor. From the final draft you produce the synopsis, the store-listing description bullets, and the cover-image prompt.",
397
463
  "Never invent a main title different from the draft's. All packaging must revolve around the draft's actual title and plot.",
398
464
  "Think of the cover prompt as a mobile portrait book cover: 3:4 vertical, a large title zone, strong character emotion, one or two instantly recognizable props, high-contrast colors — not a movie poster.",
399
465
  ].join("\n");
@@ -404,7 +470,7 @@ export function buildShortFictionPackageSystemPrompt(language = "zh") {
404
470
  "封面提示词按手机端竖版书封思考:3:4 竖图、大标题区、强人物情绪、少量一眼可识别道具、高对比色彩,不要影视海报感。",
405
471
  ].join("\n");
406
472
  }
407
- export function buildShortFictionPackageUserPrompt(input, language = "zh") {
473
+ export function buildShortFictionPackageUserPrompt(input, language = "en") {
408
474
  if (language === "en") {
409
475
  return [
410
476
  "## Creative Direction",
@@ -420,9 +486,13 @@ export function buildShortFictionPackageUserPrompt(input, language = "zh") {
420
486
  "=== SHORT_FICTION_PACKAGE_TITLE ===",
421
487
  input.draftTitle,
422
488
  "=== SHORT_FICTION_INTRO ===",
423
- "A 70-120 word platform synopsis that grabs the conflict, the pressure, and the payoff — never a spoiler-filled play-by-play.",
489
+ // Basis: English storefront product descriptions (Kindle/Amazon book
490
+ // descriptions run roughly 100-200 words, with ~150 a common working
491
+ // target) — a market anchor, not a conversion of the zh 100-180-
492
+ // character figure.
493
+ "A 100-150 word platform synopsis that grabs the conflict, the pressure, and the payoff — never a spoiler-filled play-by-play.",
424
494
  "=== SHORT_FICTION_SELLING_POINTS ===",
425
- "- 3 to 6 selling points, one per line",
495
+ "- 3 to 6 one-line hooks for the product description's bullet list, one per line — each names a concrete promise (a reversal, a stake, a question), not a genre label",
426
496
  "=== SHORT_FICTION_COVER_PROMPT ===",
427
497
  "An English cover-generation prompt: 3:4 portrait, main title zone, character emotion, props, color palette, typography style, and what to avoid.",
428
498
  ].join("\n");
@@ -448,7 +518,7 @@ export function buildShortFictionPackageUserPrompt(input, language = "zh") {
448
518
  "中文封面生成提示词:3:4竖图,主标题区,人物情绪,道具,配色,字体风格,避免事项。",
449
519
  ].join("\n");
450
520
  }
451
- function buildShortFictionCraftPrompt(language = "zh") {
521
+ function buildShortFictionCraftPrompt(language = "en") {
452
522
  if (language === "en") {
453
523
  return [
454
524
  "## Craft Reminders",
@@ -1 +1 @@
1
- {"version":3,"file":"short-fiction.js","sourceRoot":"","sources":["../../src/prompts/short-fiction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"short-fiction.js","sourceRoot":"","sources":["../../src/prompts/short-fiction.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,16 @@ import { type ChapterMemo } from "../models/input-governance.js";
2
2
  export declare class PlannerParseError extends Error {
3
3
  constructor(message: string);
4
4
  }
5
+ /**
6
+ * The canonical memo section names. The parser matches on these, the planner
7
+ * emits them, and the writer's memo contract must cite them — sourcing all three
8
+ * from one place is what stops the contract from naming sections that no memo
9
+ * contains.
10
+ */
11
+ export declare const MEMO_SECTION_NAMES: ReadonlyArray<{
12
+ readonly zh: string;
13
+ readonly en: string;
14
+ }>;
5
15
  /**
6
16
  * Parse a planner memo produced by the LLM.
7
17
  *
@@ -1 +1 @@
1
- {"version":3,"file":"chapter-memo-parser.d.ts","sourceRoot":"","sources":["../../src/utils/chapter-memo-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAEpF,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,OAAO,EAAE,MAAM;CAI5B;AA8HD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,SAAS,CACvB,GAAG,EAAE,MAAM,EACX,eAAe,EAAE,MAAM,EACvB,eAAe,EAAE,OAAO,GACvB,WAAW,CA6Cb"}
1
+ {"version":3,"file":"chapter-memo-parser.d.ts","sourceRoot":"","sources":["../../src/utils/chapter-memo-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAEpF,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,OAAO,EAAE,MAAM;CAI5B;AAkBD;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,EAAE,aAAa,CAAC;IAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAS1F,CAAC;AAkIF;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,SAAS,CACvB,GAAG,EAAE,MAAM,EACX,eAAe,EAAE,MAAM,EACvB,eAAe,EAAE,OAAO,GACvB,WAAW,CA6Cb"}
@@ -5,17 +5,66 @@ export class PlannerParseError extends Error {
5
5
  this.name = "PlannerParseError";
6
6
  }
7
7
  }
8
- const REQUIRED_SECTIONS = [
9
- { zh: "## 场景与篇幅预算", en: "## Scene and length budget", minContentChars: 20 },
10
- { zh: "## 当前任务", en: "## Current task", minContentChars: 20 },
11
- { zh: "## 读者此刻在等什么", en: "## What the reader is waiting for right now", minContentChars: 20 },
12
- { zh: "## 该兑现的 / 暂不掀的", en: "## To pay off / to keep buried", minContentChars: 20 },
13
- { zh: "## 日常/过渡承担什么任务", en: "## What the slow / transitional beats carry", minContentChars: 20 },
14
- { zh: "## 关键抉择过三连问", en: "## Three-question check on the key choice", minContentChars: 20 },
15
- { zh: "## 章尾必须发生的改变", en: "## Required end-of-chapter change", minContentChars: 20 },
16
- { zh: "## 本章 hook 账", en: "## Hook ledger for this chapter", minContentChars: 20 },
17
- { zh: "## 不要做", en: "## Do not", minContentChars: 1 },
8
+ // Phase hotfix 4: each required section is a (zh, en) heading pair.
9
+ // The English headings come from PLANNER_MEMO_SYSTEM_PROMPT_EN we accept
10
+ // EITHER language at parse time so the same parser works for both.
11
+ //
12
+ // Phase hotfix 7: minContentChars enforces non-emptiness per section so
13
+ // "all required headings + blank payload" no longer slips through. The "do not"
14
+ // section uses a relaxed threshold because "无 / N/A / none." is legitimate
15
+ // for chapters with no extra prohibitions.
16
+ //
17
+ // Threshold rationale:
18
+ // - 20 chars: long enough to catch obvious empty sections (whitespace,
19
+ // "(略)", "TODO") but short enough to accept genuinely sparse memos for
20
+ // breath/transition chapters (Phase 6 sparse-memo principle).
21
+ // - 1 char for "## 不要做" / "## Do not" because "无" / "N/A" / "none" /
22
+ // "—" are all legitimate for a chapter with no extra prohibitions; we
23
+ // only need to ensure the section is not whitespace-only.
24
+ /**
25
+ * The canonical memo section names. The parser matches on these, the planner
26
+ * emits them, and the writer's memo contract must cite them — sourcing all three
27
+ * from one place is what stops the contract from naming sections that no memo
28
+ * contains.
29
+ */
30
+ export const MEMO_SECTION_NAMES = [
31
+ { zh: "## 当前任务", en: "## Current task" },
32
+ { zh: "## 读者此刻在等什么", en: "## What the reader is waiting for right now" },
33
+ { zh: "## 该兑现的 / 暂不掀的", en: "## To pay off / to keep buried" },
34
+ { zh: "## 日常/过渡承担什么任务", en: "## What the slow / transitional beats carry" },
35
+ { zh: "## 关键抉择过三连问", en: "## Three-question check on the key choice" },
36
+ { zh: "## 章尾必须发生的改变", en: "## Required end-of-chapter change" },
37
+ { zh: "## 本章 hook 账", en: "## Hook ledger for this chapter" },
38
+ { zh: "## 不要做", en: "## Do not" },
18
39
  ];
40
+ /**
41
+ * The scene/length budget section. It is required by the parser but is not one
42
+ * of the memo body sections the planner/writer prompts cite, so it lives here
43
+ * rather than in MEMO_SECTION_NAMES.
44
+ */
45
+ const SCENE_BUDGET_SECTION = {
46
+ zh: "## 场景与篇幅预算",
47
+ en: "## Scene and length budget",
48
+ };
49
+ const DEFAULT_MIN_CONTENT_CHARS = 20;
50
+ const RELAXED_MIN_CONTENT_CHARS = 1;
51
+ /** Sections (keyed by their zh heading) that take RELAXED_MIN_CONTENT_CHARS. */
52
+ const RELAXED_MIN_CONTENT_SECTIONS = new Set(["## 不要做"]);
53
+ /**
54
+ * Derived from MEMO_SECTION_NAMES so the headings cannot drift between what the
55
+ * prompts cite and what the parser accepts: the scene-budget row is prepended
56
+ * and a minContentChars threshold is overlaid per row.
57
+ */
58
+ const REQUIRED_SECTIONS = [
59
+ SCENE_BUDGET_SECTION,
60
+ ...MEMO_SECTION_NAMES,
61
+ ].map((section) => ({
62
+ zh: section.zh,
63
+ en: section.en,
64
+ minContentChars: RELAXED_MIN_CONTENT_SECTIONS.has(section.zh)
65
+ ? RELAXED_MIN_CONTENT_CHARS
66
+ : DEFAULT_MIN_CONTENT_CHARS,
67
+ }));
19
68
  const GOAL_HEADINGS = ["## 本章目标", "## Chapter goal"];
20
69
  const THREAD_HEADINGS = ["## 关联线索", "## Thread refs", "## Related threads"];
21
70
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"chapter-memo-parser.js","sourceRoot":"","sources":["../../src/utils/chapter-memo-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAoB,MAAM,+BAA+B,CAAC;AAEpF,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAC1C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAwBD,MAAM,iBAAiB,GAAmC;IACxD,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,4BAA4B,EAAE,eAAe,EAAE,EAAE,EAAE;IAC3E,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,iBAAiB,EAAE,eAAe,EAAE,EAAE,EAAE;IAC7D,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,6CAA6C,EAAE,eAAe,EAAE,EAAE,EAAE;IAC7F,EAAE,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,gCAAgC,EAAE,eAAe,EAAE,EAAE,EAAE;IACnF,EAAE,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,6CAA6C,EAAE,eAAe,EAAE,EAAE,EAAE;IAChG,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,2CAA2C,EAAE,eAAe,EAAE,EAAE,EAAE;IAC3F,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,mCAAmC,EAAE,eAAe,EAAE,EAAE,EAAE;IACpF,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,iCAAiC,EAAE,eAAe,EAAE,EAAE,EAAE;IAClF,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC,EAAE;CACtD,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,SAAS,EAAE,iBAAiB,CAAU,CAAC;AAC9D,MAAM,eAAe,GAAG,CAAC,SAAS,EAAE,gBAAgB,EAAE,oBAAoB,CAAU,CAAC;AAErF;;;;GAIG;AACH,SAAS,qBAAqB,CAAC,IAAY,EAAE,OAAe;IAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACzC,IAAI,UAAU,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACtD,4EAA4E;IAC5E,4DAA4D;IAC5D,MAAM,gBAAgB,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC/C,MAAM,UAAU,GAAG,gBAAgB;QACjC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,gBAAgB,CAAC,KAAK,CAAC;QACxC,CAAC,CAAC,KAAK,CAAC;IACV,OAAO,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AAChD,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAW;IACrC,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;IAC9E,OAAO,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,OAAO,CAAC;AACxC,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAW;IACnC,MAAM,OAAO,GAAG;QACd,MAAM;QACN,YAAY;QACZ,GAAG,aAAa;QAChB,GAAG,eAAe;QAClB,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;KACpE,CAAC;IACF,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;IACf,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC;YAC/C,KAAK,GAAG,KAAK,CAAC;QAChB,CAAC;IACH,CAAC;IACD,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;AAC3D,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY,EAAE,QAA+B;IACtE,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,qBAAqB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACrD,IAAI,OAAO;YAAE,OAAO,OAAO,CAAC;IAC9B,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,WAAW,CAAC,IAAY;IAC/B,MAAM,YAAY,GAAG,iBAAiB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAC5D,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACzD,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY;IACrC,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;IACvD,IAAI,CAAC,KAAK,IAAI,kCAAkC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QACpE,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,8CAA8C,CAAC,IAAI,EAAE,CAAC;IAClF,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,eAAe,CAAC,QAAgB;IACvC,MAAM,MAAM,GAAG,iBAAiB;SAC7B,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;SAC9C,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;SAC3C,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;IACjC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;IAChD,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACpD,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACnC,IAAI,IAAI,CAAC,MAAM,IAAI,EAAE;QAAE,OAAO,IAAI,CAAC;IACnC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC;AAC7C,CAAC;AAED,SAAS,uBAAuB,CAAC,QAAgB,EAAE,IAAY,EAAE,QAAgB,EAAE,WAAmB;IACpG,IAAI,QAAQ,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IAC1C,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC;IACrF,OAAO,GAAG,OAAO,KAAK,QAAQ,OAAO,IAAI,EAAE,CAAC;AAC9C,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,SAAS,CACvB,GAAW,EACX,eAAuB,EACvB,eAAwB;IAExB,MAAM,QAAQ,GAAG,gBAAgB,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3D,MAAM,IAAI,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,UAAU,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAE/C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,iBAAiB,CAAC,iCAAiC,CAAC,CAAC;IACjE,CAAC;IACD,MAAM,WAAW,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IAE1C,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CACtC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CACtE,CAAC;IACF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,0EAA0E;QAC1E,MAAM,IAAI,iBAAiB,CACzB,qBAAqB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC3D,CAAC;IACJ,CAAC;IAED,gFAAgF;IAChF,6EAA6E;IAC7E,6EAA6E;IAC7E,sEAAsE;IACtE,yEAAyE;IACzE,MAAM,KAAK,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;QACjD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;QACpE,MAAM,OAAO,GAAG,qBAAqB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACrD,OAAO,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAClD,CAAC,CAAC,CAAC;IACH,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,KAAK;aACjB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,eAAe,SAAS,CAAC;aACzD,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,MAAM,IAAI,iBAAiB,CAAC,mBAAmB,MAAM,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,OAAO,iBAAiB,CAAC,KAAK,CAAC;QAC7B,OAAO,EAAE,eAAe;QACxB,IAAI,EAAE,WAAW;QACjB,eAAe;QACf,IAAI,EAAE,uBAAuB,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC;QAChE,UAAU;KACX,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"chapter-memo-parser.js","sourceRoot":"","sources":["../../src/utils/chapter-memo-parser.ts"],"names":[],"mappings":"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"}