@zb2947244682/supernovel 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +122 -0
  3. package/dist/adapters/aiAdapter.d.ts +21 -0
  4. package/dist/adapters/aiAdapter.d.ts.map +1 -0
  5. package/dist/adapters/aiAdapter.js +196 -0
  6. package/dist/adapters/aiAdapter.js.map +1 -0
  7. package/dist/adapters/index.d.ts +11 -0
  8. package/dist/adapters/index.d.ts.map +1 -0
  9. package/dist/adapters/index.js +20 -0
  10. package/dist/adapters/index.js.map +1 -0
  11. package/dist/adapters/logger.d.ts +9 -0
  12. package/dist/adapters/logger.d.ts.map +1 -0
  13. package/dist/adapters/logger.js +22 -0
  14. package/dist/adapters/logger.js.map +1 -0
  15. package/dist/adapters/storageAdapter.d.ts +20 -0
  16. package/dist/adapters/storageAdapter.d.ts.map +1 -0
  17. package/dist/adapters/storageAdapter.js +190 -0
  18. package/dist/adapters/storageAdapter.js.map +1 -0
  19. package/dist/adapters/validationAdapter.d.ts +16 -0
  20. package/dist/adapters/validationAdapter.d.ts.map +1 -0
  21. package/dist/adapters/validationAdapter.js +33 -0
  22. package/dist/adapters/validationAdapter.js.map +1 -0
  23. package/dist/bus/commands.d.ts +70 -0
  24. package/dist/bus/commands.d.ts.map +1 -0
  25. package/dist/bus/commands.js +34 -0
  26. package/dist/bus/commands.js.map +1 -0
  27. package/dist/bus/dispatcher.d.ts +4 -0
  28. package/dist/bus/dispatcher.d.ts.map +1 -0
  29. package/dist/bus/dispatcher.js +313 -0
  30. package/dist/bus/dispatcher.js.map +1 -0
  31. package/dist/bus/effectRunner.d.ts +11 -0
  32. package/dist/bus/effectRunner.d.ts.map +1 -0
  33. package/dist/bus/effectRunner.js +117 -0
  34. package/dist/bus/effectRunner.js.map +1 -0
  35. package/dist/bus/index.d.ts +4 -0
  36. package/dist/bus/index.d.ts.map +1 -0
  37. package/dist/bus/index.js +6 -0
  38. package/dist/bus/index.js.map +1 -0
  39. package/dist/config/paths.d.ts +13 -0
  40. package/dist/config/paths.d.ts.map +1 -0
  41. package/dist/config/paths.js +53 -0
  42. package/dist/config/paths.js.map +1 -0
  43. package/dist/core/effects.d.ts +109 -0
  44. package/dist/core/effects.d.ts.map +1 -0
  45. package/dist/core/effects.js +42 -0
  46. package/dist/core/effects.js.map +1 -0
  47. package/dist/core/errors.d.ts +28 -0
  48. package/dist/core/errors.d.ts.map +1 -0
  49. package/dist/core/errors.js +56 -0
  50. package/dist/core/errors.js.map +1 -0
  51. package/dist/core/index.d.ts +12 -0
  52. package/dist/core/index.d.ts.map +1 -0
  53. package/dist/core/index.js +18 -0
  54. package/dist/core/index.js.map +1 -0
  55. package/dist/core/jsonUtils.d.ts +13 -0
  56. package/dist/core/jsonUtils.d.ts.map +1 -0
  57. package/dist/core/jsonUtils.js +130 -0
  58. package/dist/core/jsonUtils.js.map +1 -0
  59. package/dist/core/logger.d.ts +16 -0
  60. package/dist/core/logger.d.ts.map +1 -0
  61. package/dist/core/logger.js +59 -0
  62. package/dist/core/logger.js.map +1 -0
  63. package/dist/core/ports.d.ts +57 -0
  64. package/dist/core/ports.d.ts.map +1 -0
  65. package/dist/core/ports.js +3 -0
  66. package/dist/core/ports.js.map +1 -0
  67. package/dist/core/rag/consistency.d.ts +51 -0
  68. package/dist/core/rag/consistency.d.ts.map +1 -0
  69. package/dist/core/rag/consistency.js +239 -0
  70. package/dist/core/rag/consistency.js.map +1 -0
  71. package/dist/core/rag/contextAssembler.d.ts +44 -0
  72. package/dist/core/rag/contextAssembler.d.ts.map +1 -0
  73. package/dist/core/rag/contextAssembler.js +278 -0
  74. package/dist/core/rag/contextAssembler.js.map +1 -0
  75. package/dist/core/rag/index.d.ts +12 -0
  76. package/dist/core/rag/index.d.ts.map +1 -0
  77. package/dist/core/rag/index.js +15 -0
  78. package/dist/core/rag/index.js.map +1 -0
  79. package/dist/core/rag/knowledgeGraph.d.ts +72 -0
  80. package/dist/core/rag/knowledgeGraph.d.ts.map +1 -0
  81. package/dist/core/rag/knowledgeGraph.js +227 -0
  82. package/dist/core/rag/knowledgeGraph.js.map +1 -0
  83. package/dist/core/rag/summaries.d.ts +57 -0
  84. package/dist/core/rag/summaries.d.ts.map +1 -0
  85. package/dist/core/rag/summaries.js +251 -0
  86. package/dist/core/rag/summaries.js.map +1 -0
  87. package/dist/core/rag/types.d.ts +201 -0
  88. package/dist/core/rag/types.d.ts.map +1 -0
  89. package/dist/core/rag/types.js +4 -0
  90. package/dist/core/rag/types.js.map +1 -0
  91. package/dist/core/rag/vectorStore.d.ts +68 -0
  92. package/dist/core/rag/vectorStore.d.ts.map +1 -0
  93. package/dist/core/rag/vectorStore.js +211 -0
  94. package/dist/core/rag/vectorStore.js.map +1 -0
  95. package/dist/core/types.d.ts +246 -0
  96. package/dist/core/types.d.ts.map +1 -0
  97. package/dist/core/types.js +3 -0
  98. package/dist/core/types.js.map +1 -0
  99. package/dist/core/usecases/generateChapter.d.ts +26 -0
  100. package/dist/core/usecases/generateChapter.d.ts.map +1 -0
  101. package/dist/core/usecases/generateChapter.js +132 -0
  102. package/dist/core/usecases/generateChapter.js.map +1 -0
  103. package/dist/core/usecases/generateChapterRAG.d.ts +40 -0
  104. package/dist/core/usecases/generateChapterRAG.d.ts.map +1 -0
  105. package/dist/core/usecases/generateChapterRAG.js +221 -0
  106. package/dist/core/usecases/generateChapterRAG.js.map +1 -0
  107. package/dist/core/usecases/generateOutline.d.ts +19 -0
  108. package/dist/core/usecases/generateOutline.d.ts.map +1 -0
  109. package/dist/core/usecases/generateOutline.js +129 -0
  110. package/dist/core/usecases/generateOutline.js.map +1 -0
  111. package/dist/core/usecases/generateWorld.d.ts +18 -0
  112. package/dist/core/usecases/generateWorld.d.ts.map +1 -0
  113. package/dist/core/usecases/generateWorld.js +189 -0
  114. package/dist/core/usecases/generateWorld.js.map +1 -0
  115. package/dist/core/usecases/parseRequirements.d.ts +20 -0
  116. package/dist/core/usecases/parseRequirements.d.ts.map +1 -0
  117. package/dist/core/usecases/parseRequirements.js +95 -0
  118. package/dist/core/usecases/parseRequirements.js.map +1 -0
  119. package/dist/core/usecases/validateNovel.d.ts +29 -0
  120. package/dist/core/usecases/validateNovel.d.ts.map +1 -0
  121. package/dist/core/usecases/validateNovel.js +156 -0
  122. package/dist/core/usecases/validateNovel.js.map +1 -0
  123. package/dist/shell/cli.d.ts +3 -0
  124. package/dist/shell/cli.d.ts.map +1 -0
  125. package/dist/shell/cli.js +158 -0
  126. package/dist/shell/cli.js.map +1 -0
  127. package/dist/shell/index.d.ts +3 -0
  128. package/dist/shell/index.d.ts.map +1 -0
  129. package/dist/shell/index.js +279 -0
  130. package/dist/shell/index.js.map +1 -0
  131. package/package.json +69 -0
@@ -0,0 +1,246 @@
1
+ export interface NovelRequirements {
2
+ rawInput: string;
3
+ title: string;
4
+ genre: string;
5
+ tone: string;
6
+ targetAudience: string;
7
+ totalWords: number;
8
+ wordsPerChapter: number;
9
+ totalVolumes?: number;
10
+ chaptersPerVolume?: number[];
11
+ themes: string[];
12
+ coreConcept: string;
13
+ writingGuidelines: string[];
14
+ forbiddenElements: string[];
15
+ requiredElements?: string[];
16
+ styleReference?: string;
17
+ subGenre?: string;
18
+ }
19
+ export interface Character {
20
+ id: string;
21
+ name: string;
22
+ identity: string;
23
+ aliases?: string[];
24
+ gender?: 'male' | 'female' | 'other';
25
+ age?: string;
26
+ appearance?: {
27
+ height?: string;
28
+ build?: string;
29
+ distinctiveFeatures?: string[];
30
+ commonAttire?: string;
31
+ };
32
+ personality: {
33
+ coreTraits: string[];
34
+ weaknesses?: string[];
35
+ catchphrases?: string[];
36
+ speechStyle?: string;
37
+ surfaceBehaviors?: string[];
38
+ };
39
+ background?: {
40
+ origin?: string;
41
+ keyExperiences?: string[];
42
+ };
43
+ motivation: string;
44
+ abilities?: {
45
+ acquired: string[];
46
+ notYetAcquired?: string[];
47
+ limitDescription?: string;
48
+ };
49
+ relationships?: Relationship[];
50
+ arc?: {
51
+ type: 'flat' | 'growth' | 'fall' | 'transformation';
52
+ stages: string[];
53
+ };
54
+ currentState: {
55
+ location: string;
56
+ health?: string;
57
+ items?: string[];
58
+ knownInfo?: string[];
59
+ unknownInfo?: string[];
60
+ emotion?: string;
61
+ currentEmotion?: string;
62
+ emotionSource?: string;
63
+ status?: string;
64
+ };
65
+ }
66
+ export interface Location {
67
+ id: string;
68
+ name: string;
69
+ type?: string;
70
+ region?: string;
71
+ description: string;
72
+ keyLandmarks?: string[];
73
+ distances?: Record<string, string>;
74
+ socialEnvironment?: string;
75
+ currentSeasonWeather?: string;
76
+ significance?: string;
77
+ }
78
+ export interface WorldRule {
79
+ id: string;
80
+ category: 'power-system' | 'social' | 'info-transmission' | 'physics' | 'magic' | 'custom';
81
+ content: string;
82
+ exceptions?: string;
83
+ }
84
+ export interface Relationship {
85
+ fromId: string;
86
+ toId: string;
87
+ type: string;
88
+ direction: 'unidirectional' | 'bidirectional' | 'hidden';
89
+ description?: string;
90
+ }
91
+ export interface TimelineEvent {
92
+ id: string;
93
+ date: string;
94
+ description: string;
95
+ characters: string[];
96
+ location: string;
97
+ impact: string;
98
+ }
99
+ export interface Foreshadowing {
100
+ id: string;
101
+ content: string;
102
+ setupChapter?: string;
103
+ plannedResolution?: string;
104
+ status: 'planted' | 'reminded' | 'resolved';
105
+ reminderCount?: number;
106
+ reminderPlan?: string;
107
+ }
108
+ export interface WorldFact {
109
+ id: string;
110
+ content: string;
111
+ effectiveTime: string;
112
+ expirationCondition?: string;
113
+ isActive: boolean;
114
+ impact?: string;
115
+ }
116
+ export interface WorldState {
117
+ background: string;
118
+ worldview?: string;
119
+ characters: Character[];
120
+ locations: Location[];
121
+ rules: WorldRule[];
122
+ relationships?: Relationship[];
123
+ timeline?: TimelineEvent[];
124
+ foreshadowings: Foreshadowing[];
125
+ facts?: WorldFact[];
126
+ plotThreads?: Array<{
127
+ id: string;
128
+ name: string;
129
+ description: string;
130
+ status: 'active' | 'paused' | 'completed';
131
+ }>;
132
+ }
133
+ export interface ChapterBlueprint {
134
+ id: string;
135
+ volume: number;
136
+ number: number;
137
+ title: string;
138
+ function: string;
139
+ scenes: SceneBlueprint[];
140
+ emotionalArc: string;
141
+ hooksToPlant: string[];
142
+ hooksToResolve: string[];
143
+ worldStateChanges?: string[];
144
+ expectedWordCount?: number;
145
+ }
146
+ export interface SceneBlueprint {
147
+ id?: string;
148
+ location: string;
149
+ characters: string[];
150
+ event: string;
151
+ infoRevealed: string[];
152
+ }
153
+ export interface VolumeOutline {
154
+ id?: string;
155
+ number: number;
156
+ title: string;
157
+ function?: string;
158
+ coreTask?: string;
159
+ endingState?: string;
160
+ mainConflict?: string;
161
+ twist?: string;
162
+ arcSummaries?: string[];
163
+ chapters: ChapterBlueprint[];
164
+ }
165
+ export interface NovelOutline {
166
+ title: string;
167
+ theme?: string;
168
+ subtitle?: string;
169
+ coreQuestion?: string;
170
+ emotionalArc?: string;
171
+ climax?: string;
172
+ ending?: string;
173
+ volumes: VolumeOutline[];
174
+ }
175
+ export interface GeneratedChapter {
176
+ id: string;
177
+ volume: number;
178
+ number: number;
179
+ title: string;
180
+ content: string;
181
+ summary: string;
182
+ wordCount: number;
183
+ extractedFacts?: ExtractedFact[];
184
+ characterStateChanges?: CharacterStateChange[];
185
+ newRelationships?: Relationship[];
186
+ validationResults?: ValidationResult[];
187
+ }
188
+ export interface ExtractedFact {
189
+ type: 'event' | 'state' | 'info' | 'item' | 'relationship';
190
+ content: string;
191
+ characters?: string[];
192
+ }
193
+ export interface CharacterStateChange {
194
+ characterId: string;
195
+ field: string;
196
+ oldValue: any;
197
+ newValue: any;
198
+ }
199
+ export interface ValidationResult {
200
+ checkType: ValidationCheckType;
201
+ passed: boolean;
202
+ issues: string[];
203
+ severity: 'error' | 'warning' | 'info';
204
+ }
205
+ export type ValidationCheckType = 'world-rules' | 'character-consistency' | 'timeline-continuity' | 'info-logic' | 'foreshadowing-closure' | 'plot-coherence' | 'style-consistency' | 'word-count';
206
+ export interface NovelProject {
207
+ id?: string;
208
+ requirements: NovelRequirements;
209
+ worldState: WorldState;
210
+ outline: NovelOutline;
211
+ chapters: GeneratedChapter[];
212
+ currentVolume?: number;
213
+ currentChapter?: number;
214
+ status?: 'framework-generated' | 'generating' | 'completed' | 'error';
215
+ errors?: string[];
216
+ createdAt: string;
217
+ updatedAt: string;
218
+ }
219
+ export interface AIConfig {
220
+ provider: 'openai' | 'anthropic' | 'openrouter' | 'custom';
221
+ baseURL: string;
222
+ apiKey: string;
223
+ model: string;
224
+ maxTokens?: number;
225
+ temperature?: number;
226
+ timeoutMs?: number;
227
+ }
228
+ export interface AIResponse {
229
+ content: string;
230
+ usage?: {
231
+ prompt_tokens?: number;
232
+ completion_tokens?: number;
233
+ total_tokens?: number;
234
+ };
235
+ model?: string;
236
+ }
237
+ export interface NovelConfig {
238
+ ai: AIConfig;
239
+ outputDir: string;
240
+ validation: {
241
+ strictMode: boolean;
242
+ maxRetries: number;
243
+ autoFix: boolean;
244
+ };
245
+ }
246
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ // Core层类型定义 - 纯数据结构,无框架依赖
2
+ export {};
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA,0BAA0B"}
@@ -0,0 +1,26 @@
1
+ import type { NovelProject, GeneratedChapter, AIConfig, ChapterBlueprint } from '../types.js';
2
+ import type { WithEffects } from '../effects.js';
3
+ export interface GenerateChapterInput {
4
+ project: NovelProject;
5
+ volumeNumber: number;
6
+ chapterNumber: number;
7
+ config: AIConfig;
8
+ }
9
+ export interface GenerateChapterOutput {
10
+ chapter: GeneratedChapter;
11
+ }
12
+ /**
13
+ * 生成单个章节
14
+ */
15
+ export declare function generateChapter(input: GenerateChapterInput): WithEffects<GenerateChapterOutput>;
16
+ /**
17
+ * 解析AI响应为章节
18
+ */
19
+ export declare function parseChapterFromAIResponse(aiContent: string, blueprint: ChapterBlueprint): GeneratedChapter;
20
+ /**
21
+ * 提取章节摘要
22
+ */
23
+ export declare function extractChapterSummary(chapter: GeneratedChapter, config: AIConfig): WithEffects<{
24
+ summary: string;
25
+ }>;
26
+ //# sourceMappingURL=generateChapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateChapter.d.ts","sourceRoot":"","sources":["../../../src/core/usecases/generateChapter.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC9F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAKjD,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,YAAY,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,QAAQ,CAAC;CAClB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,gBAAgB,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,WAAW,CAAC,qBAAqB,CAAC,CA0D/F;AAkED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,gBAAgB,GAC1B,gBAAgB,CAsBlB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,QAAQ,GACf,WAAW,CAAC;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CASlC"}
@@ -0,0 +1,132 @@
1
+ // UseCase: 生成章节
2
+ // 纯函数:输入项目状态和章节号,输出章节内容
3
+ import { Effects } from '../effects.js';
4
+ import { AppError } from '../errors.js';
5
+ /**
6
+ * 生成单个章节
7
+ */
8
+ export function generateChapter(input) {
9
+ const { project, volumeNumber, chapterNumber } = input;
10
+ // 查找章节蓝图
11
+ const volume = project.outline.volumes.find(v => v.number === volumeNumber);
12
+ if (!volume) {
13
+ throw new AppError('NOT_FOUND', `卷 ${volumeNumber} 不存在`);
14
+ }
15
+ const blueprint = volume.chapters.find(c => c.number === chapterNumber);
16
+ if (!blueprint) {
17
+ throw new AppError('NOT_FOUND', `第 ${chapterNumber} 章不存在`);
18
+ }
19
+ // 构建上下文
20
+ const prevChapter = project.chapters.find(c => c.volume === volumeNumber && c.number === chapterNumber - 1);
21
+ const contextPrompt = buildChapterContext(project, blueprint, prevChapter);
22
+ const systemPrompt = `你是一位专业的小说作家,擅长创作长篇小说。
23
+ 写作要求:
24
+ 1. 严格遵循大纲的功能要求
25
+ 2. 保持角色性格一致性
26
+ 3. 场景切换自然流畅
27
+ 4. 对话符合角色身份
28
+ 5. 描写细腻,有画面感
29
+ 6. 情绪走向符合大纲设计
30
+ 7. 埋设和回收指定的伏笔
31
+ 8. 字数控制在${project.requirements.wordsPerChapter}字左右
32
+
33
+ 重要:直接输出章节正文,不要添加章节标题(如"第X章"),系统会自动添加。`;
34
+ const userPrompt = `${contextPrompt}
35
+
36
+ 请开始写作第${volumeNumber}卷第${chapterNumber}章(约${project.requirements.wordsPerChapter}字),直接输出正文内容,不要添加标题:`;
37
+ const effect = Effects.aiChat([
38
+ { role: 'system', content: systemPrompt },
39
+ { role: 'user', content: userPrompt }
40
+ ], input.config);
41
+ return {
42
+ result: {},
43
+ effects: [
44
+ effect,
45
+ Effects.logProgress('generating', project.chapters.length + 1, project.outline.volumes.reduce((sum, v) => sum + v.chapters.length, 0), `正在生成第${volumeNumber}卷第${chapterNumber}章...`)
46
+ ]
47
+ };
48
+ }
49
+ /**
50
+ * 构建章节上下文
51
+ */
52
+ function buildChapterContext(project, blueprint, prevChapter) {
53
+ const relevantChars = project.worldState.characters.filter(c => blueprint.scenes.some(s => s.characters.includes(c.id)));
54
+ const relevantLocations = project.worldState.locations.filter(l => blueprint.scenes.some(s => s.location === l.id));
55
+ const relevantHooks = project.worldState.foreshadowings.filter(h => blueprint.hooksToPlant.includes(h.id) || blueprint.hooksToResolve.includes(h.id));
56
+ let context = `## 第${blueprint.volume}卷第${blueprint.number}章:${blueprint.title}
57
+
58
+ ### 大纲要求
59
+ 功能:${blueprint.function}
60
+ 情绪走向:${blueprint.emotionalArc}
61
+
62
+ ### 场景
63
+ ${blueprint.scenes.map(s => `
64
+ - 地点:${s.location}
65
+ - 角色:${s.characters.join(', ')}
66
+ - 事件:${s.event}
67
+ - 揭示:${s.infoRevealed.join(', ')}
68
+ `).join('\n')}
69
+
70
+ ### 角色档案
71
+ ${relevantChars.map(c => `
72
+ ${c.name}:
73
+ - 性格:${c.personality.coreTraits.join(', ')}
74
+ - 动机:${c.motivation}
75
+ - 当前状态:${c.currentState.emotion}
76
+ `).join('\n')}
77
+
78
+ ### 相关规则
79
+ ${project.worldState.rules
80
+ .filter(r => blueprint.scenes.some(s => s.location === r.id))
81
+ .map(r => `- ${r.content}`)
82
+ .join('\n')}
83
+
84
+ ### 伏笔处理
85
+ ${relevantHooks.map(h => `
86
+ ${blueprint.hooksToPlant.includes(h.id) ? '【埋设】' : '【回收】'} ${h.id}: ${h.content}
87
+ `).join('\n')}
88
+ `;
89
+ if (prevChapter) {
90
+ context += `
91
+ ### 前一章结尾(衔接)
92
+ ${prevChapter.content.slice(-500)}
93
+ `;
94
+ }
95
+ return context;
96
+ }
97
+ /**
98
+ * 解析AI响应为章节
99
+ */
100
+ export function parseChapterFromAIResponse(aiContent, blueprint) {
101
+ // 清理AI可能添加的标题
102
+ let content = aiContent.trim();
103
+ // 移除常见的标题格式
104
+ content = content.replace(/^#+\s*第[\d一二三四五六七八九十]+章[::]?.*\n*/m, '');
105
+ content = content.replace(/^第[\d一二三四五六七八九十]+章[::]?.*\n*/m, '');
106
+ content = content.replace(/^#+\s*.+\n*/m, '');
107
+ return {
108
+ id: blueprint.id,
109
+ volume: blueprint.volume,
110
+ number: blueprint.number,
111
+ title: blueprint.title,
112
+ content: content.trim(),
113
+ summary: '', // 后续通过AI提取或手动填写
114
+ wordCount: content.length,
115
+ extractedFacts: [],
116
+ characterStateChanges: [],
117
+ newRelationships: [],
118
+ validationResults: []
119
+ };
120
+ }
121
+ /**
122
+ * 提取章节摘要
123
+ */
124
+ export function extractChapterSummary(chapter, config) {
125
+ const systemPrompt = '请为以下小说章节提取一段简短的摘要(50字以内),概括本章主要情节。';
126
+ const userPrompt = `章节标题:${chapter.title}\n\n内容:\n${chapter.content.slice(0, 1000)}...\n\n请提取摘要:`;
127
+ return {
128
+ result: { summary: '' },
129
+ effects: [Effects.aiChat([{ role: 'system', content: systemPrompt }, { role: 'user', content: userPrompt }], config)]
130
+ };
131
+ }
132
+ //# sourceMappingURL=generateChapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateChapter.js","sourceRoot":"","sources":["../../../src/core/usecases/generateChapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import type { NovelProject, GeneratedChapter, AIConfig, ChapterBlueprint } from '../types.js';
2
+ import type { WithEffects } from '../effects.js';
3
+ export interface GenerateChapterRAGInput {
4
+ project: NovelProject;
5
+ volumeNumber: number;
6
+ chapterNumber: number;
7
+ config: AIConfig;
8
+ useRAG?: boolean;
9
+ }
10
+ export interface GenerateChapterRAGOutput {
11
+ chapter: GeneratedChapter;
12
+ consistencyViolations?: any[];
13
+ }
14
+ /**
15
+ * 使用RAG生成章节
16
+ */
17
+ export declare function generateChapterRAG(input: GenerateChapterRAGInput): WithEffects<GenerateChapterRAGOutput>;
18
+ /**
19
+ * 解析AI响应为章节
20
+ */
21
+ export declare function parseChapterFromAIResponse(aiContent: string, blueprint: ChapterBlueprint): GeneratedChapter;
22
+ /**
23
+ * 提取章节摘要(使用AI)
24
+ */
25
+ export declare function extractChapterSummary(chapter: GeneratedChapter, config: AIConfig): WithEffects<{
26
+ summary: string;
27
+ keyEvents: string[];
28
+ }>;
29
+ /**
30
+ * 检查章节一致性
31
+ */
32
+ export declare function checkChapterConsistency(chapter: GeneratedChapter, project: NovelProject): WithEffects<{
33
+ violations: any[];
34
+ passed: boolean;
35
+ }>;
36
+ /**
37
+ * 更新RAG索引
38
+ */
39
+ export declare function updateRAGIndex(chapter: GeneratedChapter, project: NovelProject, summary?: string, keyEvents?: string[]): void;
40
+ //# sourceMappingURL=generateChapterRAG.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateChapterRAG.d.ts","sourceRoot":"","sources":["../../../src/core/usecases/generateChapterRAG.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC9F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAWjD,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,YAAY,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,QAAQ,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,gBAAgB,CAAC;IAC1B,qBAAqB,CAAC,EAAE,GAAG,EAAE,CAAC;CAC/B;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,GAAG,WAAW,CAAC,wBAAwB,CAAC,CAmDxG;AA+GD;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,gBAAgB,GAC1B,gBAAgB,CAsBlB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,QAAQ,GACf,WAAW,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAyBvD;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,YAAY,GACpB,WAAW,CAAC;IAAE,UAAU,EAAE,GAAG,EAAE,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC,CAgBrD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,YAAY,EACrB,OAAO,CAAC,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,MAAM,EAAE,GACnB,IAAI,CAmBN"}