@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.
- package/dist/agents/architect.d.ts +6 -1
- package/dist/agents/architect.d.ts.map +1 -1
- package/dist/agents/architect.js +362 -83
- package/dist/agents/architect.js.map +1 -1
- package/dist/agents/chapter-analyzer.d.ts +6 -0
- package/dist/agents/chapter-analyzer.d.ts.map +1 -1
- package/dist/agents/chapter-analyzer.js +220 -17
- package/dist/agents/chapter-analyzer.js.map +1 -1
- package/dist/agents/composer.d.ts +28 -0
- package/dist/agents/composer.d.ts.map +1 -0
- package/dist/agents/composer.js +154 -0
- package/dist/agents/composer.js.map +1 -0
- package/dist/agents/consolidator.d.ts.map +1 -1
- package/dist/agents/consolidator.js +17 -8
- package/dist/agents/consolidator.js.map +1 -1
- package/dist/agents/continuity.d.ts +10 -0
- package/dist/agents/continuity.d.ts.map +1 -1
- package/dist/agents/continuity.js +312 -133
- package/dist/agents/continuity.js.map +1 -1
- package/dist/agents/en-prompt-sections.d.ts.map +1 -1
- package/dist/agents/en-prompt-sections.js +1 -0
- package/dist/agents/en-prompt-sections.js.map +1 -1
- package/dist/agents/length-normalizer.d.ts +32 -0
- package/dist/agents/length-normalizer.d.ts.map +1 -0
- package/dist/agents/length-normalizer.js +156 -0
- package/dist/agents/length-normalizer.js.map +1 -0
- package/dist/agents/planner.d.ts +42 -0
- package/dist/agents/planner.d.ts.map +1 -0
- package/dist/agents/planner.js +382 -0
- package/dist/agents/planner.js.map +1 -0
- package/dist/agents/post-write-validator.d.ts +6 -1
- package/dist/agents/post-write-validator.d.ts.map +1 -1
- package/dist/agents/post-write-validator.js +88 -2
- package/dist/agents/post-write-validator.js.map +1 -1
- package/dist/agents/reviser.d.ts +10 -1
- package/dist/agents/reviser.d.ts.map +1 -1
- package/dist/agents/reviser.js +151 -36
- package/dist/agents/reviser.js.map +1 -1
- package/dist/agents/rules-reader.d.ts +1 -0
- package/dist/agents/rules-reader.d.ts.map +1 -1
- package/dist/agents/rules-reader.js +13 -0
- package/dist/agents/rules-reader.js.map +1 -1
- package/dist/agents/settler-delta-parser.d.ts +7 -0
- package/dist/agents/settler-delta-parser.d.ts.map +1 -0
- package/dist/agents/settler-delta-parser.js +35 -0
- package/dist/agents/settler-delta-parser.js.map +1 -0
- package/dist/agents/settler-prompts.d.ts +2 -0
- package/dist/agents/settler-prompts.d.ts.map +1 -1
- package/dist/agents/settler-prompts.js +77 -63
- package/dist/agents/settler-prompts.js.map +1 -1
- package/dist/agents/writer-parser.d.ts +3 -2
- package/dist/agents/writer-parser.d.ts.map +1 -1
- package/dist/agents/writer-parser.js +44 -13
- package/dist/agents/writer-parser.js.map +1 -1
- package/dist/agents/writer-prompts.d.ts +2 -1
- package/dist/agents/writer-prompts.d.ts.map +1 -1
- package/dist/agents/writer-prompts.js +65 -21
- package/dist/agents/writer-prompts.js.map +1 -1
- package/dist/agents/writer.d.ts +28 -1
- package/dist/agents/writer.d.ts.map +1 -1
- package/dist/agents/writer.js +426 -67
- package/dist/agents/writer.js.map +1 -1
- package/dist/index.d.ts +18 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -2
- package/dist/index.js.map +1 -1
- package/dist/llm/provider.d.ts +1 -0
- package/dist/llm/provider.d.ts.map +1 -1
- package/dist/llm/provider.js +19 -6
- package/dist/llm/provider.js.map +1 -1
- package/dist/models/chapter.d.ts +71 -0
- package/dist/models/chapter.d.ts.map +1 -1
- package/dist/models/chapter.js +3 -0
- package/dist/models/chapter.js.map +1 -1
- package/dist/models/input-governance.d.ts +351 -0
- package/dist/models/input-governance.d.ts.map +1 -0
- package/dist/models/input-governance.js +78 -0
- package/dist/models/input-governance.js.map +1 -0
- package/dist/models/length-governance.d.ts +93 -0
- package/dist/models/length-governance.d.ts.map +1 -0
- package/dist/models/length-governance.js +34 -0
- package/dist/models/length-governance.js.map +1 -0
- package/dist/models/project.d.ts +5 -0
- package/dist/models/project.d.ts.map +1 -1
- package/dist/models/project.js +2 -0
- package/dist/models/project.js.map +1 -1
- package/dist/models/runtime-state.d.ts +521 -0
- package/dist/models/runtime-state.d.ts.map +1 -0
- package/dist/models/runtime-state.js +78 -0
- package/dist/models/runtime-state.js.map +1 -0
- package/dist/pipeline/agent.d.ts +2 -1
- package/dist/pipeline/agent.d.ts.map +1 -1
- package/dist/pipeline/agent.js +90 -5
- package/dist/pipeline/agent.js.map +1 -1
- package/dist/pipeline/runner.d.ts +65 -1
- package/dist/pipeline/runner.d.ts.map +1 -1
- package/dist/pipeline/runner.js +1029 -73
- package/dist/pipeline/runner.js.map +1 -1
- package/dist/state/manager.d.ts +14 -0
- package/dist/state/manager.d.ts.map +1 -1
- package/dist/state/manager.js +114 -0
- package/dist/state/manager.js.map +1 -1
- package/dist/state/memory-db.d.ts +15 -0
- package/dist/state/memory-db.d.ts.map +1 -1
- package/dist/state/memory-db.js +119 -10
- package/dist/state/memory-db.js.map +1 -1
- package/dist/state/runtime-state-store.d.ts +23 -0
- package/dist/state/runtime-state-store.d.ts.map +1 -0
- package/dist/state/runtime-state-store.js +100 -0
- package/dist/state/runtime-state-store.js.map +1 -0
- package/dist/state/state-bootstrap.d.ts +19 -0
- package/dist/state/state-bootstrap.d.ts.map +1 -0
- package/dist/state/state-bootstrap.js +394 -0
- package/dist/state/state-bootstrap.js.map +1 -0
- package/dist/state/state-projections.d.ts +5 -0
- package/dist/state/state-projections.d.ts.map +1 -0
- package/dist/state/state-projections.js +164 -0
- package/dist/state/state-projections.js.map +1 -0
- package/dist/state/state-reducer.d.ts +12 -0
- package/dist/state/state-reducer.d.ts.map +1 -0
- package/dist/state/state-reducer.js +146 -0
- package/dist/state/state-reducer.js.map +1 -0
- package/dist/state/state-validator.d.ts +12 -0
- package/dist/state/state-validator.d.ts.map +1 -0
- package/dist/state/state-validator.js +56 -0
- package/dist/state/state-validator.js.map +1 -0
- package/dist/utils/chapter-splitter.d.ts +2 -0
- package/dist/utils/chapter-splitter.d.ts.map +1 -1
- package/dist/utils/chapter-splitter.js +22 -4
- package/dist/utils/chapter-splitter.js.map +1 -1
- package/dist/utils/config-loader.d.ts +3 -1
- package/dist/utils/config-loader.d.ts.map +1 -1
- package/dist/utils/config-loader.js +14 -3
- package/dist/utils/config-loader.js.map +1 -1
- package/dist/utils/context-filter.js +1 -1
- package/dist/utils/context-filter.js.map +1 -1
- package/dist/utils/governed-context.d.ts +7 -0
- package/dist/utils/governed-context.d.ts.map +1 -0
- package/dist/utils/governed-context.js +22 -0
- package/dist/utils/governed-context.js.map +1 -0
- package/dist/utils/governed-working-set.d.ts +18 -0
- package/dist/utils/governed-working-set.d.ts.map +1 -0
- package/dist/utils/governed-working-set.js +295 -0
- package/dist/utils/governed-working-set.js.map +1 -0
- package/dist/utils/hook-governance.d.ts +26 -0
- package/dist/utils/hook-governance.d.ts.map +1 -0
- package/dist/utils/hook-governance.js +128 -0
- package/dist/utils/hook-governance.js.map +1 -0
- package/dist/utils/hook-health.d.ts +14 -0
- package/dist/utils/hook-health.d.ts.map +1 -0
- package/dist/utils/hook-health.js +68 -0
- package/dist/utils/hook-health.js.map +1 -0
- package/dist/utils/length-metrics.d.ts +10 -0
- package/dist/utils/length-metrics.d.ts.map +1 -0
- package/dist/utils/length-metrics.js +85 -0
- package/dist/utils/length-metrics.js.map +1 -0
- package/dist/utils/long-span-fatigue.d.ts +28 -0
- package/dist/utils/long-span-fatigue.d.ts.map +1 -0
- package/dist/utils/long-span-fatigue.js +359 -0
- package/dist/utils/long-span-fatigue.js.map +1 -0
- package/dist/utils/memory-retrieval.d.ts +39 -0
- package/dist/utils/memory-retrieval.d.ts.map +1 -0
- package/dist/utils/memory-retrieval.js +574 -0
- package/dist/utils/memory-retrieval.js.map +1 -0
- package/dist/utils/spot-fix-patches.d.ts +14 -0
- package/dist/utils/spot-fix-patches.d.ts.map +1 -0
- package/dist/utils/spot-fix-patches.js +75 -0
- package/dist/utils/spot-fix-patches.js.map +1 -0
- 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;
|
|
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"}
|
package/dist/agents/architect.js
CHANGED
|
@@ -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
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
##
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
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
|
-
|
|
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
|
-
|
|
81
|
-
|
|
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
|
-
|
|
111
|
-
|
|
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
|
-
|
|
123
|
-
|
|
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
|
|
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"),
|
|
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"),
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
309
|
+
## 04_Geography_and_Environment
|
|
310
|
+
Locations, environments, and scene traits drawn from the source text
|
|
211
311
|
|
|
212
|
-
|
|
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
|
-
|
|
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
|
-
|
|
236
|
-
|
|
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
|
-
|
|
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
|
-
|
|
278
|
-
|
|
279
|
-
|
|
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:
|
|
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
|
-
|
|
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":"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"}
|
|
@@ -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
|