@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
@@ -0,0 +1,382 @@
1
+ import { readFile, writeFile, mkdir } from "node:fs/promises";
2
+ import { join } from "node:path";
3
+ import { BaseAgent } from "./base.js";
4
+ import { parseBookRules } from "../models/book-rules.js";
5
+ import { ChapterIntentSchema } from "../models/input-governance.js";
6
+ import { buildPlannerHookAgenda, renderHookSnapshot, renderSummarySnapshot, retrieveMemorySelection, } from "../utils/memory-retrieval.js";
7
+ export class PlannerAgent extends BaseAgent {
8
+ get name() {
9
+ return "planner";
10
+ }
11
+ async planChapter(input) {
12
+ const storyDir = join(input.bookDir, "story");
13
+ const runtimeDir = join(storyDir, "runtime");
14
+ await mkdir(runtimeDir, { recursive: true });
15
+ const sourcePaths = {
16
+ authorIntent: join(storyDir, "author_intent.md"),
17
+ currentFocus: join(storyDir, "current_focus.md"),
18
+ storyBible: join(storyDir, "story_bible.md"),
19
+ volumeOutline: join(storyDir, "volume_outline.md"),
20
+ bookRules: join(storyDir, "book_rules.md"),
21
+ currentState: join(storyDir, "current_state.md"),
22
+ };
23
+ const [authorIntent, currentFocus, storyBible, volumeOutline, bookRulesRaw, currentState,] = await Promise.all([
24
+ this.readFileOrDefault(sourcePaths.authorIntent),
25
+ this.readFileOrDefault(sourcePaths.currentFocus),
26
+ this.readFileOrDefault(sourcePaths.storyBible),
27
+ this.readFileOrDefault(sourcePaths.volumeOutline),
28
+ this.readFileOrDefault(sourcePaths.bookRules),
29
+ this.readFileOrDefault(sourcePaths.currentState),
30
+ ]);
31
+ const outlineNode = this.findOutlineNode(volumeOutline, input.chapterNumber);
32
+ const goal = this.deriveGoal(input.externalContext, currentFocus, authorIntent, outlineNode, input.chapterNumber);
33
+ const parsedRules = parseBookRules(bookRulesRaw);
34
+ const mustKeep = this.collectMustKeep(currentState, storyBible);
35
+ const mustAvoid = this.collectMustAvoid(currentFocus, parsedRules.rules.prohibitions);
36
+ const styleEmphasis = this.collectStyleEmphasis(authorIntent, currentFocus);
37
+ const conflicts = this.collectConflicts(input.externalContext, outlineNode, volumeOutline);
38
+ const planningAnchor = conflicts.length > 0 ? undefined : outlineNode;
39
+ const memorySelection = await retrieveMemorySelection({
40
+ bookDir: input.bookDir,
41
+ chapterNumber: input.chapterNumber,
42
+ goal,
43
+ outlineNode: planningAnchor,
44
+ mustKeep,
45
+ });
46
+ const hookAgenda = buildPlannerHookAgenda({
47
+ hooks: memorySelection.activeHooks,
48
+ chapterNumber: input.chapterNumber,
49
+ });
50
+ const intent = ChapterIntentSchema.parse({
51
+ chapter: input.chapterNumber,
52
+ goal,
53
+ outlineNode,
54
+ mustKeep,
55
+ mustAvoid,
56
+ styleEmphasis,
57
+ conflicts,
58
+ hookAgenda,
59
+ });
60
+ const runtimePath = join(runtimeDir, `chapter-${String(input.chapterNumber).padStart(4, "0")}.intent.md`);
61
+ const intentMarkdown = this.renderIntentMarkdown(intent, renderHookSnapshot(memorySelection.hooks, input.book.language ?? "zh"), renderSummarySnapshot(memorySelection.summaries, input.book.language ?? "zh"));
62
+ await writeFile(runtimePath, intentMarkdown, "utf-8");
63
+ return {
64
+ intent,
65
+ intentMarkdown,
66
+ plannerInputs: [
67
+ ...Object.values(sourcePaths),
68
+ join(storyDir, "pending_hooks.md"),
69
+ join(storyDir, "chapter_summaries.md"),
70
+ ...(memorySelection.dbPath ? [memorySelection.dbPath] : []),
71
+ ],
72
+ runtimePath,
73
+ };
74
+ }
75
+ deriveGoal(externalContext, currentFocus, authorIntent, outlineNode, chapterNumber) {
76
+ const first = this.extractFirstDirective(externalContext);
77
+ if (first)
78
+ return first;
79
+ const focus = this.extractFocusGoal(currentFocus);
80
+ if (focus)
81
+ return focus;
82
+ const outline = this.extractFirstDirective(outlineNode);
83
+ if (outline)
84
+ return outline;
85
+ const author = this.extractFirstDirective(authorIntent);
86
+ if (author)
87
+ return author;
88
+ return `Advance chapter ${chapterNumber} with clear narrative focus.`;
89
+ }
90
+ collectMustKeep(currentState, storyBible) {
91
+ return this.unique([
92
+ ...this.extractListItems(currentState, 2),
93
+ ...this.extractListItems(storyBible, 2),
94
+ ]).slice(0, 4);
95
+ }
96
+ collectMustAvoid(currentFocus, prohibitions) {
97
+ const avoidSection = this.extractSection(currentFocus, [
98
+ "avoid",
99
+ "must avoid",
100
+ "禁止",
101
+ "避免",
102
+ "避雷",
103
+ ]);
104
+ const focusAvoids = avoidSection
105
+ ? this.extractListItems(avoidSection, 10)
106
+ : currentFocus
107
+ .split("\n")
108
+ .map((line) => line.trim())
109
+ .filter((line) => line.startsWith("-") &&
110
+ /avoid|don't|do not|不要|别|禁止/i.test(line))
111
+ .map((line) => this.cleanListItem(line))
112
+ .filter((line) => Boolean(line));
113
+ return this.unique([...focusAvoids, ...prohibitions]).slice(0, 6);
114
+ }
115
+ collectStyleEmphasis(authorIntent, currentFocus) {
116
+ return this.unique([
117
+ ...this.extractFocusStyleItems(currentFocus),
118
+ ...this.extractListItems(authorIntent, 2),
119
+ ]).slice(0, 4);
120
+ }
121
+ collectConflicts(externalContext, outlineNode, volumeOutline) {
122
+ if (!externalContext)
123
+ return [];
124
+ const outlineText = outlineNode ?? volumeOutline;
125
+ if (!outlineText || outlineText === "(文件尚未创建)")
126
+ return [];
127
+ const indicatesOverride = /ignore|skip|defer|instead|不要|别|先别|暂停/i.test(externalContext);
128
+ if (!indicatesOverride && this.hasKeywordOverlap(externalContext, outlineText))
129
+ return [];
130
+ return [
131
+ {
132
+ type: "outline_vs_request",
133
+ resolution: "allow local outline deferral",
134
+ },
135
+ ];
136
+ }
137
+ extractFirstDirective(content) {
138
+ if (!content)
139
+ return undefined;
140
+ return content
141
+ .split("\n")
142
+ .map((line) => line.trim())
143
+ .find((line) => line.length > 0
144
+ && !line.startsWith("#")
145
+ && !line.startsWith("-")
146
+ && !this.isTemplatePlaceholder(line));
147
+ }
148
+ extractListItems(content, limit) {
149
+ return content
150
+ .split("\n")
151
+ .map((line) => line.trim())
152
+ .filter((line) => line.startsWith("-"))
153
+ .map((line) => this.cleanListItem(line))
154
+ .filter((line) => Boolean(line))
155
+ .slice(0, limit);
156
+ }
157
+ extractFocusGoal(currentFocus) {
158
+ const focusSection = this.extractSection(currentFocus, [
159
+ "active focus",
160
+ "focus",
161
+ "当前聚焦",
162
+ "当前焦点",
163
+ "近期聚焦",
164
+ ]) ?? currentFocus;
165
+ const directives = this.extractFocusStyleItems(focusSection, 3);
166
+ if (directives.length === 0) {
167
+ return this.extractFirstDirective(focusSection);
168
+ }
169
+ return directives.join(this.containsChinese(focusSection) ? ";" : "; ");
170
+ }
171
+ extractFocusStyleItems(currentFocus, limit = 3) {
172
+ const focusSection = this.extractSection(currentFocus, [
173
+ "active focus",
174
+ "focus",
175
+ "当前聚焦",
176
+ "当前焦点",
177
+ "近期聚焦",
178
+ ]) ?? currentFocus;
179
+ return this.extractListItems(focusSection, limit);
180
+ }
181
+ extractSection(content, headings) {
182
+ const targets = headings.map((heading) => this.normalizeHeading(heading));
183
+ const lines = content.split("\n");
184
+ let buffer = null;
185
+ let sectionLevel = 0;
186
+ for (const line of lines) {
187
+ const headingMatch = line.match(/^(#+)\s*(.+?)\s*$/);
188
+ if (headingMatch) {
189
+ const level = headingMatch[1].length;
190
+ const heading = this.normalizeHeading(headingMatch[2]);
191
+ if (buffer && level <= sectionLevel) {
192
+ break;
193
+ }
194
+ if (targets.includes(heading)) {
195
+ buffer = [];
196
+ sectionLevel = level;
197
+ continue;
198
+ }
199
+ }
200
+ if (buffer) {
201
+ buffer.push(line);
202
+ }
203
+ }
204
+ const section = buffer?.join("\n").trim();
205
+ return section && section.length > 0 ? section : undefined;
206
+ }
207
+ normalizeHeading(heading) {
208
+ return heading
209
+ .toLowerCase()
210
+ .replace(/[*_`:#]/g, "")
211
+ .replace(/\s+/g, " ")
212
+ .trim();
213
+ }
214
+ cleanListItem(line) {
215
+ const cleaned = line.replace(/^-\s*/, "").trim();
216
+ if (cleaned.length === 0)
217
+ return undefined;
218
+ if (/^[-|]+$/.test(cleaned))
219
+ return undefined;
220
+ if (this.isTemplatePlaceholder(cleaned))
221
+ return undefined;
222
+ return cleaned;
223
+ }
224
+ isTemplatePlaceholder(line) {
225
+ const normalized = line.trim();
226
+ if (!normalized)
227
+ return false;
228
+ return (/^\((describe|briefly describe|write)\b[\s\S]*\)$/i.test(normalized)
229
+ || /^((?:在这里描述|描述|填写|写下)[\s\S]*)$/u.test(normalized));
230
+ }
231
+ containsChinese(content) {
232
+ return /[\u4e00-\u9fff]/.test(content);
233
+ }
234
+ findOutlineNode(volumeOutline, chapterNumber) {
235
+ const lines = volumeOutline.split("\n").map((line) => line.trim()).filter(Boolean);
236
+ const chapterPatterns = [
237
+ new RegExp(`^#+\\s*Chapter\\s*${chapterNumber}\\b`, "i"),
238
+ new RegExp(`^#+\\s*第\\s*${chapterNumber}\\s*章`),
239
+ ];
240
+ const inlinePatterns = [
241
+ new RegExp(`^(?:[-*]\\s+)?(?:\\*\\*)?Chapter\\s*${chapterNumber}(?:[::-])?(?:\\*\\*)?\\s*(.+)$`, "i"),
242
+ new RegExp(`^(?:[-*]\\s+)?(?:\\*\\*)?第\\s*${chapterNumber}\\s*章(?:[::-])?(?:\\*\\*)?\\s*(.+)$`),
243
+ ];
244
+ for (let index = 0; index < lines.length; index += 1) {
245
+ const line = lines[index];
246
+ const match = inlinePatterns
247
+ .map((pattern) => line.match(pattern))
248
+ .find((result) => Boolean(result));
249
+ if (!match)
250
+ continue;
251
+ const inlineContent = this.cleanOutlineContent(match[1]);
252
+ if (inlineContent) {
253
+ return inlineContent;
254
+ }
255
+ const nextContent = this.findNextOutlineContent(lines, index + 1);
256
+ if (nextContent) {
257
+ return nextContent;
258
+ }
259
+ }
260
+ const heading = lines.find((line) => chapterPatterns.some((pattern) => pattern.test(line)));
261
+ if (!heading)
262
+ return this.extractFirstDirective(volumeOutline);
263
+ const headingIndex = lines.indexOf(heading);
264
+ const nextLine = lines[headingIndex + 1];
265
+ return nextLine && !nextLine.startsWith("#") ? nextLine : heading.replace(/^#+\s*/, "");
266
+ }
267
+ cleanOutlineContent(content) {
268
+ const cleaned = content?.trim();
269
+ if (!cleaned)
270
+ return undefined;
271
+ if (/^[*_`~::-]+$/.test(cleaned))
272
+ return undefined;
273
+ return cleaned;
274
+ }
275
+ findNextOutlineContent(lines, startIndex) {
276
+ for (let index = startIndex; index < lines.length; index += 1) {
277
+ const line = lines[index];
278
+ if (!line || line.startsWith("#")) {
279
+ continue;
280
+ }
281
+ if (/^(?:[-*]\s+)?(?:\*\*)?Chapter\s*\d+(?:[::-])?(?:\*\*)?\s*$/i.test(line)
282
+ || /^(?:[-*]\s+)?(?:\*\*)?第\s*\d+\s*章(?:[::-])?(?:\*\*)?\s*$/.test(line)) {
283
+ return undefined;
284
+ }
285
+ const cleaned = this.cleanOutlineContent(line);
286
+ if (cleaned) {
287
+ return cleaned;
288
+ }
289
+ }
290
+ return undefined;
291
+ }
292
+ hasKeywordOverlap(left, right) {
293
+ const keywords = this.extractKeywords(left);
294
+ if (keywords.length === 0)
295
+ return false;
296
+ const normalizedRight = right.toLowerCase();
297
+ return keywords.some((keyword) => normalizedRight.includes(keyword.toLowerCase()));
298
+ }
299
+ extractKeywords(content) {
300
+ const english = content.match(/[a-z]{4,}/gi) ?? [];
301
+ const chinese = content.match(/[\u4e00-\u9fff]{2,4}/g) ?? [];
302
+ return this.unique([...english, ...chinese]);
303
+ }
304
+ renderIntentMarkdown(intent, pendingHooks, chapterSummaries) {
305
+ const conflictLines = intent.conflicts.length > 0
306
+ ? intent.conflicts.map((conflict) => `- ${conflict.type}: ${conflict.resolution}`).join("\n")
307
+ : "- none";
308
+ const mustKeep = intent.mustKeep.length > 0
309
+ ? intent.mustKeep.map((item) => `- ${item}`).join("\n")
310
+ : "- none";
311
+ const mustAvoid = intent.mustAvoid.length > 0
312
+ ? intent.mustAvoid.map((item) => `- ${item}`).join("\n")
313
+ : "- none";
314
+ const styleEmphasis = intent.styleEmphasis.length > 0
315
+ ? intent.styleEmphasis.map((item) => `- ${item}`).join("\n")
316
+ : "- none";
317
+ const hookAgenda = [
318
+ "### Must Advance",
319
+ intent.hookAgenda.mustAdvance.length > 0
320
+ ? intent.hookAgenda.mustAdvance.map((item) => `- ${item}`).join("\n")
321
+ : "- none",
322
+ "",
323
+ "### Eligible Resolve",
324
+ intent.hookAgenda.eligibleResolve.length > 0
325
+ ? intent.hookAgenda.eligibleResolve.map((item) => `- ${item}`).join("\n")
326
+ : "- none",
327
+ "",
328
+ "### Stale Debt",
329
+ intent.hookAgenda.staleDebt.length > 0
330
+ ? intent.hookAgenda.staleDebt.map((item) => `- ${item}`).join("\n")
331
+ : "- none",
332
+ "",
333
+ "### Avoid New Hook Families",
334
+ intent.hookAgenda.avoidNewHookFamilies.length > 0
335
+ ? intent.hookAgenda.avoidNewHookFamilies.map((item) => `- ${item}`).join("\n")
336
+ : "- none",
337
+ ].join("\n");
338
+ return [
339
+ "# Chapter Intent",
340
+ "",
341
+ "## Goal",
342
+ intent.goal,
343
+ "",
344
+ "## Outline Node",
345
+ intent.outlineNode ?? "(not found)",
346
+ "",
347
+ "## Must Keep",
348
+ mustKeep,
349
+ "",
350
+ "## Must Avoid",
351
+ mustAvoid,
352
+ "",
353
+ "## Style Emphasis",
354
+ styleEmphasis,
355
+ "",
356
+ "## Hook Agenda",
357
+ hookAgenda,
358
+ "",
359
+ "## Conflicts",
360
+ conflictLines,
361
+ "",
362
+ "## Pending Hooks Snapshot",
363
+ pendingHooks,
364
+ "",
365
+ "## Chapter Summaries Snapshot",
366
+ chapterSummaries,
367
+ "",
368
+ ].join("\n");
369
+ }
370
+ unique(values) {
371
+ return [...new Set(values.map((value) => value.trim()).filter(Boolean))];
372
+ }
373
+ async readFileOrDefault(path) {
374
+ try {
375
+ return await readFile(path, "utf-8");
376
+ }
377
+ catch {
378
+ return "(文件尚未创建)";
379
+ }
380
+ }
381
+ }
382
+ //# sourceMappingURL=planner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planner.js","sourceRoot":"","sources":["../../src/agents/planner.ts"],"names":[],"mappings":"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"}
@@ -12,5 +12,10 @@ export interface PostWriteViolation {
12
12
  readonly description: string;
13
13
  readonly suggestion: string;
14
14
  }
15
- export declare function validatePostWrite(content: string, genreProfile: GenreProfile, bookRules: BookRules | null): ReadonlyArray<PostWriteViolation>;
15
+ export declare function validatePostWrite(content: string, genreProfile: GenreProfile, bookRules: BookRules | null, languageOverride?: "zh" | "en"): ReadonlyArray<PostWriteViolation>;
16
+ /**
17
+ * Cross-chapter repetition check.
18
+ * Detects phrases from the current chapter that also appeared in recent chapters.
19
+ */
20
+ export declare function detectCrossChapterRepetition(currentContent: string, recentChaptersContent: string, language?: "zh" | "en"): ReadonlyArray<PostWriteViolation>;
16
21
  //# sourceMappingURL=post-write-validator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"post-write-validator.d.ts","sourceRoot":"","sources":["../../src/agents/post-write-validator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAmCD,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,SAAS,GAAG,IAAI,GAC1B,aAAa,CAAC,kBAAkB,CAAC,CA8LnC"}
1
+ {"version":3,"file":"post-write-validator.d.ts","sourceRoot":"","sources":["../../src/agents/post-write-validator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAmCD,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,SAAS,GAAG,IAAI,EAC3B,gBAAgB,CAAC,EAAE,IAAI,GAAG,IAAI,GAC7B,aAAa,CAAC,kBAAkB,CAAC,CA8LnC;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,cAAc,EAAE,MAAM,EACtB,qBAAqB,EAAE,MAAM,EAC7B,QAAQ,GAAE,IAAI,GAAG,IAAW,GAC3B,aAAa,CAAC,kBAAkB,CAAC,CA0DnC"}
@@ -30,10 +30,10 @@ const COLLECTIVE_SHOCK_PATTERNS = [
30
30
  /(?:全场|一片)[,,]?(?:寂静|哗然|沸腾|震动)/,
31
31
  ];
32
32
  // --- Validator ---
33
- export function validatePostWrite(content, genreProfile, bookRules) {
33
+ export function validatePostWrite(content, genreProfile, bookRules, languageOverride) {
34
34
  const violations = [];
35
35
  // Skip Chinese-specific rules for English content
36
- const isEnglish = genreProfile.language === "en";
36
+ const isEnglish = (languageOverride ?? genreProfile.language) === "en";
37
37
  if (isEnglish) {
38
38
  // For English, only run book-specific prohibitions and paragraph length check
39
39
  return validatePostWriteEnglish(content, genreProfile, bookRules);
@@ -207,6 +207,68 @@ export function validatePostWrite(content, genreProfile, bookRules) {
207
207
  }
208
208
  return violations;
209
209
  }
210
+ /**
211
+ * Cross-chapter repetition check.
212
+ * Detects phrases from the current chapter that also appeared in recent chapters.
213
+ */
214
+ export function detectCrossChapterRepetition(currentContent, recentChaptersContent, language = "zh") {
215
+ if (!recentChaptersContent || recentChaptersContent.length < 100)
216
+ return [];
217
+ const violations = [];
218
+ const isEnglish = language === "en";
219
+ if (isEnglish) {
220
+ // Extract 3-word phrases from current chapter
221
+ const words = currentContent.toLowerCase().replace(/[^\w\s']/g, "").split(/\s+/).filter(w => w.length > 2);
222
+ const phraseCounts = new Map();
223
+ for (let i = 0; i < words.length - 2; i++) {
224
+ const phrase = `${words[i]} ${words[i + 1]} ${words[i + 2]}`;
225
+ phraseCounts.set(phrase, (phraseCounts.get(phrase) ?? 0) + 1);
226
+ }
227
+ // Check which repeated phrases (2+ in current) also appear in recent chapters
228
+ const recentLower = recentChaptersContent.toLowerCase();
229
+ const crossRepeats = [];
230
+ for (const [phrase, count] of phraseCounts) {
231
+ if (count >= 2 && recentLower.includes(phrase)) {
232
+ crossRepeats.push(`"${phrase}" (×${count})`);
233
+ }
234
+ }
235
+ if (crossRepeats.length >= 3) {
236
+ violations.push({
237
+ rule: "Cross-chapter repetition",
238
+ severity: "warning",
239
+ description: `${crossRepeats.length} repeated phrases also found in recent chapters: ${crossRepeats.slice(0, 5).join(", ")}`,
240
+ suggestion: "Vary action verbs and descriptive phrases to avoid cross-chapter repetition",
241
+ });
242
+ }
243
+ }
244
+ else {
245
+ // Chinese: 6-char ngrams
246
+ const chars = currentContent.replace(/[\s\n\r]/g, "");
247
+ const phraseCounts = new Map();
248
+ for (let i = 0; i < chars.length - 5; i++) {
249
+ const phrase = chars.slice(i, i + 6);
250
+ if (/^[\u4e00-\u9fff]{6}$/.test(phrase)) {
251
+ phraseCounts.set(phrase, (phraseCounts.get(phrase) ?? 0) + 1);
252
+ }
253
+ }
254
+ const recentClean = recentChaptersContent.replace(/[\s\n\r]/g, "");
255
+ const crossRepeats = [];
256
+ for (const [phrase, count] of phraseCounts) {
257
+ if (count >= 2 && recentClean.includes(phrase)) {
258
+ crossRepeats.push(`"${phrase}"(×${count})`);
259
+ }
260
+ }
261
+ if (crossRepeats.length >= 3) {
262
+ violations.push({
263
+ rule: "跨章重复",
264
+ severity: "warning",
265
+ description: `${crossRepeats.length}个重复短语在近期章节中也出现过:${crossRepeats.slice(0, 5).join("、")}`,
266
+ suggestion: "变换动作描写和场景用语,避免跨章节机械重复",
267
+ });
268
+ }
269
+ }
270
+ return violations;
271
+ }
210
272
  /** English-specific post-write validation rules. */
211
273
  function validatePostWriteEnglish(content, genreProfile, bookRules) {
212
274
  const violations = [];
@@ -235,6 +297,18 @@ function validatePostWriteEnglish(content, genreProfile, bookRules) {
235
297
  suggestion: "Break into shorter paragraphs for readability",
236
298
  });
237
299
  }
300
+ // 2.5. Multi-character scene with almost no direct exchange
301
+ const quotedLines = content.match(/"[^"]+"/g) ?? [];
302
+ const englishNames = [...new Set((content.match(/\b[A-Z][a-z]{2,}\b/g) ?? [])
303
+ .filter((name) => !ENGLISH_NAME_STOP_WORDS.has(name)))];
304
+ if (englishNames.length >= 2 && quotedLines.length < 2 && content.length >= 120) {
305
+ violations.push({
306
+ rule: "Dialogue pressure",
307
+ severity: "warning",
308
+ description: `Multi-character scene appears to rely on narration with almost no direct exchange (${englishNames.slice(0, 3).join(", ")}).`,
309
+ suggestion: "Add at least one resistance-bearing exchange so characters push back, withhold, or pressure each other directly.",
310
+ });
311
+ }
238
312
  // 3. Book-specific prohibitions
239
313
  if (bookRules?.prohibitions) {
240
314
  for (const prohibition of bookRules.prohibitions) {
@@ -266,4 +340,16 @@ function validatePostWriteEnglish(content, genreProfile, bookRules) {
266
340
  }
267
341
  return violations;
268
342
  }
343
+ const ENGLISH_NAME_STOP_WORDS = new Set([
344
+ "The",
345
+ "And",
346
+ "But",
347
+ "When",
348
+ "While",
349
+ "After",
350
+ "Before",
351
+ "Even",
352
+ "Then",
353
+ "They",
354
+ ]);
269
355
  //# sourceMappingURL=post-write-validator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"post-write-validator.js","sourceRoot":"","sources":["../../src/agents/post-write-validator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"post-write-validator.js","sourceRoot":"","sources":["../../src/agents/post-write-validator.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,9 @@
1
1
  import { BaseAgent } from "./base.js";
2
+ import type { LengthSpec } from "../models/length-governance.js";
2
3
  import type { AuditIssue } from "./continuity.js";
4
+ import type { ContextPackage, RuleStack } from "../models/input-governance.js";
3
5
  export type ReviseMode = "polish" | "rewrite" | "rework" | "anti-detect" | "spot-fix";
6
+ export declare const DEFAULT_REVISE_MODE: ReviseMode;
4
7
  export interface ReviseOutput {
5
8
  readonly revisedContent: string;
6
9
  readonly wordCount: number;
@@ -16,8 +19,14 @@ export interface ReviseOutput {
16
19
  }
17
20
  export declare class ReviserAgent extends BaseAgent {
18
21
  get name(): string;
19
- reviseChapter(bookDir: string, chapterContent: string, chapterNumber: number, issues: ReadonlyArray<AuditIssue>, mode?: ReviseMode, genre?: string): Promise<ReviseOutput>;
22
+ reviseChapter(bookDir: string, chapterContent: string, chapterNumber: number, issues: ReadonlyArray<AuditIssue>, mode?: ReviseMode, genre?: string, options?: {
23
+ chapterIntent?: string;
24
+ contextPackage?: ContextPackage;
25
+ ruleStack?: RuleStack;
26
+ lengthSpec?: LengthSpec;
27
+ }): Promise<ReviseOutput>;
20
28
  private parseOutput;
21
29
  private readFileSafe;
30
+ private buildReducedControlBlock;
22
31
  }
23
32
  //# sourceMappingURL=reviser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"reviser.d.ts","sourceRoot":"","sources":["../../src/agents/reviser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAGtC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAKlD,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,aAAa,GAAG,UAAU,CAAC;AAEtF,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC5C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE;QACpB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;QAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;KAC9B,CAAC;CACH;AAqBD,qBAAa,YAAa,SAAQ,SAAS;IACzC,IAAI,IAAI,IAAI,MAAM,CAEjB;IAEK,aAAa,CACjB,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,aAAa,CAAC,UAAU,CAAC,EACjC,IAAI,GAAE,UAAsB,EAC5B,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,YAAY,CAAC;IA8HxB,OAAO,CAAC,WAAW;YA2BL,YAAY;CAO3B"}
1
+ {"version":3,"file":"reviser.d.ts","sourceRoot":"","sources":["../../src/agents/reviser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAGtC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAc/E,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,aAAa,GAAG,UAAU,CAAC;AAEtF,eAAO,MAAM,mBAAmB,EAAE,UAAuB,CAAC;AAE1D,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC5C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE;QACpB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;QAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;KAC9B,CAAC;CACH;AAqBD,qBAAa,YAAa,SAAQ,SAAS;IACzC,IAAI,IAAI,IAAI,MAAM,CAEjB;IAEK,aAAa,CACjB,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,aAAa,CAAC,UAAU,CAAC,EACjC,IAAI,GAAE,UAAgC,EACtC,KAAK,CAAC,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QACR,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,cAAc,CAAC,EAAE,cAAc,CAAC;QAChC,SAAS,CAAC,EAAE,SAAS,CAAC;QACtB,UAAU,CAAC,EAAE,UAAU,CAAC;KACzB,GACA,OAAO,CAAC,YAAY,CAAC;IAsMxB,OAAO,CAAC,WAAW;YAkDL,YAAY;IAQ1B,OAAO,CAAC,wBAAwB;CA4BjC"}