@whispering233/ai-editor-server 0.0.51 → 0.0.53

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 (62) hide show
  1. package/client-dist/assets/{index-Dim9IXQC.css → index-DBshOA8W.css} +1 -1
  2. package/client-dist/assets/index-DnBMudDZ.js +624 -0
  3. package/client-dist/index.html +2 -2
  4. package/dist/decompose/batching.d.ts +20 -0
  5. package/dist/decompose/batching.d.ts.map +1 -0
  6. package/dist/decompose/batching.js +29 -0
  7. package/dist/decompose/batching.js.map +1 -0
  8. package/dist/decompose/extract.d.ts +44 -0
  9. package/dist/decompose/extract.d.ts.map +1 -0
  10. package/dist/decompose/extract.js +246 -0
  11. package/dist/decompose/extract.js.map +1 -0
  12. package/dist/decompose/job.d.ts +91 -0
  13. package/dist/decompose/job.d.ts.map +1 -0
  14. package/dist/decompose/job.js +289 -0
  15. package/dist/decompose/job.js.map +1 -0
  16. package/dist/decompose/llm.d.ts +68 -0
  17. package/dist/decompose/llm.d.ts.map +1 -0
  18. package/dist/decompose/llm.js +180 -0
  19. package/dist/decompose/llm.js.map +1 -0
  20. package/dist/decompose/merge-write.d.ts +75 -0
  21. package/dist/decompose/merge-write.d.ts.map +1 -0
  22. package/dist/decompose/merge-write.js +670 -0
  23. package/dist/decompose/merge-write.js.map +1 -0
  24. package/dist/decompose/merge.d.ts +156 -0
  25. package/dist/decompose/merge.d.ts.map +1 -0
  26. package/dist/decompose/merge.js +266 -0
  27. package/dist/decompose/merge.js.map +1 -0
  28. package/dist/decompose/report.d.ts +57 -0
  29. package/dist/decompose/report.d.ts.map +1 -0
  30. package/dist/decompose/report.js +127 -0
  31. package/dist/decompose/report.js.map +1 -0
  32. package/dist/decompose/runner.d.ts +143 -0
  33. package/dist/decompose/runner.d.ts.map +1 -0
  34. package/dist/decompose/runner.js +520 -0
  35. package/dist/decompose/runner.js.map +1 -0
  36. package/dist/decompose/split.d.ts +89 -0
  37. package/dist/decompose/split.d.ts.map +1 -0
  38. package/dist/decompose/split.js +556 -0
  39. package/dist/decompose/split.js.map +1 -0
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +4 -0
  42. package/dist/index.js.map +1 -1
  43. package/dist/middleware/error.d.ts +1 -1
  44. package/dist/middleware/error.d.ts.map +1 -1
  45. package/dist/middleware/error.js +9 -0
  46. package/dist/middleware/error.js.map +1 -1
  47. package/dist/middleware/project.d.ts.map +1 -1
  48. package/dist/middleware/project.js +14 -0
  49. package/dist/middleware/project.js.map +1 -1
  50. package/dist/routes/chat.d.ts.map +1 -1
  51. package/dist/routes/chat.js +28 -3
  52. package/dist/routes/chat.js.map +1 -1
  53. package/dist/routes/decompose.d.ts +26 -0
  54. package/dist/routes/decompose.d.ts.map +1 -0
  55. package/dist/routes/decompose.js +453 -0
  56. package/dist/routes/decompose.js.map +1 -0
  57. package/dist/routes/project.d.ts +2 -0
  58. package/dist/routes/project.d.ts.map +1 -1
  59. package/dist/routes/project.js +4 -0
  60. package/dist/routes/project.js.map +1 -1
  61. package/package.json +5 -5
  62. package/client-dist/assets/index-BTOnSWMB.js +0 -621
@@ -0,0 +1,453 @@
1
+ // 拆解小说路由(analyze 预览 + start 建档 + job 进度 / 单批结果 + pause / resume)
2
+ //
3
+ // 契约单一来源:docs/api/120-api-decompose.md §analyze / §start / §job / §batches / §pause / §resume +
4
+ // 请求侧原始字节例外段(docs/api/api-public.md);语义见 docs/design/60-decompose.md §3(切分)/
5
+ // §4(范围与预估、批调度)/ §7(状态机与续拆)。
6
+ // 口径:
7
+ // - **不要求项目已打开**:预览不落库、不建项目、无状态(改范围 = 客户端重传原始字节,服务端不留临时文件);
8
+ // start 总是**新建并打开**项目(等价 POST /project/open 的切换语义);job / batches 读当前项目;
9
+ // - 请求体是**小说文件原始字节**(`application/octet-stream`),`file_name` / 书名 / 范围走 query;
10
+ // - 切分唯一实现 = `decompose/split.ts` 的 `splitNovelWithSlices`(analyze 与 start 同一份,确定性);
11
+ // - **章列表全量返回**,范围**只影响批规划与预估**(正文始终全量导入,见 §4「范围」);
12
+ // - estimate:批数走 `decompose/batching.ts` 的组批实现(与落批同一份)、`llmCalls = 批数 + 归并 + 报告`、
13
+ // token 按字数与章数粗估;费率读 pi 模型目录 `Model.cost`(`getModelRuntime()` 唯一入口,**不自建定价表**),
14
+ // 未配置模型/凭据(或模型目录不可读)→ `costApprox = null`,预览照常返回。
15
+ // - **续拆两端点(plan / continue)不吃文件字节**:章与正文已在库(S1 全量导入),范围缺省 = 未拆章最小
16
+ // 覆盖区间(`decompose/job.ts` 的 `readDecomposeProjectPlan`);两端的范围解析与估算走同一实现
17
+ // (预览说拆哪些,启动就必须拆哪些),continue 的 S1' **只落 job 与批规划**。
18
+ import { existsSync, mkdirSync } from "node:fs";
19
+ import { basename, extname, join } from "node:path";
20
+ import { Hono } from "hono";
21
+ import { decomposeAnalyzeQuerySchema, decomposeBatchResultSchema, decomposeContinueQuerySchema, decomposeJobLogResSchema, decomposeLogEntrySchema, decomposeStartQuerySchema, } from "@whispering233/ai-editor-shared/schemas";
22
+ import { readProjectSession } from "@whispering233/ai-editor-agent";
23
+ import { getDecomposeBatch, getDecomposeJob, nowIso, setJobError, updateJobStatus } from "@whispering233/ai-editor-db";
24
+ import { HttpError, ok } from "../middleware/error.js";
25
+ import { getModelRuntime, getSettingsManager, resolveActiveSelection } from "../model-runtime.js";
26
+ import { closeProject, getCurrentProject, initProject, requireCurrentProject, setCurrentProject, } from "../middleware/project.js";
27
+ import { writeLastProject } from "../last-project.js";
28
+ import { BOOKS_DIR_NAME, getProjectRoot, resolveProjectDir } from "./project.js";
29
+ import { planBatches } from "../decompose/batching.js";
30
+ import { buildJobResponse, ingestDecomposeContinue, ingestDecomposeProject, readDecomposeProjectPlan } from "../decompose/job.js";
31
+ import { pauseDecomposeJob, startDecomposeJob, DECOMPOSE_SNAPSHOT_MAX_CHARS } from "../decompose/runner.js";
32
+ import { DECOMPOSE_LOG_CUSTOM_TYPE, decomposeSessionId } from "../decompose/llm.js";
33
+ import { splitNovelWithSlices, statsOf } from "../decompose/split.js";
34
+ /** 上传体积上限(原始字节;超限 400 DECOMPOSE_FILE_TOO_LARGE)。analyze 与 start 共用——同文件。 */
35
+ export const DECOMPOSE_MAX_FILE_BYTES = 16 * 1024 * 1024;
36
+ /** 每 token 的汉字数(中文粗估;换 tokenizer 只调这一处——预估本就是量级参考) */
37
+ export const DECOMPOSE_CHARS_PER_TOKEN = 1.5;
38
+ /** 每批固定开销里与快照无关的那部分(系统提示 + 输出契约 + 各上限说明)token 粗估 */
39
+ export const DECOMPOSE_PROMPT_OVERHEAD_TOKENS = 500;
40
+ /**
41
+ * 每批固定开销 token 粗估(系统提示 + 指令 + 项目数据快照)——**由快照预算派生**,不手写:
42
+ * 快照是量级主导项(§4.1 的 `DECOMPOSE_SNAPSHOT_MAX_CHARS`),写死数字会在改预算时静默失真
43
+ * (预估与实际脱钩、无人报错);批处理省的是这份开销,省不了正文与输出。
44
+ */
45
+ export const DECOMPOSE_BATCH_OVERHEAD_TOKENS = Math.ceil(DECOMPOSE_SNAPSHOT_MAX_CHARS / DECOMPOSE_CHARS_PER_TOKEN) + DECOMPOSE_PROMPT_OVERHEAD_TOKENS;
46
+ /** 每章输出 token 粗估(一条摘要(受 `DECOMPOSE_CHAPTER_SUMMARY_MAX_CHARS` 约束)+ 若干实体线索) */
47
+ export const DECOMPOSE_OUTPUT_TOKENS_PER_CHAPTER = 400;
48
+ /** 费率口径:pi `Model.cost` 是**每百万 token** 单价(同 `calculateCost` 的除法口径) */
49
+ const TOKENS_PER_MILLION = 1_000_000;
50
+ /** 批处理之外的 LLM 调用数:归并 + 报告(docs/design/60-decompose.md §2「总调用数 = 批数 + 1 + 1」) */
51
+ const NON_BATCH_LLM_CALLS = 2;
52
+ /**
53
+ * 激活模型的费率——`resolveActiveSelection` 的口径与 chat / 设置页一致:
54
+ * pi settings 的默认模型优先 → 首个有凭据的可用模型 → null(什么都没配)。
55
+ * 任何失败(模型目录不可读、坏 models.json)只让金额缺席,不阻断预览。
56
+ */
57
+ async function activeCostRates(deps) {
58
+ try {
59
+ const runtime = deps.runtime ?? (await getModelRuntime());
60
+ const selection = await resolveActiveSelection(runtime, deps.settings ?? getSettingsManager());
61
+ if (selection === null)
62
+ return null;
63
+ const model = runtime.getModel(selection.provider, selection.modelId);
64
+ return model === undefined ? null : { input: model.cost.input, output: model.cost.output };
65
+ }
66
+ catch {
67
+ return null;
68
+ }
69
+ }
70
+ /** 默认书名 = 文件名去扩展名(去完为空 → 原名兜底;只做派生,用户可在客户端改) */
71
+ function defaultBookName(fileName) {
72
+ const base = basename(fileName);
73
+ const extension = extname(base);
74
+ const stripped = (extension === "" ? base : base.slice(0, -extension.length)).trim();
75
+ return stripped === "" ? base : stripped;
76
+ }
77
+ /**
78
+ * 范围 → 章区间:缺省全书;越界自然落空(章序 = 1-based 文件位置序,连续 ⇒ 过滤即夹取)。
79
+ * analyze 的预估与 start 的批规划共用本函数(两处各写一份必然漂移)。
80
+ */
81
+ function chaptersInScope(chapters, scopeStart, scopeEnd) {
82
+ const start = scopeStart ?? 1;
83
+ const end = scopeEnd ?? chapters.length;
84
+ return chapters.filter((chapter) => chapter.index >= start && chapter.index <= end);
85
+ }
86
+ /**
87
+ * 范围预估(docs/design/60-decompose.md §4):
88
+ * 输入 ∝ 范围正文 + 每批固定开销(归并只看候选清单、报告只看章摘要,相对正文可忽略);
89
+ * 输出 ∝ 章数(成本杠杆是范围,不是批大小)。
90
+ */
91
+ function buildEstimate(chapters, rates) {
92
+ const batches = planBatches(chapters);
93
+ const scopeChars = chapters.reduce((sum, chapter) => sum + chapter.charCount, 0);
94
+ const inputTokensApprox = Math.ceil(scopeChars / DECOMPOSE_CHARS_PER_TOKEN) + batches.length * DECOMPOSE_BATCH_OVERHEAD_TOKENS;
95
+ const outputTokensApprox = chapters.length * DECOMPOSE_OUTPUT_TOKENS_PER_CHAPTER;
96
+ return {
97
+ batchCount: batches.length,
98
+ llmCalls: batches.length + NON_BATCH_LLM_CALLS,
99
+ inputTokensApprox,
100
+ outputTokensApprox,
101
+ costApprox: rates === null
102
+ ? null
103
+ : (inputTokensApprox * rates.input + outputTokensApprox * rates.output) / TOKENS_PER_MILLION,
104
+ };
105
+ }
106
+ /**
107
+ * job 记录的范围(§4「范围」):起始取请求值、结束夹到末章(`scope_end` 超章数等同全量)。
108
+ * 夹取后仍可能 `start > end`(范围落空)——与 analyze 的过滤口径一致:零批但不报 400。
109
+ */
110
+ function jobScope(scopeStart, scopeEnd, chapterCount) {
111
+ return { start: scopeStart ?? 1, end: Math.min(scopeEnd ?? chapterCount, chapterCount) };
112
+ }
113
+ /**
114
+ * 续拆范围解析(plan 与 continue **共用同一实现**):逐项缺省 = 未拆章最小覆盖区间(无未拆章 → 0/0);
115
+ * 显式范围包含已拆章 = **有意重拆**(归并按跨轮口径复用已有实体,设计 §7.1)。
116
+ * `start > end` → 400 `VALIDATION_ERROR`(缺省范围本身恒合法,故只可能来自显式参数)。
117
+ */
118
+ function resolveContinueScope(plan, query) {
119
+ const scopeStart = query.scope_start ?? plan.defaultScopeStart;
120
+ const scopeEnd = query.scope_end ?? plan.defaultScopeEnd;
121
+ if (scopeStart > scopeEnd) {
122
+ throw new HttpError(400, "VALIDATION_ERROR", `范围非法:起始章 ${scopeStart} 大于结束章 ${scopeEnd}`);
123
+ }
124
+ return {
125
+ scopeStart,
126
+ scopeEnd,
127
+ defaulted: query.scope_start === undefined || query.scope_end === undefined,
128
+ };
129
+ }
130
+ /** 续拆范围里的章(章序 = 1-based 文件位置序,连续 ⇒ 过滤即夹取——与 `chaptersInScope` 同口径) */
131
+ function planChaptersInScope(plan, scopeStart, scopeEnd) {
132
+ return plan.chapters.filter((chapter) => chapter.index >= scopeStart && chapter.index <= scopeEnd);
133
+ }
134
+ /**
135
+ * 书名校验(服务端侧兜底,防目录逃逸):trim 后非空、不含路径分隔符 / 控制字符、不为 `.` / `..`。
136
+ * 客户端有同名纯函数(`client/src/lib/book-name.ts`,跨包不共享)——规则一致,此处是信任边界。
137
+ */
138
+ function assertBookName(name) {
139
+ if (name === "" || /[\\/]|^\.+$|[\u0000-\u001f]/.test(name)) {
140
+ throw new HttpError(400, "INVALID_PROJECT_PATH", `书名非法(不能为空、含 / \\ 或控制字符,也不能是 . / ..): ${name}`);
141
+ }
142
+ }
143
+ /**
144
+ * 激活模型 + 凭据校验(与 chat 开流前预检同口径):未配置模型或缺凭据 → 400 `LLM_API_KEY_MISSING`。
145
+ * start 在建项目**之前**调用——缺凭据不留半成品项目(api/120-api-decompose.md §start)。
146
+ * @returns 审计用的模型标识 `provider/modelId`
147
+ */
148
+ async function requireActiveModel(deps) {
149
+ const runtime = deps.runtime ?? (await getModelRuntime());
150
+ const selection = await resolveActiveSelection(runtime, deps.settings ?? getSettingsManager());
151
+ if (selection === null) {
152
+ throw new HttpError(400, "LLM_API_KEY_MISSING", "未配置可用模型:请先在设置页选择模型");
153
+ }
154
+ if (!runtime.hasConfiguredAuth(selection.provider)) {
155
+ throw new HttpError(400, "LLM_API_KEY_MISSING", `未配置 ${selection.provider} 的凭据:请在设置页填写 API key,或设置对应环境变量`);
156
+ }
157
+ return `${selection.provider}/${selection.modelId}`;
158
+ }
159
+ /**
160
+ * 读上传体(原始字节)+ 体积校验(analyze / start 共用;超限 400 `DECOMPOSE_FILE_TOO_LARGE`)。
161
+ * 必须在任何落盘 / 建目录之前调用。
162
+ */
163
+ async function readNovelBody(c) {
164
+ const bytes = new Uint8Array(await c.req.arrayBuffer());
165
+ if (bytes.byteLength > DECOMPOSE_MAX_FILE_BYTES) {
166
+ throw new HttpError(400, "DECOMPOSE_FILE_TOO_LARGE", `文件超过体积上限 ${DECOMPOSE_MAX_FILE_BYTES / 1024 / 1024}MB,请改用更小的文本文件`);
167
+ }
168
+ return bytes;
169
+ }
170
+ /** 拆解路由工厂(测试经 deps 注入内存运行时;index.ts 用缺省依赖) */
171
+ export function createDecomposeRoutes(deps = {}) {
172
+ const routes = new Hono();
173
+ // POST /api/v1/decompose/analyze?file_name=&scope_start=&scope_end= —— body = 文件原始字节
174
+ routes.post("/analyze", async (c) => {
175
+ const query = decomposeAnalyzeQuerySchema.parse(c.req.query()); // 缺 file_name / 范围非法 → 400 VALIDATION_ERROR
176
+ const bytes = await readNovelBody(c);
177
+ const preview = splitNovelWithSlices(bytes).result;
178
+ // 解码永远成功(TextDecoder 非致命 + GB18030 回退 ⇒ 不抛错),故「解码失败」的可见形态只有一种:
179
+ // 归一化后没有任何文本(空文件 / 只有空白 / 非文本内容)。契约的两条 400 语义在本实现里同码。
180
+ if (preview.totalChars === 0) {
181
+ throw new HttpError(400, "DECOMPOSE_FILE_INVALID", "文件没有可解析的文本(空文件或非文本内容)");
182
+ }
183
+ const scoped = chaptersInScope(preview.chapters, query.scope_start, query.scope_end);
184
+ const estimate = buildEstimate(scoped, await activeCostRates(deps));
185
+ return c.json(ok({
186
+ ...preview, // encoding / totalChars / chapters(全量)/ volumes / stats / warnings
187
+ estimate,
188
+ defaultName: defaultBookName(query.file_name),
189
+ }));
190
+ });
191
+ // POST /api/v1/decompose/start?file_name=&name=&scope_start=&scope_end= —— body = 文件原始字节
192
+ routes.post("/start", async (c) => {
193
+ const query = decomposeStartQuerySchema.parse(c.req.query()); // 缺 file_name / name / 范围非法 → 400 VALIDATION_ERROR
194
+ const bytes = await readNovelBody(c);
195
+ // 建项目之前的三道校验(缺一道就会留下半成品项目 / 越权目录):凭据 → 切分文本 → 书名与目标路径
196
+ const model = await requireActiveModel(deps);
197
+ const split = splitNovelWithSlices(bytes);
198
+ if (split.result.totalChars === 0) {
199
+ throw new HttpError(400, "DECOMPOSE_FILE_INVALID", "文件没有可解析的文本(空文件或非文本内容)");
200
+ }
201
+ const root = getProjectRoot();
202
+ if (root === null) {
203
+ throw new HttpError(500, "INTERNAL_ERROR", "创作根未初始化(startServer 未调用 setProjectRoot)");
204
+ }
205
+ const name = query.name.trim();
206
+ assertBookName(name);
207
+ const target = join(root, BOOKS_DIR_NAME, name);
208
+ // 书名冲突:目录已存在即拒(含非项目目录——不在用户已有目录上建档,api 错误码表「书名对应目录已存在」)
209
+ if (existsSync(target)) {
210
+ throw new HttpError(409, "PROJECT_ALREADY_EXISTS", `同名书籍已存在: ${target}`);
211
+ }
212
+ mkdirSync(target, { recursive: true }); // 目录需存在才能做 realpath 校验(与 /project/create 同序)
213
+ const dir = resolveProjectDir(target); // 非绝对 / 链接跳转 → 400 INVALID_PROJECT_PATH
214
+ // 建档 + 打开(等价 POST /project/open 的切换语义:新项目就绪后再关旧的,失败时当前项目保持原样;
215
+ // open 的两条兜底——旧 prompt 迁移与软删一致性补标——对新项目无对象,故不调用)
216
+ const project = initProject(dir, { name });
217
+ const previous = getCurrentProject();
218
+ if (previous !== null && previous.db !== project.db)
219
+ closeProject(previous);
220
+ setCurrentProject(project); // 释放旧项目运行时(disposeProjectRuntime 单点)
221
+ writeLastProject(root, dir); // 创作根 lastProject:下次启动自动打开这本书
222
+ const chapters = split.result.chapters;
223
+ const scope = jobScope(query.scope_start, query.scope_end, chapters.length);
224
+ const { jobId, batchCount } = ingestDecomposeProject({
225
+ project,
226
+ split,
227
+ scopedChapters: chaptersInScope(chapters, query.scope_start, query.scope_end),
228
+ scopeStart: scope.start,
229
+ scopeEnd: scope.end,
230
+ model,
231
+ now: nowIso(),
232
+ });
233
+ // S2 批执行(**后台跑,不 await**):S1 已同步完成,响应返回时批循环开跑(进度页轮询看状态)
234
+ void startDecomposeJob(project, deps);
235
+ return c.json(ok({
236
+ projectId: project.config.id,
237
+ projectPath: dir,
238
+ name,
239
+ jobId,
240
+ status: "running", // S1 已同步完成 ⇒ 返回时 job 已进入 running(批执行归 S2 runner)
241
+ batchCount,
242
+ }));
243
+ });
244
+ // GET /api/v1/decompose/plan?scope_start=&scope_end= —— 续拆预览(不落库、无状态;**不吃文件字节**)
245
+ routes.get("/plan", async (c) => {
246
+ const query = decomposeContinueQuerySchema.parse(c.req.query()); // 范围非整数 / < 1 → 400 VALIDATION_ERROR
247
+ const project = requireCurrentProject(); // 无已打开项目 → 409 NO_PROJECT_OPEN
248
+ const plan = readDecomposeProjectPlan(project);
249
+ if (plan.chapters.length === 0) {
250
+ throw new HttpError(404, "DECOMPOSE_NO_CHAPTERS", "当前项目没有章:没有可续拆的正文(先在本书导入正文或重新拆解)");
251
+ }
252
+ const scope = resolveContinueScope(plan, query);
253
+ const scoped = planChaptersInScope(plan, scope.scopeStart, scope.scopeEnd);
254
+ return c.json(ok({
255
+ scopeStart: scope.scopeStart,
256
+ scopeEnd: scope.scopeEnd,
257
+ defaulted: scope.defaulted,
258
+ remainingCount: plan.remainingCount,
259
+ decomposedInScope: scoped.filter((chapter) => chapter.decomposed).length,
260
+ chapters: plan.chapters, // 全书章列表(含已拆标注)——与 analyze 同为全量口径
261
+ stats: statsOf(plan.chapters.map((chapter) => chapter.charCount)),
262
+ // 估算与 analyze **同一实现**(`buildEstimate`):只换输入章集(库内章而非切分结果)
263
+ estimate: buildEstimate(scoped, await activeCostRates(deps)),
264
+ }));
265
+ });
266
+ // POST /api/v1/decompose/continue?scope_start=&scope_end= —— 续拆:当前项目内开新 job(S1' 只落 job 与批规划)
267
+ routes.post("/continue", async (c) => {
268
+ const query = decomposeContinueQuerySchema.parse(c.req.query());
269
+ const project = requireCurrentProject();
270
+ // 顺序 = 模型/凭据 → 活跃 job 互斥 → 范围解析:缺凭据不先落 job 行(同 start 的「不留半成品」口径);
271
+ // 互斥拦在范围解析前——已有 running / paused job 时范围解析无意义(只有终态 done / failed 可开新 job,§7.1)
272
+ const model = await requireActiveModel(deps);
273
+ const current = getDecomposeJob(project.db); // 一项目取最新 job(db helper 口径)
274
+ if (current !== null && current.status !== "done" && current.status !== "failed") {
275
+ throw new HttpError(409, "DECOMPOSE_JOB_STATE", `job ${current.id} 状态为 ${current.status},不能开新 job(先等它收尾,或对它续拆 / 重跑)`);
276
+ }
277
+ const plan = readDecomposeProjectPlan(project);
278
+ const scope = resolveContinueScope(plan, query);
279
+ const scoped = planChaptersInScope(plan, scope.scopeStart, scope.scopeEnd);
280
+ if (scoped.length === 0) {
281
+ throw new HttpError(400, "DECOMPOSE_NOTHING_TO_DO", "范围里没有可拆的章(缺省且无未拆章——可显式指定范围重拆)");
282
+ }
283
+ // S1':只落新 job 行 + 批规划行(**不建大纲、不导正文**,正文是 S1 的全量一次性产物)
284
+ const { jobId, batchCount } = ingestDecomposeContinue({
285
+ project,
286
+ scopedChapters: scoped,
287
+ scopeStart: scope.scopeStart,
288
+ scopeEnd: scope.scopeEnd,
289
+ model,
290
+ now: nowIso(),
291
+ });
292
+ // S2 批执行(**后台跑,不 await**):响应返回时 job 已 running(进度页轮询看状态,与 start 同款)
293
+ void startDecomposeJob(project, deps);
294
+ return c.json(ok({
295
+ jobId,
296
+ scopeStart: scope.scopeStart,
297
+ scopeEnd: scope.scopeEnd,
298
+ status: "running",
299
+ batchCount,
300
+ }));
301
+ });
302
+ // GET /api/v1/decompose/job —— 当前项目的 job 状态(进度轮询;**不含批结果正文**)
303
+ routes.get("/job", (c) => {
304
+ const project = requireCurrentProject(); // 无已打开项目 → 409 NO_PROJECT_OPEN
305
+ const job = getDecomposeJob(project.db); // 多 job 并存取最新(created_at desc → id desc,db helper 内)
306
+ if (job === null) {
307
+ throw new HttpError(404, "DECOMPOSE_JOB_NOT_FOUND", "当前项目没有拆解任务");
308
+ }
309
+ return c.json(ok(buildJobResponse(project, job)));
310
+ });
311
+ // GET /api/v1/decompose/job/batches/:seq —— 单批抽取结果(进度页展开行按需拉取)
312
+ routes.get("/job/batches/:seq", (c) => {
313
+ const project = requireCurrentProject();
314
+ const rawSeq = c.req.param("seq");
315
+ const seq = Number(rawSeq);
316
+ if (!Number.isInteger(seq) || seq < 1) {
317
+ throw new HttpError(404, "DECOMPOSE_BATCH_NOT_FOUND", `批序号非法: ${rawSeq}`);
318
+ }
319
+ const job = getDecomposeJob(project.db);
320
+ if (job === null) {
321
+ throw new HttpError(404, "DECOMPOSE_JOB_NOT_FOUND", "当前项目没有拆解任务");
322
+ }
323
+ const batch = getDecomposeBatch(project.db, job.id, seq);
324
+ if (batch === null) {
325
+ throw new HttpError(404, "DECOMPOSE_BATCH_NOT_FOUND", `批序号越界: ${seq}`);
326
+ }
327
+ // db 层只保证「坏 JSON 不抛错」(形状不校验,`[1,2]` 这类值会原样透出)⇒ 本层按契约 schema 守卫:
328
+ // 不符形状按「未完成」处理(result = null),不把脏数据发给客户端。
329
+ const parsed = batch.result === null ? null : decomposeBatchResultSchema.safeParse(batch.result);
330
+ return c.json(ok({
331
+ seq: batch.seq,
332
+ status: batch.status,
333
+ attempts: batch.attempts,
334
+ error: batch.error,
335
+ result: parsed !== null && parsed.success ? parsed.data : null,
336
+ }));
337
+ });
338
+ // GET /api/v1/decompose/job/log —— 拆解过程时间线(读拆解会话里的 custom 过程条目)
339
+ routes.get("/job/log", async (c) => {
340
+ const project = requireCurrentProject();
341
+ const job = getDecomposeJob(project.db);
342
+ if (job === null) {
343
+ throw new HttpError(404, "DECOMPOSE_JOB_NOT_FOUND", "当前项目没有拆解任务");
344
+ }
345
+ // 会话定位按**会话 id**(经 pi 的磁盘发现 + id 命中)——pi 落盘文件名带时间戳前缀,不得按文件名 glob;
346
+ // 会话文件被用户删掉 / 尚未落盘 ⇒ entries: [](契约:job 还在就回 200,不回 404)
347
+ const sessionId = decomposeSessionId(job.id);
348
+ const opened = await readProjectSession(project.root, sessionId);
349
+ return jobLogResponse(c, {
350
+ sessionId,
351
+ entries: opened === null ? [] : projectLogEntries(opened.entries),
352
+ });
353
+ });
354
+ // POST /api/v1/decompose/job/pause —— 中止当前 job(当前批跑完即停,结果不浪费)
355
+ routes.post("/job/pause", (c) => {
356
+ const project = requireCurrentProject();
357
+ const job = getDecomposeJob(project.db);
358
+ if (job === null) {
359
+ throw new HttpError(404, "DECOMPOSE_JOB_NOT_FOUND", "当前项目没有拆解任务");
360
+ }
361
+ // 状态前置:`done` / `paused` / `failed` 都不允许再中止(api/120-api-decompose.md §pause)
362
+ if (job.status !== "running" && job.status !== "pending") {
363
+ throw new HttpError(409, "DECOMPOSE_JOB_STATE", `job 状态为 ${job.status},不能中止(仅 running / pending 可暂停)`);
364
+ }
365
+ // 先置信号再写状态:进程内那一轮停在批间(已发出的模型调用不 abort),状态立刻可见(不等批收尾)
366
+ pauseDecomposeJob(job.id);
367
+ updateJobStatus(project.db, job.id, "paused", nowIso());
368
+ return c.json(ok({ status: "paused" }));
369
+ });
370
+ // POST /api/v1/decompose/job/resume —— 从第一个未完成批续拆(跳过 done 的批)
371
+ routes.post("/job/resume", async (c) => {
372
+ const project = requireCurrentProject();
373
+ const job = getDecomposeJob(project.db);
374
+ if (job === null) {
375
+ throw new HttpError(404, "DECOMPOSE_JOB_NOT_FOUND", "当前项目没有拆解任务");
376
+ }
377
+ if (job.status !== "paused") {
378
+ throw new HttpError(409, "DECOMPOSE_JOB_STATE", `job 状态为 ${job.status},不能续拆(仅 paused 可续拆)`);
379
+ }
380
+ // 续拆前预检模型/凭据(与 start 同口径):缺凭据 → 400 且不改状态(否则 job 卡在「running 无 runner」)
381
+ await requireActiveModel(deps);
382
+ updateJobStatus(project.db, job.id, "running", nowIso());
383
+ setJobError(project.db, job.id, null, nowIso()); // 开工清上一次的 job 级错误摘要
384
+ void startDecomposeJob(project, deps);
385
+ return c.json(ok({ status: "running" }));
386
+ });
387
+ // POST /api/v1/decompose/job/batches/:seq/rerun —— 单批重跑(done 与 failed 都可重跑 → job 回 running)
388
+ routes.post("/job/batches/:seq/rerun", async (c) => {
389
+ const project = requireCurrentProject();
390
+ const job = getDecomposeJob(project.db);
391
+ if (job === null) {
392
+ throw new HttpError(404, "DECOMPOSE_JOB_NOT_FOUND", "当前项目没有拆解任务");
393
+ }
394
+ // 状态前置(api/120-api-decompose.md §rerun):running / paused 不接(需先等收尾或续拆)
395
+ if (job.status !== "done" && job.status !== "failed") {
396
+ throw new HttpError(409, "DECOMPOSE_JOB_STATE", `job 状态为 ${job.status},不能重跑(仅 done / failed 可重跑)`);
397
+ }
398
+ const rawSeq = c.req.param("seq");
399
+ const seq = Number(rawSeq);
400
+ if (!Number.isInteger(seq) || seq < 1) {
401
+ throw new HttpError(404, "DECOMPOSE_BATCH_NOT_FOUND", `批序号非法: ${rawSeq}`);
402
+ }
403
+ if (getDecomposeBatch(project.db, job.id, seq) === null) {
404
+ throw new HttpError(404, "DECOMPOSE_BATCH_NOT_FOUND", `批序号越界: ${seq}`);
405
+ }
406
+ // 模型/凭据前置(与 resume 同口径):缺凭据时重跑会先把该批的抽取结果清掉(failBatch 置 NULL)
407
+ // 再走到 job failed——一次凭据抖动就烧掉一批已付 token 的产物。故 400 且**不改状态、不动批结果**。
408
+ await requireActiveModel(deps);
409
+ updateJobStatus(project.db, job.id, "running", nowIso());
410
+ setJobError(project.db, job.id, null, nowIso()); // 开工清上一次的 job 级错误摘要
411
+ // S2 重跑该批 → 批全部收口后自动接 S3 归并 + S4 报告(runner 的收口路径)
412
+ void startDecomposeJob(project, deps, { rerunSeq: seq });
413
+ // 形状归 shared `decomposeRerunResSchema`(与 pause / resume 同款:响应类型不另开别名)
414
+ return c.json(ok({ status: "running", seq }));
415
+ });
416
+ return routes;
417
+ }
418
+ /**
419
+ * 过程条目投影(§8 时间线):**只**取 `customType = decompose` 的 custom 条目——同一文件里还有
420
+ * message / model_change / session_info 以及别的扩展写的 custom 条目,一律不进响应(原文与模型产出
421
+ * 因此不可能泄漏到时间线里)。形状不符的条目跳过(同 batches 路由的形状守卫口径:脏数据不发客户端),
422
+ * `at` 缺 / 坏则回退条目自身的时间戳。顺序 = 文件顺序。
423
+ */
424
+ function projectLogEntries(entries) {
425
+ const projected = [];
426
+ for (const entry of entries) {
427
+ if (entry.type !== "custom" || entry.customType !== DECOMPOSE_LOG_CUSTOM_TYPE)
428
+ continue;
429
+ const data = typeof entry.data === "object" && entry.data !== null ? entry.data : {};
430
+ const parsed = decomposeLogEntrySchema.safeParse({
431
+ id: entry.id,
432
+ at: typeof data.at === "string" ? data.at : entry.timestamp,
433
+ kind: data.kind,
434
+ text: data.text,
435
+ batchSeq: data.batchSeq,
436
+ });
437
+ if (parsed.success)
438
+ projected.push(parsed.data);
439
+ }
440
+ return projected;
441
+ }
442
+ /** 响应自检出口(参照 chat.ts sessionsResponse):parse 失败 = 500 INTERNAL_ERROR(不让 ZodError 冒泡成 400) */
443
+ function jobLogResponse(c, payload) {
444
+ try {
445
+ return c.json(ok(decomposeJobLogResSchema.parse(payload)));
446
+ }
447
+ catch (err) {
448
+ throw new HttpError(500, "INTERNAL_ERROR", `拆解记录响应不符合契约: ${err instanceof Error ? err.message : String(err)}`);
449
+ }
450
+ }
451
+ /** 拆解路由(挂载于 /api/v1/decompose,index.ts);测试用 `createDecomposeRoutes(deps)` 注入运行时 */
452
+ export const decomposeRoutes = createDecomposeRoutes();
453
+ //# sourceMappingURL=decompose.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decompose.js","sourceRoot":"","sources":["../../src/routes/decompose.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  import { Hono } from "hono";
2
2
  /** 设置创作根(index.ts startServer 调用;测试隔离用传 null 重置) */
3
3
  export declare function setProjectRoot(root: string | null): void;
4
+ /** 读创作根(拆解 start 在 `books/<书名>/` 下建书目录用;未初始化 → null) */
5
+ export declare function getProjectRoot(): string | null;
4
6
  /** books/ 子目录名(书架模式:创作根/books/<书名>/) */
5
7
  export declare const BOOKS_DIR_NAME = "books";
6
8
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/routes/project.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,IAAI,EAAgB,MAAM,MAAM,CAAC;AAsD1C,oDAAoD;AACpD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAExD;AAED,wCAAwC;AACxC,eAAO,MAAM,cAAc,UAAU,CAAC;AAEtC;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAkBzD;AAED,yCAAyC;AACzC,eAAO,MAAM,aAAa,4EAAa,CAAC"}
1
+ {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/routes/project.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,IAAI,EAAgB,MAAM,MAAM,CAAC;AAsD1C,oDAAoD;AACpD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAExD;AAED,wDAAwD;AACxD,wBAAgB,cAAc,IAAI,MAAM,GAAG,IAAI,CAE9C;AAED,wCAAwC;AACxC,eAAO,MAAM,cAAc,UAAU,CAAC;AAEtC;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAkBzD;AAED,yCAAyC;AACzC,eAAO,MAAM,aAAa,4EAAa,CAAC"}
@@ -35,6 +35,10 @@ let projectRoot = null;
35
35
  export function setProjectRoot(root) {
36
36
  projectRoot = root;
37
37
  }
38
+ /** 读创作根(拆解 start 在 `books/<书名>/` 下建书目录用;未初始化 → null) */
39
+ export function getProjectRoot() {
40
+ return projectRoot;
41
+ }
38
42
  /** books/ 子目录名(书架模式:创作根/books/<书名>/) */
39
43
  export const BOOKS_DIR_NAME = "books";
40
44
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/routes/project.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/routes/project.ts"],"names":[],"mappings":"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"}