@actalk/inkos-core 0.5.1 → 0.6.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 (169) hide show
  1. package/dist/agents/architect.d.ts +6 -1
  2. package/dist/agents/architect.d.ts.map +1 -1
  3. package/dist/agents/architect.js +362 -83
  4. package/dist/agents/architect.js.map +1 -1
  5. package/dist/agents/chapter-analyzer.d.ts +6 -0
  6. package/dist/agents/chapter-analyzer.d.ts.map +1 -1
  7. package/dist/agents/chapter-analyzer.js +220 -17
  8. package/dist/agents/chapter-analyzer.js.map +1 -1
  9. package/dist/agents/composer.d.ts +28 -0
  10. package/dist/agents/composer.d.ts.map +1 -0
  11. package/dist/agents/composer.js +154 -0
  12. package/dist/agents/composer.js.map +1 -0
  13. package/dist/agents/consolidator.d.ts.map +1 -1
  14. package/dist/agents/consolidator.js +17 -8
  15. package/dist/agents/consolidator.js.map +1 -1
  16. package/dist/agents/continuity.d.ts +10 -0
  17. package/dist/agents/continuity.d.ts.map +1 -1
  18. package/dist/agents/continuity.js +312 -133
  19. package/dist/agents/continuity.js.map +1 -1
  20. package/dist/agents/en-prompt-sections.d.ts.map +1 -1
  21. package/dist/agents/en-prompt-sections.js +1 -0
  22. package/dist/agents/en-prompt-sections.js.map +1 -1
  23. package/dist/agents/length-normalizer.d.ts +32 -0
  24. package/dist/agents/length-normalizer.d.ts.map +1 -0
  25. package/dist/agents/length-normalizer.js +156 -0
  26. package/dist/agents/length-normalizer.js.map +1 -0
  27. package/dist/agents/planner.d.ts +42 -0
  28. package/dist/agents/planner.d.ts.map +1 -0
  29. package/dist/agents/planner.js +382 -0
  30. package/dist/agents/planner.js.map +1 -0
  31. package/dist/agents/post-write-validator.d.ts +6 -1
  32. package/dist/agents/post-write-validator.d.ts.map +1 -1
  33. package/dist/agents/post-write-validator.js +88 -2
  34. package/dist/agents/post-write-validator.js.map +1 -1
  35. package/dist/agents/reviser.d.ts +10 -1
  36. package/dist/agents/reviser.d.ts.map +1 -1
  37. package/dist/agents/reviser.js +151 -36
  38. package/dist/agents/reviser.js.map +1 -1
  39. package/dist/agents/rules-reader.d.ts +1 -0
  40. package/dist/agents/rules-reader.d.ts.map +1 -1
  41. package/dist/agents/rules-reader.js +13 -0
  42. package/dist/agents/rules-reader.js.map +1 -1
  43. package/dist/agents/settler-delta-parser.d.ts +7 -0
  44. package/dist/agents/settler-delta-parser.d.ts.map +1 -0
  45. package/dist/agents/settler-delta-parser.js +35 -0
  46. package/dist/agents/settler-delta-parser.js.map +1 -0
  47. package/dist/agents/settler-prompts.d.ts +2 -0
  48. package/dist/agents/settler-prompts.d.ts.map +1 -1
  49. package/dist/agents/settler-prompts.js +77 -63
  50. package/dist/agents/settler-prompts.js.map +1 -1
  51. package/dist/agents/writer-parser.d.ts +3 -2
  52. package/dist/agents/writer-parser.d.ts.map +1 -1
  53. package/dist/agents/writer-parser.js +44 -13
  54. package/dist/agents/writer-parser.js.map +1 -1
  55. package/dist/agents/writer-prompts.d.ts +2 -1
  56. package/dist/agents/writer-prompts.d.ts.map +1 -1
  57. package/dist/agents/writer-prompts.js +65 -21
  58. package/dist/agents/writer-prompts.js.map +1 -1
  59. package/dist/agents/writer.d.ts +28 -1
  60. package/dist/agents/writer.d.ts.map +1 -1
  61. package/dist/agents/writer.js +426 -67
  62. package/dist/agents/writer.js.map +1 -1
  63. package/dist/index.d.ts +18 -3
  64. package/dist/index.d.ts.map +1 -1
  65. package/dist/index.js +17 -2
  66. package/dist/index.js.map +1 -1
  67. package/dist/llm/provider.d.ts +1 -0
  68. package/dist/llm/provider.d.ts.map +1 -1
  69. package/dist/llm/provider.js +19 -6
  70. package/dist/llm/provider.js.map +1 -1
  71. package/dist/models/chapter.d.ts +71 -0
  72. package/dist/models/chapter.d.ts.map +1 -1
  73. package/dist/models/chapter.js +3 -0
  74. package/dist/models/chapter.js.map +1 -1
  75. package/dist/models/input-governance.d.ts +351 -0
  76. package/dist/models/input-governance.d.ts.map +1 -0
  77. package/dist/models/input-governance.js +78 -0
  78. package/dist/models/input-governance.js.map +1 -0
  79. package/dist/models/length-governance.d.ts +93 -0
  80. package/dist/models/length-governance.d.ts.map +1 -0
  81. package/dist/models/length-governance.js +34 -0
  82. package/dist/models/length-governance.js.map +1 -0
  83. package/dist/models/project.d.ts +5 -0
  84. package/dist/models/project.d.ts.map +1 -1
  85. package/dist/models/project.js +2 -0
  86. package/dist/models/project.js.map +1 -1
  87. package/dist/models/runtime-state.d.ts +521 -0
  88. package/dist/models/runtime-state.d.ts.map +1 -0
  89. package/dist/models/runtime-state.js +78 -0
  90. package/dist/models/runtime-state.js.map +1 -0
  91. package/dist/pipeline/agent.d.ts +2 -1
  92. package/dist/pipeline/agent.d.ts.map +1 -1
  93. package/dist/pipeline/agent.js +90 -5
  94. package/dist/pipeline/agent.js.map +1 -1
  95. package/dist/pipeline/runner.d.ts +65 -1
  96. package/dist/pipeline/runner.d.ts.map +1 -1
  97. package/dist/pipeline/runner.js +1029 -73
  98. package/dist/pipeline/runner.js.map +1 -1
  99. package/dist/state/manager.d.ts +14 -0
  100. package/dist/state/manager.d.ts.map +1 -1
  101. package/dist/state/manager.js +114 -0
  102. package/dist/state/manager.js.map +1 -1
  103. package/dist/state/memory-db.d.ts +15 -0
  104. package/dist/state/memory-db.d.ts.map +1 -1
  105. package/dist/state/memory-db.js +119 -10
  106. package/dist/state/memory-db.js.map +1 -1
  107. package/dist/state/runtime-state-store.d.ts +23 -0
  108. package/dist/state/runtime-state-store.d.ts.map +1 -0
  109. package/dist/state/runtime-state-store.js +100 -0
  110. package/dist/state/runtime-state-store.js.map +1 -0
  111. package/dist/state/state-bootstrap.d.ts +19 -0
  112. package/dist/state/state-bootstrap.d.ts.map +1 -0
  113. package/dist/state/state-bootstrap.js +394 -0
  114. package/dist/state/state-bootstrap.js.map +1 -0
  115. package/dist/state/state-projections.d.ts +5 -0
  116. package/dist/state/state-projections.d.ts.map +1 -0
  117. package/dist/state/state-projections.js +164 -0
  118. package/dist/state/state-projections.js.map +1 -0
  119. package/dist/state/state-reducer.d.ts +12 -0
  120. package/dist/state/state-reducer.d.ts.map +1 -0
  121. package/dist/state/state-reducer.js +146 -0
  122. package/dist/state/state-reducer.js.map +1 -0
  123. package/dist/state/state-validator.d.ts +12 -0
  124. package/dist/state/state-validator.d.ts.map +1 -0
  125. package/dist/state/state-validator.js +56 -0
  126. package/dist/state/state-validator.js.map +1 -0
  127. package/dist/utils/chapter-splitter.d.ts +2 -0
  128. package/dist/utils/chapter-splitter.d.ts.map +1 -1
  129. package/dist/utils/chapter-splitter.js +22 -4
  130. package/dist/utils/chapter-splitter.js.map +1 -1
  131. package/dist/utils/config-loader.d.ts +3 -1
  132. package/dist/utils/config-loader.d.ts.map +1 -1
  133. package/dist/utils/config-loader.js +14 -3
  134. package/dist/utils/config-loader.js.map +1 -1
  135. package/dist/utils/context-filter.js +1 -1
  136. package/dist/utils/context-filter.js.map +1 -1
  137. package/dist/utils/governed-context.d.ts +7 -0
  138. package/dist/utils/governed-context.d.ts.map +1 -0
  139. package/dist/utils/governed-context.js +22 -0
  140. package/dist/utils/governed-context.js.map +1 -0
  141. package/dist/utils/governed-working-set.d.ts +18 -0
  142. package/dist/utils/governed-working-set.d.ts.map +1 -0
  143. package/dist/utils/governed-working-set.js +295 -0
  144. package/dist/utils/governed-working-set.js.map +1 -0
  145. package/dist/utils/hook-governance.d.ts +26 -0
  146. package/dist/utils/hook-governance.d.ts.map +1 -0
  147. package/dist/utils/hook-governance.js +128 -0
  148. package/dist/utils/hook-governance.js.map +1 -0
  149. package/dist/utils/hook-health.d.ts +14 -0
  150. package/dist/utils/hook-health.d.ts.map +1 -0
  151. package/dist/utils/hook-health.js +68 -0
  152. package/dist/utils/hook-health.js.map +1 -0
  153. package/dist/utils/length-metrics.d.ts +10 -0
  154. package/dist/utils/length-metrics.d.ts.map +1 -0
  155. package/dist/utils/length-metrics.js +85 -0
  156. package/dist/utils/length-metrics.js.map +1 -0
  157. package/dist/utils/long-span-fatigue.d.ts +28 -0
  158. package/dist/utils/long-span-fatigue.d.ts.map +1 -0
  159. package/dist/utils/long-span-fatigue.js +359 -0
  160. package/dist/utils/long-span-fatigue.js.map +1 -0
  161. package/dist/utils/memory-retrieval.d.ts +39 -0
  162. package/dist/utils/memory-retrieval.d.ts.map +1 -0
  163. package/dist/utils/memory-retrieval.js +574 -0
  164. package/dist/utils/memory-retrieval.js.map +1 -0
  165. package/dist/utils/spot-fix-patches.d.ts +14 -0
  166. package/dist/utils/spot-fix-patches.d.ts.map +1 -0
  167. package/dist/utils/spot-fix-patches.js +75 -0
  168. package/dist/utils/spot-fix-patches.js.map +1 -0
  169. package/package.json +1 -1
@@ -10,7 +10,7 @@ export interface ArchitectOutput {
10
10
  export declare class ArchitectAgent extends BaseAgent {
11
11
  get name(): string;
12
12
  generateFoundation(book: BookConfig, externalContext?: string): Promise<ArchitectOutput>;
13
- writeFoundationFiles(bookDir: string, output: ArchitectOutput, numericalSystem?: boolean): Promise<void>;
13
+ writeFoundationFiles(bookDir: string, output: ArchitectOutput, numericalSystem?: boolean, language?: "zh" | "en"): Promise<void>;
14
14
  /**
15
15
  * Reverse-engineer foundation from existing chapters.
16
16
  * Reads all chapters as a single text block and asks LLM to extract story_bible,
@@ -19,5 +19,10 @@ export declare class ArchitectAgent extends BaseAgent {
19
19
  generateFoundationFromImport(book: BookConfig, chaptersText: string, externalContext?: string): Promise<ArchitectOutput>;
20
20
  generateFanficFoundation(book: BookConfig, fanficCanon: string, fanficMode: FanficMode): Promise<ArchitectOutput>;
21
21
  private parseSections;
22
+ private stripTrailingAssistantCoda;
23
+ private normalizePendingHooksSection;
24
+ private parseHookChapterNumber;
25
+ private hasNarrativeProgress;
26
+ private mergeHookNotes;
22
27
  }
23
28
  //# sourceMappingURL=architect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"architect.d.ts","sourceRoot":"","sources":["../../src/agents/architect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAMhE,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,qBAAa,cAAe,SAAQ,SAAS;IAC3C,IAAI,IAAI,IAAI,MAAM,CAEjB;IAEK,kBAAkB,CAAC,IAAI,EAAE,UAAU,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAqJxF,oBAAoB,CACxB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,eAAe,EACvB,eAAe,GAAE,OAAc,GAC9B,OAAO,CAAC,IAAI,CAAC;IA4ChB;;;;OAIG;IACG,4BAA4B,CAChC,IAAI,EAAE,UAAU,EAChB,YAAY,EAAE,MAAM,EACpB,eAAe,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,eAAe,CAAC;IA0IrB,wBAAwB,CAC5B,IAAI,EAAE,UAAU,EAChB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,eAAe,CAAC;IA0E3B,OAAO,CAAC,aAAa;CAiBtB"}
1
+ {"version":3,"file":"architect.d.ts","sourceRoot":"","sources":["../../src/agents/architect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAOhE,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,qBAAa,cAAe,SAAQ,SAAS;IAC3C,IAAI,IAAI,IAAI,MAAM,CAEjB;IAEK,kBAAkB,CAAC,IAAI,EAAE,UAAU,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAkQxF,oBAAoB,CACxB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,eAAe,EACvB,eAAe,GAAE,OAAc,EAC/B,QAAQ,GAAE,IAAI,GAAG,IAAW,GAC3B,OAAO,CAAC,IAAI,CAAC;IAoDhB;;;;OAIG;IACG,4BAA4B,CAChC,IAAI,EAAE,UAAU,EAChB,YAAY,EAAE,MAAM,EACpB,eAAe,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,eAAe,CAAC;IAwOrB,wBAAwB,CAC5B,IAAI,EAAE,UAAU,EAChB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,eAAe,CAAC;IA0E3B,OAAO,CAAC,aAAa;IAyBrB,OAAO,CAAC,0BAA0B;IAelC,OAAO,CAAC,4BAA4B;IAyCpC,OAAO,CAAC,sBAAsB;IAM9B,OAAO,CAAC,oBAAoB;IAM5B,OAAO,CAAC,cAAc;CAavB"}
@@ -2,12 +2,14 @@ import { BaseAgent } from "./base.js";
2
2
  import { readGenreProfile } from "./rules-reader.js";
3
3
  import { writeFile, mkdir } from "node:fs/promises";
4
4
  import { join } from "node:path";
5
+ import { renderHookSnapshot } from "../utils/memory-retrieval.js";
5
6
  export class ArchitectAgent extends BaseAgent {
6
7
  get name() {
7
8
  return "architect";
8
9
  }
9
10
  async generateFoundation(book, externalContext) {
10
11
  const { profile: gp, body: genreBody } = await readGenreProfile(this.ctx.projectRoot, book.genre);
12
+ const resolvedLanguage = book.language ?? gp.language;
11
13
  const contextBlock = externalContext
12
14
  ? `\n\n## 外部指令\n以下是来自外部系统的创作指令,请将其融入设定中:\n\n${externalContext}\n`
13
15
  : "";
@@ -21,24 +23,34 @@ export class ArchitectAgent extends BaseAgent {
21
23
  const eraBlock = gp.eraResearch
22
24
  ? "- 需要年代考据支撑(在 book_rules 中设置 eraConstraints)"
23
25
  : "";
24
- const systemPrompt = `你是一个专业的网络小说架构师。你的任务是为一本新的${gp.name}小说生成完整的基础设定。${contextBlock}
25
-
26
- 要求:
27
- - 平台:${book.platform}
28
- - 题材:${gp.name}(${book.genre})
29
- - 目标章数:${book.targetChapters}章
30
- - 每章字数:${book.chapterWordCount}字
31
-
32
- ## 题材特征
33
-
34
- ${genreBody}
35
-
36
- ## 生成要求
37
-
38
- 你需要生成以下内容,每个部分用 === SECTION: <name> === 分隔:
39
-
40
- === SECTION: story_bible ===
41
- 用结构化二级标题组织:
26
+ const storyBiblePrompt = resolvedLanguage === "en"
27
+ ? `Use structured second-level headings:
28
+ ## 01_Worldview
29
+ World setting, historical-social frame, and core rules
30
+
31
+ ## 02_Protagonist
32
+ Protagonist setup (identity / advantage / personality core / behavioral boundaries)
33
+
34
+ ## 03_Factions_and_Characters
35
+ Major factions and important supporting characters (for each: name, identity, motivation, relationship to protagonist, independent goal)
36
+
37
+ ## 04_Geography_and_Environment
38
+ Map / scene design and environmental traits
39
+
40
+ ## 05_Title_and_Blurb
41
+ Title method:
42
+ - Keep the title clear, direct, and easy to understand
43
+ - Use a format that immediately signals genre and core appeal
44
+ - Avoid overly literary or misleading titles
45
+
46
+ Blurb method (within 300 words, choose one):
47
+ 1. Open with conflict, then reveal the hook, then leave suspense
48
+ 2. Summarize only the main line and keep a clear suspense gap
49
+ 3. Use a miniature scene that captures the book's strongest pull
50
+
51
+ Core blurb principle:
52
+ - The blurb is product copy that must make readers want to click`
53
+ : `用结构化二级标题组织:
42
54
  ## 01_世界观
43
55
  世界观设定、核心规则体系
44
56
 
@@ -67,18 +79,50 @@ ${genreBody}
67
79
  简介核心原则:
68
80
  - 简介 = 产品宣传语,必须让读者产生"我要点开看"的冲动
69
81
  - 可以从剧情设定、人设、或某个精彩片段切入
70
- - 必须有噱头(如"凡是被写在笔记本上的名字,最后都得死"
82
+ - 必须有噱头(如"凡是被写在笔记本上的名字,最后都得死")`;
83
+ const volumeOutlinePrompt = resolvedLanguage === "en"
84
+ ? `Volume plan. For each volume include: title, chapter range, core conflict, key turning points, and payoff goal
71
85
 
72
- === SECTION: volume_outline ===
73
- 卷纲规划,每卷包含:卷名、章节范围、核心冲突、关键转折、收益目标
86
+ ### Golden First Three Chapters Rule
87
+ - Chapter 1: throw the core conflict immediately; no large background dump
88
+ - Chapter 2: show the core edge / ability / leverage that answers Chapter 1's pressure
89
+ - Chapter 3: establish the first concrete short-term goal that gives readers a reason to continue`
90
+ : `卷纲规划,每卷包含:卷名、章节范围、核心冲突、关键转折、收益目标
74
91
 
75
92
  ### 黄金三章法则(前三章必须遵循)
76
93
  - 第1章:抛出核心冲突(主角立即面临困境/危机/选择),禁止大段背景灌输
77
94
  - 第2章:展示金手指/核心能力(主角如何应对第1章的困境),让读者看到爽点预期
78
- - 第3章:明确短期目标(主角确立第一个具体可达成的目标),给读者追读理由
95
+ - 第3章:明确短期目标(主角确立第一个具体可达成的目标),给读者追读理由`;
96
+ const bookRulesPrompt = resolvedLanguage === "en"
97
+ ? `Generate book_rules.md as YAML frontmatter plus narrative guidance:
98
+ \`\`\`
99
+ ---
100
+ version: "1.0"
101
+ protagonist:
102
+ name: (protagonist name)
103
+ personalityLock: [(3-5 personality keywords)]
104
+ behavioralConstraints: [(3-5 behavioral constraints)]
105
+ genreLock:
106
+ primary: ${book.genre}
107
+ forbidden: [(2-3 forbidden style intrusions)]
108
+ ${gp.numericalSystem ? `numericalSystemOverrides:
109
+ hardCap: (decide from the setting)
110
+ resourceTypes: [(core resource types)]` : ""}
111
+ prohibitions:
112
+ - (3-5 book-specific prohibitions)
113
+ chapterTypesOverride: []
114
+ fatigueWordsOverride: []
115
+ additionalAuditDimensions: []
116
+ enableFullCastTracking: false
117
+ ---
79
118
 
80
- === SECTION: book_rules ===
81
- 生成 book_rules.md 格式的 YAML frontmatter + 叙事指导,包含:
119
+ ## Narrative Perspective
120
+ (Describe the narrative perspective and style)
121
+
122
+ ## Core Conflict Driver
123
+ (Describe the book's core conflict and propulsion)
124
+ \`\`\``
125
+ : `生成 book_rules.md 格式的 YAML frontmatter + 叙事指导,包含:
82
126
  \`\`\`
83
127
  ---
84
128
  version: "1.0"
@@ -105,10 +149,19 @@ enableFullCastTracking: false
105
149
 
106
150
  ## 核心冲突驱动
107
151
  (描述本书的核心矛盾和驱动力)
108
- \`\`\`
109
-
110
- === SECTION: current_state ===
111
- 初始状态卡(第0章),包含:
152
+ \`\`\``;
153
+ const currentStatePrompt = resolvedLanguage === "en"
154
+ ? `Initial state card (Chapter 0), include:
155
+ | Field | Value |
156
+ | --- | --- |
157
+ | Current Chapter | 0 |
158
+ | Current Location | (starting location) |
159
+ | Protagonist State | (initial condition) |
160
+ | Current Goal | (first goal) |
161
+ | Current Constraint | (initial constraint) |
162
+ | Current Alliances | (initial relationships) |
163
+ | Current Conflict | (first conflict) |`
164
+ : `初始状态卡(第0章),包含:
112
165
  | 字段 | 值 |
113
166
  |------|-----|
114
167
  | 当前章节 | 0 |
@@ -117,13 +170,33 @@ enableFullCastTracking: false
117
170
  | 当前目标 | (第一个目标) |
118
171
  | 当前限制 | (初始限制) |
119
172
  | 当前敌我 | (初始关系) |
120
- | 当前冲突 | (第一个冲突) |
121
-
122
- === SECTION: pending_hooks ===
123
- 初始伏笔池(Markdown表格):
173
+ | 当前冲突 | (第一个冲突) |`;
174
+ const pendingHooksPrompt = resolvedLanguage === "en"
175
+ ? `Initial hook pool (Markdown table):
176
+ | hook_id | start_chapter | type | status | last_advanced_chapter | expected_payoff | notes |
177
+
178
+ Rules for the hook table:
179
+ - Column 5 must be a pure chapter number, never natural-language description
180
+ - During book creation, all planned hooks are still unapplied, so last_advanced_chapter = 0
181
+ - If you want to describe the initial clue/signal, put it in notes instead of column 5`
182
+ : `初始伏笔池(Markdown表格):
124
183
  | hook_id | 起始章节 | 类型 | 状态 | 最近推进 | 预期回收 | 备注 |
125
184
 
126
- 生成内容必须:
185
+ 伏笔表规则:
186
+ - 第5列必须是纯数字章节号,不能写自然语言描述
187
+ - 建书阶段所有伏笔都还没正式推进,所以第5列统一填 0
188
+ - 如果要说明“初始线索/最初信号”,写进备注,不要写进第5列`;
189
+ const finalRequirementsPrompt = resolvedLanguage === "en"
190
+ ? `Generated content must:
191
+ 1. Fit the ${book.platform} platform taste
192
+ 2. Fit the ${gp.name} genre traits
193
+ ${numericalBlock}
194
+ ${powerBlock}
195
+ ${eraBlock}
196
+ 3. Give the protagonist a clear personality and behavioral boundaries
197
+ 4. Keep hooks and payoffs coherent
198
+ 5. Make supporting characters independently motivated rather than pure tools`
199
+ : `生成内容必须:
127
200
  1. 符合${book.platform}平台口味
128
201
  2. 符合${gp.name}题材特征
129
202
  ${numericalBlock}
@@ -132,7 +205,38 @@ ${eraBlock}
132
205
  3. 主角人设鲜明,有明确行为边界
133
206
  4. 伏笔前后呼应,不留悬空线
134
207
  5. 配角有独立动机,不是工具人`;
135
- const resolvedLanguage = book.language ?? gp.language;
208
+ const systemPrompt = `你是一个专业的网络小说架构师。你的任务是为一本新的${gp.name}小说生成完整的基础设定。${contextBlock}
209
+
210
+ 要求:
211
+ - 平台:${book.platform}
212
+ - 题材:${gp.name}(${book.genre})
213
+ - 目标章数:${book.targetChapters}章
214
+ - 每章字数:${book.chapterWordCount}字
215
+
216
+ ## 题材特征
217
+
218
+ ${genreBody}
219
+
220
+ ## 生成要求
221
+
222
+ 你需要生成以下内容,每个部分用 === SECTION: <name> === 分隔:
223
+
224
+ === SECTION: story_bible ===
225
+ ${storyBiblePrompt}
226
+
227
+ === SECTION: volume_outline ===
228
+ ${volumeOutlinePrompt}
229
+
230
+ === SECTION: book_rules ===
231
+ ${bookRulesPrompt}
232
+
233
+ === SECTION: current_state ===
234
+ ${currentStatePrompt}
235
+
236
+ === SECTION: pending_hooks ===
237
+ ${pendingHooksPrompt}
238
+
239
+ ${finalRequirementsPrompt}`;
136
240
  const langPrefix = resolvedLanguage === "en"
137
241
  ? `【LANGUAGE OVERRIDE】ALL output (story_bible, volume_outline, book_rules, current_state, pending_hooks) MUST be written in English. Character names, place names, and all prose must be in English. The === SECTION: === tags remain unchanged.\n\n`
138
242
  : "";
@@ -145,7 +249,7 @@ ${eraBlock}
145
249
  ], { maxTokens: 16384, temperature: 0.8 });
146
250
  return this.parseSections(response.content);
147
251
  }
148
- async writeFoundationFiles(bookDir, output, numericalSystem = true) {
252
+ async writeFoundationFiles(bookDir, output, numericalSystem = true, language = "zh") {
149
253
  const storyDir = join(bookDir, "story");
150
254
  await mkdir(storyDir, { recursive: true });
151
255
  const writes = [
@@ -156,10 +260,18 @@ ${eraBlock}
156
260
  writeFile(join(storyDir, "pending_hooks.md"), output.pendingHooks, "utf-8"),
157
261
  ];
158
262
  if (numericalSystem) {
159
- writes.push(writeFile(join(storyDir, "particle_ledger.md"), "# 资源账本\n\n| 章节 | 期初值 | 来源 | 完整度 | 增量 | 期末值 | 依据 |\n|------|--------|------|--------|------|--------|------|\n| 0 | 0 | 初始化 | - | 0 | 0 | 开书初始 |\n", "utf-8"));
263
+ writes.push(writeFile(join(storyDir, "particle_ledger.md"), language === "en"
264
+ ? "# Resource Ledger\n\n| Chapter | Opening Value | Source | Integrity | Delta | Closing Value | Evidence |\n| --- | --- | --- | --- | --- | --- | --- |\n| 0 | 0 | Initialization | - | 0 | 0 | Initial book state |\n"
265
+ : "# 资源账本\n\n| 章节 | 期初值 | 来源 | 完整度 | 增量 | 期末值 | 依据 |\n|------|--------|------|--------|------|--------|------|\n| 0 | 0 | 初始化 | - | 0 | 0 | 开书初始 |\n", "utf-8"));
160
266
  }
161
267
  // Initialize new truth files
162
- writes.push(writeFile(join(storyDir, "subplot_board.md"), "# 支线进度板\n\n| 支线ID | 支线名 | 相关角色 | 起始章 | 最近活跃章 | 距今章数 | 状态 | 进度概述 | 回收ETA |\n|--------|--------|----------|--------|------------|----------|------|----------|---------|\n", "utf-8"), writeFile(join(storyDir, "emotional_arcs.md"), "# 情感弧线\n\n| 角色 | 章节 | 情绪状态 | 触发事件 | 强度(1-10) | 弧线方向 |\n|------|------|----------|----------|------------|----------|\n", "utf-8"), writeFile(join(storyDir, "character_matrix.md"), "# 角色交互矩阵\n\n### 角色档案\n| 角色 | 核心标签 | 反差细节 | 说话风格 | 性格底色 | 与主角关系 | 核心动机 | 当前目标 |\n|------|----------|----------|----------|----------|------------|----------|----------|\n\n### 相遇记录\n| 角色A | 角色B | 首次相遇章 | 最近交互章 | 关系性质 | 关系变化 |\n|-------|-------|------------|------------|----------|----------|\n\n### 信息边界\n| 角色 | 已知信息 | 未知信息 | 信息来源章 |\n|------|----------|----------|------------|\n", "utf-8"));
268
+ writes.push(writeFile(join(storyDir, "subplot_board.md"), language === "en"
269
+ ? "# Subplot Board\n\n| Subplot ID | Subplot | Related Characters | Start Chapter | Last Active Chapter | Chapters Since | Status | Progress Summary | Payoff ETA |\n| --- | --- | --- | --- | --- | --- | --- | --- | --- |\n"
270
+ : "# 支线进度板\n\n| 支线ID | 支线名 | 相关角色 | 起始章 | 最近活跃章 | 距今章数 | 状态 | 进度概述 | 回收ETA |\n|--------|--------|----------|--------|------------|----------|------|----------|---------|\n", "utf-8"), writeFile(join(storyDir, "emotional_arcs.md"), language === "en"
271
+ ? "# Emotional Arcs\n\n| Character | Chapter | Emotional State | Trigger Event | Intensity (1-10) | Arc Direction |\n| --- | --- | --- | --- | --- | --- |\n"
272
+ : "# 情感弧线\n\n| 角色 | 章节 | 情绪状态 | 触发事件 | 强度(1-10) | 弧线方向 |\n|------|------|----------|----------|------------|----------|\n", "utf-8"), writeFile(join(storyDir, "character_matrix.md"), language === "en"
273
+ ? "# Character Matrix\n\n### Character Profiles\n| Character | Core Tags | Contrast Detail | Speech Style | Personality Core | Relationship to Protagonist | Core Motivation | Current Goal |\n| --- | --- | --- | --- | --- | --- | --- | --- |\n\n### Encounter Log\n| Character A | Character B | First Meeting Chapter | Latest Interaction Chapter | Relationship Type | Relationship Change |\n| --- | --- | --- | --- | --- | --- |\n\n### Information Boundaries\n| Character | Known Information | Unknown Information | Source Chapter |\n| --- | --- | --- | --- |\n"
274
+ : "# 角色交互矩阵\n\n### 角色档案\n| 角色 | 核心标签 | 反差细节 | 说话风格 | 性格底色 | 与主角关系 | 核心动机 | 当前目标 |\n|------|----------|----------|----------|----------|------------|----------|----------|\n\n### 相遇记录\n| 角色A | 角色B | 首次相遇章 | 最近交互章 | 关系性质 | 关系变化 |\n|-------|-------|------------|------------|----------|----------|\n\n### 信息边界\n| 角色 | 已知信息 | 未知信息 | 信息来源章 |\n|------|----------|----------|------------|\n", "utf-8"));
163
275
  await Promise.all(writes);
164
276
  }
165
277
  /**
@@ -169,6 +281,7 @@ ${eraBlock}
169
281
  */
170
282
  async generateFoundationFromImport(book, chaptersText, externalContext) {
171
283
  const { profile: gp, body: genreBody } = await readGenreProfile(this.ctx.projectRoot, book.genre);
284
+ const resolvedLanguage = book.language ?? gp.language;
172
285
  const contextBlock = externalContext
173
286
  ? `\n\n## 外部指令\n${externalContext}\n`
174
287
  : "";
@@ -182,35 +295,23 @@ ${eraBlock}
182
295
  const eraBlock = gp.eraResearch
183
296
  ? "- 需要年代考据支撑(在 book_rules 中设置 eraConstraints)"
184
297
  : "";
185
- const systemPrompt = `你是一个专业的网络小说架构师。你的任务是从已有的小说正文中反向推导完整的基础设定。${contextBlock}
186
-
187
- ## 工作模式
188
-
189
- 这不是从零创建,而是从已有正文中提取和推导。你需要:
190
- 1. 从正文中提取世界观、势力、角色、力量体系 → 生成 story_bible
191
- 2. 从叙事结构推断卷纲 → 生成 volume_outline(已有章节的回顾 + 预测后续方向)
192
- 3. 从角色行为推断主角锁定和禁忌 → 生成 book_rules
193
- 4. 从最新章节状态推断 current_state(反映最后一章结束时的状态)
194
- 5. 从正文中识别已埋伏笔 → 生成 pending_hooks
195
-
196
- ## 书籍信息
197
-
198
- - 标题:${book.title}
199
- - 平台:${book.platform}
200
- - 题材:${gp.name}(${book.genre})
201
- - 目标章数:${book.targetChapters}章
202
- - 每章字数:${book.chapterWordCount}字
203
-
204
- ## 题材特征
298
+ const storyBiblePrompt = resolvedLanguage === "en"
299
+ ? `Extract from the source text and organize with structured second-level headings:
300
+ ## 01_Worldview
301
+ Extracted world setting, core rules, and frame
205
302
 
206
- ${genreBody}
303
+ ## 02_Protagonist
304
+ Inferred protagonist setup (identity / advantage / personality core / behavioral boundaries)
207
305
 
208
- ## 生成要求
306
+ ## 03_Factions_and_Characters
307
+ Factions and important supporting characters that appear in the source text
209
308
 
210
- 你需要生成以下内容,每个部分用 === SECTION: <name> === 分隔:
309
+ ## 04_Geography_and_Environment
310
+ Locations, environments, and scene traits drawn from the source text
211
311
 
212
- === SECTION: story_bible ===
213
- 从正文中提取,用结构化二级标题组织:
312
+ ## 05_Title_and_Blurb
313
+ Keep the original title "${book.title}" and generate a matching blurb from the source text`
314
+ : `从正文中提取,用结构化二级标题组织:
214
315
  ## 01_世界观
215
316
  从正文中提取的世界观设定、核心规则体系
216
317
 
@@ -224,16 +325,46 @@ ${genreBody}
224
325
  从正文中出现的地图/场景设定、环境特色
225
326
 
226
327
  ## 05_书名与简介
227
- 保留原书名"${book.title}",根据正文内容生成简介
228
-
229
- === SECTION: volume_outline ===
230
- 基于已有正文反推卷纲:
328
+ 保留原书名"${book.title}",根据正文内容生成简介`;
329
+ const volumeOutlinePrompt = resolvedLanguage === "en"
330
+ ? `Infer the volume plan from existing text:
331
+ - Existing chapters: review the actual structure already present
332
+ - Future projection: predict later directions from active hooks and plot momentum
333
+ For each volume include: title, chapter range, core conflict, and key turning points`
334
+ : `基于已有正文反推卷纲:
231
335
  - 已有章节部分:根据实际内容回顾每卷的结构
232
336
  - 后续预测部分:基于已有伏笔和剧情走向预测未来方向
233
- 每卷包含:卷名、章节范围、核心冲突、关键转折
337
+ 每卷包含:卷名、章节范围、核心冲突、关键转折`;
338
+ const bookRulesPrompt = resolvedLanguage === "en"
339
+ ? `Infer book_rules.md as YAML frontmatter plus narrative guidance from character behavior in the source text:
340
+ \`\`\`
341
+ ---
342
+ version: "1.0"
343
+ protagonist:
344
+ name: (extract protagonist name from the text)
345
+ personalityLock: [(infer 3-5 personality keywords from behavior)]
346
+ behavioralConstraints: [(infer 3-5 behavioral constraints from behavior)]
347
+ genreLock:
348
+ primary: ${book.genre}
349
+ forbidden: [(2-3 forbidden style intrusions)]
350
+ ${gp.numericalSystem ? `numericalSystemOverrides:
351
+ hardCap: (infer from the text)
352
+ resourceTypes: [(extract core resource types from the text)]` : ""}
353
+ prohibitions:
354
+ - (infer 3-5 book-specific prohibitions from the text)
355
+ chapterTypesOverride: []
356
+ fatigueWordsOverride: []
357
+ additionalAuditDimensions: []
358
+ enableFullCastTracking: false
359
+ ---
234
360
 
235
- === SECTION: book_rules ===
236
- 从正文中角色行为反推 book_rules.md 格式的 YAML frontmatter + 叙事指导:
361
+ ## Narrative Perspective
362
+ (Infer the narrative perspective and style from the text)
363
+
364
+ ## Core Conflict Driver
365
+ (Infer the book's core conflict and propulsion from the text)
366
+ \`\`\``
367
+ : `从正文中角色行为反推 book_rules.md 格式的 YAML frontmatter + 叙事指导:
237
368
  \`\`\`
238
369
  ---
239
370
  version: "1.0"
@@ -260,10 +391,19 @@ enableFullCastTracking: false
260
391
 
261
392
  ## 核心冲突驱动
262
393
  (从正文推断本书的核心矛盾和驱动力)
263
- \`\`\`
264
-
265
- === SECTION: current_state ===
266
- 反映最后一章结束时的状态卡:
394
+ \`\`\``;
395
+ const currentStatePrompt = resolvedLanguage === "en"
396
+ ? `Reflect the state at the end of the latest chapter:
397
+ | Field | Value |
398
+ | --- | --- |
399
+ | Current Chapter | (latest chapter number) |
400
+ | Current Location | (location at the end of the latest chapter) |
401
+ | Protagonist State | (state at the end of the latest chapter) |
402
+ | Current Goal | (current goal) |
403
+ | Current Constraint | (current constraint) |
404
+ | Current Alliances | (current alliances / opposition) |
405
+ | Current Conflict | (current conflict) |`
406
+ : `反映最后一章结束时的状态卡:
267
407
  | 字段 | 值 |
268
408
  |------|-----|
269
409
  | 当前章节 | (最后一章章节号) |
@@ -272,13 +412,23 @@ enableFullCastTracking: false
272
412
  | 当前目标 | (当前目标) |
273
413
  | 当前限制 | (当前限制) |
274
414
  | 当前敌我 | (当前敌我关系) |
275
- | 当前冲突 | (当前冲突) |
276
-
277
- === SECTION: pending_hooks ===
278
- 从正文中识别的所有伏笔(Markdown表格):
279
- | hook_id | 起始章节 | 类型 | 状态 | 最近推进 | 预期回收 | 备注 |
280
-
281
- ## 关键原则
415
+ | 当前冲突 | (当前冲突) |`;
416
+ const pendingHooksPrompt = resolvedLanguage === "en"
417
+ ? `Identify all active hooks from the source text (Markdown table):
418
+ | hook_id | start_chapter | type | status | latest_progress | expected_payoff | notes |`
419
+ : `从正文中识别的所有伏笔(Markdown表格):
420
+ | hook_id | 起始章节 | 类型 | 状态 | 最近推进 | 预期回收 | 备注 |`;
421
+ const keyPrinciplesPrompt = resolvedLanguage === "en"
422
+ ? `## Key Principles
423
+
424
+ 1. Derive everything from the source text; do not invent unsupported settings
425
+ 2. Hook extraction must be complete: unresolved clues, hints, and foreshadowing all count
426
+ 3. Character inference must come from dialogue and behavior, not assumption
427
+ 4. Accuracy first; detailed is better than missing crucial information
428
+ ${numericalBlock}
429
+ ${powerBlock}
430
+ ${eraBlock}`
431
+ : `## 关键原则
282
432
 
283
433
  1. 一切从正文出发,不要臆造正文中没有的设定
284
434
  2. 伏笔识别要完整:悬而未决的线索、暗示、预告都算
@@ -287,11 +437,60 @@ enableFullCastTracking: false
287
437
  ${numericalBlock}
288
438
  ${powerBlock}
289
439
  ${eraBlock}`;
440
+ const systemPrompt = `你是一个专业的网络小说架构师。你的任务是从已有的小说正文中反向推导完整的基础设定。${contextBlock}
441
+
442
+ ## 工作模式
443
+
444
+ 这不是从零创建,而是从已有正文中提取和推导。你需要:
445
+ 1. 从正文中提取世界观、势力、角色、力量体系 → 生成 story_bible
446
+ 2. 从叙事结构推断卷纲 → 生成 volume_outline(已有章节的回顾 + 预测后续方向)
447
+ 3. 从角色行为推断主角锁定和禁忌 → 生成 book_rules
448
+ 4. 从最新章节状态推断 current_state(反映最后一章结束时的状态)
449
+ 5. 从正文中识别已埋伏笔 → 生成 pending_hooks
450
+
451
+ ## 书籍信息
452
+
453
+ - 标题:${book.title}
454
+ - 平台:${book.platform}
455
+ - 题材:${gp.name}(${book.genre})
456
+ - 目标章数:${book.targetChapters}章
457
+ - 每章字数:${book.chapterWordCount}字
458
+
459
+ ## 题材特征
460
+
461
+ ${genreBody}
462
+
463
+ ## 生成要求
464
+
465
+ 你需要生成以下内容,每个部分用 === SECTION: <name> === 分隔:
466
+
467
+ === SECTION: story_bible ===
468
+ ${storyBiblePrompt}
469
+
470
+ === SECTION: volume_outline ===
471
+ ${volumeOutlinePrompt}
472
+
473
+ === SECTION: book_rules ===
474
+ ${bookRulesPrompt}
475
+
476
+ === SECTION: current_state ===
477
+ ${currentStatePrompt}
478
+
479
+ === SECTION: pending_hooks ===
480
+ ${pendingHooksPrompt}
481
+
482
+ ${keyPrinciplesPrompt}`;
483
+ const langPrefix = resolvedLanguage === "en"
484
+ ? `【LANGUAGE OVERRIDE】ALL output (story_bible, volume_outline, book_rules, current_state, pending_hooks) MUST be written in English. Character names, place names, and all prose must be in English. The === SECTION: === tags remain unchanged.\n\n`
485
+ : "";
486
+ const userMessage = resolvedLanguage === "en"
487
+ ? `Generate the complete foundation for an imported ${gp.name} novel titled "${book.title}". Write everything in English.\n\n${chaptersText}`
488
+ : `以下是《${book.title}》的全部已有正文,请从中反向推导完整基础设定:\n\n${chaptersText}`;
290
489
  const response = await this.chat([
291
- { role: "system", content: systemPrompt },
490
+ { role: "system", content: langPrefix + systemPrompt },
292
491
  {
293
492
  role: "user",
294
- content: `以下是《${book.title}》的全部已有正文,请从中反向推导完整基础设定:\n\n${chaptersText}`,
493
+ content: userMessage,
295
494
  },
296
495
  ], { maxTokens: 16384, temperature: 0.5 });
297
496
  return this.parseSections(response.content);
@@ -368,7 +567,14 @@ prohibitions:
368
567
  const extract = (name) => {
369
568
  const regex = new RegExp(`=== SECTION: ${name} ===\\s*([\\s\\S]*?)(?==== SECTION:|$)`);
370
569
  const match = content.match(regex);
371
- return match?.[1]?.trim() ?? `[${name} 生成失败,需要重新生成]`;
570
+ const section = match?.[1]?.trim();
571
+ if (!section) {
572
+ return `[${name} 生成失败,需要重新生成]`;
573
+ }
574
+ if (name !== "pending_hooks") {
575
+ return section;
576
+ }
577
+ return this.normalizePendingHooksSection(this.stripTrailingAssistantCoda(section));
372
578
  };
373
579
  return {
374
580
  storyBible: extract("story_bible"),
@@ -378,5 +584,78 @@ prohibitions:
378
584
  pendingHooks: extract("pending_hooks"),
379
585
  };
380
586
  }
587
+ stripTrailingAssistantCoda(section) {
588
+ const lines = section.split("\n");
589
+ const cutoff = lines.findIndex((line) => {
590
+ const trimmed = line.trim();
591
+ if (!trimmed)
592
+ return false;
593
+ return /^(如果(?:你愿意|需要|想要|希望)|If (?:you(?:'d)? like|you want|needed)|I can (?:continue|next))/i.test(trimmed);
594
+ });
595
+ if (cutoff < 0) {
596
+ return section;
597
+ }
598
+ return lines.slice(0, cutoff).join("\n").trimEnd();
599
+ }
600
+ normalizePendingHooksSection(section) {
601
+ const rows = section
602
+ .split("\n")
603
+ .map((line) => line.trim())
604
+ .filter((line) => line.startsWith("|"))
605
+ .filter((line) => !line.includes("---"))
606
+ .map((line) => line.split("|").slice(1, -1).map((cell) => cell.trim()))
607
+ .filter((cells) => cells.some(Boolean));
608
+ if (rows.length === 0) {
609
+ return section;
610
+ }
611
+ const dataRows = rows.filter((row) => (row[0] ?? "").toLowerCase() !== "hook_id");
612
+ if (dataRows.length === 0) {
613
+ return section;
614
+ }
615
+ const language = /[\u4e00-\u9fff]/.test(section) ? "zh" : "en";
616
+ const normalizedHooks = dataRows.map((row, index) => {
617
+ const rawProgress = row[4] ?? "";
618
+ const normalizedProgress = this.parseHookChapterNumber(rawProgress);
619
+ const seedNote = normalizedProgress === 0 && this.hasNarrativeProgress(rawProgress)
620
+ ? (language === "zh" ? `初始线索:${rawProgress}` : `initial signal: ${rawProgress}`)
621
+ : "";
622
+ const notes = this.mergeHookNotes(row[6] ?? "", seedNote, language);
623
+ return {
624
+ hookId: row[0] || `hook-${index + 1}`,
625
+ startChapter: this.parseHookChapterNumber(row[1]),
626
+ type: row[2] ?? "",
627
+ status: row[3] ?? "open",
628
+ lastAdvancedChapter: normalizedProgress,
629
+ expectedPayoff: row[5] ?? "",
630
+ notes,
631
+ };
632
+ });
633
+ return renderHookSnapshot(normalizedHooks, language);
634
+ }
635
+ parseHookChapterNumber(value) {
636
+ if (!value)
637
+ return 0;
638
+ const match = value.match(/\d+/);
639
+ return match ? parseInt(match[0], 10) : 0;
640
+ }
641
+ hasNarrativeProgress(value) {
642
+ const normalized = (value ?? "").trim().toLowerCase();
643
+ if (!normalized)
644
+ return false;
645
+ return !["0", "none", "n/a", "na", "-", "无", "未推进"].includes(normalized);
646
+ }
647
+ mergeHookNotes(notes, seedNote, language) {
648
+ const trimmedNotes = notes.trim();
649
+ const trimmedSeed = seedNote.trim();
650
+ if (!trimmedSeed) {
651
+ return trimmedNotes;
652
+ }
653
+ if (!trimmedNotes) {
654
+ return trimmedSeed;
655
+ }
656
+ return language === "zh"
657
+ ? `${trimmedNotes}(${trimmedSeed})`
658
+ : `${trimmedNotes} (${trimmedSeed})`;
659
+ }
381
660
  }
382
661
  //# sourceMappingURL=architect.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"architect.js","sourceRoot":"","sources":["../../src/agents/architect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"architect.js","sourceRoot":"","sources":["../../src/agents/architect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAGtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAUlE,MAAM,OAAO,cAAe,SAAQ,SAAS;IAC3C,IAAI,IAAI;QACN,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,IAAgB,EAAE,eAAwB;QACjE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GACpC,MAAM,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3D,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,QAAQ,CAAC;QAEtD,MAAM,YAAY,GAAG,eAAe;YAClC,CAAC,CAAC,4CAA4C,eAAe,IAAI;YACjE,CAAC,CAAC,EAAE,CAAC;QAEP,MAAM,cAAc,GAAG,EAAE,CAAC,eAAe;YACvC,CAAC,CAAC;mEAC2D;YAC7D,CAAC,CAAC,oBAAoB,CAAC;QAEzB,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY;YAChC,CAAC,CAAC,cAAc;YAChB,CAAC,CAAC,EAAE,CAAC;QAEP,MAAM,QAAQ,GAAG,EAAE,CAAC,WAAW;YAC7B,CAAC,CAAC,6CAA6C;YAC/C,CAAC,CAAC,EAAE,CAAC;QAEP,MAAM,gBAAgB,GAAG,gBAAgB,KAAK,IAAI;YAChD,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;iEAyByD;YAC3D,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+BA6BuB,CAAC;QAE5B,MAAM,mBAAmB,GAAG,gBAAgB,KAAK,IAAI;YACnD,CAAC,CAAC;;;;;kGAK0F;YAC5F,CAAC,CAAC;;;;;sCAK8B,CAAC;QAEnC,MAAM,eAAe,GAAG,gBAAgB,KAAK,IAAI;YAC/C,CAAC,CAAC;;;;;;;;;aASK,IAAI,CAAC,KAAK;;EAErB,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;;yCAEkB,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;OAcvC;YACD,CAAC,CAAC;;;;;;;;;aASK,IAAI,CAAC,KAAK;;EAErB,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;;8BAEO,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;OAc5B,CAAC;QAEJ,MAAM,kBAAkB,GAAG,gBAAgB,KAAK,IAAI;YAClD,CAAC,CAAC;;;;;;;;;wCASgC;YAClC,CAAC,CAAC;;;;;;;;;mBASW,CAAC;QAEhB,MAAM,kBAAkB,GAAG,gBAAgB,KAAK,IAAI;YAClD,CAAC,CAAC;;;;;;uFAM+E;YACjF,CAAC,CAAC;;;;;;gCAMwB,CAAC;QAE7B,MAAM,uBAAuB,GAAG,gBAAgB,KAAK,IAAI;YACvD,CAAC,CAAC;aACK,IAAI,CAAC,QAAQ;aACb,EAAE,CAAC,IAAI;EAClB,cAAc;EACd,UAAU;EACV,QAAQ;;;6EAGmE;YACvE,CAAC,CAAC;OACD,IAAI,CAAC,QAAQ;OACb,EAAE,CAAC,IAAI;EACZ,cAAc;EACd,UAAU;EACV,QAAQ;;;iBAGO,CAAC;QAEd,MAAM,YAAY,GAAG,4BAA4B,EAAE,CAAC,IAAI,eAAe,YAAY;;;OAGhF,IAAI,CAAC,QAAQ;OACb,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK;SACnB,IAAI,CAAC,cAAc;SACnB,IAAI,CAAC,gBAAgB;;;;EAI5B,SAAS;;;;;;;EAOT,gBAAgB;;;EAGhB,mBAAmB;;;EAGnB,eAAe;;;EAGf,kBAAkB;;;EAGlB,kBAAkB;;EAElB,uBAAuB,EAAE,CAAC;QAExB,MAAM,UAAU,GAAG,gBAAgB,KAAK,IAAI;YAC1C,CAAC,CAAC,mPAAmP;YACrP,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,WAAW,GAAG,gBAAgB,KAAK,IAAI;YAC3C,CAAC,CAAC,0CAA0C,EAAE,CAAC,IAAI,kBAAkB,IAAI,CAAC,KAAK,iCAAiC;YAChH,CAAC,CAAC,SAAS,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC,IAAI,aAAa,CAAC;QAEjD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC;YAC/B,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,GAAG,YAAY,EAAE;YACtD,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE;SACvC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;QAE3C,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,oBAAoB,CACxB,OAAe,EACf,MAAuB,EACvB,kBAA2B,IAAI,EAC/B,WAAwB,IAAI;QAE5B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxC,MAAM,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE3C,MAAM,MAAM,GAAyB;YACnC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC;YACvE,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC,EAAE,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC;YAC7E,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC;YACrE,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,EAAE,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC;YAC3E,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,EAAE,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC;SAC5E,CAAC;QAEF,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,CAAC,IAAI,CACT,SAAS,CACP,IAAI,CAAC,QAAQ,EAAE,oBAAoB,CAAC,EACpC,QAAQ,KAAK,IAAI;gBACf,CAAC,CAAC,sNAAsN;gBACxN,CAAC,CAAC,mJAAmJ,EACvJ,OAAO,CACR,CACF,CAAC;QACJ,CAAC;QAED,6BAA6B;QAC7B,MAAM,CAAC,IAAI,CACT,SAAS,CACP,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,EAClC,QAAQ,KAAK,IAAI;YACf,CAAC,CAAC,6NAA6N;YAC/N,CAAC,CAAC,0KAA0K,EAC9K,OAAO,CACR,EACD,SAAS,CACP,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC,EACnC,QAAQ,KAAK,IAAI;YACf,CAAC,CAAC,2JAA2J;YAC7J,CAAC,CAAC,wHAAwH,EAC5H,OAAO,CACR,EACD,SAAS,CACP,IAAI,CAAC,QAAQ,EAAE,qBAAqB,CAAC,EACrC,QAAQ,KAAK,IAAI;YACf,CAAC,CAAC,8iBAA8iB;YAChjB,CAAC,CAAC,8XAA8X,EAClY,OAAO,CACR,CACF,CAAC;QAEF,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,4BAA4B,CAChC,IAAgB,EAChB,YAAoB,EACpB,eAAwB;QAExB,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GACpC,MAAM,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3D,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,QAAQ,CAAC;QAEtD,MAAM,YAAY,GAAG,eAAe;YAClC,CAAC,CAAC,gBAAgB,eAAe,IAAI;YACrC,CAAC,CAAC,EAAE,CAAC;QAEP,MAAM,cAAc,GAAG,EAAE,CAAC,eAAe;YACvC,CAAC,CAAC;mEAC2D;YAC7D,CAAC,CAAC,oBAAoB,CAAC;QAEzB,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY;YAChC,CAAC,CAAC,cAAc;YAChB,CAAC,CAAC,EAAE,CAAC;QAEP,MAAM,QAAQ,GAAG,EAAE,CAAC,WAAW;YAC7B,CAAC,CAAC,6CAA6C;YAC/C,CAAC,CAAC,EAAE,CAAC;QAEP,MAAM,gBAAgB,GAAG,gBAAgB,KAAK,IAAI;YAChD,CAAC,CAAC;;;;;;;;;;;;;;2BAcmB,IAAI,CAAC,KAAK,sDAAsD;YACrF,CAAC,CAAC;;;;;;;;;;;;;;QAcA,IAAI,CAAC,KAAK,cAAc,CAAC;QAE7B,MAAM,mBAAmB,GAAG,gBAAgB,KAAK,IAAI;YACnD,CAAC,CAAC;;;qFAG6E;YAC/E,CAAC,CAAC;;;uBAGe,CAAC;QAEpB,MAAM,eAAe,GAAG,gBAAgB,KAAK,IAAI;YAC/C,CAAC,CAAC;;;;;;;;;aASK,IAAI,CAAC,KAAK;;EAErB,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;;+DAEwC,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;OAc7D;YACD,CAAC,CAAC;;;;;;;;;aASK,IAAI,CAAC,KAAK;;EAErB,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;;iCAEU,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;OAc/B,CAAC;QAEJ,MAAM,kBAAkB,GAAG,gBAAgB,KAAK,IAAI;YAClD,CAAC,CAAC;;;;;;;;;0CASkC;YACpC,CAAC,CAAC;;;;;;;;;kBASU,CAAC;QAEf,MAAM,kBAAkB,GAAG,gBAAgB,KAAK,IAAI;YAClD,CAAC,CAAC;wFACgF;YAClF,CAAC,CAAC;gDACwC,CAAC;QAE7C,MAAM,mBAAmB,GAAG,gBAAgB,KAAK,IAAI;YACnD,CAAC,CAAC;;;;;;EAMN,cAAc;EACd,UAAU;EACV,QAAQ,EAAE;YACN,CAAC,CAAC;;;;;;EAMN,cAAc;EACd,UAAU;EACV,QAAQ,EAAE,CAAC;QAET,MAAM,YAAY,GAAG,4CAA4C,YAAY;;;;;;;;;;;;;OAa1E,IAAI,CAAC,KAAK;OACV,IAAI,CAAC,QAAQ;OACb,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK;SACnB,IAAI,CAAC,cAAc;SACnB,IAAI,CAAC,gBAAgB;;;;EAI5B,SAAS;;;;;;;EAOT,gBAAgB;;;EAGhB,mBAAmB;;;EAGnB,eAAe;;;EAGf,kBAAkB;;;EAGlB,kBAAkB;;EAElB,mBAAmB,EAAE,CAAC;QAEpB,MAAM,UAAU,GAAG,gBAAgB,KAAK,IAAI;YAC1C,CAAC,CAAC,mPAAmP;YACrP,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,WAAW,GAAG,gBAAgB,KAAK,IAAI;YAC3C,CAAC,CAAC,oDAAoD,EAAE,CAAC,IAAI,kBAAkB,IAAI,CAAC,KAAK,sCAAsC,YAAY,EAAE;YAC7I,CAAC,CAAC,OAAO,IAAI,CAAC,KAAK,8BAA8B,YAAY,EAAE,CAAC;QAElE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC;YAC/B,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,GAAG,YAAY,EAAE;YACtD;gBACE,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,WAAW;aACrB;SACF,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;QAE3C,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,wBAAwB,CAC5B,IAAgB,EAChB,WAAmB,EACnB,UAAsB;QAEtB,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GACpC,MAAM,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAE3D,MAAM,iBAAiB,GAA+B;YACpD,KAAK,EAAE,iCAAiC;YACxC,EAAE,EAAE,uCAAuC;YAC3C,GAAG,EAAE,6BAA6B;YAClC,EAAE,EAAE,+BAA+B;SACpC,CAAC;QAEF,MAAM,YAAY,GAAG;;UAEf,UAAU;EAClB,iBAAiB,CAAC,UAAU,CAAC;;;EAG7B,WAAW;;;EAGX,SAAS;;;;;;;mCAOwB,UAAU;;;;;;;;;;;;;;;;;;;;aAoBhC,IAAI,CAAC,KAAK;;eAER,UAAU;;;;;;;;;;;;qBAYJ,CAAC;QAElB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC;YAC/B,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE;YACzC;gBACE,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,SAAS,IAAI,CAAC,KAAK,KAAK,UAAU,kBAAkB,IAAI,CAAC,cAAc,OAAO,IAAI,CAAC,gBAAgB,IAAI;aACjH;SACF,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;QAE3C,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;IAEO,aAAa,CAAC,OAAe;QACnC,MAAM,OAAO,GAAG,CAAC,IAAY,EAAU,EAAE;YACvC,MAAM,KAAK,GAAG,IAAI,MAAM,CACtB,gBAAgB,IAAI,wCAAwC,CAC7D,CAAC;YACF,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACnC,MAAM,OAAO,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;YACnC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,IAAI,IAAI,eAAe,CAAC;YACjC,CAAC;YACD,IAAI,IAAI,KAAK,eAAe,EAAE,CAAC;gBAC7B,OAAO,OAAO,CAAC;YACjB,CAAC;YACD,OAAO,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC,CAAC;QACrF,CAAC,CAAC;QAEF,OAAO;YACL,UAAU,EAAE,OAAO,CAAC,aAAa,CAAC;YAClC,aAAa,EAAE,OAAO,CAAC,gBAAgB,CAAC;YACxC,SAAS,EAAE,OAAO,CAAC,YAAY,CAAC;YAChC,YAAY,EAAE,OAAO,CAAC,eAAe,CAAC;YACtC,YAAY,EAAE,OAAO,CAAC,eAAe,CAAC;SACvC,CAAC;IACJ,CAAC;IAEO,0BAA0B,CAAC,OAAe;QAChD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE;YACtC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,IAAI,CAAC,OAAO;gBAAE,OAAO,KAAK,CAAC;YAC3B,OAAO,uFAAuF,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/G,CAAC,CAAC,CAAC;QAEH,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;YACf,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;IACrD,CAAC;IAEO,4BAA4B,CAAC,OAAe;QAClD,MAAM,IAAI,GAAG,OAAO;aACjB,KAAK,CAAC,IAAI,CAAC;aACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;aAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;aACtC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;aACvC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;aACtE,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QAE1C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,SAAS,CAAC,CAAC;QAClF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,MAAM,QAAQ,GAAgB,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QAC5E,MAAM,eAAe,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YAClD,MAAM,WAAW,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACjC,MAAM,kBAAkB,GAAG,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC;YACpE,MAAM,QAAQ,GAAG,kBAAkB,KAAK,CAAC,IAAI,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC;gBACjF,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,WAAW,EAAE,CAAC,CAAC,CAAC,mBAAmB,WAAW,EAAE,CAAC;gBAChF,CAAC,CAAC,EAAE,CAAC;YACP,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAEpE,OAAO;gBACL,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,QAAQ,KAAK,GAAG,CAAC,EAAE;gBACrC,YAAY,EAAE,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACjD,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE;gBAClB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,MAAM;gBACxB,mBAAmB,EAAE,kBAAkB;gBACvC,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE;gBAC5B,KAAK;aACN,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO,kBAAkB,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;IACvD,CAAC;IAEO,sBAAsB,CAAC,KAAyB;QACtD,IAAI,CAAC,KAAK;YAAE,OAAO,CAAC,CAAC;QACrB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACjC,OAAO,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC;IAEO,oBAAoB,CAAC,KAAyB;QACpD,MAAM,UAAU,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACtD,IAAI,CAAC,UAAU;YAAE,OAAO,KAAK,CAAC;QAC9B,OAAO,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC3E,CAAC;IAEO,cAAc,CAAC,KAAa,EAAE,QAAgB,EAAE,QAAqB;QAC3E,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAClC,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,YAAY,CAAC;QACtB,CAAC;QACD,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,WAAW,CAAC;QACrB,CAAC;QACD,OAAO,QAAQ,KAAK,IAAI;YACtB,CAAC,CAAC,GAAG,YAAY,IAAI,WAAW,GAAG;YACnC,CAAC,CAAC,GAAG,YAAY,KAAK,WAAW,GAAG,CAAC;IACzC,CAAC;CACF"}
@@ -14,6 +14,12 @@ export declare class ChapterAnalyzerAgent extends BaseAgent {
14
14
  analyzeChapter(input: AnalyzeChapterInput): Promise<AnalyzeChapterOutput>;
15
15
  private buildSystemPrompt;
16
16
  private buildUserPrompt;
17
+ private buildMemoryGoal;
18
+ private findOutlineNode;
19
+ private renderSummarySnapshot;
20
+ private escapeTableCell;
17
21
  private readFileOrDefault;
22
+ private missingFilePlaceholder;
23
+ private defaultChapterTitle;
18
24
  }
19
25
  //# sourceMappingURL=chapter-analyzer.d.ts.map