@whispering233/ai-editor-server 0.0.54 → 0.0.56
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.
- package/client-dist/assets/index-DMMiv-GL.js +625 -0
- package/client-dist/assets/{index-B2op0r9o.css → index-FO9svVbu.css} +1 -1
- package/client-dist/index.html +2 -2
- package/dist/index.d.ts +6 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -15
- package/dist/index.js.map +1 -1
- package/dist/middleware/error.d.ts +1 -1
- package/dist/middleware/error.d.ts.map +1 -1
- package/dist/middleware/error.js +0 -9
- package/dist/middleware/error.js.map +1 -1
- package/dist/middleware/project.d.ts +3 -4
- package/dist/middleware/project.d.ts.map +1 -1
- package/dist/middleware/project.js +2 -40
- package/dist/middleware/project.js.map +1 -1
- package/dist/routes/chat.d.ts +4 -2
- package/dist/routes/chat.d.ts.map +1 -1
- package/dist/routes/chat.js +89 -41
- package/dist/routes/chat.js.map +1 -1
- package/dist/routes/project.d.ts +1 -1
- package/dist/routes/project.d.ts.map +1 -1
- package/dist/routes/project.js +32 -8
- package/dist/routes/project.js.map +1 -1
- package/package.json +5 -5
- package/client-dist/assets/index-Bgk8dcAm.js +0 -627
- package/dist/decompose/batching.d.ts +0 -20
- package/dist/decompose/batching.d.ts.map +0 -1
- package/dist/decompose/batching.js +0 -29
- package/dist/decompose/batching.js.map +0 -1
- package/dist/decompose/extract.d.ts +0 -44
- package/dist/decompose/extract.d.ts.map +0 -1
- package/dist/decompose/extract.js +0 -246
- package/dist/decompose/extract.js.map +0 -1
- package/dist/decompose/job.d.ts +0 -91
- package/dist/decompose/job.d.ts.map +0 -1
- package/dist/decompose/job.js +0 -289
- package/dist/decompose/job.js.map +0 -1
- package/dist/decompose/llm.d.ts +0 -68
- package/dist/decompose/llm.d.ts.map +0 -1
- package/dist/decompose/llm.js +0 -181
- package/dist/decompose/llm.js.map +0 -1
- package/dist/decompose/merge-write.d.ts +0 -75
- package/dist/decompose/merge-write.d.ts.map +0 -1
- package/dist/decompose/merge-write.js +0 -670
- package/dist/decompose/merge-write.js.map +0 -1
- package/dist/decompose/merge.d.ts +0 -156
- package/dist/decompose/merge.d.ts.map +0 -1
- package/dist/decompose/merge.js +0 -266
- package/dist/decompose/merge.js.map +0 -1
- package/dist/decompose/report.d.ts +0 -57
- package/dist/decompose/report.d.ts.map +0 -1
- package/dist/decompose/report.js +0 -127
- package/dist/decompose/report.js.map +0 -1
- package/dist/decompose/runner.d.ts +0 -143
- package/dist/decompose/runner.d.ts.map +0 -1
- package/dist/decompose/runner.js +0 -520
- package/dist/decompose/runner.js.map +0 -1
- package/dist/decompose/split.d.ts +0 -89
- package/dist/decompose/split.d.ts.map +0 -1
- package/dist/decompose/split.js +0 -556
- package/dist/decompose/split.js.map +0 -1
- package/dist/routes/decompose.d.ts +0 -26
- package/dist/routes/decompose.d.ts.map +0 -1
- package/dist/routes/decompose.js +0 -453
- package/dist/routes/decompose.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"split.js","sourceRoot":"","sources":["../../src/decompose/split.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { Hono } from "hono";
|
|
2
|
-
import { type DecomposeRunnerDeps } from "../decompose/runner.js";
|
|
3
|
-
/** 上传体积上限(原始字节;超限 400 DECOMPOSE_FILE_TOO_LARGE)。analyze 与 start 共用——同文件。 */
|
|
4
|
-
export declare const DECOMPOSE_MAX_FILE_BYTES: number;
|
|
5
|
-
/** 每 token 的汉字数(中文粗估;换 tokenizer 只调这一处——预估本就是量级参考) */
|
|
6
|
-
export declare const DECOMPOSE_CHARS_PER_TOKEN = 1.5;
|
|
7
|
-
/** 每批固定开销里与快照无关的那部分(系统提示 + 输出契约 + 各上限说明)token 粗估 */
|
|
8
|
-
export declare const DECOMPOSE_PROMPT_OVERHEAD_TOKENS = 500;
|
|
9
|
-
/**
|
|
10
|
-
* 每批固定开销 token 粗估(系统提示 + 指令 + 项目数据快照)——**由快照预算派生**,不手写:
|
|
11
|
-
* 快照是量级主导项(§4.1 的 `DECOMPOSE_SNAPSHOT_MAX_CHARS`),写死数字会在改预算时静默失真
|
|
12
|
-
* (预估与实际脱钩、无人报错);批处理省的是这份开销,省不了正文与输出。
|
|
13
|
-
*/
|
|
14
|
-
export declare const DECOMPOSE_BATCH_OVERHEAD_TOKENS: number;
|
|
15
|
-
/** 每章输出 token 粗估(一条摘要(受 `DECOMPOSE_CHAPTER_SUMMARY_MAX_CHARS` 约束)+ 若干实体线索) */
|
|
16
|
-
export declare const DECOMPOSE_OUTPUT_TOKENS_PER_CHAPTER = 400;
|
|
17
|
-
/**
|
|
18
|
-
* 拆解路由可注入依赖(测试注入内存运行时;缺省走真实 pi 单例)。
|
|
19
|
-
* 与批执行器 `DecomposeRunnerDeps` 同源:路由把同一份依赖原样传给 S2 runner(注入点只有一处)。
|
|
20
|
-
*/
|
|
21
|
-
export type DecomposeRouteDeps = DecomposeRunnerDeps;
|
|
22
|
-
/** 拆解路由工厂(测试经 deps 注入内存运行时;index.ts 用缺省依赖) */
|
|
23
|
-
export declare function createDecomposeRoutes(deps?: DecomposeRouteDeps): Hono;
|
|
24
|
-
/** 拆解路由(挂载于 /api/v1/decompose,index.ts);测试用 `createDecomposeRoutes(deps)` 注入运行时 */
|
|
25
|
-
export declare const decomposeRoutes: Hono<import("hono/types").BlankEnv, import("hono/types").BlankSchema, "/">;
|
|
26
|
-
//# sourceMappingURL=decompose.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"decompose.d.ts","sourceRoot":"","sources":["../../src/routes/decompose.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,IAAI,EAAgB,MAAM,MAAM,CAAC;AA+B1C,OAAO,EAAsE,KAAK,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAItI,4EAA4E;AAC5E,eAAO,MAAM,wBAAwB,QAAmB,CAAC;AAEzD,sDAAsD;AACtD,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAC7C,oDAAoD;AACpD,eAAO,MAAM,gCAAgC,MAAM,CAAC;AACpD;;;;GAIG;AACH,eAAO,MAAM,+BAA+B,QAC4D,CAAC;AACzG,8EAA8E;AAC9E,eAAO,MAAM,mCAAmC,MAAM,CAAC;AAavD;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG,mBAAmB,CAAC;AAiJrD,8CAA8C;AAC9C,wBAAgB,qBAAqB,CAAC,IAAI,GAAE,kBAAuB,GAAG,IAAI,CAgRzE;AAuCD,mFAAmF;AACnF,eAAO,MAAM,eAAe,4EAA0B,CAAC"}
|
package/dist/routes/decompose.js
DELETED
|
@@ -1,453 +0,0 @@
|
|
|
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, origin: "decompose" });
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"decompose.js","sourceRoot":"","sources":["../../src/routes/decompose.ts"],"names":[],"mappings":"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"}
|