inkos-n-core 1.2.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 (412) hide show
  1. package/dist/agents/ai-tells.d.ts +26 -0
  2. package/dist/agents/ai-tells.d.ts.map +1 -0
  3. package/dist/agents/ai-tells.js +140 -0
  4. package/dist/agents/ai-tells.js.map +1 -0
  5. package/dist/agents/architect.d.ts +34 -0
  6. package/dist/agents/architect.d.ts.map +1 -0
  7. package/dist/agents/architect.js +906 -0
  8. package/dist/agents/architect.js.map +1 -0
  9. package/dist/agents/base.d.ts +30 -0
  10. package/dist/agents/base.d.ts.map +1 -0
  11. package/dist/agents/base.js +70 -0
  12. package/dist/agents/base.js.map +1 -0
  13. package/dist/agents/chapter-analyzer.d.ts +30 -0
  14. package/dist/agents/chapter-analyzer.d.ts.map +1 -0
  15. package/dist/agents/chapter-analyzer.js +476 -0
  16. package/dist/agents/chapter-analyzer.js.map +1 -0
  17. package/dist/agents/composer.d.ts +36 -0
  18. package/dist/agents/composer.d.ts.map +1 -0
  19. package/dist/agents/composer.js +319 -0
  20. package/dist/agents/composer.js.map +1 -0
  21. package/dist/agents/consolidator.d.ts +23 -0
  22. package/dist/agents/consolidator.d.ts.map +1 -0
  23. package/dist/agents/consolidator.js +141 -0
  24. package/dist/agents/consolidator.js.map +1 -0
  25. package/dist/agents/continuity.d.ts +39 -0
  26. package/dist/agents/continuity.d.ts.map +1 -0
  27. package/dist/agents/continuity.js +612 -0
  28. package/dist/agents/continuity.js.map +1 -0
  29. package/dist/agents/detection-insights.d.ts +9 -0
  30. package/dist/agents/detection-insights.d.ts.map +1 -0
  31. package/dist/agents/detection-insights.js +54 -0
  32. package/dist/agents/detection-insights.js.map +1 -0
  33. package/dist/agents/detector.d.ts +17 -0
  34. package/dist/agents/detector.d.ts.map +1 -0
  35. package/dist/agents/detector.js +77 -0
  36. package/dist/agents/detector.js.map +1 -0
  37. package/dist/agents/en-prompt-sections.d.ts +8 -0
  38. package/dist/agents/en-prompt-sections.d.ts.map +1 -0
  39. package/dist/agents/en-prompt-sections.js +120 -0
  40. package/dist/agents/en-prompt-sections.js.map +1 -0
  41. package/dist/agents/fanfic-canon-importer.d.ts +15 -0
  42. package/dist/agents/fanfic-canon-importer.d.ts.map +1 -0
  43. package/dist/agents/fanfic-canon-importer.js +117 -0
  44. package/dist/agents/fanfic-canon-importer.js.map +1 -0
  45. package/dist/agents/fanfic-dimensions.d.ts +14 -0
  46. package/dist/agents/fanfic-dimensions.d.ts.map +1 -0
  47. package/dist/agents/fanfic-dimensions.js +63 -0
  48. package/dist/agents/fanfic-dimensions.js.map +1 -0
  49. package/dist/agents/fanfic-prompt-sections.d.ts +5 -0
  50. package/dist/agents/fanfic-prompt-sections.d.ts.map +1 -0
  51. package/dist/agents/fanfic-prompt-sections.js +85 -0
  52. package/dist/agents/fanfic-prompt-sections.js.map +1 -0
  53. package/dist/agents/foundation-reviewer.d.ts +29 -0
  54. package/dist/agents/foundation-reviewer.d.ts.map +1 -0
  55. package/dist/agents/foundation-reviewer.js +153 -0
  56. package/dist/agents/foundation-reviewer.js.map +1 -0
  57. package/dist/agents/length-normalizer.d.ts +32 -0
  58. package/dist/agents/length-normalizer.d.ts.map +1 -0
  59. package/dist/agents/length-normalizer.js +156 -0
  60. package/dist/agents/length-normalizer.js.map +1 -0
  61. package/dist/agents/observer-prompts.d.ts +10 -0
  62. package/dist/agents/observer-prompts.d.ts.map +1 -0
  63. package/dist/agents/observer-prompts.js +113 -0
  64. package/dist/agents/observer-prompts.js.map +1 -0
  65. package/dist/agents/planner.d.ts +57 -0
  66. package/dist/agents/planner.d.ts.map +1 -0
  67. package/dist/agents/planner.js +594 -0
  68. package/dist/agents/planner.js.map +1 -0
  69. package/dist/agents/post-write-validator.d.ts +34 -0
  70. package/dist/agents/post-write-validator.d.ts.map +1 -0
  71. package/dist/agents/post-write-validator.js +696 -0
  72. package/dist/agents/post-write-validator.js.map +1 -0
  73. package/dist/agents/radar-source.d.ts +38 -0
  74. package/dist/agents/radar-source.d.ts.map +1 -0
  75. package/dist/agents/radar-source.js +92 -0
  76. package/dist/agents/radar-source.js.map +1 -0
  77. package/dist/agents/radar.d.ts +24 -0
  78. package/dist/agents/radar.d.ts.map +1 -0
  79. package/dist/agents/radar.js +85 -0
  80. package/dist/agents/radar.js.map +1 -0
  81. package/dist/agents/reviser.d.ts +32 -0
  82. package/dist/agents/reviser.d.ts.map +1 -0
  83. package/dist/agents/reviser.js +282 -0
  84. package/dist/agents/reviser.js.map +1 -0
  85. package/dist/agents/rules-reader.d.ts +27 -0
  86. package/dist/agents/rules-reader.d.ts.map +1 -0
  87. package/dist/agents/rules-reader.js +99 -0
  88. package/dist/agents/rules-reader.js.map +1 -0
  89. package/dist/agents/sensitive-words.d.ts +24 -0
  90. package/dist/agents/sensitive-words.d.ts.map +1 -0
  91. package/dist/agents/sensitive-words.js +103 -0
  92. package/dist/agents/sensitive-words.js.map +1 -0
  93. package/dist/agents/settler-delta-parser.d.ts +7 -0
  94. package/dist/agents/settler-delta-parser.d.ts.map +1 -0
  95. package/dist/agents/settler-delta-parser.js +40 -0
  96. package/dist/agents/settler-delta-parser.js.map +1 -0
  97. package/dist/agents/settler-parser.d.ts +13 -0
  98. package/dist/agents/settler-parser.d.ts.map +1 -0
  99. package/dist/agents/settler-parser.js +20 -0
  100. package/dist/agents/settler-parser.js.map +1 -0
  101. package/dist/agents/settler-prompts.d.ts +22 -0
  102. package/dist/agents/settler-prompts.d.ts.map +1 -0
  103. package/dist/agents/settler-prompts.js +193 -0
  104. package/dist/agents/settler-prompts.js.map +1 -0
  105. package/dist/agents/state-validator.d.ts +26 -0
  106. package/dist/agents/state-validator.d.ts.map +1 -0
  107. package/dist/agents/state-validator.js +229 -0
  108. package/dist/agents/state-validator.js.map +1 -0
  109. package/dist/agents/style-analyzer.d.ts +11 -0
  110. package/dist/agents/style-analyzer.d.ts.map +1 -0
  111. package/dist/agents/style-analyzer.js +81 -0
  112. package/dist/agents/style-analyzer.js.map +1 -0
  113. package/dist/agents/writer-parser.d.ts +17 -0
  114. package/dist/agents/writer-parser.d.ts.map +1 -0
  115. package/dist/agents/writer-parser.js +131 -0
  116. package/dist/agents/writer-parser.js.map +1 -0
  117. package/dist/agents/writer-prompts.d.ts +11 -0
  118. package/dist/agents/writer-prompts.d.ts.map +1 -0
  119. package/dist/agents/writer-prompts.js +549 -0
  120. package/dist/agents/writer-prompts.js.map +1 -0
  121. package/dist/agents/writer.d.ts +103 -0
  122. package/dist/agents/writer.d.ts.map +1 -0
  123. package/dist/agents/writer.js +1052 -0
  124. package/dist/agents/writer.js.map +1 -0
  125. package/dist/index.d.ts +80 -0
  126. package/dist/index.d.ts.map +1 -0
  127. package/dist/index.js +84 -0
  128. package/dist/index.js.map +1 -0
  129. package/dist/interaction/edit-controller.d.ts +55 -0
  130. package/dist/interaction/edit-controller.d.ts.map +1 -0
  131. package/dist/interaction/edit-controller.js +187 -0
  132. package/dist/interaction/edit-controller.js.map +1 -0
  133. package/dist/interaction/events.d.ts +45 -0
  134. package/dist/interaction/events.d.ts.map +1 -0
  135. package/dist/interaction/events.js +32 -0
  136. package/dist/interaction/events.js.map +1 -0
  137. package/dist/interaction/intents.d.ts +96 -0
  138. package/dist/interaction/intents.d.ts.map +1 -0
  139. package/dist/interaction/intents.js +58 -0
  140. package/dist/interaction/intents.js.map +1 -0
  141. package/dist/interaction/modes.d.ts +5 -0
  142. package/dist/interaction/modes.d.ts.map +1 -0
  143. package/dist/interaction/modes.js +7 -0
  144. package/dist/interaction/modes.js.map +1 -0
  145. package/dist/interaction/nl-router.d.ts +8 -0
  146. package/dist/interaction/nl-router.d.ts.map +1 -0
  147. package/dist/interaction/nl-router.js +218 -0
  148. package/dist/interaction/nl-router.js.map +1 -0
  149. package/dist/interaction/project-control.d.ts +85 -0
  150. package/dist/interaction/project-control.d.ts.map +1 -0
  151. package/dist/interaction/project-control.js +123 -0
  152. package/dist/interaction/project-control.js.map +1 -0
  153. package/dist/interaction/project-session-store.d.ts +7 -0
  154. package/dist/interaction/project-session-store.d.ts.map +1 -0
  155. package/dist/interaction/project-session-store.js +46 -0
  156. package/dist/interaction/project-session-store.js.map +1 -0
  157. package/dist/interaction/project-tools.d.ts +20 -0
  158. package/dist/interaction/project-tools.d.ts.map +1 -0
  159. package/dist/interaction/project-tools.js +527 -0
  160. package/dist/interaction/project-tools.js.map +1 -0
  161. package/dist/interaction/request-router.d.ts +3 -0
  162. package/dist/interaction/request-router.d.ts.map +1 -0
  163. package/dist/interaction/request-router.js +5 -0
  164. package/dist/interaction/request-router.js.map +1 -0
  165. package/dist/interaction/runtime.d.ts +54 -0
  166. package/dist/interaction/runtime.d.ts.map +1 -0
  167. package/dist/interaction/runtime.js +943 -0
  168. package/dist/interaction/runtime.js.map +1 -0
  169. package/dist/interaction/session.d.ts +352 -0
  170. package/dist/interaction/session.d.ts.map +1 -0
  171. package/dist/interaction/session.js +98 -0
  172. package/dist/interaction/session.js.map +1 -0
  173. package/dist/interaction/truth-authority.d.ts +4 -0
  174. package/dist/interaction/truth-authority.d.ts.map +1 -0
  175. package/dist/interaction/truth-authority.js +37 -0
  176. package/dist/interaction/truth-authority.js.map +1 -0
  177. package/dist/llm/provider.d.ts +87 -0
  178. package/dist/llm/provider.d.ts.map +1 -0
  179. package/dist/llm/provider.js +798 -0
  180. package/dist/llm/provider.js.map +1 -0
  181. package/dist/models/book-rules.d.ts +118 -0
  182. package/dist/models/book-rules.d.ts.map +1 -0
  183. package/dist/models/book-rules.js +55 -0
  184. package/dist/models/book-rules.js.map +1 -0
  185. package/dist/models/book.d.ts +51 -0
  186. package/dist/models/book.d.ts.map +1 -0
  187. package/dist/models/book.js +27 -0
  188. package/dist/models/book.js.map +1 -0
  189. package/dist/models/chapter.d.ts +136 -0
  190. package/dist/models/chapter.d.ts.map +1 -0
  191. package/dist/models/chapter.js +38 -0
  192. package/dist/models/chapter.js.map +1 -0
  193. package/dist/models/detection.d.ts +25 -0
  194. package/dist/models/detection.d.ts.map +1 -0
  195. package/dist/models/detection.js +2 -0
  196. package/dist/models/detection.js.map +1 -0
  197. package/dist/models/genre-profile.d.ts +45 -0
  198. package/dist/models/genre-profile.d.ts.map +1 -0
  199. package/dist/models/genre-profile.js +26 -0
  200. package/dist/models/genre-profile.js.map +1 -0
  201. package/dist/models/input-governance.d.ts +516 -0
  202. package/dist/models/input-governance.d.ts.map +1 -0
  203. package/dist/models/input-governance.js +112 -0
  204. package/dist/models/input-governance.js.map +1 -0
  205. package/dist/models/length-governance.d.ts +93 -0
  206. package/dist/models/length-governance.d.ts.map +1 -0
  207. package/dist/models/length-governance.js +34 -0
  208. package/dist/models/length-governance.js.map +1 -0
  209. package/dist/models/project.d.ts +475 -0
  210. package/dist/models/project.d.ts.map +1 -0
  211. package/dist/models/project.js +100 -0
  212. package/dist/models/project.js.map +1 -0
  213. package/dist/models/runtime-state.d.ts +588 -0
  214. package/dist/models/runtime-state.d.ts.map +1 -0
  215. package/dist/models/runtime-state.js +93 -0
  216. package/dist/models/runtime-state.js.map +1 -0
  217. package/dist/models/state.d.ts +48 -0
  218. package/dist/models/state.d.ts.map +1 -0
  219. package/dist/models/state.js +6 -0
  220. package/dist/models/state.js.map +1 -0
  221. package/dist/models/style-profile.d.ts +16 -0
  222. package/dist/models/style-profile.d.ts.map +1 -0
  223. package/dist/models/style-profile.js +2 -0
  224. package/dist/models/style-profile.js.map +1 -0
  225. package/dist/notify/dispatcher.d.ts +10 -0
  226. package/dist/notify/dispatcher.d.ts.map +1 -0
  227. package/dist/notify/dispatcher.js +55 -0
  228. package/dist/notify/dispatcher.js.map +1 -0
  229. package/dist/notify/feishu.d.ts +5 -0
  230. package/dist/notify/feishu.d.ts.map +1 -0
  231. package/dist/notify/feishu.js +26 -0
  232. package/dist/notify/feishu.js.map +1 -0
  233. package/dist/notify/telegram.d.ts +6 -0
  234. package/dist/notify/telegram.d.ts.map +1 -0
  235. package/dist/notify/telegram.js +17 -0
  236. package/dist/notify/telegram.js.map +1 -0
  237. package/dist/notify/webhook.d.ts +15 -0
  238. package/dist/notify/webhook.d.ts.map +1 -0
  239. package/dist/notify/webhook.js +28 -0
  240. package/dist/notify/webhook.js.map +1 -0
  241. package/dist/notify/wechat-work.d.ts +5 -0
  242. package/dist/notify/wechat-work.d.ts.map +1 -0
  243. package/dist/notify/wechat-work.js +15 -0
  244. package/dist/notify/wechat-work.js.map +1 -0
  245. package/dist/pipeline/agent.d.ts +15 -0
  246. package/dist/pipeline/agent.d.ts.map +1 -0
  247. package/dist/pipeline/agent.js +550 -0
  248. package/dist/pipeline/agent.js.map +1 -0
  249. package/dist/pipeline/chapter-persistence.d.ts +33 -0
  250. package/dist/pipeline/chapter-persistence.d.ts.map +1 -0
  251. package/dist/pipeline/chapter-persistence.js +35 -0
  252. package/dist/pipeline/chapter-persistence.js.map +1 -0
  253. package/dist/pipeline/chapter-review-cycle.d.ts +79 -0
  254. package/dist/pipeline/chapter-review-cycle.d.ts.map +1 -0
  255. package/dist/pipeline/chapter-review-cycle.js +97 -0
  256. package/dist/pipeline/chapter-review-cycle.js.map +1 -0
  257. package/dist/pipeline/chapter-state-recovery.d.ts +59 -0
  258. package/dist/pipeline/chapter-state-recovery.d.ts.map +1 -0
  259. package/dist/pipeline/chapter-state-recovery.js +133 -0
  260. package/dist/pipeline/chapter-state-recovery.js.map +1 -0
  261. package/dist/pipeline/chapter-truth-validation.d.ts +41 -0
  262. package/dist/pipeline/chapter-truth-validation.d.ts.map +1 -0
  263. package/dist/pipeline/chapter-truth-validation.js +67 -0
  264. package/dist/pipeline/chapter-truth-validation.js.map +1 -0
  265. package/dist/pipeline/detection-runner.d.ts +31 -0
  266. package/dist/pipeline/detection-runner.d.ts.map +1 -0
  267. package/dist/pipeline/detection-runner.js +109 -0
  268. package/dist/pipeline/detection-runner.js.map +1 -0
  269. package/dist/pipeline/persisted-governed-plan.d.ts +4 -0
  270. package/dist/pipeline/persisted-governed-plan.d.ts.map +1 -0
  271. package/dist/pipeline/persisted-governed-plan.js +85 -0
  272. package/dist/pipeline/persisted-governed-plan.js.map +1 -0
  273. package/dist/pipeline/runner.d.ts +212 -0
  274. package/dist/pipeline/runner.d.ts.map +1 -0
  275. package/dist/pipeline/runner.js +2265 -0
  276. package/dist/pipeline/runner.js.map +1 -0
  277. package/dist/pipeline/scheduler.d.ts +58 -0
  278. package/dist/pipeline/scheduler.d.ts.map +1 -0
  279. package/dist/pipeline/scheduler.js +322 -0
  280. package/dist/pipeline/scheduler.js.map +1 -0
  281. package/dist/state/manager.d.ts +48 -0
  282. package/dist/state/manager.d.ts.map +1 -0
  283. package/dist/state/manager.js +435 -0
  284. package/dist/state/manager.js.map +1 -0
  285. package/dist/state/memory-db.d.ts +77 -0
  286. package/dist/state/memory-db.d.ts.map +1 -0
  287. package/dist/state/memory-db.js +249 -0
  288. package/dist/state/memory-db.js.map +1 -0
  289. package/dist/state/runtime-state-store.d.ts +25 -0
  290. package/dist/state/runtime-state-store.d.ts.map +1 -0
  291. package/dist/state/runtime-state-store.js +108 -0
  292. package/dist/state/runtime-state-store.js.map +1 -0
  293. package/dist/state/state-bootstrap.d.ts +21 -0
  294. package/dist/state/state-bootstrap.d.ts.map +1 -0
  295. package/dist/state/state-bootstrap.js +434 -0
  296. package/dist/state/state-bootstrap.js.map +1 -0
  297. package/dist/state/state-projections.d.ts +5 -0
  298. package/dist/state/state-projections.d.ts.map +1 -0
  299. package/dist/state/state-projections.js +166 -0
  300. package/dist/state/state-projections.js.map +1 -0
  301. package/dist/state/state-reducer.d.ts +13 -0
  302. package/dist/state/state-reducer.d.ts.map +1 -0
  303. package/dist/state/state-reducer.js +194 -0
  304. package/dist/state/state-reducer.js.map +1 -0
  305. package/dist/state/state-validator.d.ts +12 -0
  306. package/dist/state/state-validator.d.ts.map +1 -0
  307. package/dist/state/state-validator.js +67 -0
  308. package/dist/state/state-validator.js.map +1 -0
  309. package/dist/utils/analytics.d.ts +39 -0
  310. package/dist/utils/analytics.d.ts.map +1 -0
  311. package/dist/utils/analytics.js +50 -0
  312. package/dist/utils/analytics.js.map +1 -0
  313. package/dist/utils/cadence-policy.d.ts +36 -0
  314. package/dist/utils/cadence-policy.d.ts.map +1 -0
  315. package/dist/utils/cadence-policy.js +38 -0
  316. package/dist/utils/cadence-policy.js.map +1 -0
  317. package/dist/utils/chapter-cadence.d.ts +34 -0
  318. package/dist/utils/chapter-cadence.d.ts.map +1 -0
  319. package/dist/utils/chapter-cadence.js +142 -0
  320. package/dist/utils/chapter-cadence.js.map +1 -0
  321. package/dist/utils/chapter-splitter.d.ts +18 -0
  322. package/dist/utils/chapter-splitter.d.ts.map +1 -0
  323. package/dist/utils/chapter-splitter.js +60 -0
  324. package/dist/utils/chapter-splitter.js.map +1 -0
  325. package/dist/utils/config-loader.d.ts +15 -0
  326. package/dist/utils/config-loader.d.ts.map +1 -0
  327. package/dist/utils/config-loader.js +136 -0
  328. package/dist/utils/config-loader.js.map +1 -0
  329. package/dist/utils/context-filter.d.ts +20 -0
  330. package/dist/utils/context-filter.d.ts.map +1 -0
  331. package/dist/utils/context-filter.js +134 -0
  332. package/dist/utils/context-filter.js.map +1 -0
  333. package/dist/utils/governed-context.d.ts +11 -0
  334. package/dist/utils/governed-context.d.ts.map +1 -0
  335. package/dist/utils/governed-context.js +42 -0
  336. package/dist/utils/governed-context.js.map +1 -0
  337. package/dist/utils/governed-working-set.d.ts +18 -0
  338. package/dist/utils/governed-working-set.d.ts.map +1 -0
  339. package/dist/utils/governed-working-set.js +296 -0
  340. package/dist/utils/governed-working-set.js.map +1 -0
  341. package/dist/utils/hook-agenda.d.ts +21 -0
  342. package/dist/utils/hook-agenda.d.ts.map +1 -0
  343. package/dist/utils/hook-agenda.js +95 -0
  344. package/dist/utils/hook-agenda.js.map +1 -0
  345. package/dist/utils/hook-arbiter.d.ts +15 -0
  346. package/dist/utils/hook-arbiter.d.ts.map +1 -0
  347. package/dist/utils/hook-arbiter.js +268 -0
  348. package/dist/utils/hook-arbiter.js.map +1 -0
  349. package/dist/utils/hook-governance.d.ts +28 -0
  350. package/dist/utils/hook-governance.d.ts.map +1 -0
  351. package/dist/utils/hook-governance.js +144 -0
  352. package/dist/utils/hook-governance.js.map +1 -0
  353. package/dist/utils/hook-health.d.ts +15 -0
  354. package/dist/utils/hook-health.d.ts.map +1 -0
  355. package/dist/utils/hook-health.js +128 -0
  356. package/dist/utils/hook-health.js.map +1 -0
  357. package/dist/utils/hook-lifecycle.d.ts +34 -0
  358. package/dist/utils/hook-lifecycle.d.ts.map +1 -0
  359. package/dist/utils/hook-lifecycle.js +125 -0
  360. package/dist/utils/hook-lifecycle.js.map +1 -0
  361. package/dist/utils/hook-policy.d.ts +74 -0
  362. package/dist/utils/hook-policy.d.ts.map +1 -0
  363. package/dist/utils/hook-policy.js +126 -0
  364. package/dist/utils/hook-policy.js.map +1 -0
  365. package/dist/utils/length-metrics.d.ts +10 -0
  366. package/dist/utils/length-metrics.d.ts.map +1 -0
  367. package/dist/utils/length-metrics.js +85 -0
  368. package/dist/utils/length-metrics.js.map +1 -0
  369. package/dist/utils/logger.d.ts +31 -0
  370. package/dist/utils/logger.d.ts.map +1 -0
  371. package/dist/utils/logger.js +79 -0
  372. package/dist/utils/logger.js.map +1 -0
  373. package/dist/utils/long-span-fatigue.d.ts +28 -0
  374. package/dist/utils/long-span-fatigue.d.ts.map +1 -0
  375. package/dist/utils/long-span-fatigue.js +406 -0
  376. package/dist/utils/long-span-fatigue.js.map +1 -0
  377. package/dist/utils/memory-retrieval.d.ts +25 -0
  378. package/dist/utils/memory-retrieval.d.ts.map +1 -0
  379. package/dist/utils/memory-retrieval.js +319 -0
  380. package/dist/utils/memory-retrieval.js.map +1 -0
  381. package/dist/utils/pov-filter.d.ts +30 -0
  382. package/dist/utils/pov-filter.d.ts.map +1 -0
  383. package/dist/utils/pov-filter.js +129 -0
  384. package/dist/utils/pov-filter.js.map +1 -0
  385. package/dist/utils/spot-fix-patches.d.ts +14 -0
  386. package/dist/utils/spot-fix-patches.d.ts.map +1 -0
  387. package/dist/utils/spot-fix-patches.js +75 -0
  388. package/dist/utils/spot-fix-patches.js.map +1 -0
  389. package/dist/utils/story-markdown.d.ts +13 -0
  390. package/dist/utils/story-markdown.d.ts.map +1 -0
  391. package/dist/utils/story-markdown.js +218 -0
  392. package/dist/utils/story-markdown.js.map +1 -0
  393. package/dist/utils/web-search.d.ts +23 -0
  394. package/dist/utils/web-search.d.ts.map +1 -0
  395. package/dist/utils/web-search.js +68 -0
  396. package/dist/utils/web-search.js.map +1 -0
  397. package/genres/cozy.md +43 -0
  398. package/genres/cultivation.md +42 -0
  399. package/genres/dungeon-core.md +40 -0
  400. package/genres/horror.md +51 -0
  401. package/genres/isekai.md +43 -0
  402. package/genres/litrpg.md +43 -0
  403. package/genres/other.md +24 -0
  404. package/genres/progression.md +41 -0
  405. package/genres/romantasy.md +45 -0
  406. package/genres/sci-fi.md +42 -0
  407. package/genres/system-apocalypse.md +40 -0
  408. package/genres/tower-climber.md +41 -0
  409. package/genres/urban.md +53 -0
  410. package/genres/xianxia.md +46 -0
  411. package/genres/xuanhuan.md +64 -0
  412. package/package.json +58 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"architect.js","sourceRoot":"","sources":["../../src/agents/architect.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { LLMClient, LLMMessage, LLMResponse, OnStreamProgress } from "../llm/provider.js";
2
+ import type { Logger } from "../utils/logger.js";
3
+ export interface AgentContext {
4
+ readonly client: LLMClient;
5
+ readonly model: string;
6
+ readonly projectRoot: string;
7
+ readonly bookId?: string;
8
+ readonly logger?: Logger;
9
+ readonly onStreamProgress?: OnStreamProgress;
10
+ }
11
+ export declare abstract class BaseAgent {
12
+ protected readonly ctx: AgentContext;
13
+ constructor(ctx: AgentContext);
14
+ protected get log(): Logger | undefined;
15
+ protected chat(messages: ReadonlyArray<LLMMessage>, options?: {
16
+ readonly temperature?: number;
17
+ readonly maxTokens?: number;
18
+ }): Promise<LLMResponse>;
19
+ /**
20
+ * Chat with web search enabled.
21
+ * OpenAI: uses native web_search_options / web_search_preview.
22
+ * Other providers: searches via Tavily API (TAVILY_API_KEY), injects results into prompt.
23
+ */
24
+ protected chatWithSearch(messages: ReadonlyArray<LLMMessage>, options?: {
25
+ readonly temperature?: number;
26
+ readonly maxTokens?: number;
27
+ }): Promise<LLMResponse>;
28
+ abstract get name(): string;
29
+ }
30
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/agents/base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAG/F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CAC9C;AAED,8BAAsB,SAAS;IAC7B,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC;gBAEzB,GAAG,EAAE,YAAY;IAI7B,SAAS,KAAK,GAAG,uBAEhB;cAEe,IAAI,CAClB,QAAQ,EAAE,aAAa,CAAC,UAAU,CAAC,EACnC,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GACvE,OAAO,CAAC,WAAW,CAAC;IAOvB;;;;OAIG;cACa,cAAc,CAC5B,QAAQ,EAAE,aAAa,CAAC,UAAU,CAAC,EACnC,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GACvE,OAAO,CAAC,WAAW,CAAC;IAuDvB,QAAQ,KAAK,IAAI,IAAI,MAAM,CAAC;CAC7B"}
@@ -0,0 +1,70 @@
1
+ import { chatCompletion } from "../llm/provider.js";
2
+ import { searchWeb, fetchUrl } from "../utils/web-search.js";
3
+ export class BaseAgent {
4
+ ctx;
5
+ constructor(ctx) {
6
+ this.ctx = ctx;
7
+ }
8
+ get log() {
9
+ return this.ctx.logger;
10
+ }
11
+ async chat(messages, options) {
12
+ return chatCompletion(this.ctx.client, this.ctx.model, messages, {
13
+ ...options,
14
+ onStreamProgress: this.ctx.onStreamProgress,
15
+ });
16
+ }
17
+ /**
18
+ * Chat with web search enabled.
19
+ * OpenAI: uses native web_search_options / web_search_preview.
20
+ * Other providers: searches via Tavily API (TAVILY_API_KEY), injects results into prompt.
21
+ */
22
+ async chatWithSearch(messages, options) {
23
+ // OpenAI has native search — use it directly
24
+ if (this.ctx.client.provider === "openai") {
25
+ return chatCompletion(this.ctx.client, this.ctx.model, messages, {
26
+ ...options,
27
+ webSearch: true,
28
+ onStreamProgress: this.ctx.onStreamProgress,
29
+ });
30
+ }
31
+ // Other providers: self-hosted search → inject results into prompt
32
+ const lastUserMsg = [...messages].reverse().find((m) => m.role === "user");
33
+ if (!lastUserMsg) {
34
+ return this.chat(messages, options);
35
+ }
36
+ try {
37
+ // Extract search query from user message (first 200 chars)
38
+ const query = lastUserMsg.content.slice(0, 200);
39
+ this.log?.info(`[search] Searching: ${query.slice(0, 60)}...`);
40
+ const results = await searchWeb(query, 3);
41
+ if (results.length === 0) {
42
+ this.log?.warn("[search] No results found, falling back to regular chat");
43
+ return this.chat(messages, options);
44
+ }
45
+ // Fetch top result for full content
46
+ let fullContent = "";
47
+ try {
48
+ fullContent = await fetchUrl(results[0].url, 4000);
49
+ }
50
+ catch {
51
+ // Fetch failed, use snippets only
52
+ }
53
+ const searchContext = [
54
+ "## Web Search Results\n",
55
+ ...results.map((r, i) => `${i + 1}. **${r.title}**\n ${r.url}\n ${r.snippet}`),
56
+ ...(fullContent ? [`\n## Full Content (Top Result)\n${fullContent}`] : []),
57
+ ].join("\n");
58
+ // Inject search results before the last user message
59
+ const augmentedMessages = messages.map((m) => m === lastUserMsg
60
+ ? { ...m, content: `${searchContext}\n\n---\n\n${m.content}` }
61
+ : m);
62
+ return this.chat(augmentedMessages, options);
63
+ }
64
+ catch (e) {
65
+ this.log?.warn(`[search] Search failed: ${e}, falling back to regular chat`);
66
+ return this.chat(messages, options);
67
+ }
68
+ }
69
+ }
70
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/agents/base.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import { BaseAgent } from "./base.js";
2
+ import type { BookConfig } from "../models/book.js";
3
+ import type { ContextPackage, RuleStack } from "../models/input-governance.js";
4
+ import { type ParsedWriterOutput } from "./writer-parser.js";
5
+ export interface AnalyzeChapterInput {
6
+ readonly book: BookConfig;
7
+ readonly bookDir: string;
8
+ readonly chapterNumber: number;
9
+ readonly chapterContent: string;
10
+ readonly chapterTitle?: string;
11
+ readonly chapterIntent?: string;
12
+ readonly contextPackage?: ContextPackage;
13
+ readonly ruleStack?: RuleStack;
14
+ }
15
+ export type AnalyzeChapterOutput = ParsedWriterOutput;
16
+ export declare class ChapterAnalyzerAgent extends BaseAgent {
17
+ get name(): string;
18
+ analyzeChapter(input: AnalyzeChapterInput): Promise<AnalyzeChapterOutput>;
19
+ private buildSystemPrompt;
20
+ private buildUserPrompt;
21
+ private buildReducedControlBlock;
22
+ private buildMemoryGoal;
23
+ private findOutlineNode;
24
+ private renderSummarySnapshot;
25
+ private escapeTableCell;
26
+ private readFileOrDefault;
27
+ private missingFilePlaceholder;
28
+ private defaultChapterTitle;
29
+ }
30
+ //# sourceMappingURL=chapter-analyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chapter-analyzer.d.ts","sourceRoot":"","sources":["../../src/agents/chapter-analyzer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE/E,OAAO,EAAqB,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAYhF,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC;IACzC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;CAChC;AAED,MAAM,MAAM,oBAAoB,GAAG,kBAAkB,CAAC;AAEtD,qBAAa,oBAAqB,SAAQ,SAAS;IACjD,IAAI,IAAI,IAAI,MAAM,CAEjB;IAEK,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAuK/E,OAAO,CAAC,iBAAiB;IAmMzB,OAAO,CAAC,eAAe;IAkEvB,OAAO,CAAC,wBAAwB;IA4ChC,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,eAAe;IAmBvB,OAAO,CAAC,qBAAqB;IA4C7B,OAAO,CAAC,eAAe;YAIT,iBAAiB;IAQ/B,OAAO,CAAC,sBAAsB;IAI9B,OAAO,CAAC,mBAAmB;CAG5B"}
@@ -0,0 +1,476 @@
1
+ import { BaseAgent } from "./base.js";
2
+ import { readGenreProfile, readBookRules } from "./rules-reader.js";
3
+ import { parseWriterOutput } from "./writer-parser.js";
4
+ import { buildGovernedMemoryEvidenceBlocks } from "../utils/governed-context.js";
5
+ import { buildGovernedCharacterMatrixWorkingSet, buildGovernedHookWorkingSet, } from "../utils/governed-working-set.js";
6
+ import { filterEmotionalArcs, filterSubplots } from "../utils/context-filter.js";
7
+ import { countChapterLength, resolveLengthCountingMode } from "../utils/length-metrics.js";
8
+ import { retrieveMemorySelection } from "../utils/memory-retrieval.js";
9
+ import { readFile } from "node:fs/promises";
10
+ import { join } from "node:path";
11
+ export class ChapterAnalyzerAgent extends BaseAgent {
12
+ get name() {
13
+ return "chapter-analyzer";
14
+ }
15
+ async analyzeChapter(input) {
16
+ const { book, bookDir, chapterNumber, chapterContent, chapterTitle } = input;
17
+ const { profile: genreProfile, body: genreBody } = await readGenreProfile(this.ctx.projectRoot, book.genre);
18
+ const resolvedLanguage = book.language ?? genreProfile.language;
19
+ // Read current truth files (same set as writer.ts)
20
+ const [currentState, ledger, hooks, subplotBoard, emotionalArcs, characterMatrix, storyBible, volumeOutline,] = await Promise.all([
21
+ this.readFileOrDefault(join(bookDir, "story/current_state.md"), resolvedLanguage),
22
+ this.readFileOrDefault(join(bookDir, "story/particle_ledger.md"), resolvedLanguage),
23
+ this.readFileOrDefault(join(bookDir, "story/pending_hooks.md"), resolvedLanguage),
24
+ this.readFileOrDefault(join(bookDir, "story/subplot_board.md"), resolvedLanguage),
25
+ this.readFileOrDefault(join(bookDir, "story/emotional_arcs.md"), resolvedLanguage),
26
+ this.readFileOrDefault(join(bookDir, "story/character_matrix.md"), resolvedLanguage),
27
+ this.readFileOrDefault(join(bookDir, "story/story_bible.md"), resolvedLanguage),
28
+ this.readFileOrDefault(join(bookDir, "story/volume_outline.md"), resolvedLanguage),
29
+ ]);
30
+ const parsedBookRules = await readBookRules(bookDir);
31
+ const bookRulesBody = parsedBookRules?.body ?? "";
32
+ const bookRules = parsedBookRules?.rules;
33
+ const governedMode = Boolean(input.chapterIntent && input.contextPackage && input.ruleStack);
34
+ const memorySelection = await retrieveMemorySelection({
35
+ bookDir,
36
+ chapterNumber,
37
+ goal: this.buildMemoryGoal(chapterTitle, chapterContent),
38
+ outlineNode: this.findOutlineNode(volumeOutline, chapterNumber),
39
+ });
40
+ const chapterSummaries = this.renderSummarySnapshot(memorySelection.summaries, resolvedLanguage);
41
+ const governedMemoryBlocks = input.contextPackage
42
+ ? buildGovernedMemoryEvidenceBlocks(input.contextPackage, resolvedLanguage)
43
+ : undefined;
44
+ const hooksWorkingSet = governedMode && input.contextPackage
45
+ ? buildGovernedHookWorkingSet({
46
+ hooksMarkdown: hooks,
47
+ contextPackage: input.contextPackage,
48
+ chapterIntent: input.chapterIntent,
49
+ chapterNumber,
50
+ language: resolvedLanguage,
51
+ })
52
+ : hooks;
53
+ const subplotWorkingSet = governedMode
54
+ ? filterSubplots(subplotBoard)
55
+ : subplotBoard;
56
+ const emotionalWorkingSet = governedMode
57
+ ? filterEmotionalArcs(emotionalArcs, chapterNumber)
58
+ : emotionalArcs;
59
+ const matrixWorkingSet = governedMode && input.chapterIntent && input.contextPackage
60
+ ? buildGovernedCharacterMatrixWorkingSet({
61
+ matrixMarkdown: characterMatrix,
62
+ chapterIntent: input.chapterIntent,
63
+ contextPackage: input.contextPackage,
64
+ protagonistName: bookRules?.protagonist?.name,
65
+ })
66
+ : characterMatrix;
67
+ const reducedControlBlock = governedMode && input.chapterIntent && input.contextPackage && input.ruleStack
68
+ ? this.buildReducedControlBlock(input.chapterIntent, input.contextPackage, input.ruleStack, resolvedLanguage)
69
+ : "";
70
+ const systemPrompt = this.buildSystemPrompt(book, genreProfile, genreBody, bookRulesBody, resolvedLanguage);
71
+ const userPrompt = this.buildUserPrompt({
72
+ language: resolvedLanguage,
73
+ chapterNumber,
74
+ chapterContent,
75
+ chapterTitle,
76
+ currentState,
77
+ ledger: genreProfile.numericalSystem ? ledger : "",
78
+ hooks: hooksWorkingSet,
79
+ chapterSummaries,
80
+ subplotBoard: subplotWorkingSet,
81
+ emotionalArcs: emotionalWorkingSet,
82
+ characterMatrix: matrixWorkingSet,
83
+ bibleBlock: !governedMode && storyBible !== this.missingFilePlaceholder(resolvedLanguage)
84
+ ? resolvedLanguage === "en"
85
+ ? `\n## Story Bible\n${storyBible}\n`
86
+ : `\n## 世界观设定\n${storyBible}\n`
87
+ : "",
88
+ outlineOrControlBlock: reducedControlBlock || (volumeOutline !== this.missingFilePlaceholder(resolvedLanguage)
89
+ ? resolvedLanguage === "en"
90
+ ? `\n## Volume Outline\n${volumeOutline}\n`
91
+ : `\n## 卷纲\n${volumeOutline}\n`
92
+ : ""),
93
+ hooksBlock: governedMemoryBlocks?.hooksBlock
94
+ ?? (hooksWorkingSet !== this.missingFilePlaceholder(resolvedLanguage)
95
+ ? resolvedLanguage === "en"
96
+ ? `\n## Current Hooks\n${hooksWorkingSet}\n`
97
+ : `\n## 当前伏笔池\n${hooksWorkingSet}\n`
98
+ : ""),
99
+ summariesBlock: governedMemoryBlocks?.summariesBlock
100
+ ?? (chapterSummaries !== this.missingFilePlaceholder(resolvedLanguage)
101
+ ? resolvedLanguage === "en"
102
+ ? `\n## Existing Chapter Summaries\n${chapterSummaries}\n`
103
+ : `\n## 已有章节摘要\n${chapterSummaries}\n`
104
+ : ""),
105
+ volumeSummariesBlock: governedMemoryBlocks?.volumeSummariesBlock ?? "",
106
+ subplotBlock: subplotWorkingSet !== this.missingFilePlaceholder(resolvedLanguage)
107
+ ? resolvedLanguage === "en"
108
+ ? `\n## Current Subplot Board\n${subplotWorkingSet}\n`
109
+ : `\n## 当前支线进度板\n${subplotWorkingSet}\n`
110
+ : "",
111
+ emotionalBlock: emotionalWorkingSet !== this.missingFilePlaceholder(resolvedLanguage)
112
+ ? resolvedLanguage === "en"
113
+ ? `\n## Current Emotional Arcs\n${emotionalWorkingSet}\n`
114
+ : `\n## 当前情感弧线\n${emotionalWorkingSet}\n`
115
+ : "",
116
+ matrixBlock: matrixWorkingSet !== this.missingFilePlaceholder(resolvedLanguage)
117
+ ? resolvedLanguage === "en"
118
+ ? `\n## Current Character Matrix\n${matrixWorkingSet}\n`
119
+ : `\n## 当前角色交互矩阵\n${matrixWorkingSet}\n`
120
+ : "",
121
+ });
122
+ const response = await this.chat([
123
+ { role: "system", content: systemPrompt },
124
+ { role: "user", content: userPrompt },
125
+ ], { maxTokens: 16384, temperature: 0.3 });
126
+ const countingMode = resolveLengthCountingMode(book.language ?? genreProfile.language);
127
+ const output = parseWriterOutput(chapterNumber, response.content, genreProfile, countingMode);
128
+ const canonicalContent = chapterContent;
129
+ const canonicalWordCount = countChapterLength(canonicalContent, countingMode);
130
+ // If LLM didn't return a title, use the one from input or derive from chapter number
131
+ if (chapterTitle
132
+ && (output.title === this.defaultChapterTitle(chapterNumber, resolvedLanguage)
133
+ || output.title === `第${chapterNumber}章`)) {
134
+ return {
135
+ ...output,
136
+ title: chapterTitle,
137
+ content: canonicalContent,
138
+ wordCount: canonicalWordCount,
139
+ };
140
+ }
141
+ return {
142
+ ...output,
143
+ content: canonicalContent,
144
+ wordCount: canonicalWordCount,
145
+ };
146
+ }
147
+ buildSystemPrompt(book, genreProfile, genreBody, bookRulesBody, language) {
148
+ if (language === "en") {
149
+ const numericalBlock = genreProfile.numericalSystem
150
+ ? "\n- This genre tracks numerical/resources systems; UPDATED_LEDGER must capture every resource change shown in the chapter."
151
+ : "\n- This genre has no numerical system; leave UPDATED_LEDGER empty.";
152
+ return `【LANGUAGE OVERRIDE】ALL output MUST be in English. The === TAG === markers remain unchanged.
153
+
154
+ You are a fiction continuity analyst. Analyze a finished chapter, extract every state change, and update the tracking files.
155
+
156
+ ## Working Mode
157
+
158
+ You are not writing new prose. You are reading completed chapter text and updating the book's truth files.
159
+ 1. Read the chapter carefully and extract all important facts.
160
+ 2. Update the existing tracking files incrementally rather than rebuilding them from scratch.
161
+ 3. Keep the output contract identical to the writer pipeline.
162
+
163
+ ## What To Extract
164
+
165
+ - Character entrances, exits, injuries, breakthroughs, deaths, and other status changes
166
+ - Location movement and scene transitions
167
+ - Item or resource gains and losses
168
+ - Hook setup, advancement, and payoff
169
+ - Emotional arc movement
170
+ - Subplot progress
171
+ - Relationship changes and information-boundary changes
172
+
173
+ ## Book Information
174
+
175
+ - Title: ${book.title}
176
+ - Genre: ${genreProfile.name} (${book.genre})
177
+ - Platform: ${book.platform}
178
+ ${numericalBlock}
179
+
180
+ ## Genre Guidance
181
+
182
+ ${genreBody}
183
+
184
+ ${bookRulesBody ? `## Book Rules\n\n${bookRulesBody}` : ""}
185
+
186
+ ## Output Format
187
+
188
+ Use === TAG === delimiters exactly as shown:
189
+
190
+ === CHAPTER_TITLE ===
191
+ (Extract or infer the chapter title. Output title text only.)
192
+
193
+ === CHAPTER_CONTENT ===
194
+ (Repeat the original chapter content exactly. Do not rewrite.)
195
+
196
+ === PRE_WRITE_CHECK ===
197
+ (Leave empty in analysis mode.)
198
+
199
+ === POST_SETTLEMENT ===
200
+ (Leave empty in analysis mode.)
201
+
202
+ === UPDATED_STATE ===
203
+ Updated state card as a Markdown table reflecting the end-of-chapter state:
204
+ | Field | Value |
205
+ | --- | --- |
206
+ | Current Chapter | {chapter_number} |
207
+ | Current Location | ... |
208
+ | Protagonist State | ... |
209
+ | Current Goal | ... |
210
+ | Current Constraint | ... |
211
+ | Current Alliances | ... |
212
+ | Current Conflict | ... |
213
+
214
+ === UPDATED_LEDGER ===
215
+ (If the genre has a numerical system: output the fully updated resource ledger table. Otherwise leave empty.)
216
+
217
+ === UPDATED_HOOKS ===
218
+ Updated hooks pool as a Markdown table with the latest status of every known hook:
219
+ | hook_id | start_chapter | type | status | last_advanced_chapter | expected_payoff | payoff_timing | notes |
220
+
221
+ === CHAPTER_SUMMARY ===
222
+ Single Markdown table row:
223
+ | Chapter | Title | Characters | Key Events | State Changes | Hook Activity | Mood | Chapter Type |
224
+
225
+ === UPDATED_SUBPLOTS ===
226
+ Updated subplot board (Markdown table)
227
+
228
+ === UPDATED_EMOTIONAL_ARCS ===
229
+ Updated emotional arcs (Markdown table)
230
+
231
+ === UPDATED_CHARACTER_MATRIX ===
232
+ Updated character interaction matrix (Markdown table)
233
+
234
+ ## Rules
235
+
236
+ 1. UPDATED_STATE and UPDATED_HOOKS must be incremental updates based on the current tracking files.
237
+ 2. Every factual change in the chapter must appear in the corresponding tracking file.
238
+ 3. Do not miss resource changes, movement, relationship changes, or information changes.
239
+ 4. Information boundaries in the character matrix must stay exact: each character only knows what they directly witnessed or learned.`;
240
+ }
241
+ const numericalBlock = genreProfile.numericalSystem
242
+ ? `\n- 本题材有数值/资源体系,你必须在 UPDATED_LEDGER 中追踪正文中出现的所有资源变动`
243
+ : `\n- 本题材无数值系统,UPDATED_LEDGER 留空`;
244
+ return `你是小说连续性分析师。你的任务是分析一章已完成的小说正文,从中提取所有状态变化并更新追踪文件。
245
+
246
+ ## 工作模式
247
+
248
+ 你不是在写作,而是在分析已有正文。你需要:
249
+ 1. 仔细阅读正文,提取所有关键信息
250
+ 2. 基于"当前追踪文件"做增量更新
251
+ 3. 输出格式与写作模块完全一致
252
+
253
+ ## 分析维度
254
+
255
+ 从正文中提取以下信息:
256
+ - 角色出场、退场、状态变化(受伤/突破/死亡等)
257
+ - 位置移动、场景转换
258
+ - 物品/资源的获得与消耗
259
+ - 伏笔的埋设、推进、回收
260
+ - 情感弧线变化
261
+ - 支线进展
262
+ - 角色间关系变化、新的信息边界
263
+
264
+ ## 书籍信息
265
+
266
+ - 标题:${book.title}
267
+ - 题材:${genreProfile.name}(${book.genre})
268
+ - 平台:${book.platform}
269
+ ${numericalBlock}
270
+
271
+ ## 题材特征
272
+
273
+ ${genreBody}
274
+
275
+ ${bookRulesBody ? `## 本书规则\n\n${bookRulesBody}` : ""}
276
+
277
+ ## 输出格式(必须严格遵循)
278
+
279
+ 使用 === TAG === 分隔各部分,与写作模块完全一致:
280
+
281
+ === CHAPTER_TITLE ===
282
+ (从正文标题行提取或推断章节标题,只输出标题文字)
283
+
284
+ === CHAPTER_CONTENT ===
285
+ (原样输出正文内容,不做任何修改)
286
+
287
+ === PRE_WRITE_CHECK ===
288
+ (留空,分析模式不需要写作自检)
289
+
290
+ === POST_SETTLEMENT ===
291
+ (留空,分析模式不需要写后结算)
292
+
293
+ === UPDATED_STATE ===
294
+ 更新后的状态卡(Markdown表格),反映本章结束时的最新状态:
295
+ | 字段 | 值 |
296
+ |------|-----|
297
+ | 当前章节 | {章节号} |
298
+ | 当前位置 | ... |
299
+ | 主角状态 | ... |
300
+ | 当前目标 | ... |
301
+ | 当前限制 | ... |
302
+ | 当前敌我 | ... |
303
+ | 当前冲突 | ... |
304
+
305
+ === UPDATED_LEDGER ===
306
+ (如有数值系统:更新后的完整资源账本表格;无则留空)
307
+
308
+ === UPDATED_HOOKS ===
309
+ 更新后的伏笔池(Markdown表格),包含所有已知伏笔的最新状态:
310
+ | hook_id | 起始章节 | 类型 | 状态 | 最近推进 | 预期回收 | 回收节奏 | 备注 |
311
+
312
+ === CHAPTER_SUMMARY ===
313
+ 本章摘要(Markdown表格行):
314
+ | 章节 | 标题 | 出场人物 | 关键事件 | 状态变化 | 伏笔动态 | 情绪基调 | 章节类型 |
315
+
316
+ === UPDATED_SUBPLOTS ===
317
+ 更新后的支线进度板(Markdown表格)
318
+
319
+ === UPDATED_EMOTIONAL_ARCS ===
320
+ 更新后的情感弧线(Markdown表格)
321
+
322
+ === UPDATED_CHARACTER_MATRIX ===
323
+ 更新后的角色交互矩阵(Markdown表格)
324
+
325
+ ## 关键规则
326
+
327
+ 1. 状态卡和伏笔池必须基于"当前追踪文件"做增量更新,不是从零开始
328
+ 2. 正文中的每一个事实性变化都必须反映在对应的追踪文件中
329
+ 3. 不要遗漏细节:数值变化、位置变化、关系变化、信息变化都要记录
330
+ 4. 角色交互矩阵中的"信息边界"要准确——角色只知道他在场时发生的事`;
331
+ }
332
+ buildUserPrompt(params) {
333
+ if (params.language === "en") {
334
+ const titleLine = params.chapterTitle
335
+ ? `Chapter Title: ${params.chapterTitle}\n`
336
+ : "";
337
+ const ledgerBlock = params.ledger
338
+ ? `\n## Current Resource Ledger\n${params.ledger}\n`
339
+ : "";
340
+ return `Analyze chapter ${params.chapterNumber} and update all tracking files.
341
+ ${titleLine}
342
+ ## Chapter Content
343
+
344
+ ${params.chapterContent}
345
+
346
+ ## Current State
347
+ ${params.currentState}
348
+ ${ledgerBlock}
349
+ ${params.hooksBlock}${params.volumeSummariesBlock}${params.subplotBlock}${params.emotionalBlock}${params.matrixBlock}${params.summariesBlock}${params.outlineOrControlBlock}${params.bibleBlock}
350
+
351
+ Please return the result strictly in the === TAG === format.`;
352
+ }
353
+ const titleLine = params.chapterTitle
354
+ ? `章节标题:${params.chapterTitle}\n`
355
+ : "";
356
+ const ledgerBlock = params.ledger
357
+ ? `\n## 当前资源账本\n${params.ledger}\n`
358
+ : "";
359
+ return `请分析第${params.chapterNumber}章正文,更新所有追踪文件。
360
+ ${titleLine}
361
+ ## 正文内容
362
+
363
+ ${params.chapterContent}
364
+
365
+ ## 当前状态卡
366
+ ${params.currentState}
367
+ ${ledgerBlock}
368
+ ${params.hooksBlock}${params.volumeSummariesBlock}${params.subplotBlock}${params.emotionalBlock}${params.matrixBlock}${params.summariesBlock}${params.outlineOrControlBlock}${params.bibleBlock}
369
+
370
+ 请严格按照 === TAG === 格式输出分析结果。`;
371
+ }
372
+ buildReducedControlBlock(chapterIntent, contextPackage, ruleStack, language) {
373
+ const selectedContext = contextPackage.selectedContext
374
+ .map((entry) => `- ${entry.source}: ${entry.reason}${entry.excerpt ? ` | ${entry.excerpt}` : ""}`)
375
+ .join("\n");
376
+ const overrides = ruleStack.activeOverrides.length > 0
377
+ ? ruleStack.activeOverrides
378
+ .map((override) => `- ${override.from} -> ${override.to}: ${override.reason} (${override.target})`)
379
+ .join("\n")
380
+ : "- none";
381
+ return language === "en"
382
+ ? `\n## Chapter Control Inputs (compiled by Planner/Composer)
383
+ ${chapterIntent}
384
+
385
+ ### Selected Context
386
+ ${selectedContext || "- none"}
387
+
388
+ ### Rule Stack
389
+ - Hard guardrails: ${ruleStack.sections.hard.join(", ") || "(none)"}
390
+ - Soft constraints: ${ruleStack.sections.soft.join(", ") || "(none)"}
391
+ - Diagnostic rules: ${ruleStack.sections.diagnostic.join(", ") || "(none)"}
392
+
393
+ ### Active Overrides
394
+ ${overrides}\n`
395
+ : `\n## 本章控制输入(由 Planner/Composer 编译)
396
+ ${chapterIntent}
397
+
398
+ ### 已选上下文
399
+ ${selectedContext || "- none"}
400
+
401
+ ### 规则栈
402
+ - 硬护栏:${ruleStack.sections.hard.join("、") || "(无)"}
403
+ - 软约束:${ruleStack.sections.soft.join("、") || "(无)"}
404
+ - 诊断规则:${ruleStack.sections.diagnostic.join("、") || "(无)"}
405
+
406
+ ### 当前覆盖
407
+ ${overrides}\n`;
408
+ }
409
+ buildMemoryGoal(chapterTitle, chapterContent) {
410
+ return [chapterTitle ?? "", chapterContent.slice(0, 1500)]
411
+ .filter((part) => part.trim().length > 0)
412
+ .join("\n\n");
413
+ }
414
+ findOutlineNode(volumeOutline, chapterNumber) {
415
+ if (!volumeOutline || volumeOutline === this.missingFilePlaceholder("zh") || volumeOutline === this.missingFilePlaceholder("en")) {
416
+ return undefined;
417
+ }
418
+ const lines = volumeOutline.split("\n").map((line) => line.trim()).filter(Boolean);
419
+ const chapterPatterns = [
420
+ new RegExp(`^#+\\s*Chapter\\s*${chapterNumber}\\b`, "i"),
421
+ new RegExp(`^#+\\s*第\\s*${chapterNumber}\\s*章`),
422
+ ];
423
+ const heading = lines.find((line) => chapterPatterns.some((pattern) => pattern.test(line)));
424
+ if (!heading)
425
+ return undefined;
426
+ const headingIndex = lines.indexOf(heading);
427
+ const nextLine = lines[headingIndex + 1];
428
+ return nextLine && !nextLine.startsWith("#") ? nextLine : heading.replace(/^#+\s*/, "");
429
+ }
430
+ renderSummarySnapshot(summaries, language) {
431
+ if (summaries.length === 0) {
432
+ return this.missingFilePlaceholder(language);
433
+ }
434
+ const header = language === "en"
435
+ ? [
436
+ "| Chapter | Title | Characters | Key Events | State Changes | Hook Activity | Mood | Chapter Type |",
437
+ "| --- | --- | --- | --- | --- | --- | --- | --- |",
438
+ ]
439
+ : [
440
+ "| 章节 | 标题 | 出场人物 | 关键事件 | 状态变化 | 伏笔动态 | 情绪基调 | 章节类型 |",
441
+ "| --- | --- | --- | --- | --- | --- | --- | --- |",
442
+ ];
443
+ const rows = summaries.map((summary) => [
444
+ summary.chapter,
445
+ summary.title,
446
+ summary.characters,
447
+ summary.events,
448
+ summary.stateChanges,
449
+ summary.hookActivity,
450
+ summary.mood,
451
+ summary.chapterType,
452
+ ].map((cell) => this.escapeTableCell(String(cell))).join(" | "));
453
+ return [
454
+ ...header,
455
+ ...rows.map((row) => `| ${row} |`),
456
+ ].join("\n");
457
+ }
458
+ escapeTableCell(value) {
459
+ return value.replace(/\|/g, "\\|").replace(/\n/g, "<br>");
460
+ }
461
+ async readFileOrDefault(path, language) {
462
+ try {
463
+ return await readFile(path, "utf-8");
464
+ }
465
+ catch {
466
+ return this.missingFilePlaceholder(language);
467
+ }
468
+ }
469
+ missingFilePlaceholder(language) {
470
+ return language === "en" ? "(file not created yet)" : "(文件尚未创建)";
471
+ }
472
+ defaultChapterTitle(chapterNumber, language) {
473
+ return language === "en" ? `Chapter ${chapterNumber}` : `第${chapterNumber}章`;
474
+ }
475
+ }
476
+ //# sourceMappingURL=chapter-analyzer.js.map