@waterwx/dsh-novel-forge 0.1.0 → 1.0.0-alpha

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 (180) hide show
  1. package/README.md +162 -111
  2. package/cordis.patch.yml +1 -1
  3. package/lib/client.js +54165 -2666
  4. package/lib/index.js +11895 -2211
  5. package/lib/types/ai-scan.d.ts +36 -0
  6. package/lib/types/assets.d.ts +19 -4
  7. package/lib/types/assistant.d.ts +6 -0
  8. package/lib/types/author-assets.d.ts +25 -0
  9. package/lib/types/bookshelf.d.ts +8 -1
  10. package/lib/types/client/api.d.ts +235 -3
  11. package/lib/types/client/index.d.ts +1 -1
  12. package/lib/types/client/llmLive.d.ts +33 -0
  13. package/lib/types/client/locales.d.ts +101 -28
  14. package/lib/types/client/panel/AdaptModeView.d.ts +5 -0
  15. package/lib/types/client/panel/AssetsTab.d.ts +6 -1
  16. package/lib/types/client/panel/AuthorAssetsView.d.ts +4 -0
  17. package/lib/types/client/panel/AuthorHome.d.ts +34 -0
  18. package/lib/types/client/panel/BookAnalysisView.d.ts +4 -0
  19. package/lib/types/client/panel/CreateBookView.d.ts +13 -0
  20. package/lib/types/client/panel/DirectorView.d.ts +7 -0
  21. package/lib/types/client/panel/FlowGuide.d.ts +22 -0
  22. package/lib/types/client/panel/GlobalAssetLibraryView.d.ts +4 -0
  23. package/lib/types/client/panel/IdeaInspirationView.d.ts +6 -0
  24. package/lib/types/client/panel/ImportModal.d.ts +7 -0
  25. package/lib/types/client/panel/KnowledgeBaseView.d.ts +4 -0
  26. package/lib/types/client/panel/LiveFeedLog.d.ts +5 -0
  27. package/lib/types/client/panel/MangaRoleLibrary.d.ts +20 -0
  28. package/lib/types/client/panel/MangaWorkspace.d.ts +12 -0
  29. package/lib/types/client/panel/MarketRadarView.d.ts +5 -0
  30. package/lib/types/client/panel/ModelManager.d.ts +14 -0
  31. package/lib/types/client/panel/ModelPicker.d.ts +11 -0
  32. package/lib/types/client/panel/NovelPanel.d.ts +1 -1
  33. package/lib/types/client/panel/ProgressConsole.d.ts +17 -0
  34. package/lib/types/client/panel/ProgressHomeView.d.ts +5 -0
  35. package/lib/types/client/panel/PropLibrary.d.ts +8 -0
  36. package/lib/types/client/panel/ReaderView.d.ts +8 -0
  37. package/lib/types/client/panel/ReasoningSection.d.ts +10 -0
  38. package/lib/types/client/panel/RunPanel.d.ts +5 -0
  39. package/lib/types/client/panel/SceneLibrary.d.ts +16 -0
  40. package/lib/types/client/panel/SettingsView.d.ts +16 -0
  41. package/lib/types/client/panel/ShelfView.d.ts +15 -0
  42. package/lib/types/client/panel/StoryboardTab.d.ts +19 -0
  43. package/lib/types/client/panel/StyleCard.d.ts +8 -0
  44. package/lib/types/client/panel/StyleGallery.d.ts +1 -0
  45. package/lib/types/client/panel/WorldTab.d.ts +10 -0
  46. package/lib/types/client/panel/helpers.d.ts +10 -0
  47. package/lib/types/client/panel/views.d.ts +77 -0
  48. package/lib/types/client/run-status.d.ts +19 -0
  49. package/lib/types/client/text.d.ts +9 -0
  50. package/lib/types/comic-presets.d.ts +12 -0
  51. package/lib/types/engine.d.ts +250 -8
  52. package/lib/types/global-assets.d.ts +6 -0
  53. package/lib/types/index.d.ts +24 -2
  54. package/lib/types/llm-live.d.ts +44 -0
  55. package/lib/types/manga-genre-rules.d.ts +22 -0
  56. package/lib/types/market-radar-scan.d.ts +19 -0
  57. package/lib/types/market-radar-sources.d.ts +31 -0
  58. package/lib/types/novel-context.d.ts +80 -0
  59. package/lib/types/prompt-utils.d.ts +35 -0
  60. package/lib/types/prompting.d.ts +35 -0
  61. package/lib/types/protocol.d.ts +1453 -5
  62. package/lib/types/review-policy.d.ts +97 -0
  63. package/lib/types/run.d.ts +32 -0
  64. package/lib/types/shot-language.d.ts +46 -0
  65. package/lib/types/src/ai-scan.d.ts +36 -0
  66. package/lib/types/src/assets.d.ts +37 -0
  67. package/lib/types/src/assistant.d.ts +45 -0
  68. package/lib/types/src/author-assets.d.ts +25 -0
  69. package/lib/types/src/bookshelf.d.ts +42 -0
  70. package/lib/types/src/client/api.d.ts +234 -0
  71. package/lib/types/src/client/docx.d.ts +15 -0
  72. package/lib/types/src/client/index.d.ts +14 -0
  73. package/lib/types/src/client/locales.d.ts +212 -0
  74. package/lib/types/src/client/mount.d.ts +9 -0
  75. package/lib/types/src/client/panel/AdaptModeView.d.ts +5 -0
  76. package/lib/types/src/client/panel/AssetsTab.d.ts +12 -0
  77. package/lib/types/src/client/panel/AssistantTab.d.ts +7 -0
  78. package/lib/types/src/client/panel/AuthorAssetsView.d.ts +4 -0
  79. package/lib/types/src/client/panel/AuthorHome.d.ts +32 -0
  80. package/lib/types/src/client/panel/BookshelfBar.d.ts +11 -0
  81. package/lib/types/src/client/panel/CreateBookView.d.ts +9 -0
  82. package/lib/types/src/client/panel/FlowGuide.d.ts +22 -0
  83. package/lib/types/src/client/panel/GlobalAssetLibraryView.d.ts +4 -0
  84. package/lib/types/src/client/panel/ImportModal.d.ts +7 -0
  85. package/lib/types/src/client/panel/MangaRoleLibrary.d.ts +20 -0
  86. package/lib/types/src/client/panel/MangaWorkspace.d.ts +12 -0
  87. package/lib/types/src/client/panel/ModelManager.d.ts +14 -0
  88. package/lib/types/src/client/panel/NovelPanel.d.ts +13 -0
  89. package/lib/types/src/client/panel/ProgressConsole.d.ts +17 -0
  90. package/lib/types/src/client/panel/ProgressHomeView.d.ts +5 -0
  91. package/lib/types/src/client/panel/PropLibrary.d.ts +8 -0
  92. package/lib/types/src/client/panel/ReaderView.d.ts +8 -0
  93. package/lib/types/src/client/panel/ReasoningSection.d.ts +10 -0
  94. package/lib/types/src/client/panel/RunPanel.d.ts +5 -0
  95. package/lib/types/src/client/panel/SceneLibrary.d.ts +16 -0
  96. package/lib/types/src/client/panel/SettingsView.d.ts +16 -0
  97. package/lib/types/src/client/panel/ShelfView.d.ts +15 -0
  98. package/lib/types/src/client/panel/StoryboardTab.d.ts +19 -0
  99. package/lib/types/src/client/panel/StyleCard.d.ts +8 -0
  100. package/lib/types/src/client/panel/StyleGallery.d.ts +1 -0
  101. package/lib/types/src/client/panel/WorldTab.d.ts +10 -0
  102. package/lib/types/src/client/panel/controller.d.ts +19 -0
  103. package/lib/types/src/client/panel/helpers.d.ts +18 -0
  104. package/lib/types/src/client/panel/views.d.ts +77 -0
  105. package/lib/types/src/client/sidebar-entry.d.ts +13 -0
  106. package/lib/types/src/client/text.d.ts +9 -0
  107. package/lib/types/src/comic-presets.d.ts +12 -0
  108. package/lib/types/src/docx.d.ts +19 -0
  109. package/lib/types/src/engine.d.ts +402 -0
  110. package/lib/types/src/index.d.ts +79 -0
  111. package/lib/types/src/manga-genre-rules.d.ts +22 -0
  112. package/lib/types/src/novel-context.d.ts +80 -0
  113. package/lib/types/src/prompt-utils.d.ts +35 -0
  114. package/lib/types/src/protocol.d.ts +2176 -0
  115. package/lib/types/src/review-policy.d.ts +97 -0
  116. package/lib/types/src/routes.d.ts +29 -0
  117. package/lib/types/src/run.d.ts +32 -0
  118. package/lib/types/src/shot-language.d.ts +46 -0
  119. package/lib/types/src/story-beat-language.d.ts +35 -0
  120. package/lib/types/src/style-library.d.ts +33 -0
  121. package/lib/types/story-beat-language.d.ts +35 -0
  122. package/lib/types/style-library.d.ts +33 -0
  123. package/package.json +57 -42
  124. package/scripts/patch-schemastery.mjs +47 -0
  125. package/src/ai-scan.ts +179 -0
  126. package/src/assets.ts +1774 -518
  127. package/src/assistant.ts +915 -547
  128. package/src/author-assets.ts +147 -0
  129. package/src/bookshelf.ts +32 -2
  130. package/src/client/api.ts +666 -254
  131. package/src/client/index.ts +3 -1
  132. package/src/client/llmLive.ts +101 -0
  133. package/src/client/locales.ts +178 -31
  134. package/src/client/mount.tsx +1 -1
  135. package/src/client/panel/AdaptModeView.tsx +535 -0
  136. package/src/client/panel/AssetsTab.tsx +168 -51
  137. package/src/client/panel/AssistantTab.tsx +339 -188
  138. package/src/client/panel/AuthorAssetsView.tsx +208 -0
  139. package/src/client/panel/AuthorHome.tsx +234 -0
  140. package/src/client/panel/BookAnalysisView.tsx +60 -0
  141. package/src/client/panel/BookshelfBar.tsx +63 -9
  142. package/src/client/panel/CreateBookView.tsx +371 -0
  143. package/src/client/panel/DirectorView.tsx +200 -0
  144. package/src/client/panel/GlobalAssetLibraryView.tsx +172 -0
  145. package/src/client/panel/IdeaInspirationView.tsx +71 -0
  146. package/src/client/panel/ImportModal.tsx +303 -0
  147. package/src/client/panel/KnowledgeBaseView.tsx +73 -0
  148. package/src/client/panel/LiveFeedLog.tsx +67 -0
  149. package/src/client/panel/MarketRadarView.tsx +374 -0
  150. package/src/client/panel/ModelManager.tsx +205 -0
  151. package/src/client/panel/NovelPanel.tsx +4713 -990
  152. package/src/client/panel/ProgressConsole.tsx +63 -0
  153. package/src/client/panel/ProgressHomeView.tsx +87 -0
  154. package/src/client/panel/ReaderView.tsx +306 -0
  155. package/src/client/panel/ReasoningSection.tsx +31 -0
  156. package/src/client/panel/RunPanel.tsx +204 -0
  157. package/src/client/panel/SettingsView.tsx +265 -0
  158. package/src/client/panel/ShelfView.tsx +242 -0
  159. package/src/client/panel/WorldTab.tsx +202 -0
  160. package/src/client/panel/helpers.ts +50 -0
  161. package/src/client/panel/panel.module.css +4325 -526
  162. package/src/client/panel/views.tsx +346 -0
  163. package/src/client/run-status.ts +100 -0
  164. package/src/client/sidebar-entry.ts +1 -1
  165. package/src/client/text.ts +28 -0
  166. package/src/engine.ts +4230 -1019
  167. package/src/global-assets.ts +59 -0
  168. package/src/index.ts +123 -9
  169. package/src/llm-live.ts +68 -0
  170. package/src/market-radar-scan.ts +41 -0
  171. package/src/market-radar-sources.ts +173 -0
  172. package/src/novel-context.ts +287 -0
  173. package/src/prompt-utils.ts +73 -0
  174. package/src/prompting.ts +159 -0
  175. package/src/protocol.ts +1998 -539
  176. package/src/review-policy.ts +161 -0
  177. package/src/routes.ts +3277 -955
  178. package/src/run.ts +338 -0
  179. package/lib/client.js.map +0 -1
  180. package/lib/index.js.map +0 -1
@@ -4,7 +4,7 @@
4
4
  /** zh dictionary. */
5
5
  export declare const zh: {
6
6
  readonly 'entry.label': "小说工坊";
7
- readonly 'entry.tooltip': "AI 编译小说工作台:大纲 → 设定圣经 → 卷计划 → 章节计划 → 逐章生成+审稿";
7
+ readonly 'entry.tooltip': "AI 编译小说工作台:总纲 → 道藏 → 卷计划 → 章节计划 → 逐章生成+审稿";
8
8
  readonly 'panel.title': "小说工坊";
9
9
  readonly 'common.close': "关闭";
10
10
  readonly 'common.loading': "加载中…";
@@ -13,37 +13,37 @@ export declare const zh: {
13
13
  readonly 'common.success': "成功";
14
14
  readonly 'common.generating': "生成中…";
15
15
  readonly 'common.chars': "字";
16
- readonly 'tab.workflow': "工作流";
17
- readonly 'tab.overview': "大纲";
16
+ readonly 'tab.workflow': "工作台";
17
+ readonly 'tab.overview': "总纲";
18
18
  readonly 'tab.plan': "章节";
19
- readonly 'tab.bible': "设定库";
20
- readonly 'tab.foreshadow': "伏笔";
21
- readonly 'tab.assistant': "AI 助手";
19
+ readonly 'tab.bible': "道藏";
20
+ readonly 'tab.foreshadow': "暗线";
21
+ readonly 'tab.assistant': "AI 编辑 Agent";
22
22
  readonly 'tab.settings': "设置";
23
- readonly 'workflow.title': "创作工作流";
24
- readonly 'workflow.step1': "① 加载大纲";
25
- readonly 'workflow.step2': "② 提炼设定圣经";
23
+ readonly 'workflow.title': "创作工作台";
24
+ readonly 'workflow.step1': "① 加载总纲";
25
+ readonly 'workflow.step2': "② 提炼道藏";
26
26
  readonly 'workflow.step3': "③ 规划卷";
27
27
  readonly 'workflow.step4': "④ 生成章节计划";
28
28
  readonly 'workflow.step5': "⑤ 逐章写作 + AI 审稿";
29
29
  readonly 'workflow.step6': "⑥ 润色 / 导出";
30
- readonly 'workflow.loadOutline': "读取大纲";
31
- readonly 'workflow.genBible': "提炼设定圣经";
30
+ readonly 'workflow.loadOutline': "读取总纲";
31
+ readonly 'workflow.genBible': "提炼道藏";
32
32
  readonly 'workflow.genVolumes': "生成卷计划";
33
33
  readonly 'workflow.genPlan': "生成章节计划";
34
34
  readonly 'workflow.done': "已完成";
35
35
  readonly 'workflow.todo': "待办";
36
- readonly 'workflow.bibleDone': "设定圣经已生成({n} 条规则 / {c} 个角色 / {r} 条红线)";
36
+ readonly 'workflow.bibleDone': "道藏已生成({n} 条规则 / {c} 个人物 / {r} 条红线)";
37
37
  readonly 'workflow.volumesDone': "卷计划已生成({n} 卷)";
38
38
  readonly 'workflow.planDone': "章节计划已生成({n} 章)";
39
- readonly 'workflow.progress': "进度:大纲 ✓ · 设定 {bible} · 卷 {volumes} · 计划 {plan} · 已完成 {done}/{total} 章";
40
- readonly 'overview.loadDocx': "从 docx 读取大纲";
41
- readonly 'overview.loadDocxDefault': "读取默认大纲";
39
+ readonly 'workflow.progress': "进度:总纲 ✓ · 道藏 {bible} · 卷 {volumes} · 计划 {plan} · 已完成 {done}/{total} 章";
40
+ readonly 'overview.loadDocx': "从 docx 读取总纲";
41
+ readonly 'overview.loadDocxDefault': "读取默认总纲";
42
42
  readonly 'overview.loadingOutline': "正在解析 docx…";
43
- readonly 'overview.outlineHint': "大纲文本(可编辑)";
44
- readonly 'overview.outlineChars': "大纲字数";
45
- readonly 'overview.saveOutline': "保存大纲";
46
- readonly 'overview.saved': "大纲已保存";
43
+ readonly 'overview.outlineHint': "总纲文本(可编辑)";
44
+ readonly 'overview.outlineChars': "总纲字数";
45
+ readonly 'overview.saveOutline': "保存总纲";
46
+ readonly 'overview.saved': "总纲已保存";
47
47
  readonly 'overview.bookName': "书名";
48
48
  readonly 'overview.loadCustom': "指定 docx 路径";
49
49
  readonly 'overview.loadCustomHint': "绝对路径,留空使用默认";
@@ -78,17 +78,17 @@ export declare const zh: {
78
78
  readonly 'plan.summary': "章节摘要";
79
79
  readonly 'plan.volumes': "卷";
80
80
  readonly 'plan.noVolume': "未分卷";
81
- readonly 'bible.title': "设定圣经";
82
- readonly 'bible.gen': "AI 提炼设定圣经";
81
+ readonly 'bible.title': "道藏";
82
+ readonly 'bible.gen': "AI 提炼道藏";
83
83
  readonly 'bible.genre': "题材基调";
84
84
  readonly 'bible.worldRules': "世界规则";
85
- readonly 'bible.characters': "角色卡";
85
+ readonly 'bible.characters': "人物志";
86
86
  readonly 'bible.redLines': "写作红线";
87
87
  readonly 'bible.style': "风格要求";
88
- readonly 'bible.none': "尚未生成设定圣经。生成后写作会严格遵守人设与金手指规则,审稿也会按红线检查。";
89
- readonly 'foreshadow.title': "伏笔管理";
90
- readonly 'foreshadow.suggest': "AI 建议伏笔";
91
- readonly 'foreshadow.none': "暂无伏笔";
88
+ readonly 'bible.none': "尚未生成道藏。生成后写作会严格遵守人设与金手指规则,审稿也会按红线检查。";
89
+ readonly 'foreshadow.title': "暗线管理";
90
+ readonly 'foreshadow.suggest': "AI 建议暗线";
91
+ readonly 'foreshadow.none': "暂无暗线";
92
92
  readonly 'foreshadow.status': "状态";
93
93
  readonly 'foreshadow.planned': "计划中";
94
94
  readonly 'foreshadow.planted': "已埋设";
@@ -99,15 +99,88 @@ export declare const zh: {
99
99
  readonly 'foreshadow.plantedAt': "埋设于";
100
100
  readonly 'foreshadow.setPlanted': "标记已埋设";
101
101
  readonly 'foreshadow.setResolved': "标记已回收";
102
+ readonly 'tab.facts': "编年录";
103
+ readonly 'tab.plotlines': "剧情线";
104
+ readonly 'plotlines.hint': "主线/支线/人物线/悬念线的推进管理:章节生成时会注入未完结的线,要求每章至少推进一条;关联章节记录推进节点。";
105
+ readonly 'plotlines.empty': "还没有剧情线——长篇小说建议先建主线与几条支线。";
106
+ readonly 'plotlines.new': "+ 新建剧情线";
107
+ readonly 'plotlines.name': "线名";
108
+ readonly 'plotlines.kind': "类型";
109
+ readonly 'plotlines.kindMain': "主线";
110
+ readonly 'plotlines.kindBranch': "支线";
111
+ readonly 'plotlines.kindCharacter': "人物线";
112
+ readonly 'plotlines.kindMystery': "悬念线";
113
+ readonly 'plotlines.goal': "目标/终点";
114
+ readonly 'plotlines.progress': "当前进度";
115
+ readonly 'plotlines.status': "状态";
116
+ readonly 'plotlines.statusActive': "推进中";
117
+ readonly 'plotlines.statusPaused': "暂停";
118
+ readonly 'plotlines.statusResolved': "已完结";
119
+ readonly 'plotlines.statusAbandoned': "已废弃";
120
+ readonly 'plotlines.save': "保存";
121
+ readonly 'plotlines.cancel': "取消";
122
+ readonly 'plotlines.edit': "编辑";
123
+ readonly 'plotlines.remove': "删除";
124
+ readonly 'plotlines.linkChapter': "关联本章";
125
+ readonly 'plotlines.chapters': "已关联";
126
+ readonly 'plotlines.workflowTitle': "剧情线进度";
127
+ readonly 'plotlines.workflowEmpty': "未建剧情线(去「剧情线」页创建)";
128
+ readonly 'sensitive.title': "敏感词检查";
129
+ readonly 'sensitive.scanAll': "🔞 全书敏感词检查";
130
+ readonly 'sensitive.hint': "内置违禁词库硬匹配(政治/擦边/暴力/辱骂/广告/其他),发布前建议检查;只做提示,是否修改由你判断。";
131
+ readonly 'sensitive.clean': "✅ 未命中任何违禁词(扫描 {n} 章)";
132
+ readonly 'sensitive.hits': "命中 {n} 处({chapters} 章受影响)";
133
+ readonly 'sensitive.goFix': "去修订";
134
+ readonly 'sensitive.fixPrefill': "请删除或替换正文中的违禁表达「{word}」(类别:{category}),用含蓄/间接的写法替代。";
135
+ readonly 'facts.title': "编年录 / 时间线({n} 条)";
136
+ readonly 'facts.hint': "每章生成后自动抽取「已确立事实」(人物状态/境界资源/关系变化/伏笔落地),最近 20 条注入后续章节生成,保证长期一致。";
137
+ readonly 'facts.backfill': "回填历史章节事实";
138
+ readonly 'facts.backfilled': "已从历史章节回填 {n} 条事实";
102
139
  readonly 'settings.title': "设置";
103
140
  readonly 'settings.outlinePath': "默认大纲路径";
104
141
  readonly 'settings.outputDir': "输出目录";
105
142
  readonly 'settings.provider': "模型提供商";
106
143
  readonly 'settings.model': "模型";
144
+ readonly 'settings.modelCustom': "自定义…";
145
+ readonly 'settings.customProvider': "自定义提供商…";
146
+ readonly 'settings.edit': "编辑";
147
+ readonly 'settings.delete': "删除";
148
+ readonly 'settings.modelCustomPlaceholder': "输入任意模型 id";
149
+ readonly 'settings.savedModels': "我的模型";
150
+ readonly 'settings.modelCards': "模型卡片(内置 + 已添加)";
151
+ readonly 'settings.savedModelName': "名称";
152
+ readonly 'settings.addModel': "添加模型";
153
+ readonly 'settings.catalogRefresh': "刷新厂商";
154
+ readonly 'settings.refreshModels': "刷新模型";
155
+ readonly 'settings.savedModelsHint': "手动添加常用模型(provider + 模型 id),点击即可切换当前模型;厂商模式会写入 DSH 凭据并注册路由。";
156
+ readonly 'settings.testConnection': "测试连通";
157
+ readonly 'settings.testRunning': "测试中";
158
+ readonly 'settings.testOk': "连通";
159
+ readonly 'settings.testFail': "失败";
160
+ readonly 'settings.testHint': "真实发送一次最小调用(约几十 token),验证 Key / 端点 / 模型可用。";
161
+ readonly 'settings.reasoningSection': "推理强度";
162
+ readonly 'settings.reasoningEffort': "写作类任务思考强度 (reasoningEffort)";
163
+ readonly 'settings.reasoningHint': "章节生成/润色/重写/审稿等写作任务使用;关掉更省更快。";
164
+ readonly 'settings.analysisReasoning': "分析类任务思考强度(提炼/拆书/反推大纲)";
165
+ readonly 'settings.analysisReasoningHint': "角色/场景/道藏提炼、拆书、反推大纲等一次性分析任务默认 low,保证质量,不受上面写作档位影响。";
166
+ readonly 'settings.reasoning.off': "off · 关闭思考(推荐日常写文)";
167
+ readonly 'settings.reasoning.low': "low · 低思考";
168
+ readonly 'settings.reasoning.high': "high · 高思考";
169
+ readonly 'settings.reasoning.max': "max · 最高思考(质检/推演)";
170
+ readonly 'settings.theme': "主题";
171
+ readonly 'settings.themeLiquid': "iOS 液态玻璃(绿)";
172
+ readonly 'settings.themeNeumorph': "新拟物(双阴影)";
173
+ readonly 'settings.themeHint': "存于浏览器本地,即时生效";
107
174
  readonly 'settings.chapterChars': "每章目标字数";
108
175
  readonly 'settings.maxTokens': "单章最大输出 tokens";
109
176
  readonly 'settings.reviewPassScore': "审稿通过分数(0-100)";
177
+ readonly 'settings.editorFontSize': "编辑器字号(仅编辑页显示)";
178
+ readonly 'settings.editorFontSizeHint': "存于浏览器本地,不影响其他设备";
110
179
  readonly 'settings.autoReview': "生成后自动审稿";
180
+ readonly 'settings.autoAuthorReview': "生成后自动作者复盘";
181
+ readonly 'settings.autoAuthorReviewHint': "复盘钩子兑现/结尾钩子/剧情线推进/连续性/节奏趋势,每章约 2000 token";
182
+ readonly 'settings.autoReviewAfterRevise': "修订后自动审查";
183
+ readonly 'settings.autoReviewAfterReviseHint': "按意见修订/润色产出草稿后自动附带一次 AI 审查,直接显示新稿评分与剩余问题(每章约 2-3k token,可关)";
111
184
  readonly 'settings.save': "保存设置";
112
185
  readonly 'settings.saved': "设置已保存";
113
186
  readonly 'settings.openFolder': "打开输出文件夹";
@@ -122,13 +195,13 @@ export declare const zh: {
122
195
  readonly 'progress.rewriting': "正在修订第 {no} 章…";
123
196
  readonly 'progress.polishing': "正在润色第 {no} 章…";
124
197
  readonly 'progress.empty': "生成/审稿进度将显示在这里";
125
- readonly 'assistant.hint': "和 AI 编辑讨论剧情、人设、伏笔;达成一致后可让它直接修改大纲、设定圣经、章节内容。";
198
+ readonly 'assistant.hint': "和 AI 编辑 Agent 讨论剧情、人设、暗线;达成一致后可让它直接修改总纲、道藏、章节内容。";
126
199
  readonly 'assistant.placeholder': "例如:我想让第 2 章结尾加一个悬念——墟境里传来爷爷的声音…";
127
200
  readonly 'assistant.send': "发送";
128
201
  readonly 'assistant.toolStart': "⚙ 执行操作:{name}…";
129
202
  readonly 'assistant.toolDone': "✓ {name} 完成:{detail}";
130
203
  readonly 'assistant.toolError': "✗ {name} 失败:{detail}";
131
- readonly 'assistant.empty': "还没有对话。和 AI 编辑聊聊剧情吧。";
204
+ readonly 'assistant.empty': "还没有对话。和 AI 编辑 Agent 聊聊剧情吧。";
132
205
  readonly 'status.projectNone': "输出目录中还没有项目。请先加载大纲。";
133
206
  readonly 'status.files': "已生成文件";
134
207
  readonly 'api.error': "请求失败";
@@ -0,0 +1,5 @@
1
+ import type { NovelApi } from '../api.ts';
2
+ export declare function AdaptModeView({ api, onOpenBook }: {
3
+ api: NovelApi;
4
+ onOpenBook?: (id: string) => void;
5
+ }): import("react").JSX.Element;
@@ -2,6 +2,11 @@ import type { NovelApi } from '../api.ts';
2
2
  /** Props. */
3
3
  export interface AssetsTabProps {
4
4
  api: NovelApi;
5
+ /** 初始子页(左侧导航直达对应资产分类)。 */
6
+ initialTab?: AssetSubTab;
5
7
  }
8
+ /** 写作资产子页签。 */
9
+ type AssetSubTab = 'genre' | 'progression' | 'templates' | 'rules' | 'style';
6
10
  /** 写作资产页签。 */
7
- export declare function AssetsTab({ api }: AssetsTabProps): import("react").JSX.Element;
11
+ export declare function AssetsTab({ api, initialTab }: AssetsTabProps): import("react").JSX.Element;
12
+ export {};
@@ -0,0 +1,4 @@
1
+ import type { NovelApi } from '../api.ts';
2
+ export declare function AuthorAssetsView({ api }: {
3
+ api: NovelApi;
4
+ }): import("react").JSX.Element;
@@ -0,0 +1,34 @@
1
+ import type { NovelApi } from '../api.ts';
2
+ import type { BookshelfSnapshot } from '../../protocol.ts';
3
+ import { type ProgressLine } from './ProgressConsole.tsx';
4
+ export declare function AuthorHome({ api, shelf, onOpenBook, onReadBook, onAddBook, onImportBook, onOpenSettings, onTheme, onBackground, onOpacity, onEndfieldAccent, adaptEnabled, progress, busy, busyLabel, liveBar, onClearProgress, onUseIdea }: {
5
+ api: NovelApi;
6
+ shelf: BookshelfSnapshot;
7
+ onOpenBook: (id: string) => void;
8
+ onReadBook: (id: string) => void;
9
+ onAddBook: () => void;
10
+ onImportBook: () => void;
11
+ /** 创意灵感 → 采纳某个灵感带入开书向导。 */
12
+ onUseIdea?: (idea: import('../../protocol.ts').IdeaInspirationResult['ideas'][number]) => void;
13
+ /** 兼容旧入口:首页设置现为独立设置页,此回调保留但不再使用。 */
14
+ onOpenSettings?: () => void;
15
+ /** 主题/模式/密度变化回调(供面板根容器实时生效)。 */
16
+ onTheme?: (theme: 'liquid' | 'neumorph' | 'macos' | 'clay' | 'endfield', mode: 'system' | 'light' | 'dark', density: 'comfort' | 'compact' | 'spacious') => void;
17
+ /** 自定义背景变化回调。 */
18
+ onBackground?: (bg: string | undefined, blur: number) => void;
19
+ /** 玻璃透明度变化回调。 */
20
+ onOpacity?: (n: number) => void;
21
+ /** 终末地强调色变化回调。 */
22
+ onEndfieldAccent?: (accent: 'valley' | 'wuling') => void;
23
+ /** 是否启用改编模式(默认 false=隐藏入口)。 */
24
+ adaptEnabled?: boolean;
25
+ /** AI 进度实时状态(与书内共享同一份)。 */
26
+ progress?: ProgressLine[];
27
+ busy?: boolean;
28
+ busyLabel?: string;
29
+ liveBar?: {
30
+ text: string;
31
+ ratio?: number;
32
+ } | null;
33
+ onClearProgress?: () => void;
34
+ }): import("react").JSX.Element;
@@ -0,0 +1,4 @@
1
+ import type { NovelApi } from '../api.ts';
2
+ export default function BookAnalysisView({ api }: {
3
+ api: NovelApi;
4
+ }): JSX.Element;
@@ -0,0 +1,13 @@
1
+ import type { NovelApi } from '../api.ts';
2
+ /** 开书向导页。 */
3
+ export declare function CreateBookView({ api, onBack, onCreated, initialIdea, initialName, }: {
4
+ api: NovelApi;
5
+ /** 返回书架。 */
6
+ onBack: () => void;
7
+ /** 开书成功:进入新书工作台。 */
8
+ onCreated: (id: string) => void;
9
+ /** 从「创意灵感」带过来的起步想法(预填到「一句话想法」输入框)。 */
10
+ initialIdea?: string;
11
+ /** 从「创意灵感」带过来的初始书名。 */
12
+ initialName?: string;
13
+ }): import("react").JSX.Element;
@@ -0,0 +1,7 @@
1
+ import type { NovelApi } from '../api.ts';
2
+ import type { DirectorTodo } from '../../protocol.ts';
3
+ export default function DirectorView({ api, todos, onTodosChange }: {
4
+ api: NovelApi;
5
+ todos: DirectorTodo[];
6
+ onTodosChange?: (todos: DirectorTodo[]) => void;
7
+ }): JSX.Element;
@@ -0,0 +1,22 @@
1
+ /**
2
+ * 漫剧工作台·全流程步骤条(唯一导航,方案X):
3
+ * ①创建方案 → ②一键生成 → ③分镜 → ④角色定妆 → ⑤场景底图 → ⑥导出使用。
4
+ * 每个步骤对应一个独立页面主体;完成度自动判定(读 project 现有字段)。
5
+ */
6
+ import type { ProjectState } from '../../protocol.ts';
7
+ /** 步骤 → 页面主体的一一对应目标。 */
8
+ export type FlowTarget = 'plan' | 'rules' | 'skeleton' | 'table' | 'import' | 'makeup' | 'prompts' | 'scenes' | 'props' | 'export';
9
+ export interface FlowStep {
10
+ no: number;
11
+ label: string;
12
+ hint: string;
13
+ done: boolean;
14
+ target: FlowTarget;
15
+ }
16
+ /** 依据 project 数据计算 6 步完成度(与存储顺序无关,按生产顺序排列)。 */
17
+ export declare function computeFlowSteps(project: ProjectState | null, exported?: boolean): FlowStep[];
18
+ export declare function FlowGuide({ project, onNavigate, exported, }: {
19
+ project: ProjectState | null;
20
+ onNavigate: (target: FlowTarget) => void;
21
+ exported?: boolean;
22
+ }): any;
@@ -0,0 +1,4 @@
1
+ import type { NovelApi } from '../api.ts';
2
+ export declare function GlobalAssetLibraryView({ api }: {
3
+ api: NovelApi;
4
+ }): import("react").JSX.Element;
@@ -0,0 +1,6 @@
1
+ import type { NovelApi } from '../api.ts';
2
+ import type { IdeaInspirationResult } from '../../protocol.ts';
3
+ export default function IdeaInspirationView({ api, onUseIdea }: {
4
+ api: NovelApi;
5
+ onUseIdea?: (idea: IdeaInspirationResult['ideas'][number]) => void;
6
+ }): JSX.Element;
@@ -0,0 +1,7 @@
1
+ import type { NovelApi } from '../api.ts';
2
+ export declare function ImportModal({ api, onClose, onImported, }: {
3
+ api: NovelApi;
4
+ onClose: () => void;
5
+ /** 导入成功并已激活该书后回调(刷新书架)。 */
6
+ onImported: () => void | Promise<void>;
7
+ }): import("react").JSX.Element;
@@ -0,0 +1,4 @@
1
+ import type { NovelApi } from '../api.ts';
2
+ export default function KnowledgeBaseView({ api }: {
3
+ api: NovelApi;
4
+ }): JSX.Element;
@@ -0,0 +1,5 @@
1
+ /**
2
+ * 「实时调用 / LIVE」—— 内嵌到 AI 进度窗的下半区(详情层),不再独立浮窗。
3
+ * 连接 /llm-live/stream,按 LLM 调用分组展示模型实时输出。
4
+ */
5
+ export default function LiveFeedLog(): JSX.Element;
@@ -0,0 +1,20 @@
1
+ import type { NovelApi } from '../api.ts';
2
+ import type { ImageModelConfig, ProjectState } from '../../protocol.ts';
3
+ export declare function MangaRoleLibrary({ api, project, refresh, styleId, filterId, focus, showCards, chapterNo: externalChapter, onProgress, }: {
4
+ api: NovelApi;
5
+ project: ProjectState | null;
6
+ refresh: () => void | Promise<void>;
7
+ styleId?: string;
8
+ filterId?: string;
9
+ /** 是否启用生图(豆包等出定妆图)。 */
10
+ imageApiEnabled?: boolean;
11
+ /** 生图模型库(出定妆图时可选择用哪条)。 */
12
+ imageModels?: ImageModelConfig[];
13
+ /** 步骤页聚焦:import=展开并滚动到导入区;cards=滚动到已建漫剧卡列表。 */
14
+ focus?: 'import' | 'cards';
15
+ /** 是否显示「已建漫剧卡」列表(第⑤步导入页可隐藏,只留导入区)。 */
16
+ showCards?: boolean;
17
+ /** 全局当前章节(从工作台顶部导航条传入)。 */
18
+ chapterNo?: number | null;
19
+ onProgress?: (text: string, kind?: 'info' | 'done' | 'error') => void;
20
+ }): any;
@@ -0,0 +1,12 @@
1
+ import type { NovelApi } from '../api.ts';
2
+ import type { ChapterPlan, ProjectState } from '../../protocol.ts';
3
+ export declare function MangaWorkspace({ api, project, chapters, onProjectChanged, onProgress, }: {
4
+ api: NovelApi;
5
+ project: ProjectState | null;
6
+ chapters: ChapterPlan[];
7
+ /** 方案/资产变更已持久化后触发(刷新项目)。 */
8
+ onProjectChanged?: () => void | Promise<void>;
9
+ /** 是否启用生图(漫剧卡出定妆图)。 */
10
+ /** 上报到「AI进度」控制台(漫剧工作台内所有 LLM/方案操作)。 */
11
+ onProgress?: (text: string, kind?: 'info' | 'done' | 'error') => void;
12
+ }): any;
@@ -0,0 +1,5 @@
1
+ import type { NovelApi } from '../api.ts';
2
+ export default function MarketRadarView({ api, bookId }: {
3
+ api: NovelApi;
4
+ bookId?: string;
5
+ }): JSX.Element;
@@ -0,0 +1,14 @@
1
+ import type { NovelApi } from '../api.ts';
2
+ import type { SavedModel } from '../../protocol.ts';
3
+ /** 目录不可用时回退的内置预设(历史行为)。 */
4
+ export declare const FALLBACK_MODEL_PRESETS: readonly ["deepseek-v4-flash", "deepseek-v4-pro", "deepseek-chat", "deepseek-reasoner"];
5
+ export interface ModelManagerProps {
6
+ api: NovelApi;
7
+ provider: string;
8
+ model: string;
9
+ savedModels: SavedModel[];
10
+ onProvider: (provider: string) => void;
11
+ onModel: (model: string) => void;
12
+ onSavedModels: (models: SavedModel[]) => void;
13
+ }
14
+ export declare function ModelManager({ api, provider, model, onProvider, onModel }: ModelManagerProps): JSX.Element;
@@ -0,0 +1,11 @@
1
+ import type { NovelApi } from '../api.ts';
2
+ /** 目录不可用时回退的内置预设(历史行为)。 */
3
+ export declare const FALLBACK_MODEL_PRESETS: readonly ["deepseek-v4-flash", "deepseek-v4-pro", "deepseek-chat", "deepseek-reasoner"];
4
+ export interface ModelPickerProps {
5
+ api: NovelApi;
6
+ provider: string;
7
+ model: string;
8
+ onProvider: (provider: string) => void;
9
+ onModel: (model: string) => void;
10
+ }
11
+ export declare function ModelPicker({ api, provider, model, onProvider, onModel }: ModelPickerProps): JSX.Element;
@@ -1,7 +1,7 @@
1
1
  import type { NovelApi } from '../api.ts';
2
2
  import type { PanelController } from './controller.ts';
3
3
  /** The panel's tab identifiers. */
4
- export type NovelTab = 'workflow' | 'overview' | 'plan' | 'bible' | 'assets' | 'foreshadow' | 'assistant' | 'settings';
4
+ export type NovelTab = 'workflow' | 'overview' | 'blurb' | 'plan' | 'bible' | 'world' | 'foreshadow' | 'assistant' | 'settings' | 'characters' | 'roles' | 'facts' | 'plotlines' | 'reviews' | 'progress' | 'breakdown' | 'director' | 'knowledge' | 'assetsGenre' | 'assetsProgression' | 'assetsTemplates' | 'assetsRules' | 'assetsStyle' | 'run' | 'book' | 'assets';
5
5
  /** Panel shell props. */
6
6
  export interface NovelPanelProps {
7
7
  /** The panel state owner (open/close/toggle). */
@@ -0,0 +1,17 @@
1
+ export interface ProgressLine {
2
+ id: number;
3
+ text: string;
4
+ kind: 'info' | 'done' | 'error';
5
+ live?: boolean;
6
+ ratio?: number;
7
+ }
8
+ export declare function ProgressConsole({ progress, busy, busyLabel, liveBar, onClear }: {
9
+ progress: ProgressLine[];
10
+ busy: boolean;
11
+ busyLabel: string;
12
+ liveBar: {
13
+ text: string;
14
+ ratio?: number;
15
+ } | null;
16
+ onClear: () => void;
17
+ }): import("react").JSX.Element;
@@ -0,0 +1,5 @@
1
+ import type { BookshelfSnapshot } from '../../protocol.ts';
2
+ export declare function ProgressHomeView({ shelf, onOpenBook }: {
3
+ shelf: BookshelfSnapshot;
4
+ onOpenBook: (id: string) => void;
5
+ }): import("react").JSX.Element;
@@ -0,0 +1,8 @@
1
+ import type { NovelApi } from '../api.ts';
2
+ import type { ProjectState } from '../../protocol.ts';
3
+ export declare function PropLibrary({ api, project, refresh, onProgress, }: {
4
+ api: NovelApi;
5
+ project: ProjectState | null;
6
+ refresh: () => void | Promise<void>;
7
+ onProgress?: (text: string, kind?: 'info' | 'done' | 'error') => void;
8
+ }): any;
@@ -0,0 +1,8 @@
1
+ import type { NovelApi } from '../api.ts';
2
+ import type { ProjectState } from '../../protocol.ts';
3
+ export declare function ReaderView({ api, project, onBack, onOpenWorkspace, }: {
4
+ api: NovelApi;
5
+ project: ProjectState;
6
+ onBack: () => void;
7
+ onOpenWorkspace: () => void;
8
+ }): import("react").JSX.Element;
@@ -0,0 +1,10 @@
1
+ import type { NovelConfig } from '../../protocol.ts';
2
+ export interface ReasoningSectionProps {
3
+ reasoningEffort: NovelConfig['reasoningEffort'];
4
+ analysisReasoning: NovelConfig['analysisReasoning'];
5
+ onChange: (patch: {
6
+ reasoningEffort?: NovelConfig['reasoningEffort'];
7
+ analysisReasoning?: NovelConfig['analysisReasoning'];
8
+ }) => void;
9
+ }
10
+ export declare function ReasoningSection({ reasoningEffort, analysisReasoning, onChange }: ReasoningSectionProps): JSX.Element;
@@ -0,0 +1,5 @@
1
+ import type { NovelApi } from '../api.ts';
2
+ export declare function RunPanel({ api, totalChapters }: {
3
+ api: NovelApi;
4
+ totalChapters: number;
5
+ }): import("react").JSX.Element;
@@ -0,0 +1,16 @@
1
+ import type { NovelApi } from '../api.ts';
2
+ import type { ProjectState } from '../../protocol.ts';
3
+ export declare function SceneLibrary({ api, project, refresh, styleId, filterId, chapterNo: externalChapter, onProgress, }: {
4
+ api: NovelApi;
5
+ project: ProjectState | null;
6
+ /** 场景库变更已持久化后触发(刷新项目)。 */
7
+ refresh: () => void | Promise<void>;
8
+ /** 提炼场景时的漫剧基底风格 id(提示词按方案风格措辞)。 */
9
+ styleId?: string;
10
+ /** 可选滤镜风格 id。 */
11
+ filterId?: string;
12
+ /** 全局当前章节(从工作台顶部导航条传入)。 */
13
+ chapterNo?: number | null;
14
+ /** 上报到「AI进度」控制台。 */
15
+ onProgress?: (text: string, kind?: 'info' | 'done' | 'error') => void;
16
+ }): any;
@@ -0,0 +1,16 @@
1
+ import type { NovelApi } from '../api.ts';
2
+ type SettingsTab = 'model' | 'writing' | 'files' | 'appearance';
3
+ type ThemeMode = 'system' | 'light' | 'dark';
4
+ type ThemeName = 'liquid' | 'neumorph' | 'macos' | 'clay' | 'endfield';
5
+ type EndfieldAccent = 'valley' | 'wuling';
6
+ type ThemeDensity = 'comfort' | 'compact' | 'spacious';
7
+ export declare function SettingsView({ api, onTheme, onSettingsTab, onEditorFontSize, onBackground, onOpacity, onEndfieldAccent }: {
8
+ api: NovelApi;
9
+ onTheme?: (theme: ThemeName, mode: ThemeMode, density: ThemeDensity) => void;
10
+ onSettingsTab?: (tab: SettingsTab) => void;
11
+ onEditorFontSize?: (n: number) => void;
12
+ onBackground?: (bg: string | undefined, blur: number) => void;
13
+ onOpacity?: (n: number) => void;
14
+ onEndfieldAccent?: (accent: EndfieldAccent) => void;
15
+ }): import("react").JSX.Element;
16
+ export {};
@@ -0,0 +1,15 @@
1
+ import type { NovelApi } from '../api.ts';
2
+ import type { BookshelfSnapshot } from '../../protocol.ts';
3
+ /** 书架首页。 */
4
+ export declare function ShelfView({ api, shelf, onOpenBook, onReadBook, onAddBook, onImportBook, }: {
5
+ api: NovelApi;
6
+ shelf: BookshelfSnapshot;
7
+ /** 点击书卡:激活该书并进入工作台。 */
8
+ onOpenBook: (id: string) => void;
9
+ /** 点击「阅读」:激活该书并进入沉浸式阅读页。 */
10
+ onReadBook: (id: string) => void;
11
+ /** 点击+:进入开书向导页。 */
12
+ onAddBook: () => void;
13
+ /** 点击「导入」:打开导入弹窗(已有项目目录 / txt/md 全本)。 */
14
+ onImportBook: () => void;
15
+ }): import("react").JSX.Element;
@@ -0,0 +1,19 @@
1
+ import type { NovelApi } from '../api.ts';
2
+ import type { ChapterPlan, ProjectState } from '../../protocol.ts';
3
+ export declare function StoryboardTab({ api, project, chapters, onProjectChanged, styleId, filterId, mode, onGoStep, onProgress, }: {
4
+ api: NovelApi;
5
+ project: ProjectState | null;
6
+ chapters: ChapterPlan[];
7
+ /** 生成成功且已持久化后触发(刷新项目,切章/重进可恢复)。 */
8
+ onProjectChanged?: () => void | Promise<void>;
9
+ /** 漫剧基底风格 id(画面措辞随风格)。 */
10
+ styleId?: string;
11
+ /** 可选滤镜风格 id。 */
12
+ filterId?: string;
13
+ /** 页面模式:auto=按本章实际进度显示;skeleton/table/prompts=固定显示该步骤(前置不足显示提示,不降级)。 */
14
+ mode?: 'auto' | 'skeleton' | 'table' | 'prompts';
15
+ /** 「下一步」按钮回调(1=骨架→2=分镜表→3=提示词),供外层切步骤页。 */
16
+ onGoStep?: (n: 1 | 2 | 3) => void;
17
+ /** 上报到「AI进度」控制台(分镜三步生成)。 */
18
+ onProgress?: (text: string, kind?: 'info' | 'done' | 'error') => void;
19
+ }): any;
@@ -0,0 +1,8 @@
1
+ import type { ArtStyle } from '../../style-library.ts';
2
+ export declare function StyleCard({ style, selected, onClick, }: {
3
+ style: ArtStyle;
4
+ /** 选中态(高亮边框)。 */
5
+ selected?: boolean;
6
+ /** 点击卡片(选风格)。 */
7
+ onClick?: () => void;
8
+ }): any;
@@ -0,0 +1 @@
1
+ export declare function StyleGallery(): any;
@@ -0,0 +1,10 @@
1
+ import type { NovelApi } from '../api.ts';
2
+ import type { WorldState } from '../../protocol.ts';
3
+ /** 大世界页签。 */
4
+ export declare function WorldTab({ api, world, onChanged, }: {
5
+ api: NovelApi;
6
+ /** 当前项目的大世界数据(可能为空)。 */
7
+ world: WorldState | undefined;
8
+ /** 保存/提炼成功后由父组件刷新项目状态。 */
9
+ onChanged: (world: WorldState) => void;
10
+ }): import("react").JSX.Element;
@@ -6,3 +6,13 @@
6
6
  import { type NovelKey } from '../locales.ts';
7
7
  /** Translate one key with optional {placeholder} substitution. */
8
8
  export declare function tt(key: NovelKey, params?: Record<string, string | number>): string;
9
+ /** 角色定位中文名(角色库/提炼候选共用,收敛自多份复制)。 */
10
+ export declare const ROLE_LABELS: Record<string, string>;
11
+ /** 角色定位徽章颜色。 */
12
+ export declare function roleColor(label: string): string;
13
+ /** 剧情线类型中文名(与 locale 对齐)。 */
14
+ export declare function kindLabel(kind: string): string;
15
+ /** 剧情线状态中文名。 */
16
+ export declare function plotlineStatusLabel(status: string): string;
17
+ /** 剧情线状态颜色。 */
18
+ export declare function plotlineStatusColor(status: string): string;