@actalk/inkos-core 1.4.1 → 1.5.0-canary.47.1

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 (262) hide show
  1. package/dist/agent/agent-session.d.ts +15 -0
  2. package/dist/agent/agent-session.d.ts.map +1 -1
  3. package/dist/agent/agent-session.js +256 -26
  4. package/dist/agent/agent-session.js.map +1 -1
  5. package/dist/agent/agent-system-prompt.d.ts +8 -1
  6. package/dist/agent/agent-system-prompt.d.ts.map +1 -1
  7. package/dist/agent/agent-system-prompt.js +382 -176
  8. package/dist/agent/agent-system-prompt.js.map +1 -1
  9. package/dist/agent/agent-tools.d.ts +156 -19
  10. package/dist/agent/agent-tools.d.ts.map +1 -1
  11. package/dist/agent/agent-tools.js +980 -46
  12. package/dist/agent/agent-tools.js.map +1 -1
  13. package/dist/agent/context-transform.d.ts +4 -1
  14. package/dist/agent/context-transform.d.ts.map +1 -1
  15. package/dist/agent/context-transform.js +104 -9
  16. package/dist/agent/context-transform.js.map +1 -1
  17. package/dist/agent/index.d.ts +1 -1
  18. package/dist/agent/index.d.ts.map +1 -1
  19. package/dist/agent/index.js +1 -1
  20. package/dist/agent/index.js.map +1 -1
  21. package/dist/agents/architect.d.ts +11 -1
  22. package/dist/agents/architect.d.ts.map +1 -1
  23. package/dist/agents/architect.js +242 -114
  24. package/dist/agents/architect.js.map +1 -1
  25. package/dist/agents/chapter-analyzer.js +1 -1
  26. package/dist/agents/chapter-analyzer.js.map +1 -1
  27. package/dist/agents/composer.d.ts +36 -0
  28. package/dist/agents/composer.d.ts.map +1 -1
  29. package/dist/agents/composer.js +503 -20
  30. package/dist/agents/composer.js.map +1 -1
  31. package/dist/agents/continuity.d.ts +3 -0
  32. package/dist/agents/continuity.d.ts.map +1 -1
  33. package/dist/agents/continuity.js +28 -14
  34. package/dist/agents/continuity.js.map +1 -1
  35. package/dist/agents/en-prompt-sections.d.ts.map +1 -1
  36. package/dist/agents/en-prompt-sections.js +15 -1
  37. package/dist/agents/en-prompt-sections.js.map +1 -1
  38. package/dist/agents/fanfic-canon-importer.d.ts +1 -0
  39. package/dist/agents/fanfic-canon-importer.d.ts.map +1 -1
  40. package/dist/agents/fanfic-canon-importer.js +53 -6
  41. package/dist/agents/fanfic-canon-importer.js.map +1 -1
  42. package/dist/agents/foundation-reviewer.d.ts +1 -0
  43. package/dist/agents/foundation-reviewer.d.ts.map +1 -1
  44. package/dist/agents/foundation-reviewer.js +17 -12
  45. package/dist/agents/foundation-reviewer.js.map +1 -1
  46. package/dist/agents/length-normalizer.d.ts +1 -0
  47. package/dist/agents/length-normalizer.d.ts.map +1 -1
  48. package/dist/agents/length-normalizer.js +16 -3
  49. package/dist/agents/length-normalizer.js.map +1 -1
  50. package/dist/agents/planner-prompts.d.ts +7 -7
  51. package/dist/agents/planner-prompts.d.ts.map +1 -1
  52. package/dist/agents/planner-prompts.js +29 -29
  53. package/dist/agents/planner-prompts.js.map +1 -1
  54. package/dist/agents/planner.d.ts +6 -5
  55. package/dist/agents/planner.d.ts.map +1 -1
  56. package/dist/agents/planner.js +90 -6
  57. package/dist/agents/planner.js.map +1 -1
  58. package/dist/agents/post-write-validator.d.ts.map +1 -1
  59. package/dist/agents/post-write-validator.js +49 -0
  60. package/dist/agents/post-write-validator.js.map +1 -1
  61. package/dist/agents/reviser.js +10 -0
  62. package/dist/agents/reviser.js.map +1 -1
  63. package/dist/agents/rules-reader.d.ts +6 -14
  64. package/dist/agents/rules-reader.d.ts.map +1 -1
  65. package/dist/agents/rules-reader.js +15 -28
  66. package/dist/agents/rules-reader.js.map +1 -1
  67. package/dist/agents/short-fiction.d.ts +4 -0
  68. package/dist/agents/short-fiction.d.ts.map +1 -1
  69. package/dist/agents/short-fiction.js +51 -8
  70. package/dist/agents/short-fiction.js.map +1 -1
  71. package/dist/agents/state-validator.d.ts +0 -2
  72. package/dist/agents/state-validator.d.ts.map +1 -1
  73. package/dist/agents/state-validator.js +4 -16
  74. package/dist/agents/state-validator.js.map +1 -1
  75. package/dist/agents/style-analyzer.d.ts +1 -1
  76. package/dist/agents/style-analyzer.d.ts.map +1 -1
  77. package/dist/agents/style-analyzer.js +34 -17
  78. package/dist/agents/style-analyzer.js.map +1 -1
  79. package/dist/agents/writer-prompts.d.ts.map +1 -1
  80. package/dist/agents/writer-prompts.js +160 -12
  81. package/dist/agents/writer-prompts.js.map +1 -1
  82. package/dist/agents/writer.d.ts.map +1 -1
  83. package/dist/agents/writer.js +31 -9
  84. package/dist/agents/writer.js.map +1 -1
  85. package/dist/index.d.ts +18 -7
  86. package/dist/index.d.ts.map +1 -1
  87. package/dist/index.js +17 -7
  88. package/dist/index.js.map +1 -1
  89. package/dist/interaction/action-envelope.d.ts +261 -0
  90. package/dist/interaction/action-envelope.d.ts.map +1 -0
  91. package/dist/interaction/action-envelope.js +102 -0
  92. package/dist/interaction/action-envelope.js.map +1 -0
  93. package/dist/interaction/book-session-store.d.ts +6 -2
  94. package/dist/interaction/book-session-store.d.ts.map +1 -1
  95. package/dist/interaction/book-session-store.js +21 -3
  96. package/dist/interaction/book-session-store.js.map +1 -1
  97. package/dist/interaction/edit-controller.d.ts +5 -0
  98. package/dist/interaction/edit-controller.d.ts.map +1 -1
  99. package/dist/interaction/edit-controller.js +123 -26
  100. package/dist/interaction/edit-controller.js.map +1 -1
  101. package/dist/interaction/events.d.ts +4 -4
  102. package/dist/interaction/intents.d.ts +9 -6
  103. package/dist/interaction/intents.d.ts.map +1 -1
  104. package/dist/interaction/intents.js +2 -1
  105. package/dist/interaction/intents.js.map +1 -1
  106. package/dist/interaction/project-control.d.ts +3 -43
  107. package/dist/interaction/project-control.d.ts.map +1 -1
  108. package/dist/interaction/project-control.js +1 -53
  109. package/dist/interaction/project-control.js.map +1 -1
  110. package/dist/interaction/project-tools.d.ts +1 -1
  111. package/dist/interaction/project-tools.d.ts.map +1 -1
  112. package/dist/interaction/project-tools.js +41 -185
  113. package/dist/interaction/project-tools.js.map +1 -1
  114. package/dist/interaction/runtime.d.ts +1 -1
  115. package/dist/interaction/runtime.d.ts.map +1 -1
  116. package/dist/interaction/runtime.js +49 -75
  117. package/dist/interaction/runtime.js.map +1 -1
  118. package/dist/interaction/session-transcript-legacy.d.ts.map +1 -1
  119. package/dist/interaction/session-transcript-legacy.js +2 -0
  120. package/dist/interaction/session-transcript-legacy.js.map +1 -1
  121. package/dist/interaction/session-transcript-restore.d.ts +4 -3
  122. package/dist/interaction/session-transcript-restore.d.ts.map +1 -1
  123. package/dist/interaction/session-transcript-restore.js +234 -34
  124. package/dist/interaction/session-transcript-restore.js.map +1 -1
  125. package/dist/interaction/session-transcript-schema.d.ts +45 -12
  126. package/dist/interaction/session-transcript-schema.d.ts.map +1 -1
  127. package/dist/interaction/session-transcript-schema.js +6 -0
  128. package/dist/interaction/session-transcript-schema.js.map +1 -1
  129. package/dist/interaction/session-transcript.d.ts +8 -1
  130. package/dist/interaction/session-transcript.d.ts.map +1 -1
  131. package/dist/interaction/session-transcript.js +13 -1
  132. package/dist/interaction/session-transcript.js.map +1 -1
  133. package/dist/interaction/session.d.ts +78 -66
  134. package/dist/interaction/session.d.ts.map +1 -1
  135. package/dist/interaction/session.js +10 -2
  136. package/dist/interaction/session.js.map +1 -1
  137. package/dist/llm/provider.d.ts +32 -34
  138. package/dist/llm/provider.d.ts.map +1 -1
  139. package/dist/llm/provider.js +144 -127
  140. package/dist/llm/provider.js.map +1 -1
  141. package/dist/models/book-rules.d.ts +6 -4
  142. package/dist/models/book-rules.d.ts.map +1 -1
  143. package/dist/models/book-rules.js +187 -8
  144. package/dist/models/book-rules.js.map +1 -1
  145. package/dist/models/context-compression.d.ts +13 -0
  146. package/dist/models/context-compression.d.ts.map +1 -0
  147. package/dist/models/context-compression.js +2 -0
  148. package/dist/models/context-compression.js.map +1 -0
  149. package/dist/models/input-governance.d.ts +53 -12
  150. package/dist/models/input-governance.d.ts.map +1 -1
  151. package/dist/models/input-governance.js +16 -0
  152. package/dist/models/input-governance.js.map +1 -1
  153. package/dist/models/play.d.ts +530 -0
  154. package/dist/models/play.d.ts.map +1 -0
  155. package/dist/models/play.js +318 -0
  156. package/dist/models/play.js.map +1 -0
  157. package/dist/models/project.d.ts +8 -0
  158. package/dist/models/project.d.ts.map +1 -1
  159. package/dist/models/project.js +1 -0
  160. package/dist/models/project.js.map +1 -1
  161. package/dist/pipeline/chapter-review-cycle.d.ts.map +1 -1
  162. package/dist/pipeline/chapter-review-cycle.js +29 -3
  163. package/dist/pipeline/chapter-review-cycle.js.map +1 -1
  164. package/dist/pipeline/persisted-governed-plan.d.ts.map +1 -1
  165. package/dist/pipeline/persisted-governed-plan.js +98 -49
  166. package/dist/pipeline/persisted-governed-plan.js.map +1 -1
  167. package/dist/pipeline/runner.d.ts +31 -0
  168. package/dist/pipeline/runner.d.ts.map +1 -1
  169. package/dist/pipeline/runner.js +212 -68
  170. package/dist/pipeline/runner.js.map +1 -1
  171. package/dist/pipeline/short-fiction-runner.d.ts +14 -0
  172. package/dist/pipeline/short-fiction-runner.d.ts.map +1 -1
  173. package/dist/pipeline/short-fiction-runner.js +242 -94
  174. package/dist/pipeline/short-fiction-runner.js.map +1 -1
  175. package/dist/play/play-agents.d.ts +71 -0
  176. package/dist/play/play-agents.d.ts.map +1 -0
  177. package/dist/play/play-agents.js +511 -0
  178. package/dist/play/play-agents.js.map +1 -0
  179. package/dist/play/play-db-factory.d.ts +9 -0
  180. package/dist/play/play-db-factory.d.ts.map +1 -0
  181. package/dist/play/play-db-factory.js +18 -0
  182. package/dist/play/play-db-factory.js.map +1 -0
  183. package/dist/play/play-db.d.ts +22 -0
  184. package/dist/play/play-db.d.ts.map +1 -0
  185. package/dist/play/play-db.js +248 -0
  186. package/dist/play/play-db.js.map +1 -0
  187. package/dist/play/play-file-db.d.ts +32 -0
  188. package/dist/play/play-file-db.d.ts.map +1 -0
  189. package/dist/play/play-file-db.js +156 -0
  190. package/dist/play/play-file-db.js.map +1 -0
  191. package/dist/play/play-image.d.ts +58 -0
  192. package/dist/play/play-image.d.ts.map +1 -0
  193. package/dist/play/play-image.js +142 -0
  194. package/dist/play/play-image.js.map +1 -0
  195. package/dist/play/play-reducer.d.ts +31 -0
  196. package/dist/play/play-reducer.d.ts.map +1 -0
  197. package/dist/play/play-reducer.js +261 -0
  198. package/dist/play/play-reducer.js.map +1 -0
  199. package/dist/play/play-runner.d.ts +102 -0
  200. package/dist/play/play-runner.d.ts.map +1 -0
  201. package/dist/play/play-runner.js +465 -0
  202. package/dist/play/play-runner.js.map +1 -0
  203. package/dist/play/play-store.d.ts +112 -0
  204. package/dist/play/play-store.d.ts.map +1 -0
  205. package/dist/play/play-store.js +311 -0
  206. package/dist/play/play-store.js.map +1 -0
  207. package/dist/prompts/short-fiction.d.ts +5 -0
  208. package/dist/prompts/short-fiction.d.ts.map +1 -1
  209. package/dist/prompts/short-fiction.js +46 -22
  210. package/dist/prompts/short-fiction.js.map +1 -1
  211. package/dist/state/state-bootstrap.d.ts.map +1 -1
  212. package/dist/state/state-bootstrap.js +12 -25
  213. package/dist/state/state-bootstrap.js.map +1 -1
  214. package/dist/state/state-reducer.js +31 -22
  215. package/dist/state/state-reducer.js.map +1 -1
  216. package/dist/utils/book-eval.d.ts +35 -0
  217. package/dist/utils/book-eval.d.ts.map +1 -0
  218. package/dist/utils/book-eval.js +116 -0
  219. package/dist/utils/book-eval.js.map +1 -0
  220. package/dist/utils/chapter-memo-parser.d.ts +10 -7
  221. package/dist/utils/chapter-memo-parser.d.ts.map +1 -1
  222. package/dist/utils/chapter-memo-parser.js +86 -43
  223. package/dist/utils/chapter-memo-parser.js.map +1 -1
  224. package/dist/utils/context-assembly.d.ts +2 -0
  225. package/dist/utils/context-assembly.d.ts.map +1 -1
  226. package/dist/utils/context-assembly.js +38 -1
  227. package/dist/utils/context-assembly.js.map +1 -1
  228. package/dist/utils/hook-health.d.ts.map +1 -1
  229. package/dist/utils/hook-health.js +5 -2
  230. package/dist/utils/hook-health.js.map +1 -1
  231. package/dist/utils/hook-ledger-validator.d.ts +1 -1
  232. package/dist/utils/hook-ledger-validator.d.ts.map +1 -1
  233. package/dist/utils/hook-ledger-validator.js +5 -5
  234. package/dist/utils/hook-ledger-validator.js.map +1 -1
  235. package/dist/utils/hook-lifecycle.d.ts +1 -0
  236. package/dist/utils/hook-lifecycle.d.ts.map +1 -1
  237. package/dist/utils/hook-lifecycle.js +10 -3
  238. package/dist/utils/hook-lifecycle.js.map +1 -1
  239. package/dist/utils/language.d.ts +10 -0
  240. package/dist/utils/language.d.ts.map +1 -0
  241. package/dist/utils/language.js +18 -0
  242. package/dist/utils/language.js.map +1 -0
  243. package/dist/utils/length-metrics.d.ts +3 -0
  244. package/dist/utils/length-metrics.d.ts.map +1 -1
  245. package/dist/utils/length-metrics.js +8 -0
  246. package/dist/utils/length-metrics.js.map +1 -1
  247. package/dist/utils/memory-retrieval.d.ts.map +1 -1
  248. package/dist/utils/memory-retrieval.js +19 -15
  249. package/dist/utils/memory-retrieval.js.map +1 -1
  250. package/dist/utils/outline-paths.d.ts +12 -0
  251. package/dist/utils/outline-paths.d.ts.map +1 -1
  252. package/dist/utils/outline-paths.js +68 -0
  253. package/dist/utils/outline-paths.js.map +1 -1
  254. package/package.json +1 -1
  255. package/dist/interaction/nl-router.d.ts +0 -8
  256. package/dist/interaction/nl-router.d.ts.map +0 -1
  257. package/dist/interaction/nl-router.js +0 -218
  258. package/dist/interaction/nl-router.js.map +0 -1
  259. package/dist/pipeline/agent.d.ts +0 -15
  260. package/dist/pipeline/agent.d.ts.map +0 -1
  261. package/dist/pipeline/agent.js +0 -597
  262. package/dist/pipeline/agent.js.map +0 -1
@@ -1,7 +1,8 @@
1
1
  import { mkdir, writeFile } from "node:fs/promises";
2
2
  import { dirname, join } from "node:path";
3
- import { chatCompletion, chatWithTools } from "../index.js";
3
+ import { chatCompletion } from "../index.js";
4
4
  import { executeEditTransaction } from "./edit-controller.js";
5
+ import { defaultChapterLength } from "../utils/length-metrics.js";
5
6
  import { writeExportArtifact } from "./export-artifact.js";
6
7
  import { safeChildPath } from "../utils/path-safety.js";
7
8
  import { deriveBookIdFromTitle } from "../utils/book-id.js";
@@ -58,7 +59,7 @@ function buildBookConfig(input) {
58
59
  genre: input.genre ?? "other",
59
60
  status: "outlining",
60
61
  targetChapters: input.targetChapters ?? 200,
61
- chapterWordCount: input.chapterWordCount ?? 3000,
62
+ chapterWordCount: input.chapterWordCount ?? defaultChapterLength(input.language === "en" ? "en" : "zh"),
62
63
  ...(input.language ? { language: input.language } : {}),
63
64
  createdAt: now,
64
65
  updatedAt: now,
@@ -80,6 +81,15 @@ function buildCreationExternalContext(input) {
80
81
  }
81
82
  return sections.join("\n\n");
82
83
  }
84
+ async function withBookMutationLock(state, bookId, task) {
85
+ const releaseLock = await state.acquireBookLock(bookId);
86
+ try {
87
+ return await task();
88
+ }
89
+ finally {
90
+ await releaseLock();
91
+ }
92
+ }
83
93
  export function buildChapterFileLookup(files) {
84
94
  const lookup = new Map();
85
95
  for (const file of files) {
@@ -233,183 +243,10 @@ async function withPipelineInteractionTelemetry(pipeline, bookId, executor) {
233
243
  }
234
244
  }
235
245
  }
236
- const CREATE_BOOK_TOOL = {
237
- name: "create_book",
238
- description: "根据用户描述生成建书参数。系统会将参数渲染为可编辑表单,用户确认后建书。",
239
- parameters: {
240
- type: "object",
241
- properties: {
242
- title: { type: "string", description: "书名" },
243
- genre: { type: "string", description: "题材标识,如 xuanhuan, urban, romance, scifi, mystery" },
244
- platform: { type: "string", enum: ["tomato", "qidian", "feilu", "other"], description: "发布平台" },
245
- targetChapters: { type: "number", description: "目标章数,默认 200" },
246
- chapterWordCount: { type: "number", description: "每章字数,默认 3000" },
247
- language: { type: "string", enum: ["zh", "en"], description: "写作语言,默认 zh" },
248
- brief: { type: "string", description: "创意简述,会传给 Architect 智能体生成完整的世界观、主角、冲突等 foundation 文件。把用户提到的所有创意要素都写进这里。" },
249
- },
250
- required: ["title", "genre", "platform", "brief"],
251
- },
252
- };
253
- const BOOK_DRAFT_SYSTEM_PROMPT = [
254
- "你是 InkOS 的建书助手。用户会描述想写的书,你需要调用 create_book 工具来生成建书参数。",
255
- "",
256
- "规则:",
257
- "1. 从用户描述中推断所有字段,大胆预填合理默认值。",
258
- "2. brief 字段要详细——它会传给 Architect 智能体生成完整的世界观、主角、冲突等 foundation 文件。把用户提到的所有创意要素都写进 brief。",
259
- "3. 如果用户后续要求修改某些字段,重新调用 create_book 工具,只更新被提到的字段,其余保持不变。",
260
- "4. 不要只回复文字讨论——必须调用 create_book 工具输出结构化参数。",
261
- ].join("\n");
262
- /** Map directive field keys to BookCreationDraft property names. */
263
- function applyFieldsToDraft(existing, fields, concept) {
264
- const draft = {
265
- concept,
266
- missingFields: [],
267
- readyToCreate: false,
268
- ...(existing ?? {}),
269
- };
270
- for (const [key, value] of Object.entries(fields)) {
271
- if (!value)
272
- continue;
273
- switch (key) {
274
- case "title":
275
- draft.title = value;
276
- break;
277
- case "genre":
278
- draft.genre = value;
279
- break;
280
- case "platform":
281
- draft.platform = value;
282
- break;
283
- case "language":
284
- if (value === "zh" || value === "en")
285
- draft.language = value;
286
- break;
287
- case "targetChapters": {
288
- const n = parseInt(value, 10);
289
- if (!Number.isNaN(n) && n > 0)
290
- draft.targetChapters = n;
291
- break;
292
- }
293
- case "chapterWordCount":
294
- case "chapterLength": {
295
- const n = parseInt(value, 10);
296
- if (!Number.isNaN(n) && n > 0)
297
- draft.chapterWordCount = n;
298
- break;
299
- }
300
- case "blurb":
301
- draft.blurb = value;
302
- break;
303
- case "worldPremise":
304
- draft.worldPremise = value;
305
- break;
306
- case "settingNotes":
307
- draft.settingNotes = value;
308
- break;
309
- case "protagonist":
310
- draft.protagonist = value;
311
- break;
312
- case "supportingCast":
313
- draft.supportingCast = value;
314
- break;
315
- case "conflictCore":
316
- draft.conflictCore = value;
317
- break;
318
- case "volumeOutline":
319
- draft.volumeOutline = value;
320
- break;
321
- case "constraints":
322
- draft.constraints = value;
323
- break;
324
- case "authorIntent":
325
- draft.authorIntent = value;
326
- break;
327
- case "currentFocus":
328
- draft.currentFocus = value;
329
- break;
330
- // Unknown keys are silently ignored — the LLM may emit
331
- // application-level keys we don't map to the draft struct.
332
- }
333
- }
334
- return draft;
335
- }
336
- function formatDraftForUserMessage(existingDraft, userMessage) {
337
- const parts = [];
338
- if (existingDraft) {
339
- parts.push("## 当前草案状态");
340
- const entries = Object.entries(existingDraft).filter(([, v]) => v !== undefined && v !== "" && !(Array.isArray(v) && v.length === 0));
341
- for (const [key, value] of entries) {
342
- parts.push(`- **${key}**: ${typeof value === "object" ? JSON.stringify(value) : String(value)}`);
343
- }
344
- parts.push("");
345
- }
346
- parts.push("## 用户输入");
347
- parts.push(userMessage);
348
- return parts.join("\n");
349
- }
350
246
  export function createInteractionToolsFromDeps(pipeline, state, hooks) {
351
247
  const instrumentedPipeline = pipeline;
352
248
  return {
353
249
  listBooks: () => state.listBooks(),
354
- developBookDraft: async (input, existingDraft) => {
355
- const concept = existingDraft?.concept ?? input;
356
- if (!instrumentedPipeline.config?.client || !instrumentedPipeline.config?.model) {
357
- // Fallback: no LLM configured
358
- return {
359
- __interaction: {
360
- responseText: "请先配置 LLM 模型,然后再创建书籍。",
361
- details: {
362
- creationDraft: {
363
- concept,
364
- missingFields: ["title", "genre", "targetChapters"],
365
- readyToCreate: false,
366
- },
367
- },
368
- },
369
- };
370
- }
371
- // Build messages - include existing draft context if present
372
- const userContent = existingDraft
373
- ? `当前草案参数:${JSON.stringify(existingDraft, null, 2)}\n\n用户输入:${input}`
374
- : input;
375
- const result = await chatWithTools(instrumentedPipeline.config.client, instrumentedPipeline.config.model, [
376
- { role: "system", content: BOOK_DRAFT_SYSTEM_PROMPT },
377
- { role: "user", content: userContent },
378
- ], [CREATE_BOOK_TOOL], { temperature: 0.4 });
379
- // Extract tool call if present
380
- const toolCall = result.toolCalls[0];
381
- let parsedArgs = {};
382
- if (toolCall) {
383
- try {
384
- parsedArgs = JSON.parse(toolCall.arguments);
385
- }
386
- catch {
387
- // If parsing fails, use empty args
388
- }
389
- }
390
- // Build a draft from tool call arguments
391
- const draft = {
392
- concept,
393
- title: parsedArgs.title ?? existingDraft?.title,
394
- genre: parsedArgs.genre ?? existingDraft?.genre,
395
- platform: parsedArgs.platform ?? existingDraft?.platform,
396
- language: parsedArgs.language ?? existingDraft?.language,
397
- targetChapters: parsedArgs.targetChapters ?? existingDraft?.targetChapters,
398
- chapterWordCount: parsedArgs.chapterWordCount ?? existingDraft?.chapterWordCount,
399
- blurb: parsedArgs.brief ?? existingDraft?.blurb,
400
- missingFields: [],
401
- readyToCreate: Boolean(parsedArgs.title && parsedArgs.genre && parsedArgs.platform),
402
- };
403
- return {
404
- __interaction: {
405
- responseText: result.content || "已生成建书参数,请确认或修改。",
406
- details: {
407
- creationDraft: draft,
408
- toolCall: toolCall ? { name: toolCall.name, arguments: parsedArgs } : undefined,
409
- },
410
- },
411
- };
412
- },
413
250
  createBook: async (input) => {
414
251
  const book = buildBookConfig(input);
415
252
  if (!pipeline.initBook) {
@@ -426,6 +263,7 @@ export function createInteractionToolsFromDeps(pipeline, state, hooks) {
426
263
  __interaction: {
427
264
  responseText: `Created ${book.title} (${book.id}).`,
428
265
  details: {
266
+ kind: "book_created",
429
267
  bookId: book.id,
430
268
  title: book.title,
431
269
  },
@@ -493,7 +331,7 @@ export function createInteractionToolsFromDeps(pipeline, state, hooks) {
493
331
  },
494
332
  writeNextChapter: (bookId) => withPipelineInteractionTelemetry(instrumentedPipeline, bookId, () => pipeline.writeNextChapter(bookId)),
495
333
  reviseDraft: (bookId, chapterNumber, mode) => withPipelineInteractionTelemetry(instrumentedPipeline, bookId, () => pipeline.reviseDraft(bookId, chapterNumber, mode)),
496
- patchChapterText: async (bookId, chapterNumber, targetText, replacementText) => {
334
+ patchChapterText: async (bookId, chapterNumber, targetText, replacementText) => withBookMutationLock(state, bookId, async () => {
497
335
  const execution = await executeEditTransaction({
498
336
  bookDir: (targetBookId) => state.bookDir(targetBookId),
499
337
  loadChapterIndex: (targetBookId) => state.loadChapterIndex(targetBookId),
@@ -512,8 +350,26 @@ export function createInteractionToolsFromDeps(pipeline, state, hooks) {
512
350
  responseText: execution.summary,
513
351
  },
514
352
  };
515
- },
516
- renameEntity: async (bookId, oldValue, newValue) => {
353
+ }),
354
+ replaceChapterText: async (bookId, chapterNumber, fullText) => withBookMutationLock(state, bookId, async () => {
355
+ const execution = await executeEditTransaction({
356
+ bookDir: (targetBookId) => state.bookDir(targetBookId),
357
+ loadChapterIndex: (targetBookId) => state.loadChapterIndex(targetBookId),
358
+ saveChapterIndex: (targetBookId, index) => state.saveChapterIndex(targetBookId, index),
359
+ }, {
360
+ kind: "chapter-replace",
361
+ bookId,
362
+ chapterNumber,
363
+ fullText,
364
+ });
365
+ return {
366
+ __interaction: {
367
+ activeChapterNumber: chapterNumber,
368
+ responseText: execution.summary,
369
+ },
370
+ };
371
+ }),
372
+ renameEntity: async (bookId, oldValue, newValue) => withBookMutationLock(state, bookId, async () => {
517
373
  const execution = await executeEditTransaction({
518
374
  bookDir: (targetBookId) => state.bookDir(targetBookId),
519
375
  loadChapterIndex: (targetBookId) => state.loadChapterIndex(targetBookId),
@@ -530,23 +386,23 @@ export function createInteractionToolsFromDeps(pipeline, state, hooks) {
530
386
  responseText: execution.summary,
531
387
  },
532
388
  };
533
- },
534
- updateCurrentFocus: async (bookId, content) => {
389
+ }),
390
+ updateCurrentFocus: async (bookId, content) => withBookMutationLock(state, bookId, async () => {
535
391
  await state.ensureControlDocuments(bookId);
536
392
  await writeFile(join(state.bookDir(bookId), "story", "current_focus.md"), content, "utf-8");
537
- },
538
- updateAuthorIntent: async (bookId, content) => {
393
+ }),
394
+ updateAuthorIntent: async (bookId, content) => withBookMutationLock(state, bookId, async () => {
539
395
  await state.ensureControlDocuments(bookId);
540
396
  await writeFile(join(state.bookDir(bookId), "story", "author_intent.md"), content, "utf-8");
541
- },
542
- writeTruthFile: async (bookId, fileName, content) => {
397
+ }),
398
+ writeTruthFile: async (bookId, fileName, content) => withBookMutationLock(state, bookId, async () => {
543
399
  await state.ensureControlDocuments(bookId);
544
400
  const storyDir = join(state.bookDir(bookId), "story");
545
401
  const safeFileName = assertSafeTruthFileName(fileName);
546
402
  const targetPath = safeChildPath(storyDir, safeFileName);
547
403
  await mkdir(dirname(targetPath), { recursive: true });
548
404
  await writeFile(targetPath, content, "utf-8");
549
- },
405
+ }),
550
406
  };
551
407
  }
552
408
  //# sourceMappingURL=project-tools.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"project-tools.js","sourceRoot":"","sources":["../../src/interaction/project-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project-tools.js","sourceRoot":"","sources":["../../src/interaction/project-tools.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,6 @@ import type { InteractionSession } from "./session.js";
4
4
  type ReviseMode = "local-fix" | "rewrite";
5
5
  export interface InteractionRuntimeTools {
6
6
  readonly listBooks: () => Promise<ReadonlyArray<string>>;
7
- readonly developBookDraft?: (input: string, existingDraft?: InteractionSession["creationDraft"]) => Promise<unknown>;
8
7
  readonly createBook?: (input: {
9
8
  readonly title: string;
10
9
  readonly genre?: string;
@@ -35,6 +34,7 @@ export interface InteractionRuntimeTools {
35
34
  readonly writeNextChapter: (bookId: string) => Promise<unknown>;
36
35
  readonly reviseDraft: (bookId: string, chapterNumber: number, mode: ReviseMode) => Promise<unknown>;
37
36
  readonly patchChapterText: (bookId: string, chapterNumber: number, targetText: string, replacementText: string) => Promise<unknown>;
37
+ readonly replaceChapterText: (bookId: string, chapterNumber: number, fullText: string) => Promise<unknown>;
38
38
  readonly renameEntity: (bookId: string, oldValue: string, newValue: string) => Promise<unknown>;
39
39
  readonly updateCurrentFocus: (bookId: string, content: string) => Promise<unknown>;
40
40
  readonly updateAuthorIntent: (bookId: string, content: string) => Promise<unknown>;
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/interaction/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/interaction/runtime.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { routeInteractionRequest } from "./request-router.js";
2
- import { appendInteractionEvent, bindActiveBook, clearCreationDraft, clearPendingDecision, updateCreationDraft, updateAutomationMode, } from "./session.js";
2
+ import { appendInteractionEvent, bindActiveBook, clearCreationDraft, clearPendingDecision, updateAutomationMode, } from "./session.js";
3
3
  function extractToolMetadata(value) {
4
4
  const chapterNumber = typeof value === "object" && value !== null && "chapterNumber" in value
5
5
  && typeof value.chapterNumber === "number"
@@ -75,15 +75,6 @@ function buildTaskStartedState(session, request, language) {
75
75
  en: "preparing chapter inputs",
76
76
  }),
77
77
  };
78
- case "develop_book":
79
- return {
80
- status: "planning",
81
- bookId: request.bookId ?? session.activeBookId,
82
- stageLabel: localize(language, {
83
- zh: "收敛创作草案",
84
- en: "developing book draft",
85
- }),
86
- };
87
78
  case "create_book":
88
79
  return {
89
80
  status: "planning",
@@ -153,7 +144,8 @@ function shouldWaitForHuman(automationMode, request) {
153
144
  || request.intent === "continue_book"
154
145
  || request.intent === "revise_chapter"
155
146
  || request.intent === "rewrite_chapter"
156
- || request.intent === "patch_chapter_text";
147
+ || request.intent === "patch_chapter_text"
148
+ || request.intent === "replace_chapter_text";
157
149
  const editIntent = request.intent === "update_focus"
158
150
  || request.intent === "update_author_intent"
159
151
  || request.intent === "edit_truth"
@@ -214,58 +206,6 @@ async function handleDraftLifecycleRequest(params) {
214
206
  const { session, request, tools, helpers } = params;
215
207
  const { language, addEvent, markCompleted } = helpers;
216
208
  switch (request.intent) {
217
- case "develop_book": {
218
- if (!tools.developBookDraft) {
219
- throw new Error(localize(language, {
220
- zh: "创作草案会话暂未实现。",
221
- en: "Book-draft ideation is not implemented yet.",
222
- }));
223
- }
224
- if (!request.instruction) {
225
- throw new Error(localize(language, {
226
- zh: "创作草案需要一条用户输入。",
227
- en: "Book-draft ideation requires user input.",
228
- }));
229
- }
230
- const toolResult = await tools.developBookDraft(request.instruction, session.creationDraft);
231
- const metadata = extractToolMetadata(toolResult);
232
- const draft = metadata.details?.creationDraft;
233
- if (!draft) {
234
- throw new Error(localize(language, {
235
- zh: "创作草案工具没有返回草案数据。",
236
- en: "Book-draft tool did not return draft data.",
237
- }));
238
- }
239
- const newRound = {
240
- roundId: (session.draftRounds?.length ?? 0) + 1,
241
- userMessage: request.instruction ?? "",
242
- assistantRaw: metadata.details?.draftRaw ?? "",
243
- fieldsUpdated: metadata.details?.fieldsUpdated ?? [],
244
- summary: metadata.details?.draftSummary ?? "",
245
- timestamp: Date.now(),
246
- };
247
- const withDraft = updateCreationDraft(session, draft);
248
- const withRounds = {
249
- ...withDraft,
250
- draftRounds: [...(withDraft.draftRounds ?? []), newRound],
251
- };
252
- const nextSession = appendToolEvents(withRounds, metadata.events);
253
- const completed = {
254
- ...markCompleted(nextSession),
255
- currentExecution: metadata.currentExecution ?? markCompleted(nextSession).currentExecution,
256
- };
257
- return {
258
- session: addEvent(completed, "task.completed", "completed", localize(language, {
259
- zh: "已更新创作草案。",
260
- en: "Updated the book draft.",
261
- })),
262
- responseText: metadata.responseText ?? localize(language, {
263
- zh: "已更新创作草案。",
264
- en: "Updated the book draft.",
265
- }),
266
- details: metadata.details,
267
- };
268
- }
269
209
  case "show_book_draft": {
270
210
  if (!session.creationDraft) {
271
211
  return {
@@ -611,6 +551,52 @@ export async function runInteractionRequest(params) {
611
551
  })),
612
552
  };
613
553
  }
554
+ case "replace_chapter_text": {
555
+ const bookId = request.bookId ?? session.activeBookId;
556
+ if (!bookId) {
557
+ throw new Error(localize(language, {
558
+ zh: "当前交互会话还没有绑定作品。",
559
+ en: "No active book is bound to the interaction session.",
560
+ }));
561
+ }
562
+ if (!request.chapterNumber || !request.fullText) {
563
+ throw new Error(localize(language, {
564
+ zh: "整章替换需要章节号和完整正文。",
565
+ en: "Whole-chapter replacement requires chapter number and fullText.",
566
+ }));
567
+ }
568
+ const toolResult = await params.tools.replaceChapterText(bookId, request.chapterNumber, request.fullText);
569
+ const metadata = extractToolMetadata(toolResult);
570
+ const chapterNumber = metadata.activeChapterNumber ?? request.chapterNumber;
571
+ session = bindActiveBook(session, bookId, chapterNumber);
572
+ session = appendToolEvents(session, metadata.events);
573
+ const pendingDecision = metadata.pendingDecision ?? buildPendingDecision(session, request, language, chapterNumber);
574
+ const completed = pendingDecision
575
+ ? {
576
+ ...session,
577
+ pendingDecision,
578
+ currentExecution: metadata.currentExecution ?? buildWaitingExecution(session, request, language, chapterNumber),
579
+ }
580
+ : {
581
+ ...markCompleted(session),
582
+ currentExecution: metadata.currentExecution ?? markCompleted(session).currentExecution,
583
+ };
584
+ return {
585
+ session: addEvent(completed, "task.completed", "completed", localize(language, {
586
+ zh: `已替换 ${bookId} 的第 ${chapterNumber} 章。`,
587
+ en: `Replaced chapter ${chapterNumber} for ${bookId}.`,
588
+ })),
589
+ responseText: metadata.responseText ?? (pendingDecision
590
+ ? localize(language, {
591
+ zh: `已替换 ${bookId} 的第 ${chapterNumber} 章,等待你的下一步决定。`,
592
+ en: `Replaced chapter ${chapterNumber} for ${bookId}; waiting for your next decision.`,
593
+ })
594
+ : localize(language, {
595
+ zh: `已替换 ${bookId} 的第 ${chapterNumber} 章。`,
596
+ en: `Replaced chapter ${chapterNumber} for ${bookId}.`,
597
+ })),
598
+ };
599
+ }
614
600
  case "rename_entity": {
615
601
  const bookId = request.bookId ?? session.activeBookId;
616
602
  if (!bookId) {
@@ -829,18 +815,6 @@ export async function runInteractionRequest(params) {
829
815
  details: metadata.details,
830
816
  };
831
817
  }
832
- case "switch_mode":
833
- session = markCompleted(session);
834
- return {
835
- session: addEvent(session, "task.completed", "completed", localize(language, {
836
- zh: `已切换到${localizeMode(session.automationMode, language)}模式。`,
837
- en: `Switched mode to ${session.automationMode}.`,
838
- })),
839
- responseText: localize(language, {
840
- zh: `已切换到${localizeMode(session.automationMode, language)}模式。`,
841
- en: `Switched mode to ${session.automationMode}.`,
842
- }),
843
- };
844
818
  case "pause_book": {
845
819
  const bookId = request.bookId ?? session.activeBookId;
846
820
  const paused = {