@actalk/inkos-core 0.4.9 → 0.5.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.
- package/dist/agents/architect.d.ts +2 -1
- package/dist/agents/architect.d.ts.map +1 -1
- package/dist/agents/architect.js +77 -5
- package/dist/agents/architect.js.map +1 -1
- package/dist/agents/continuity.d.ts +2 -0
- package/dist/agents/continuity.d.ts.map +1 -1
- package/dist/agents/continuity.js +146 -34
- package/dist/agents/continuity.js.map +1 -1
- package/dist/agents/en-prompt-sections.d.ts +8 -0
- package/dist/agents/en-prompt-sections.d.ts.map +1 -0
- package/dist/agents/en-prompt-sections.js +119 -0
- package/dist/agents/en-prompt-sections.js.map +1 -0
- package/dist/agents/fanfic-canon-importer.d.ts +14 -0
- package/dist/agents/fanfic-canon-importer.d.ts.map +1 -0
- package/dist/agents/fanfic-canon-importer.js +99 -0
- package/dist/agents/fanfic-canon-importer.js.map +1 -0
- package/dist/agents/fanfic-dimensions.d.ts +14 -0
- package/dist/agents/fanfic-dimensions.d.ts.map +1 -0
- package/dist/agents/fanfic-dimensions.js +63 -0
- package/dist/agents/fanfic-dimensions.js.map +1 -0
- package/dist/agents/fanfic-prompt-sections.d.ts +5 -0
- package/dist/agents/fanfic-prompt-sections.d.ts.map +1 -0
- package/dist/agents/fanfic-prompt-sections.js +85 -0
- package/dist/agents/fanfic-prompt-sections.js.map +1 -0
- package/dist/agents/post-write-validator.d.ts.map +1 -1
- package/dist/agents/post-write-validator.js +65 -0
- package/dist/agents/post-write-validator.js.map +1 -1
- package/dist/agents/reviser.d.ts.map +1 -1
- package/dist/agents/reviser.js +17 -3
- package/dist/agents/reviser.js.map +1 -1
- package/dist/agents/settler-prompts.d.ts +1 -1
- package/dist/agents/settler-prompts.d.ts.map +1 -1
- package/dist/agents/settler-prompts.js +7 -2
- package/dist/agents/settler-prompts.js.map +1 -1
- package/dist/agents/writer-prompts.d.ts +7 -2
- package/dist/agents/writer-prompts.d.ts.map +1 -1
- package/dist/agents/writer-prompts.js +43 -20
- package/dist/agents/writer-prompts.js.map +1 -1
- package/dist/agents/writer.d.ts +1 -1
- package/dist/agents/writer.d.ts.map +1 -1
- package/dist/agents/writer.js +49 -5
- package/dist/agents/writer.js.map +1 -1
- package/dist/index.d.ts +6 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/models/book-rules.d.ts +6 -0
- package/dist/models/book-rules.d.ts.map +1 -1
- package/dist/models/book-rules.js +2 -0
- package/dist/models/book-rules.js.map +1 -1
- package/dist/models/book.d.ts +15 -4
- package/dist/models/book.d.ts.map +1 -1
- package/dist/models/book.js +5 -7
- package/dist/models/book.js.map +1 -1
- package/dist/models/genre-profile.d.ts +3 -0
- package/dist/models/genre-profile.d.ts.map +1 -1
- package/dist/models/genre-profile.js +1 -0
- package/dist/models/genre-profile.js.map +1 -1
- package/dist/models/project.d.ts +3 -0
- package/dist/models/project.d.ts.map +1 -1
- package/dist/models/project.js +1 -0
- package/dist/models/project.js.map +1 -1
- package/dist/pipeline/agent.d.ts.map +1 -1
- package/dist/pipeline/agent.js +41 -0
- package/dist/pipeline/agent.js.map +1 -1
- package/dist/pipeline/runner.d.ts +5 -1
- package/dist/pipeline/runner.d.ts.map +1 -1
- package/dist/pipeline/runner.js +72 -6
- package/dist/pipeline/runner.js.map +1 -1
- package/dist/utils/analytics.d.ts +39 -0
- package/dist/utils/analytics.d.ts.map +1 -0
- package/dist/utils/analytics.js +50 -0
- package/dist/utils/analytics.js.map +1 -0
- package/dist/utils/config-loader.d.ts +9 -0
- package/dist/utils/config-loader.d.ts.map +1 -0
- package/dist/utils/config-loader.js +60 -0
- package/dist/utils/config-loader.js.map +1 -0
- package/genres/cozy.md +43 -0
- package/genres/cultivation.md +42 -0
- package/genres/dungeon-core.md +40 -0
- package/genres/isekai.md +43 -0
- package/genres/litrpg.md +43 -0
- package/genres/progression.md +41 -0
- package/genres/romantasy.md +45 -0
- package/genres/sci-fi.md +42 -0
- package/genres/system-apocalypse.md +40 -0
- package/genres/tower-climber.md +41 -0
- package/package.json +2 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BaseAgent } from "./base.js";
|
|
2
|
-
import type { BookConfig } from "../models/book.js";
|
|
2
|
+
import type { BookConfig, FanficMode } from "../models/book.js";
|
|
3
3
|
export interface ArchitectOutput {
|
|
4
4
|
readonly storyBible: string;
|
|
5
5
|
readonly volumeOutline: string;
|
|
@@ -17,6 +17,7 @@ export declare class ArchitectAgent extends BaseAgent {
|
|
|
17
17
|
* volume_outline, book_rules, current_state, and pending_hooks.
|
|
18
18
|
*/
|
|
19
19
|
generateFoundationFromImport(book: BookConfig, chaptersText: string, externalContext?: string): Promise<ArchitectOutput>;
|
|
20
|
+
generateFanficFoundation(book: BookConfig, fanficCanon: string, fanficMode: FanficMode): Promise<ArchitectOutput>;
|
|
20
21
|
private parseSections;
|
|
21
22
|
}
|
|
22
23
|
//# 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,MAAM,mBAAmB,CAAC;
|
|
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"}
|
package/dist/agents/architect.js
CHANGED
|
@@ -132,12 +132,16 @@ ${eraBlock}
|
|
|
132
132
|
3. 主角人设鲜明,有明确行为边界
|
|
133
133
|
4. 伏笔前后呼应,不留悬空线
|
|
134
134
|
5. 配角有独立动机,不是工具人`;
|
|
135
|
+
const resolvedLanguage = book.language ?? gp.language;
|
|
136
|
+
const langPrefix = resolvedLanguage === "en"
|
|
137
|
+
? `【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
|
+
: "";
|
|
139
|
+
const userMessage = resolvedLanguage === "en"
|
|
140
|
+
? `Generate the complete foundation for a ${gp.name} novel titled "${book.title}". Write everything in English.`
|
|
141
|
+
: `请为标题为"${book.title}"的${gp.name}小说生成完整基础设定。`;
|
|
135
142
|
const response = await this.chat([
|
|
136
|
-
{ role: "system", content: systemPrompt },
|
|
137
|
-
{
|
|
138
|
-
role: "user",
|
|
139
|
-
content: `请为标题为"${book.title}"的${gp.name}小说生成完整基础设定。`,
|
|
140
|
-
},
|
|
143
|
+
{ role: "system", content: langPrefix + systemPrompt },
|
|
144
|
+
{ role: "user", content: userMessage },
|
|
141
145
|
], { maxTokens: 16384, temperature: 0.8 });
|
|
142
146
|
return this.parseSections(response.content);
|
|
143
147
|
}
|
|
@@ -292,6 +296,74 @@ ${eraBlock}`;
|
|
|
292
296
|
], { maxTokens: 16384, temperature: 0.5 });
|
|
293
297
|
return this.parseSections(response.content);
|
|
294
298
|
}
|
|
299
|
+
async generateFanficFoundation(book, fanficCanon, fanficMode) {
|
|
300
|
+
const { profile: gp, body: genreBody } = await readGenreProfile(this.ctx.projectRoot, book.genre);
|
|
301
|
+
const MODE_INSTRUCTIONS = {
|
|
302
|
+
canon: "剧情发生在原作空白期或未详述的角度。不可改变原作已确立的事实。",
|
|
303
|
+
au: "标注AU设定与原作的关键分歧点,分歧后的世界线自由发展。保留角色核心性格。",
|
|
304
|
+
ooc: "标注角色性格偏离的起点和驱动事件。偏离必须有逻辑驱动。",
|
|
305
|
+
cp: "以配对角色的关系线为主线规划卷纲。每卷必须有关系推进节点。",
|
|
306
|
+
};
|
|
307
|
+
const systemPrompt = `你是一个专业的同人小说架构师。你的任务是基于原作正典为同人小说生成基础设定。
|
|
308
|
+
|
|
309
|
+
## 同人模式:${fanficMode}
|
|
310
|
+
${MODE_INSTRUCTIONS[fanficMode]}
|
|
311
|
+
|
|
312
|
+
## 原作正典
|
|
313
|
+
${fanficCanon}
|
|
314
|
+
|
|
315
|
+
## 题材特征
|
|
316
|
+
${genreBody}
|
|
317
|
+
|
|
318
|
+
## 关键原则
|
|
319
|
+
1. **不发明主要角色** — 主要角色必须来自原作正典的角色档案
|
|
320
|
+
2. 可以添加原创配角,但必须在 story_bible 中标注为"原创角色"
|
|
321
|
+
3. story_bible 保留原作世界观,标注同人的改动/扩展部分
|
|
322
|
+
4. volume_outline 以原作事件为锚点,标注哪些是原作事件、哪些是同人原创
|
|
323
|
+
5. book_rules 的 fanficMode 必须设为 "${fanficMode}"
|
|
324
|
+
6. 主角设定来自原作角色档案中的第一个角色(或用户在标题中暗示的角色)
|
|
325
|
+
|
|
326
|
+
你需要生成以下内容,每个部分用 === SECTION: <name> === 分隔:
|
|
327
|
+
|
|
328
|
+
=== SECTION: story_bible ===
|
|
329
|
+
世界观(基于原作正典)+ 角色列表(原作角色标注来源,原创角色标注"原创")
|
|
330
|
+
|
|
331
|
+
=== SECTION: volume_outline ===
|
|
332
|
+
卷纲规划。每卷标注:卷名、章节范围、核心事件(标注原作/原创)、关系发展节点
|
|
333
|
+
|
|
334
|
+
=== SECTION: book_rules ===
|
|
335
|
+
\`\`\`
|
|
336
|
+
---
|
|
337
|
+
version: "1.0"
|
|
338
|
+
protagonist:
|
|
339
|
+
name: (从原作角色中选择)
|
|
340
|
+
personalityLock: [(从正典角色档案提取)]
|
|
341
|
+
behavioralConstraints: [(基于原作行为模式)]
|
|
342
|
+
genreLock:
|
|
343
|
+
primary: ${book.genre}
|
|
344
|
+
forbidden: []
|
|
345
|
+
fanficMode: "${fanficMode}"
|
|
346
|
+
allowedDeviations: []
|
|
347
|
+
prohibitions:
|
|
348
|
+
- (3-5条同人特有禁忌)
|
|
349
|
+
---
|
|
350
|
+
(叙事视角和风格指导)
|
|
351
|
+
\`\`\`
|
|
352
|
+
|
|
353
|
+
=== SECTION: current_state ===
|
|
354
|
+
初始状态卡(基于正典起始点)
|
|
355
|
+
|
|
356
|
+
=== SECTION: pending_hooks ===
|
|
357
|
+
初始伏笔池(从正典关键事件和关系中提取)`;
|
|
358
|
+
const response = await this.chat([
|
|
359
|
+
{ role: "system", content: systemPrompt },
|
|
360
|
+
{
|
|
361
|
+
role: "user",
|
|
362
|
+
content: `请为标题为"${book.title}"的${fanficMode}模式同人小说生成基础设定。目标${book.targetChapters}章,每章${book.chapterWordCount}字。`,
|
|
363
|
+
},
|
|
364
|
+
], { maxTokens: 16384, temperature: 0.7 });
|
|
365
|
+
return this.parseSections(response.content);
|
|
366
|
+
}
|
|
295
367
|
parseSections(content) {
|
|
296
368
|
const extract = (name) => {
|
|
297
369
|
const regex = new RegExp(`=== SECTION: ${name} ===\\s*([\\s\\S]*?)(?==== SECTION:|$)`);
|
|
@@ -1 +1 @@
|
|
|
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;AAUjC,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;QAE3D,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,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAwDE,IAAI,CAAC,KAAK;;EAErB,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;;8BAEO,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiC5B,IAAI,CAAC,QAAQ;OACb,EAAE,CAAC,IAAI;EACZ,cAAc;EACd,UAAU;EACV,QAAQ;;;iBAGO,CAAC;QAEd,MAAM,
|
|
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;AAUjC,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;QAE3D,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,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAwDE,IAAI,CAAC,KAAK;;EAErB,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;;8BAEO,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiC5B,IAAI,CAAC,QAAQ;OACb,EAAE,CAAC,IAAI;EACZ,cAAc;EACd,UAAU;EACV,QAAQ;;;iBAGO,CAAC;QAEd,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,QAAQ,CAAC;QACtD,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;QAE/B,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,mJAAmJ,EACnJ,OAAO,CACR,CACF,CAAC;QACJ,CAAC;QAED,6BAA6B;QAC7B,MAAM,CAAC,IAAI,CACT,SAAS,CACP,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,EAClC,0KAA0K,EAC1K,OAAO,CACR,EACD,SAAS,CACP,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC,EACnC,wHAAwH,EACxH,OAAO,CACR,EACD,SAAS,CACP,IAAI,CAAC,QAAQ,EAAE,qBAAqB,CAAC,EACrC,8XAA8X,EAC9X,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;QAE3D,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,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;;;;;;;;;;;;;;;;;;;;;QAqBH,IAAI,CAAC,KAAK;;;;;;;;;;;;;;;;;;aAkBL,IAAI,CAAC,KAAK;;EAErB,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;;iCAEU,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsCpC,cAAc;EACd,UAAU;EACV,QAAQ,EAAE,CAAC;QAET,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,OAAO,IAAI,CAAC,KAAK,8BAA8B,YAAY,EAAE;aACvE;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,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,IAAI,eAAe,CAAC;QACvD,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;CACF"}
|
|
@@ -21,6 +21,8 @@ export declare class ContinuityAuditor extends BaseAgent {
|
|
|
21
21
|
temperature?: number;
|
|
22
22
|
}): Promise<AuditResult>;
|
|
23
23
|
private parseAuditResult;
|
|
24
|
+
private extractBalancedJson;
|
|
25
|
+
private tryParseAuditJson;
|
|
24
26
|
private loadPreviousChapter;
|
|
25
27
|
private readFileSafe;
|
|
26
28
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"continuity.d.ts","sourceRoot":"","sources":["../../src/agents/continuity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"continuity.d.ts","sourceRoot":"","sources":["../../src/agents/continuity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAStC,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IAC3C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,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;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,QAAQ,EAAE,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;IACnD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AA4KD,qBAAa,iBAAkB,SAAQ,SAAS;IAC9C,IAAI,IAAI,IAAI,MAAM,CAEjB;IAEK,YAAY,CAChB,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,MAAM,EACrB,KAAK,CAAC,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GACjC,OAAO,CAAC,WAAW,CAAC;IA0JvB,OAAO,CAAC,gBAAgB;IAmExB,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,iBAAiB;YAqBX,mBAAmB;YAcnB,YAAY;CAO3B"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { BaseAgent } from "./base.js";
|
|
2
2
|
import { readGenreProfile, readBookRules } from "./rules-reader.js";
|
|
3
|
+
import { getFanficDimensionConfig } from "./fanfic-dimensions.js";
|
|
3
4
|
import { readFile, readdir } from "node:fs/promises";
|
|
4
5
|
import { join } from "node:path";
|
|
5
6
|
// Dimension ID → name mapping
|
|
@@ -37,8 +38,12 @@ const DIMENSION_MAP = {
|
|
|
37
38
|
31: "番外伏笔隔离",
|
|
38
39
|
32: "读者期待管理",
|
|
39
40
|
33: "大纲偏离检测",
|
|
41
|
+
34: "角色还原度",
|
|
42
|
+
35: "世界规则遵守",
|
|
43
|
+
36: "关系动态",
|
|
44
|
+
37: "正典事件一致性",
|
|
40
45
|
};
|
|
41
|
-
function buildDimensionList(gp, bookRules, hasParentCanon = false) {
|
|
46
|
+
function buildDimensionList(gp, bookRules, hasParentCanon = false, fanficMode) {
|
|
42
47
|
const activeIds = new Set(gp.auditDimensions);
|
|
43
48
|
// Add book-level additional dimensions (supports both numeric IDs and name strings)
|
|
44
49
|
if (bookRules?.additionalAuditDimensions) {
|
|
@@ -76,13 +81,24 @@ function buildDimensionList(gp, bookRules, hasParentCanon = false) {
|
|
|
76
81
|
if (gp.eraResearch || bookRules?.eraConstraints?.enabled) {
|
|
77
82
|
activeIds.add(12);
|
|
78
83
|
}
|
|
79
|
-
// Spinoff dimensions — activated when parent_canon.md exists
|
|
80
|
-
if (hasParentCanon) {
|
|
84
|
+
// Spinoff dimensions — activated when parent_canon.md exists (but NOT in fanfic mode)
|
|
85
|
+
if (hasParentCanon && !fanficMode) {
|
|
81
86
|
activeIds.add(28); // 正传事件冲突
|
|
82
87
|
activeIds.add(29); // 未来信息泄露
|
|
83
88
|
activeIds.add(30); // 世界规则跨书一致性
|
|
84
89
|
activeIds.add(31); // 番外伏笔隔离
|
|
85
90
|
}
|
|
91
|
+
// Fanfic dimensions — replace spinoff dims with fanfic-specific checks
|
|
92
|
+
let fanficConfig;
|
|
93
|
+
if (fanficMode) {
|
|
94
|
+
fanficConfig = getFanficDimensionConfig(fanficMode, bookRules?.allowedDeviations);
|
|
95
|
+
for (const id of fanficConfig.activeIds) {
|
|
96
|
+
activeIds.add(id);
|
|
97
|
+
}
|
|
98
|
+
for (const id of fanficConfig.deactivatedIds) {
|
|
99
|
+
activeIds.delete(id);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
86
102
|
const dims = [];
|
|
87
103
|
for (const id of [...activeIds].sort((a, b) => a - b)) {
|
|
88
104
|
const name = DIMENSION_MAP[id];
|
|
@@ -134,6 +150,10 @@ function buildDimensionList(gp, bookRules, hasParentCanon = false) {
|
|
|
134
150
|
if (id === 33) {
|
|
135
151
|
note = "对照 volume_outline:本章内容是否对应卷纲中当前章节范围的剧情节点?是否跳过了节点或提前消耗了后续节点?剧情推进速度是否与卷纲规划的章节跨度匹配?如果卷纲规划某段剧情跨N章但实际1-2章就讲完→critical";
|
|
136
152
|
}
|
|
153
|
+
// Fanfic dimension notes (34-37) — mode-aware
|
|
154
|
+
if (fanficConfig?.notes.has(id)) {
|
|
155
|
+
note = fanficConfig.notes.get(id);
|
|
156
|
+
}
|
|
137
157
|
dims.push({ id, name, note });
|
|
138
158
|
}
|
|
139
159
|
return dims;
|
|
@@ -143,7 +163,7 @@ export class ContinuityAuditor extends BaseAgent {
|
|
|
143
163
|
return "continuity-auditor";
|
|
144
164
|
}
|
|
145
165
|
async auditChapter(bookDir, chapterContent, chapterNumber, genre, options) {
|
|
146
|
-
const [currentState, ledger, hooks, styleGuideRaw, subplotBoard, emotionalArcs, characterMatrix, chapterSummaries, parentCanon, volumeOutline] = await Promise.all([
|
|
166
|
+
const [currentState, ledger, hooks, styleGuideRaw, subplotBoard, emotionalArcs, characterMatrix, chapterSummaries, parentCanon, fanficCanon, volumeOutline] = await Promise.all([
|
|
147
167
|
this.readFileSafe(join(bookDir, "story/current_state.md")),
|
|
148
168
|
this.readFileSafe(join(bookDir, "story/particle_ledger.md")),
|
|
149
169
|
this.readFileSafe(join(bookDir, "story/pending_hooks.md")),
|
|
@@ -153,9 +173,11 @@ export class ContinuityAuditor extends BaseAgent {
|
|
|
153
173
|
this.readFileSafe(join(bookDir, "story/character_matrix.md")),
|
|
154
174
|
this.readFileSafe(join(bookDir, "story/chapter_summaries.md")),
|
|
155
175
|
this.readFileSafe(join(bookDir, "story/parent_canon.md")),
|
|
176
|
+
this.readFileSafe(join(bookDir, "story/fanfic_canon.md")),
|
|
156
177
|
this.readFileSafe(join(bookDir, "story/volume_outline.md")),
|
|
157
178
|
]);
|
|
158
179
|
const hasParentCanon = parentCanon !== "(文件不存在)";
|
|
180
|
+
const hasFanficCanon = fanficCanon !== "(文件不存在)";
|
|
159
181
|
// Load last chapter full text for fine-grained continuity checking
|
|
160
182
|
const previousChapter = await this.loadPreviousChapter(bookDir, chapterNumber);
|
|
161
183
|
// Load genre profile and book rules
|
|
@@ -167,7 +189,8 @@ export class ContinuityAuditor extends BaseAgent {
|
|
|
167
189
|
const styleGuide = styleGuideRaw !== "(文件不存在)"
|
|
168
190
|
? styleGuideRaw
|
|
169
191
|
: (parsedRules?.body ?? "(无文风指南)");
|
|
170
|
-
const
|
|
192
|
+
const fanficMode = hasFanficCanon ? bookRules?.fanficMode : undefined;
|
|
193
|
+
const dimensions = buildDimensionList(gp, bookRules, hasParentCanon, fanficMode);
|
|
171
194
|
const dimList = dimensions
|
|
172
195
|
.map((d) => `${d.id}. ${d.name}${d.note ? `(${d.note})` : ""}`)
|
|
173
196
|
.join("\n");
|
|
@@ -177,7 +200,30 @@ export class ContinuityAuditor extends BaseAgent {
|
|
|
177
200
|
const searchNote = gp.eraResearch
|
|
178
201
|
? "\n\n你有联网搜索能力(search_web / fetch_url)。对于涉及真实年代、人物、事件、地理、政策的内容,你必须用search_web核实,不可凭记忆判断。至少对比2个来源交叉验证。"
|
|
179
202
|
: "";
|
|
180
|
-
const
|
|
203
|
+
const resolvedLanguage = gp.language;
|
|
204
|
+
const isEnglish = resolvedLanguage === "en";
|
|
205
|
+
const systemPrompt = isEnglish
|
|
206
|
+
? `You are a strict ${gp.name} web fiction editor. Audit the chapter for continuity, consistency, and quality. ALL OUTPUT MUST BE IN ENGLISH.${protagonistBlock}${searchNote}
|
|
207
|
+
|
|
208
|
+
Audit dimensions:
|
|
209
|
+
${dimList}
|
|
210
|
+
|
|
211
|
+
Output format MUST be JSON:
|
|
212
|
+
{
|
|
213
|
+
"passed": true/false,
|
|
214
|
+
"issues": [
|
|
215
|
+
{
|
|
216
|
+
"severity": "critical|warning|info",
|
|
217
|
+
"category": "dimension name",
|
|
218
|
+
"description": "specific issue description",
|
|
219
|
+
"suggestion": "fix suggestion"
|
|
220
|
+
}
|
|
221
|
+
],
|
|
222
|
+
"summary": "one-sentence audit conclusion"
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
passed is false ONLY when critical-severity issues exist.`
|
|
226
|
+
: `你是一位严格的${gp.name}网络小说审稿编辑。你的任务是对章节进行连续性、一致性和质量审查。${protagonistBlock}${searchNote}
|
|
181
227
|
|
|
182
228
|
审查维度:
|
|
183
229
|
${dimList}
|
|
@@ -215,6 +261,9 @@ ${dimList}
|
|
|
215
261
|
const canonBlock = hasParentCanon
|
|
216
262
|
? `\n## 正传正典参照(番外审查专用)\n${parentCanon}\n`
|
|
217
263
|
: "";
|
|
264
|
+
const fanficCanonBlock = hasFanficCanon
|
|
265
|
+
? `\n## 同人正典参照(同人审查专用)\n${fanficCanon}\n`
|
|
266
|
+
: "";
|
|
218
267
|
const outlineBlock = volumeOutline !== "(文件不存在)"
|
|
219
268
|
? `\n## 卷纲(用于大纲偏离检测)\n${volumeOutline}\n`
|
|
220
269
|
: "";
|
|
@@ -228,7 +277,7 @@ ${currentState}
|
|
|
228
277
|
${ledgerBlock}
|
|
229
278
|
## 伏笔池
|
|
230
279
|
${hooks}
|
|
231
|
-
${subplotBlock}${emotionalBlock}${matrixBlock}${summariesBlock}${canonBlock}${outlineBlock}${prevChapterBlock}
|
|
280
|
+
${subplotBlock}${emotionalBlock}${matrixBlock}${summariesBlock}${canonBlock}${fanficCanonBlock}${outlineBlock}${prevChapterBlock}
|
|
232
281
|
## 文风指南
|
|
233
282
|
${styleGuide}
|
|
234
283
|
|
|
@@ -247,42 +296,105 @@ ${chapterContent}`;
|
|
|
247
296
|
return { ...result, tokenUsage: response.usage };
|
|
248
297
|
}
|
|
249
298
|
parseAuditResult(content) {
|
|
250
|
-
|
|
251
|
-
|
|
299
|
+
// Try multiple JSON extraction strategies (handles small/local models)
|
|
300
|
+
// Strategy 1: Find balanced JSON object (not greedy)
|
|
301
|
+
const balanced = this.extractBalancedJson(content);
|
|
302
|
+
if (balanced) {
|
|
303
|
+
const result = this.tryParseAuditJson(balanced);
|
|
304
|
+
if (result)
|
|
305
|
+
return result;
|
|
306
|
+
}
|
|
307
|
+
// Strategy 2: Try the whole content as JSON (some models output pure JSON)
|
|
308
|
+
const trimmed = content.trim();
|
|
309
|
+
if (trimmed.startsWith("{")) {
|
|
310
|
+
const result = this.tryParseAuditJson(trimmed);
|
|
311
|
+
if (result)
|
|
312
|
+
return result;
|
|
313
|
+
}
|
|
314
|
+
// Strategy 3: Look for ```json code blocks
|
|
315
|
+
const codeBlockMatch = content.match(/```(?:json)?\s*\n?([\s\S]*?)\n?```/);
|
|
316
|
+
if (codeBlockMatch) {
|
|
317
|
+
const result = this.tryParseAuditJson(codeBlockMatch[1].trim());
|
|
318
|
+
if (result)
|
|
319
|
+
return result;
|
|
320
|
+
}
|
|
321
|
+
// Strategy 4: Try to extract individual fields via regex (last resort fallback)
|
|
322
|
+
const passedMatch = content.match(/"passed"\s*:\s*(true|false)/);
|
|
323
|
+
const issuesMatch = content.match(/"issues"\s*:\s*\[([\s\S]*?)\]/);
|
|
324
|
+
const summaryMatch = content.match(/"summary"\s*:\s*"([^"]*)"/);
|
|
325
|
+
if (passedMatch) {
|
|
326
|
+
const issues = [];
|
|
327
|
+
if (issuesMatch) {
|
|
328
|
+
// Try to parse individual issue objects
|
|
329
|
+
const issuePattern = /\{[^{}]*"severity"\s*:\s*"[^"]*"[^{}]*\}/g;
|
|
330
|
+
let match;
|
|
331
|
+
while ((match = issuePattern.exec(issuesMatch[1])) !== null) {
|
|
332
|
+
try {
|
|
333
|
+
const issue = JSON.parse(match[0]);
|
|
334
|
+
issues.push({
|
|
335
|
+
severity: issue.severity ?? "warning",
|
|
336
|
+
category: issue.category ?? "未分类",
|
|
337
|
+
description: issue.description ?? "",
|
|
338
|
+
suggestion: issue.suggestion ?? "",
|
|
339
|
+
});
|
|
340
|
+
}
|
|
341
|
+
catch {
|
|
342
|
+
// skip malformed individual issue
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
}
|
|
252
346
|
return {
|
|
253
|
-
passed:
|
|
254
|
-
issues
|
|
255
|
-
|
|
256
|
-
severity: "critical",
|
|
257
|
-
category: "系统错误",
|
|
258
|
-
description: "审稿输出格式异常,无法解析",
|
|
259
|
-
suggestion: "重新运行审稿",
|
|
260
|
-
},
|
|
261
|
-
],
|
|
262
|
-
summary: "审稿输出解析失败",
|
|
347
|
+
passed: passedMatch[1] === "true",
|
|
348
|
+
issues,
|
|
349
|
+
summary: summaryMatch?.[1] ?? "",
|
|
263
350
|
};
|
|
264
351
|
}
|
|
352
|
+
return {
|
|
353
|
+
passed: false,
|
|
354
|
+
issues: [{
|
|
355
|
+
severity: "critical",
|
|
356
|
+
category: "系统错误",
|
|
357
|
+
description: "审稿输出格式异常,无法解析为 JSON",
|
|
358
|
+
suggestion: "可能是模型不支持结构化输出。尝试换一个更大的模型,或检查 API 返回格式。",
|
|
359
|
+
}],
|
|
360
|
+
summary: "审稿输出解析失败",
|
|
361
|
+
};
|
|
362
|
+
}
|
|
363
|
+
extractBalancedJson(text) {
|
|
364
|
+
const start = text.indexOf("{");
|
|
365
|
+
if (start === -1)
|
|
366
|
+
return null;
|
|
367
|
+
let depth = 0;
|
|
368
|
+
for (let i = start; i < text.length; i++) {
|
|
369
|
+
if (text[i] === "{")
|
|
370
|
+
depth++;
|
|
371
|
+
if (text[i] === "}")
|
|
372
|
+
depth--;
|
|
373
|
+
if (depth === 0)
|
|
374
|
+
return text.slice(start, i + 1);
|
|
375
|
+
}
|
|
376
|
+
return null;
|
|
377
|
+
}
|
|
378
|
+
tryParseAuditJson(json) {
|
|
265
379
|
try {
|
|
266
|
-
const parsed = JSON.parse(
|
|
380
|
+
const parsed = JSON.parse(json);
|
|
381
|
+
if (typeof parsed.passed !== "boolean" && parsed.passed !== undefined)
|
|
382
|
+
return null;
|
|
267
383
|
return {
|
|
268
|
-
passed: Boolean(parsed.passed),
|
|
269
|
-
issues: Array.isArray(parsed.issues)
|
|
384
|
+
passed: Boolean(parsed.passed ?? false),
|
|
385
|
+
issues: Array.isArray(parsed.issues)
|
|
386
|
+
? parsed.issues.map((i) => ({
|
|
387
|
+
severity: i.severity ?? "warning",
|
|
388
|
+
category: i.category ?? "未分类",
|
|
389
|
+
description: i.description ?? "",
|
|
390
|
+
suggestion: i.suggestion ?? "",
|
|
391
|
+
}))
|
|
392
|
+
: [],
|
|
270
393
|
summary: String(parsed.summary ?? ""),
|
|
271
394
|
};
|
|
272
395
|
}
|
|
273
396
|
catch {
|
|
274
|
-
return
|
|
275
|
-
passed: false,
|
|
276
|
-
issues: [
|
|
277
|
-
{
|
|
278
|
-
severity: "critical",
|
|
279
|
-
category: "系统错误",
|
|
280
|
-
description: "审稿 JSON 解析失败",
|
|
281
|
-
suggestion: "重新运行审稿",
|
|
282
|
-
},
|
|
283
|
-
],
|
|
284
|
-
summary: "审稿 JSON 解析失败",
|
|
285
|
-
};
|
|
397
|
+
return null;
|
|
286
398
|
}
|
|
287
399
|
}
|
|
288
400
|
async loadPreviousChapter(bookDir, currentChapter) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"continuity.js","sourceRoot":"","sources":["../../src/agents/continuity.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"continuity.js","sourceRoot":"","sources":["../../src/agents/continuity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAItC,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,wBAAwB,EAAqB,MAAM,wBAAwB,CAAC;AACrF,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAoBjC,8BAA8B;AAC9B,MAAM,aAAa,GAA2B;IAC5C,CAAC,EAAE,OAAO;IACV,CAAC,EAAE,OAAO;IACV,CAAC,EAAE,MAAM;IACT,CAAC,EAAE,MAAM;IACT,CAAC,EAAE,MAAM;IACT,CAAC,EAAE,MAAM;IACT,CAAC,EAAE,MAAM;IACT,CAAC,EAAE,MAAM;IACT,CAAC,EAAE,MAAM;IACT,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,OAAO;IACX,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,QAAQ;IACZ,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,OAAO;IACX,EAAE,EAAE,OAAO;IACX,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,OAAO;IACX,EAAE,EAAE,OAAO;IACX,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,OAAO;IACX,EAAE,EAAE,QAAQ;IACZ,EAAE,EAAE,QAAQ;IACZ,EAAE,EAAE,WAAW;IACf,EAAE,EAAE,QAAQ;IACZ,EAAE,EAAE,QAAQ;IACZ,EAAE,EAAE,QAAQ;IACZ,EAAE,EAAE,OAAO;IACX,EAAE,EAAE,QAAQ;IACZ,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,SAAS;CACd,CAAC;AAEF,SAAS,kBAAkB,CACzB,EAAgB,EAChB,SAA2B,EAC3B,cAAc,GAAG,KAAK,EACtB,UAAuB;IAEvB,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC;IAE9C,oFAAoF;IACpF,IAAI,SAAS,EAAE,yBAAyB,EAAE,CAAC;QACzC,kCAAkC;QAClC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC3C,KAAK,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;YACvD,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QACjC,CAAC;QAED,KAAK,MAAM,CAAC,IAAI,SAAS,CAAC,yBAAyB,EAAE,CAAC;YACpD,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAC1B,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACnB,CAAC;iBAAM,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACjC,8CAA8C;gBAC9C,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAChC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;oBAC1B,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACzB,CAAC;qBAAM,CAAC;oBACN,uDAAuD;oBACvD,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,QAAQ,EAAE,CAAC;wBAClC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;4BACzC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;4BAClB,MAAM;wBACR,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,2BAA2B;IAC3B,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,qBAAqB;IACxC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,qBAAqB;IAExC,wBAAwB;IACxB,IAAI,EAAE,CAAC,WAAW,IAAI,SAAS,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC;QACzD,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACpB,CAAC;IAED,sFAAsF;IACtF,IAAI,cAAc,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;QAC5B,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;QAC5B,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY;QAC/B,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;IAC9B,CAAC;IAED,uEAAuE;IACvE,IAAI,YAAqE,CAAC;IAC1E,IAAI,UAAU,EAAE,CAAC;QACf,YAAY,GAAG,wBAAwB,CAAC,UAAU,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAC;QAClF,KAAK,MAAM,EAAE,IAAI,YAAY,CAAC,SAAS,EAAE,CAAC;YACxC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACpB,CAAC;QACD,KAAK,MAAM,EAAE,IAAI,YAAY,CAAC,cAAc,EAAE,CAAC;YAC7C,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAsD,EAAE,CAAC;IAEnE,KAAK,MAAM,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI;YAAE,SAAS;QAEpB,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5C,MAAM,KAAK,GAAG,SAAS,EAAE,oBAAoB,IAAI,SAAS,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC;gBACxF,CAAC,CAAC,SAAS,CAAC,oBAAoB;gBAChC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC;YACpB,IAAI,GAAG,QAAQ,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,oDAAoD,CAAC;QACrF,CAAC;QACD,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjD,IAAI,GAAG,QAAQ,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAClD,CAAC;QACD,IAAI,EAAE,KAAK,EAAE,IAAI,SAAS,EAAE,cAAc,EAAE,CAAC;YAC3C,MAAM,GAAG,GAAG,SAAS,CAAC,cAAc,CAAC;YACrC,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACvD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;gBAAE,IAAI,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACvD,CAAC;QACD,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACd,IAAI,GAAG,uBAAuB,CAAC;QACjC,CAAC;QACD,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACd,IAAI,GAAG,6FAA6F,CAAC;QACvG,CAAC;QACD,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACd,IAAI,GAAG,qGAAqG,CAAC;QAC/G,CAAC;QACD,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACd,IAAI,GAAG,wGAAwG,CAAC;QAClH,CAAC;QACD,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACd,IAAI,GAAG,kBAAkB,CAAC;QAC5B,CAAC;QACD,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACd,IAAI,GAAG,+BAA+B,CAAC;QACzC,CAAC;QACD,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACd,IAAI,GAAG,4BAA4B,CAAC;QACtC,CAAC;QACD,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACd,IAAI,GAAG,2BAA2B,CAAC;QACrC,CAAC;QACD,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACd,IAAI,GAAG,8DAA8D,CAAC;QACxE,CAAC;QACD,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACd,IAAI,GAAG,kHAAkH,CAAC;QAC5H,CAAC;QAED,8CAA8C;QAC9C,IAAI,YAAY,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YAChC,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC;QACrC,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,OAAO,iBAAkB,SAAQ,SAAS;IAC9C,IAAI,IAAI;QACN,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,OAAe,EACf,cAAsB,EACtB,aAAqB,EACrB,KAAc,EACd,OAAkC;QAElC,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,CAAC,GACzJ,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,wBAAwB,CAAC,CAAC;YAC1D,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,0BAA0B,CAAC,CAAC;YAC5D,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,wBAAwB,CAAC,CAAC;YAC1D,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAC;YACxD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,wBAAwB,CAAC,CAAC;YAC1D,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,yBAAyB,CAAC,CAAC;YAC3D,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,2BAA2B,CAAC,CAAC;YAC7D,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,4BAA4B,CAAC,CAAC;YAC9D,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;YACzD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;YACzD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,yBAAyB,CAAC,CAAC;SAC5D,CAAC,CAAC;QAEL,MAAM,cAAc,GAAG,WAAW,KAAK,SAAS,CAAC;QACjD,MAAM,cAAc,GAAG,WAAW,KAAK,SAAS,CAAC;QAEjD,mEAAmE;QACnE,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAE/E,oCAAoC;QACpC,MAAM,OAAO,GAAG,KAAK,IAAI,OAAO,CAAC;QACjC,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAC9E,MAAM,WAAW,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;QACjD,MAAM,SAAS,GAAG,WAAW,EAAE,KAAK,IAAI,IAAI,CAAC;QAE7C,kEAAkE;QAClE,MAAM,UAAU,GAAG,aAAa,KAAK,SAAS;YAC5C,CAAC,CAAC,aAAa;YACf,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,IAAI,SAAS,CAAC,CAAC;QAErC,MAAM,UAAU,GAAG,cAAc,CAAC,CAAC,CAAE,SAAS,EAAE,UAAqC,CAAC,CAAC,CAAC,SAAS,CAAC;QAClG,MAAM,UAAU,GAAG,kBAAkB,CAAC,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;QACjF,MAAM,OAAO,GAAG,UAAU;aACvB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;aAC9D,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,MAAM,gBAAgB,GAAG,SAAS,EAAE,WAAW;YAC7C,CAAC,CAAC,YAAY,SAAS,CAAC,WAAW,CAAC,IAAI,IAAI,SAAS,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,SAAS,CAAC,WAAW,CAAC,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YAC3J,CAAC,CAAC,EAAE,CAAC;QAEP,MAAM,UAAU,GAAG,EAAE,CAAC,WAAW;YAC/B,CAAC,CAAC,qGAAqG;YACvG,CAAC,CAAC,EAAE,CAAC;QAEP,MAAM,gBAAgB,GAAG,EAAE,CAAC,QAAQ,CAAC;QACrC,MAAM,SAAS,GAAG,gBAAgB,KAAK,IAAI,CAAC;QAE5C,MAAM,YAAY,GAAG,SAAS;YAC5B,CAAC,CAAC,oBAAoB,EAAE,CAAC,IAAI,kHAAkH,gBAAgB,GAAG,UAAU;;;EAGhL,OAAO;;;;;;;;;;;;;;;;0DAgBiD;YACpD,CAAC,CAAC,UAAU,EAAE,CAAC,IAAI,mCAAmC,gBAAgB,GAAG,UAAU;;;EAGvF,OAAO;;;;;;;;;;;;;;;;sCAgB6B,CAAC;QAEnC,MAAM,WAAW,GAAG,EAAE,CAAC,eAAe;YACpC,CAAC,CAAC,cAAc,MAAM,EAAE;YACxB,CAAC,CAAC,EAAE,CAAC;QAEP,MAAM,YAAY,GAAG,YAAY,KAAK,SAAS;YAC7C,CAAC,CAAC,eAAe,YAAY,IAAI;YACjC,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,cAAc,GAAG,aAAa,KAAK,SAAS;YAChD,CAAC,CAAC,cAAc,aAAa,IAAI;YACjC,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,WAAW,GAAG,eAAe,KAAK,SAAS;YAC/C,CAAC,CAAC,gBAAgB,eAAe,IAAI;YACrC,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,cAAc,GAAG,gBAAgB,KAAK,SAAS;YACnD,CAAC,CAAC,sBAAsB,gBAAgB,IAAI;YAC5C,CAAC,CAAC,EAAE,CAAC;QAEP,MAAM,UAAU,GAAG,cAAc;YAC/B,CAAC,CAAC,wBAAwB,WAAW,IAAI;YACzC,CAAC,CAAC,EAAE,CAAC;QAEP,MAAM,gBAAgB,GAAG,cAAc;YACrC,CAAC,CAAC,wBAAwB,WAAW,IAAI;YACzC,CAAC,CAAC,EAAE,CAAC;QAEP,MAAM,YAAY,GAAG,aAAa,KAAK,SAAS;YAC9C,CAAC,CAAC,sBAAsB,aAAa,IAAI;YACzC,CAAC,CAAC,EAAE,CAAC;QAEP,MAAM,gBAAgB,GAAG,eAAe;YACtC,CAAC,CAAC,uBAAuB,eAAe,IAAI;YAC5C,CAAC,CAAC,EAAE,CAAC;QAEP,MAAM,UAAU,GAAG,OAAO,aAAa;;;EAGzC,YAAY;EACZ,WAAW;;EAEX,KAAK;EACL,YAAY,GAAG,cAAc,GAAG,WAAW,GAAG,cAAc,GAAG,UAAU,GAAG,gBAAgB,GAAG,YAAY,GAAG,gBAAgB;;EAE9H,UAAU;;;EAGV,cAAc,EAAE,CAAC;QAEf,MAAM,YAAY,GAAG;YACnB,EAAE,IAAI,EAAE,QAAiB,EAAE,OAAO,EAAE,YAAY,EAAE;YAClD,EAAE,IAAI,EAAE,MAAe,EAAE,OAAO,EAAE,UAAU,EAAE;SAC/C,CAAC;QACF,MAAM,WAAW,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,IAAI,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;QAElF,mEAAmE;QACnE,MAAM,QAAQ,GAAG,EAAE,CAAC,WAAW;YAC7B,CAAC,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,WAAW,CAAC;YACtD,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QAE/C,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACvD,OAAO,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC;IACnD,CAAC;IAEO,gBAAgB,CAAC,OAAe;QACtC,uEAAuE;QAEvE,qDAAqD;QACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QACnD,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAChD,IAAI,MAAM;gBAAE,OAAO,MAAM,CAAC;QAC5B,CAAC;QAED,2EAA2E;QAC3E,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAC/B,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAC/C,IAAI,MAAM;gBAAE,OAAO,MAAM,CAAC;QAC5B,CAAC;QAED,2CAA2C;QAC3C,MAAM,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;QAC3E,IAAI,cAAc,EAAE,CAAC;YACnB,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC,CAAC;YACjE,IAAI,MAAM;gBAAE,OAAO,MAAM,CAAC;QAC5B,CAAC;QAED,gFAAgF;QAChF,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACjE,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnE,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAChE,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,MAAM,GAAiB,EAAE,CAAC;YAChC,IAAI,WAAW,EAAE,CAAC;gBAChB,wCAAwC;gBACxC,MAAM,YAAY,GAAG,2CAA2C,CAAC;gBACjE,IAAI,KAA6B,CAAC;gBAClC,OAAO,CAAC,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAE,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;oBAC7D,IAAI,CAAC;wBACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;wBACnC,MAAM,CAAC,IAAI,CAAC;4BACV,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,SAAS;4BACrC,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,KAAK;4BACjC,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE;4BACpC,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,EAAE;yBACnC,CAAC,CAAC;oBACL,CAAC;oBAAC,MAAM,CAAC;wBACP,kCAAkC;oBACpC,CAAC;gBACH,CAAC;YACH,CAAC;YACD,OAAO;gBACL,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,MAAM;gBACjC,MAAM;gBACN,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE;aACjC,CAAC;QACJ,CAAC;QAED,OAAO;YACL,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,CAAC;oBACP,QAAQ,EAAE,UAAU;oBACpB,QAAQ,EAAE,MAAM;oBAChB,WAAW,EAAE,qBAAqB;oBAClC,UAAU,EAAE,wCAAwC;iBACrD,CAAC;YACF,OAAO,EAAE,UAAU;SACpB,CAAC;IACJ,CAAC;IAEO,mBAAmB,CAAC,IAAY;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,KAAK,KAAK,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QAC9B,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG;gBAAE,KAAK,EAAE,CAAC;YAC7B,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG;gBAAE,KAAK,EAAE,CAAC;YAC7B,IAAI,KAAK,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,iBAAiB,CAAC,IAAY;QACpC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;gBAAE,OAAO,IAAI,CAAC;YACnF,OAAO;gBACL,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC;gBACvC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;oBAClC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAA0B,EAAE,EAAE,CAAC,CAAC;wBACjD,QAAQ,EAAG,CAAC,CAAC,QAAmB,IAAI,SAAS;wBAC7C,QAAQ,EAAG,CAAC,CAAC,QAAmB,IAAI,KAAK;wBACzC,WAAW,EAAG,CAAC,CAAC,WAAsB,IAAI,EAAE;wBAC5C,UAAU,EAAG,CAAC,CAAC,UAAqB,IAAI,EAAE;qBAC3C,CAAC,CAAC;oBACL,CAAC,CAAC,EAAE;gBACN,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;aACtC,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAAC,OAAe,EAAE,cAAsB;QACvE,IAAI,cAAc,IAAI,CAAC;YAAE,OAAO,EAAE,CAAC;QACnC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAC9C,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC;YACzC,MAAM,UAAU,GAAG,MAAM,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAC/D,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;YAClF,IAAI,CAAC,QAAQ;gBAAE,OAAO,EAAE,CAAC;YACzB,OAAO,MAAM,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;QAC9D,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,IAAY;QACrC,IAAI,CAAC;YACH,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACvC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { BookConfig } from "../models/book.js";
|
|
2
|
+
import type { GenreProfile } from "../models/genre-profile.js";
|
|
3
|
+
export declare function buildEnglishCoreRules(_book: BookConfig): string;
|
|
4
|
+
export declare function buildEnglishAntiAIRules(): string;
|
|
5
|
+
export declare function buildEnglishCharacterMethod(): string;
|
|
6
|
+
export declare function buildEnglishPreWriteChecklist(book: BookConfig, gp: GenreProfile): string;
|
|
7
|
+
export declare function buildEnglishGenreIntro(book: BookConfig, gp: GenreProfile): string;
|
|
8
|
+
//# sourceMappingURL=en-prompt-sections.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"en-prompt-sections.d.ts","sourceRoot":"","sources":["../../src/agents/en-prompt-sections.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAI/D,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CA6B/D;AAGD,wBAAgB,uBAAuB,IAAI,MAAM,CAuChD;AAGD,wBAAgB,2BAA2B,IAAI,MAAM,CAWpD;AAGD,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,YAAY,GAAG,MAAM,CAyBxF;AAGD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,YAAY,GAAG,MAAM,CAMjF"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
// English equivalent of buildCoreRules() — universal writing rules for English fiction
|
|
2
|
+
export function buildEnglishCoreRules(_book) {
|
|
3
|
+
return `## Universal Writing Rules
|
|
4
|
+
|
|
5
|
+
### Character Rules
|
|
6
|
+
1. **Consistency**: Behavior driven by "past experience + current interests + core personality." Never break character without cause.
|
|
7
|
+
2. **Dimensionality**: Core trait + contrasting detail = real person. Perfect characters are failed characters.
|
|
8
|
+
3. **No puppets**: Side characters must have independent motivation and agency. MC's strength comes from outmaneuvering smart people, not steamrolling idiots.
|
|
9
|
+
4. **Voice distinction**: Different characters must speak differently—vocabulary, sentence length, slang, verbal tics.
|
|
10
|
+
5. **Relationship logic**: Any relationship change must be set up by events and motivated by interests.
|
|
11
|
+
|
|
12
|
+
### Narrative Technique
|
|
13
|
+
6. **Show, don't tell**: Convey through action and sensory detail, not exposition. Values expressed through behavior, not declared.
|
|
14
|
+
7. **Sensory grounding**: Each scene includes 1-2 sensory details beyond the visual.
|
|
15
|
+
8. **Chapter hooks**: Every chapter ending needs a hook—question, reveal, threat, promise.
|
|
16
|
+
9. **Information layering**: Worldbuilding emerges through action. Key lore revealed at plot-critical moments. Never dump exposition.
|
|
17
|
+
10. **Description serves narrative**: Environment descriptions set mood or foreshadow. One line is enough.
|
|
18
|
+
11. **Downtime earns its place**: Quiet scenes must plant hooks, advance relationships, or build contrast. Pure filler is padding.
|
|
19
|
+
|
|
20
|
+
### Logic / Consistency
|
|
21
|
+
12. **World rules are law**: Once established, physics/magic/social rules cannot bend for plot convenience.
|
|
22
|
+
13. **Cost matters**: Every power, ability, or advantage must have a cost or limitation that creates real trade-offs.
|
|
23
|
+
14. **Consequences stick**: Actions have consequences. Characters can't escape repercussions through luck or author fiat.
|
|
24
|
+
15. **No reset buttons**: The world must change permanently in response to major events.
|
|
25
|
+
|
|
26
|
+
### Reader Psychology
|
|
27
|
+
16. **Promise and payoff**: Every planted hook must be resolved. Every mystery must have an answer.
|
|
28
|
+
17. **Escalation**: Each conflict should feel higher-stakes than the last—either externally or emotionally.
|
|
29
|
+
18. **Reader proxy**: One character should react with surprise/excitement/fear when remarkable things happen, giving readers permission to feel the same.
|
|
30
|
+
19. **Pacing breathing room**: After a high-intensity sequence, give 0.5-1 chapter of lower intensity before the next escalation.`;
|
|
31
|
+
}
|
|
32
|
+
// English equivalent of buildAntiAIExamples()
|
|
33
|
+
export function buildEnglishAntiAIRules() {
|
|
34
|
+
return `## Anti-AI Iron Laws
|
|
35
|
+
|
|
36
|
+
**[IRON LAW 1]** The narrator never tells the reader what to conclude.
|
|
37
|
+
If the reader can infer intent from action, the narrator must not state it.
|
|
38
|
+
- ✗ "He realized this was the most important battle of his life."
|
|
39
|
+
- ✓ Just write the battle—let the stakes speak.
|
|
40
|
+
|
|
41
|
+
**[IRON LAW 2]** No analytical/report language in prose.
|
|
42
|
+
Banned in narrative text: "core motivation," "information asymmetry," "strategic advantage," "calculated risk," "optimal outcome," "key takeaway," "it's worth noting."
|
|
43
|
+
- ✗ "His core motivation was survival."
|
|
44
|
+
- ✓ "He needed to get out. That was it. Everything else was noise."
|
|
45
|
+
|
|
46
|
+
**[IRON LAW 3]** AI-tell words are rate-limited (max 1 per 3,000 words):
|
|
47
|
+
delve, tapestry, testament, intricate, pivotal, vibrant, embark, comprehensive, nuanced, landscape (metaphorical), realm (metaphorical), foster, underscore.
|
|
48
|
+
|
|
49
|
+
**[IRON LAW 4]** No repetitive image cycling.
|
|
50
|
+
If the same metaphor appears twice, the third occurrence MUST switch to a new image.
|
|
51
|
+
|
|
52
|
+
**[IRON LAW 5]** Planning terms never appear in chapter text.
|
|
53
|
+
"Current situation," "core motivation," "information boundary" are PRE_WRITE_CHECK tools only.
|
|
54
|
+
|
|
55
|
+
**[IRON LAW 6]** Ban the "Not X; Y" construction. Max once per chapter.
|
|
56
|
+
- ✗ "It wasn't fear. It was something deeper."
|
|
57
|
+
- ✓ State the thing directly.
|
|
58
|
+
|
|
59
|
+
**[IRON LAW 7]** Ban lists of three in descriptive prose. Max once per 2,000 words.
|
|
60
|
+
- ✗ "ancient, terrible, and vast"
|
|
61
|
+
- ✓ Use pairs or single precise words.
|
|
62
|
+
|
|
63
|
+
### Anti-AI Example Table
|
|
64
|
+
|
|
65
|
+
| AI Pattern | Human Version | Why |
|
|
66
|
+
|---|---|---|
|
|
67
|
+
| He felt a surge of anger. | He slammed the table. The water glass toppled. | Action externalizes emotion |
|
|
68
|
+
| She was overwhelmed with sadness. | She held the phone with both hands, knuckles white. | Physical detail replaces label |
|
|
69
|
+
| However, things were not as simple. | Yeah, right. Nothing's ever that easy. | Character voice replaces narrator hedge |
|
|
70
|
+
| He saw a shadow move across the wall. | A shadow slid across the wall. | Remove filter word "saw" |
|
|
71
|
+
| "I won't do it," she exclaimed defiantly. | "I won't do it." She crossed her arms. | Action beat > adverb + fancy tag |`;
|
|
72
|
+
}
|
|
73
|
+
// English equivalent of buildCharacterPsychologyMethod()
|
|
74
|
+
export function buildEnglishCharacterMethod() {
|
|
75
|
+
return `## Character Psychology Method (Internal Planning Tool)
|
|
76
|
+
|
|
77
|
+
Before writing any character's action or dialogue, run this mental checklist (NOT in prose):
|
|
78
|
+
1. **Situation**: What does this character know RIGHT NOW? (Information boundary)
|
|
79
|
+
2. **Want**: What do they want in this scene? (Immediate goal)
|
|
80
|
+
3. **Personality filter**: How does their personality shape their approach?
|
|
81
|
+
4. **Action**: What do they DO? (Behavior, not internal monologue)
|
|
82
|
+
5. **Reaction**: How do others respond to their action?
|
|
83
|
+
|
|
84
|
+
This method is for YOUR planning. The terms never appear in the chapter text.`;
|
|
85
|
+
}
|
|
86
|
+
// English pre-write checklist
|
|
87
|
+
export function buildEnglishPreWriteChecklist(book, gp) {
|
|
88
|
+
const items = [
|
|
89
|
+
"Outline anchor: Which volume_outline plot point does this chapter advance?",
|
|
90
|
+
"POV: Whose perspective? Consistent throughout?",
|
|
91
|
+
"Hook planted: What question/promise/threat carries reader to next chapter?",
|
|
92
|
+
"Sensory grounding: At least 2 non-visual senses per major scene",
|
|
93
|
+
"Character consistency: Does every character act from their established motivation?",
|
|
94
|
+
"Information boundary: No character references info they haven't witnessed",
|
|
95
|
+
`Pacing: Chapter targets ${book.chapterWordCount} words. ${gp.pacingRule}`,
|
|
96
|
+
"Show don't tell: Are emotions shown through action, not labeled?",
|
|
97
|
+
"AI-tell check: No banned analytical language in prose?",
|
|
98
|
+
"Conflict: What is the core tension driving this chapter?",
|
|
99
|
+
];
|
|
100
|
+
if (gp.powerScaling) {
|
|
101
|
+
items.push("Power scaling: Does any power usage follow established rules?");
|
|
102
|
+
}
|
|
103
|
+
if (gp.numericalSystem) {
|
|
104
|
+
items.push("Numerical check: Are all stats/resources consistent with ledger?");
|
|
105
|
+
}
|
|
106
|
+
return `## Pre-Write Checklist
|
|
107
|
+
|
|
108
|
+
Before writing, output a PRE_WRITE_CHECK addressing:
|
|
109
|
+
${items.map((item, i) => `${i + 1}. ${item}`).join("\n")}`;
|
|
110
|
+
}
|
|
111
|
+
// English genre intro
|
|
112
|
+
export function buildEnglishGenreIntro(book, gp) {
|
|
113
|
+
return `You are a professional ${gp.name} web fiction author writing for English-speaking platforms (Royal Road, Kindle Unlimited, Scribble Hub).
|
|
114
|
+
|
|
115
|
+
Target: ${book.chapterWordCount} words per chapter, ${book.targetChapters} total chapters.
|
|
116
|
+
|
|
117
|
+
Write in English. Vary sentence length. Mix short punchy sentences with longer flowing ones. Maintain consistent narrative voice throughout.`;
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=en-prompt-sections.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"en-prompt-sections.js","sourceRoot":"","sources":["../../src/agents/en-prompt-sections.ts"],"names":[],"mappings":"AAIA,uFAAuF;AACvF,MAAM,UAAU,qBAAqB,CAAC,KAAiB;IACrD,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;kIA2ByH,CAAC;AACnI,CAAC;AAED,8CAA8C;AAC9C,MAAM,UAAU,uBAAuB;IACrC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0HAqCiH,CAAC;AAC3H,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,2BAA2B;IACzC,OAAO;;;;;;;;;8EASqE,CAAC;AAC/E,CAAC;AAED,8BAA8B;AAC9B,MAAM,UAAU,6BAA6B,CAAC,IAAgB,EAAE,EAAgB;IAC9E,MAAM,KAAK,GAAG;QACZ,4EAA4E;QAC5E,gDAAgD;QAChD,4EAA4E;QAC5E,iEAAiE;QACjE,oFAAoF;QACpF,2EAA2E;QAC3E,2BAA2B,IAAI,CAAC,gBAAgB,WAAW,EAAE,CAAC,UAAU,EAAE;QAC1E,kEAAkE;QAClE,wDAAwD;QACxD,0DAA0D;KAC3D,CAAC;IAEF,IAAI,EAAE,CAAC,YAAY,EAAE,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;IAC9E,CAAC;IACD,IAAI,EAAE,CAAC,eAAe,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;IACjF,CAAC;IAED,OAAO;;;EAGP,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAC3D,CAAC;AAED,sBAAsB;AACtB,MAAM,UAAU,sBAAsB,CAAC,IAAgB,EAAE,EAAgB;IACvE,OAAO,0BAA0B,EAAE,CAAC,IAAI;;UAEhC,IAAI,CAAC,gBAAgB,uBAAuB,IAAI,CAAC,cAAc;;6IAEoE,CAAC;AAC9I,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { BaseAgent } from "./base.js";
|
|
2
|
+
import type { FanficMode } from "../models/book.js";
|
|
3
|
+
export interface FanficCanonOutput {
|
|
4
|
+
readonly worldRules: string;
|
|
5
|
+
readonly characterProfiles: string;
|
|
6
|
+
readonly keyEvents: string;
|
|
7
|
+
readonly powerSystem: string;
|
|
8
|
+
readonly fullDocument: string;
|
|
9
|
+
}
|
|
10
|
+
export declare class FanficCanonImporter extends BaseAgent {
|
|
11
|
+
get name(): string;
|
|
12
|
+
importFromText(sourceText: string, sourceName: string, fanficMode: FanficMode): Promise<FanficCanonOutput>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=fanfic-canon-importer.d.ts.map
|