@waterwx/dsh-novel-forge 1.1.8 → 1.2.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 (126) hide show
  1. package/README.md +231 -349
  2. package/lib/client.js +54833 -9926
  3. package/lib/index.js +12137 -4734
  4. package/lib/types/action-guard.d.ts +61 -0
  5. package/lib/types/ai-scan.d.ts +36 -0
  6. package/lib/types/assets.d.ts +18 -3
  7. package/lib/types/assistant.d.ts +29 -0
  8. package/lib/types/author-assets.d.ts +25 -0
  9. package/lib/types/bookshelf.d.ts +11 -1
  10. package/lib/types/client/api.d.ts +153 -9
  11. package/lib/types/client/docx.d.ts +2 -0
  12. package/lib/types/client/index.d.ts +1 -1
  13. package/lib/types/client/llmLive.d.ts +33 -0
  14. package/lib/types/client/locales.d.ts +34 -9
  15. package/lib/types/client/panel/AdaptModeView.d.ts +5 -0
  16. package/lib/types/client/panel/AiTag.d.ts +1 -0
  17. package/lib/types/client/panel/AssistantTab.d.ts +4 -1
  18. package/lib/types/client/panel/AuthorAssetsView.d.ts +4 -0
  19. package/lib/types/client/panel/AuthorHome.d.ts +34 -0
  20. package/lib/types/client/panel/BookAnalysisView.d.ts +4 -0
  21. package/lib/types/client/panel/CmdPalette.d.ts +12 -0
  22. package/lib/types/client/panel/CreateBookView.d.ts +5 -1
  23. package/lib/types/client/panel/DirectorView.d.ts +7 -0
  24. package/lib/types/client/panel/GlobalAssetLibraryView.d.ts +4 -0
  25. package/lib/types/client/panel/IdeaInspirationView.d.ts +6 -0
  26. package/lib/types/client/panel/ImportModal.d.ts +7 -0
  27. package/lib/types/client/panel/KnowledgeBaseView.d.ts +4 -0
  28. package/lib/types/client/panel/LiveFeedLog.d.ts +8 -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/NovelPanel.d.ts +6 -1
  32. package/lib/types/client/panel/PageHeader.d.ts +18 -0
  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/ReasoningSection.d.ts +10 -0
  36. package/lib/types/client/panel/RunPanel.d.ts +5 -0
  37. package/lib/types/client/panel/SettingsView.d.ts +19 -0
  38. package/lib/types/client/panel/ShelfView.d.ts +12 -1
  39. package/lib/types/client/panel/SubPage.d.ts +27 -0
  40. package/lib/types/client/panel/toast.d.ts +2 -0
  41. package/lib/types/client/panel/views.d.ts +25 -7
  42. package/lib/types/client/run-status.d.ts +19 -0
  43. package/lib/types/client/text.d.ts +9 -0
  44. package/lib/types/docx-core.d.ts +16 -0
  45. package/lib/types/docx.d.ts +2 -3
  46. package/lib/types/engine.d.ts +152 -40
  47. package/lib/types/global-assets.d.ts +6 -0
  48. package/lib/types/index.d.ts +20 -2
  49. package/lib/types/llm-live.d.ts +44 -0
  50. package/lib/types/market-radar-scan.d.ts +19 -0
  51. package/lib/types/market-radar-sources.d.ts +31 -0
  52. package/lib/types/migrate-output.d.ts +25 -0
  53. package/lib/types/novel-context.d.ts +80 -0
  54. package/lib/types/prompt-utils.d.ts +35 -0
  55. package/lib/types/prompting.d.ts +10 -0
  56. package/lib/types/protocol.d.ts +1106 -123
  57. package/lib/types/review-policy.d.ts +97 -0
  58. package/lib/types/routes.d.ts +4 -0
  59. package/lib/types/run.d.ts +34 -0
  60. package/lib/types/stage-contract.d.ts +60 -0
  61. package/package.json +52 -27
  62. package/scripts/patch-schemastery.mjs +47 -0
  63. package/src/action-guard.ts +127 -0
  64. package/src/ai-scan.ts +179 -0
  65. package/src/assets.ts +1774 -520
  66. package/src/assistant.ts +1082 -770
  67. package/src/author-assets.ts +149 -0
  68. package/src/bookshelf.ts +187 -151
  69. package/src/client/api.ts +684 -387
  70. package/src/client/docx.ts +37 -69
  71. package/src/client/index.ts +3 -1
  72. package/src/client/llmLive.ts +101 -0
  73. package/src/client/locales.ts +418 -367
  74. package/src/client/mount.tsx +1 -1
  75. package/src/client/panel/AdaptModeView.tsx +535 -0
  76. package/src/client/panel/AiTag.tsx +7 -0
  77. package/src/client/panel/AssetsTab.tsx +448 -439
  78. package/src/client/panel/AssistantTab.tsx +355 -301
  79. package/src/client/panel/AuthorAssetsView.tsx +206 -0
  80. package/src/client/panel/AuthorHome.tsx +309 -0
  81. package/src/client/panel/BookAnalysisView.tsx +63 -0
  82. package/src/client/panel/CmdPalette.tsx +102 -0
  83. package/src/client/panel/CreateBookView.tsx +366 -348
  84. package/src/client/panel/DirectorView.tsx +200 -0
  85. package/src/client/panel/GlobalAssetLibraryView.tsx +168 -0
  86. package/src/client/panel/IdeaInspirationView.tsx +76 -0
  87. package/src/client/panel/ImportModal.tsx +303 -0
  88. package/src/client/panel/KnowledgeBaseView.tsx +125 -0
  89. package/src/client/panel/LiveFeedLog.tsx +67 -0
  90. package/src/client/panel/MarketRadarView.tsx +377 -0
  91. package/src/client/panel/ModelManager.tsx +205 -0
  92. package/src/client/panel/NovelPanel.tsx +5403 -4294
  93. package/src/client/panel/PageHeader.tsx +37 -0
  94. package/src/client/panel/ProgressConsole.tsx +63 -0
  95. package/src/client/panel/ReaderView.tsx +306 -306
  96. package/src/client/panel/ReasoningSection.tsx +31 -0
  97. package/src/client/panel/RunPanel.tsx +223 -0
  98. package/src/client/panel/SettingsView.tsx +305 -0
  99. package/src/client/panel/ShelfView.tsx +266 -235
  100. package/src/client/panel/SubPage.tsx +42 -0
  101. package/src/client/panel/WorldTab.tsx +202 -202
  102. package/src/client/panel/panel.module.css +5764 -2817
  103. package/src/client/panel/toast.ts +51 -0
  104. package/src/client/panel/views.tsx +401 -314
  105. package/src/client/run-status.ts +143 -0
  106. package/src/client/sidebar-entry.ts +1 -1
  107. package/src/client/text.ts +28 -0
  108. package/src/docx-core.ts +53 -0
  109. package/src/docx.ts +44 -83
  110. package/src/engine.ts +4231 -2746
  111. package/src/global-assets.ts +59 -0
  112. package/src/index.ts +311 -246
  113. package/src/llm-live.ts +68 -0
  114. package/src/market-radar-scan.ts +41 -0
  115. package/src/market-radar-sources.ts +173 -0
  116. package/src/migrate-output.ts +76 -0
  117. package/src/novel-context.ts +286 -0
  118. package/src/prompting.ts +26 -0
  119. package/src/protocol.ts +2072 -1104
  120. package/src/review-policy.ts +161 -0
  121. package/src/routes.ts +3405 -2050
  122. package/src/run.ts +342 -0
  123. package/src/stage-contract.ts +189 -0
  124. package/lib/client.js.map +0 -1
  125. package/lib/index.js.map +0 -1
  126. package/src/client/panel/BookshelfBar.tsx +0 -170
@@ -0,0 +1,59 @@
1
+ /**
2
+ * 全局资源库(跨书可复用的自定义题材/推进模式)。
3
+ * 雷达「同步底座到全局资源库」写入此处;/assets 返回时与内置库合并展示。
4
+ */
5
+ import { homedir } from 'node:os'
6
+ import { join } from 'node:path'
7
+ import { mkdirSync, readFileSync, writeFileSync } from 'node:fs'
8
+ import type { GenreNode, ProgressionMode } from './protocol.ts'
9
+
10
+ interface GlobalAssets {
11
+ genres: GenreNode[]
12
+ modes: ProgressionMode[]
13
+ }
14
+
15
+ const FILE = join(homedir(), '.dsh', 'novel-forge-global-assets.json')
16
+ let cache: GlobalAssets | null = null
17
+
18
+ function load(): GlobalAssets {
19
+ if (cache !== null) return cache
20
+ try {
21
+ const raw = readFileSync(FILE, 'utf8')
22
+ const parsed = JSON.parse(raw) as Partial<GlobalAssets>
23
+ cache = { genres: Array.isArray(parsed.genres) ? parsed.genres : [], modes: Array.isArray(parsed.modes) ? parsed.modes : [] }
24
+ } catch {
25
+ cache = { genres: [], modes: [] }
26
+ }
27
+ return cache
28
+ }
29
+
30
+ function persist(): void {
31
+ if (cache === null) return
32
+ mkdirSync(join(homedir(), '.dsh'), { recursive: true })
33
+ writeFileSync(FILE, JSON.stringify(cache, null, 2), 'utf8')
34
+ }
35
+
36
+ export function globalGenreLibrary(): GenreNode[] {
37
+ return load().genres
38
+ }
39
+
40
+ export function globalProgressionLibrary(): ProgressionMode[] {
41
+ return load().modes
42
+ }
43
+
44
+ /** 新增/已有则跳过;返回 true=新增。 */
45
+ export function addGlobalGenre(g: GenreNode): boolean {
46
+ const lib = load()
47
+ if (lib.genres.some(x => x.name === g.name)) return false
48
+ lib.genres.push({ ...g, children: g.children ?? [] })
49
+ persist()
50
+ return true
51
+ }
52
+
53
+ export function addGlobalMode(m: ProgressionMode): boolean {
54
+ const lib = load()
55
+ if (lib.modes.some(x => x.name === m.name)) return false
56
+ lib.modes.push({ ...m, payoffs: m.payoffs ?? [], risks: m.risks ?? [], primary: m.primary ?? false })
57
+ persist()
58
+ return true
59
+ }