@coralai/sps-cli 0.65.75 → 0.65.76
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/dist/console/index.d.ts.map +1 -1
- package/dist/console/index.js +6 -0
- package/dist/console/index.js.map +1 -1
- package/dist/console/lib/artPaths.d.ts +4 -4
- package/dist/console/lib/artPaths.d.ts.map +1 -1
- package/dist/console/lib/artPaths.js +24 -16
- package/dist/console/lib/artPaths.js.map +1 -1
- package/dist/console/lib/artRunRequest.d.ts +46 -0
- package/dist/console/lib/artRunRequest.d.ts.map +1 -0
- package/dist/console/lib/artRunRequest.js +107 -0
- package/dist/console/lib/artRunRequest.js.map +1 -0
- package/dist/console/routes/art.d.ts.map +1 -1
- package/dist/console/routes/art.js +65 -47
- package/dist/console/routes/art.js.map +1 -1
- package/dist/console/routes/artPipeline.d.ts +15 -0
- package/dist/console/routes/artPipeline.d.ts.map +1 -0
- package/dist/console/routes/artPipeline.js +83 -0
- package/dist/console/routes/artPipeline.js.map +1 -0
- package/dist/core/art/artConcurrency.d.ts +63 -0
- package/dist/core/art/artConcurrency.d.ts.map +1 -0
- package/dist/core/art/artConcurrency.js +63 -0
- package/dist/core/art/artConcurrency.js.map +1 -0
- package/dist/core/art/artRunLauncher.d.ts +6 -0
- package/dist/core/art/artRunLauncher.d.ts.map +1 -0
- package/dist/core/art/artRunLauncher.js +91 -0
- package/dist/core/art/artRunLauncher.js.map +1 -0
- package/dist/core/art/artRunService.d.ts +102 -0
- package/dist/core/art/artRunService.d.ts.map +1 -0
- package/dist/core/art/artRunService.js +181 -0
- package/dist/core/art/artRunService.js.map +1 -0
- package/dist/core/art/assetLocator.d.ts +33 -0
- package/dist/core/art/assetLocator.d.ts.map +1 -0
- package/dist/core/art/assetLocator.js +61 -0
- package/dist/core/art/assetLocator.js.map +1 -0
- package/dist/providers/art/artDriver.d.ts +71 -0
- package/dist/providers/art/artDriver.d.ts.map +1 -0
- package/dist/providers/art/artDriver.js +119 -0
- package/dist/providers/art/artDriver.js.map +1 -0
- package/dist/providers/art/artEvents.d.ts +23 -0
- package/dist/providers/art/artEvents.d.ts.map +1 -0
- package/dist/providers/art/artEvents.js +40 -0
- package/dist/providers/art/artEvents.js.map +1 -0
- package/dist/providers/art/artGen.d.ts +253 -0
- package/dist/providers/art/artGen.d.ts.map +1 -0
- package/dist/providers/art/artGen.js +1263 -0
- package/dist/providers/art/artGen.js.map +1 -0
- package/dist/providers/art/artPrompt.d.ts +42 -0
- package/dist/providers/art/artPrompt.d.ts.map +1 -0
- package/dist/providers/art/artPrompt.js +41 -0
- package/dist/providers/art/artPrompt.js.map +1 -0
- package/dist/providers/art/artRunChild.d.ts +3 -0
- package/dist/providers/art/artRunChild.d.ts.map +1 -0
- package/dist/providers/art/artRunChild.js +127 -0
- package/dist/providers/art/artRunChild.js.map +1 -0
- package/dist/providers/art/atomicWrite.d.ts +16 -0
- package/dist/providers/art/atomicWrite.d.ts.map +1 -0
- package/dist/providers/art/atomicWrite.js +62 -0
- package/dist/providers/art/atomicWrite.js.map +1 -0
- package/dist/providers/art/cancelMarker.d.ts +9 -0
- package/dist/providers/art/cancelMarker.d.ts.map +1 -0
- package/dist/providers/art/cancelMarker.js +60 -0
- package/dist/providers/art/cancelMarker.js.map +1 -0
- package/dist/providers/art/composeAsset.d.ts +52 -0
- package/dist/providers/art/composeAsset.d.ts.map +1 -0
- package/dist/providers/art/composeAsset.js +73 -0
- package/dist/providers/art/composeAsset.js.map +1 -0
- package/dist/providers/art/imageSize.d.ts +31 -0
- package/dist/providers/art/imageSize.d.ts.map +1 -0
- package/dist/providers/art/imageSize.js +92 -0
- package/dist/providers/art/imageSize.js.map +1 -0
- package/dist/providers/art/jobContext.d.ts +25 -0
- package/dist/providers/art/jobContext.d.ts.map +1 -0
- package/dist/providers/art/jobContext.js +5 -0
- package/dist/providers/art/jobContext.js.map +1 -0
- package/dist/providers/art/rateLimitRetry.d.ts +25 -0
- package/dist/providers/art/rateLimitRetry.d.ts.map +1 -0
- package/dist/providers/art/rateLimitRetry.js +40 -0
- package/dist/providers/art/rateLimitRetry.js.map +1 -0
- package/dist/providers/art/uiKit.d.ts +61 -0
- package/dist/providers/art/uiKit.d.ts.map +1 -0
- package/dist/providers/art/uiKit.js +331 -0
- package/dist/providers/art/uiKit.js.map +1 -0
- package/dist/providers/art/visionJudge.d.ts +26 -0
- package/dist/providers/art/visionJudge.d.ts.map +1 -0
- package/dist/providers/art/visionJudge.js +127 -0
- package/dist/providers/art/visionJudge.js.map +1 -0
- package/dist/providers/art/withinDir.d.ts +2 -0
- package/dist/providers/art/withinDir.d.ts.map +1 -0
- package/dist/providers/art/withinDir.js +19 -0
- package/dist/providers/art/withinDir.js.map +1 -0
- package/dist/providers/media/gatewayMediaProviders.d.ts +58 -0
- package/dist/providers/media/gatewayMediaProviders.d.ts.map +1 -0
- package/dist/providers/media/gatewayMediaProviders.js +46 -0
- package/dist/providers/media/gatewayMediaProviders.js.map +1 -0
- package/dist/providers/media/generateAsset.d.ts +9 -0
- package/dist/providers/media/generateAsset.d.ts.map +1 -1
- package/dist/providers/media/generateAsset.js +7 -1
- package/dist/providers/media/generateAsset.js.map +1 -1
- package/dist/providers/media/mediaProviders.d.ts +31 -1
- package/dist/providers/media/mediaProviders.d.ts.map +1 -1
- package/dist/providers/media/mediaProviders.js +33 -1
- package/dist/providers/media/mediaProviders.js.map +1 -1
- package/package.json +1 -1
|
@@ -18,8 +18,28 @@
|
|
|
18
18
|
*
|
|
19
19
|
* 成功响应 = CLI stdout 的 JSON(含 `ok:true`),**错误走 problem-json**(附录 A.5)——
|
|
20
20
|
* 这是唯一一处故意不一致:sps 的 HTTP 契约只有一种错误形状,为 art 开第二种代价更大。
|
|
21
|
+
*
|
|
22
|
+
* ─────────────────────────────────────────────────────────────────────────
|
|
23
|
+
* ✅ **欠账 #31 已结清(2026-08-11,搭 1.4 的车)** —— 这段留着,因为**判据比结论有用**。
|
|
24
|
+
*
|
|
25
|
+
* 曾经:本文件 + `console/lib/artPaths` 共 **19 处同步 fs**(`readFileSync`/`writeFileSync`
|
|
26
|
+
* + 围栏的 `existsSync`/`statSync`/`realpathSync`),**阻塞 console 的事件循环** ——
|
|
27
|
+
* 拖慢同进程的**每一个** HTTP 请求(含 `/api/health` 探针与 SSE 心跳),并发调用串行化。
|
|
28
|
+
* 现在:两个文件的同步 fs **计数为 0**(`grep -c 'Sync('`)。
|
|
29
|
+
*
|
|
30
|
+
* 🔴 **为什么移交时那么写不是缺陷**:算法原本只在 CLI 里跑,同步 IO 只阻塞它自己。
|
|
31
|
+
* **换了宿主(CLI → console 进程)之后性质才变的。**
|
|
32
|
+
* ⇒ 所以只改**这个适配层**;`providers/art/*` 那些只读算法件**一行没动**(它们在 CLI 里同步是对的)。
|
|
33
|
+
* ⚠️ 还剩一处在算法件里:`atlas.logicalSize(mp)` 内部同步读 manifest(`/inspect` 会走到)。
|
|
34
|
+
* **刻意不动** —— 动它就要动只读移交件,而它是一次几 KB 的读。记在这里,别当成漏了。
|
|
35
|
+
*
|
|
36
|
+
* ⚠️ 归因时态(值得留):这**从来不是"美术流水线迁移引入的风险"**,是 0.65.75 起就在生产上的性质。
|
|
37
|
+
* 写成迁移风险,它就会在排期时跟着迁移一起被延后 —— 而它跟迁移无关。
|
|
38
|
+
* (没有马上改的原因也留着:上次为发版重启生产打断了 **307 个在跑会话**,
|
|
39
|
+
* 几~几十 ms 的收益不值得单独发一版 ⇒ 决定搭下一次发版的车。**这次就是那次车。**)
|
|
40
|
+
* ─────────────────────────────────────────────────────────────────────────
|
|
21
41
|
*/
|
|
22
|
-
import {
|
|
42
|
+
import { readFile, writeFile } from 'node:fs/promises';
|
|
23
43
|
import { basename, dirname, join, resolve } from 'node:path';
|
|
24
44
|
import { Hono } from 'hono';
|
|
25
45
|
import { domainError, toHttpStatus, toProblemJson } from '../../shared/errors.js';
|
|
@@ -57,9 +77,9 @@ function bool(b, k) {
|
|
|
57
77
|
return b[k] === true || b[k] === 'true';
|
|
58
78
|
}
|
|
59
79
|
/** `out` 省略 = 原地覆盖 `in`(同 CLI)。**但仍要过写围栏** —— 原地覆盖也是写。 */
|
|
60
|
-
function outOf(b, inPath) {
|
|
80
|
+
async function outOf(b, inPath) {
|
|
61
81
|
const raw = str(b, 'out');
|
|
62
|
-
return resolveOutputPath(raw ?? inPath, 'out');
|
|
82
|
+
return await resolveOutputPath(raw ?? inPath, 'out');
|
|
63
83
|
}
|
|
64
84
|
/** 统一的 body 解析 + 错误翻译。算子异常按"输入的错 vs 我们的错"分流。 */
|
|
65
85
|
async function run(c, fn) {
|
|
@@ -100,8 +120,8 @@ export function createArtRoute() {
|
|
|
100
120
|
const app = new Hono();
|
|
101
121
|
app.post('/chroma-key', (c) => run(c, async (b) => {
|
|
102
122
|
const { chromaKey } = await import('../../providers/art/pixels.js');
|
|
103
|
-
const inPath = resolveInputPath(reqStr(b, 'in'));
|
|
104
|
-
const out = outOf(b, inPath);
|
|
123
|
+
const inPath = await resolveInputPath(reqStr(b, 'in'));
|
|
124
|
+
const out = await outOf(b, inPath);
|
|
105
125
|
const opts = {};
|
|
106
126
|
const t = num(b, 'tolerance');
|
|
107
127
|
const f = num(b, 'feather');
|
|
@@ -109,30 +129,30 @@ export function createArtRoute() {
|
|
|
109
129
|
opts.tolerance = t;
|
|
110
130
|
if (f !== undefined)
|
|
111
131
|
opts.feather = f;
|
|
112
|
-
const buf = await chromaKey(
|
|
113
|
-
|
|
132
|
+
const buf = await chromaKey(await readFile(inPath), opts);
|
|
133
|
+
await writeFile(out, buf);
|
|
114
134
|
return { out, bytes: buf.length };
|
|
115
135
|
}));
|
|
116
136
|
app.post('/rembg', (c) => run(c, async (b) => {
|
|
117
137
|
const { rembgRemove } = await import('../../providers/art/pixels.js');
|
|
118
|
-
const inPath = resolveInputPath(reqStr(b, 'in'));
|
|
119
|
-
const out = outOf(b, inPath);
|
|
120
|
-
const buf = await rembgRemove(
|
|
121
|
-
|
|
138
|
+
const inPath = await resolveInputPath(reqStr(b, 'in'));
|
|
139
|
+
const out = await outOf(b, inPath);
|
|
140
|
+
const buf = await rembgRemove(await readFile(inPath));
|
|
141
|
+
await writeFile(out, buf);
|
|
122
142
|
return { out, bytes: buf.length };
|
|
123
143
|
}));
|
|
124
144
|
app.post('/clean-alpha', (c) => run(c, async (b) => {
|
|
125
145
|
const { cleanAlpha } = await import('../../providers/art/pixels.js');
|
|
126
|
-
const inPath = resolveInputPath(reqStr(b, 'in'));
|
|
127
|
-
const out = outOf(b, inPath);
|
|
128
|
-
const buf = await cleanAlpha(
|
|
129
|
-
|
|
146
|
+
const inPath = await resolveInputPath(reqStr(b, 'in'));
|
|
147
|
+
const out = await outOf(b, inPath);
|
|
148
|
+
const buf = await cleanAlpha(await readFile(inPath), num(b, 'lo') ?? 30, num(b, 'hi') ?? 200);
|
|
149
|
+
await writeFile(out, buf);
|
|
130
150
|
return { out, bytes: buf.length };
|
|
131
151
|
}));
|
|
132
152
|
/** 只读判据:这张图值不值得交给模型(不是"抠得干不干净")。 */
|
|
133
153
|
app.post('/residue', (c) => run(c, async (b) => {
|
|
134
154
|
const { magentaResidue, alreadyTransparent } = await import('../../providers/art/pixels.js');
|
|
135
|
-
const buf =
|
|
155
|
+
const buf = await readFile(await resolveInputPath(reqStr(b, 'in')));
|
|
136
156
|
const [residue, transparent] = await Promise.all([magentaResidue(buf), alreadyTransparent(buf)]);
|
|
137
157
|
// needsRembg 直接给结论,省得调用方自己比阈值比错。
|
|
138
158
|
return { residue, alreadyTransparent: transparent, threshold: 0.005, needsRembg: !transparent && residue > 0.005 };
|
|
@@ -141,7 +161,7 @@ export function createArtRoute() {
|
|
|
141
161
|
const sharp = (await import('sharp')).default;
|
|
142
162
|
const { alreadyTransparent } = await import('../../providers/art/pixels.js');
|
|
143
163
|
const { logicalSize } = await import('../../providers/art/atlas.js');
|
|
144
|
-
const buf =
|
|
164
|
+
const buf = await readFile(await resolveInputPath(reqStr(b, 'in')));
|
|
145
165
|
const meta = await sharp(buf).metadata();
|
|
146
166
|
const width = meta.width ?? 0;
|
|
147
167
|
const height = meta.height ?? 0;
|
|
@@ -162,7 +182,7 @@ export function createArtRoute() {
|
|
|
162
182
|
// **不能提供的答案,不要给一个形状正确的占位。**
|
|
163
183
|
const manifest = str(b, 'manifest');
|
|
164
184
|
if (manifest) {
|
|
165
|
-
const mp = resolveManifestPath(manifest);
|
|
185
|
+
const mp = await resolveManifestPath(manifest);
|
|
166
186
|
let logical;
|
|
167
187
|
try {
|
|
168
188
|
logical = logicalSize(mp);
|
|
@@ -185,24 +205,25 @@ export function createArtRoute() {
|
|
|
185
205
|
}));
|
|
186
206
|
app.post('/slice-sheet', (c) => run(c, async (b) => {
|
|
187
207
|
const { sliceSheet } = await import('../../providers/art/sheet.js');
|
|
188
|
-
const inPath = resolveInputPath(reqStr(b, 'in'));
|
|
208
|
+
const inPath = await resolveInputPath(reqStr(b, 'in'));
|
|
189
209
|
const cols = reqNum(b, 'cols');
|
|
190
210
|
const rows = reqNum(b, 'rows');
|
|
191
|
-
const r = await sliceSheet(
|
|
211
|
+
const r = await sliceSheet(await readFile(inPath), cols, rows, { grid: bool(b, 'grid') });
|
|
192
212
|
const outDirRaw = str(b, 'outDir');
|
|
193
213
|
const stem = str(b, 'name') ?? 'frame';
|
|
194
|
-
const outDir = outDirRaw ? resolveOutputDir(outDirRaw) : undefined;
|
|
214
|
+
const outDir = outDirRaw ? await resolveOutputDir(outDirRaw) : undefined;
|
|
195
215
|
// 🔴 清单:**次序是数据,不是排序约定**。`frame_10.png` 字典序排在 `frame_2.png` 前面 ——
|
|
196
216
|
// 调用方靠文件名排 = 帧序乱、而每张图都对(最难看出的那种错)。
|
|
197
217
|
// 🔴 **空格占一个 index 并出现在清单里**(w/h 为 0 + empty:true)。跳过 = 其后所有帧索引前移,
|
|
198
218
|
// 而游戏按 `<id>_0/_1` 引用 —— 一个空格错位整套动画。
|
|
199
219
|
// ⚠️ 这条在 packSheet 内部保住过一次,**清单是新面,同一个坑要再堵一次**:
|
|
200
220
|
// 移交时保住的不变量不会自动跟到 HTTP 面上。
|
|
201
|
-
|
|
221
|
+
// Promise.all 保序 —— 见上:**次序是数据**,不是排序约定。
|
|
222
|
+
const items = await Promise.all(r.frames.map(async (buf, i) => {
|
|
202
223
|
const size = r.sizes[i] ?? { w: 0, h: 0 };
|
|
203
224
|
const file = `${stem}_${i}.png`;
|
|
204
225
|
if (outDir)
|
|
205
|
-
|
|
226
|
+
await writeFile(join(outDir, file), buf);
|
|
206
227
|
return {
|
|
207
228
|
index: i,
|
|
208
229
|
...(outDir ? { file } : {}),
|
|
@@ -210,7 +231,7 @@ export function createArtRoute() {
|
|
|
210
231
|
h: size.h,
|
|
211
232
|
...(size.w === 0 && size.h === 0 ? { empty: true } : {}),
|
|
212
233
|
};
|
|
213
|
-
});
|
|
234
|
+
}));
|
|
214
235
|
// ⚠️ `detected:true`(内容感知切)时 index 是**连通域顺序**,不是网格格位:
|
|
215
236
|
// 空区域根本不产生 cell,所以那条路上空格是**缺席**而非占位,frames 可能 ≠ cols×rows。
|
|
216
237
|
// 这正是 frames vs expectedFrames 要给出来的原因 —— 它是"要不要 grid:true 重来"的信号。
|
|
@@ -226,7 +247,7 @@ export function createArtRoute() {
|
|
|
226
247
|
app.post('/pack-atlas', (c) => run(c, async (b) => {
|
|
227
248
|
const { packSheet } = await import('../../providers/art/sheet.js');
|
|
228
249
|
const { writeAtlasJson } = await import('../../providers/art/atlas.js');
|
|
229
|
-
const inPath = resolveInputPath(reqStr(b, 'in'));
|
|
250
|
+
const inPath = await resolveInputPath(reqStr(b, 'in'));
|
|
230
251
|
const cols = reqNum(b, 'cols');
|
|
231
252
|
const rows = reqNum(b, 'rows');
|
|
232
253
|
const opts = { grid: bool(b, 'grid') };
|
|
@@ -235,10 +256,10 @@ export function createArtRoute() {
|
|
|
235
256
|
const fmh = num(b, 'frameMaxHeight');
|
|
236
257
|
if (fmh !== undefined)
|
|
237
258
|
opts.frameMaxHeight = fmh;
|
|
238
|
-
const packed = await packSheet(
|
|
239
|
-
const out = outOf(b, inPath);
|
|
259
|
+
const packed = await packSheet(await readFile(inPath), cols, rows, opts);
|
|
260
|
+
const out = await outOf(b, inPath);
|
|
240
261
|
const id = str(b, 'id');
|
|
241
|
-
const dir = id ? resolveOutputDir(str(b, 'assetsDir') ?? dirname(out), 'assetsDir') : undefined;
|
|
262
|
+
const dir = id ? await resolveOutputDir(str(b, 'assetsDir') ?? dirname(out), 'assetsDir') : undefined;
|
|
242
263
|
// 🔴 与 CLI 面同一道断言(cbc3454):atlas 的 `meta.image` 由 `id` 推出(`${id}.png`),
|
|
243
264
|
// 而图落在 `out`。不自洽时 atlas 结构合法、坐标自洽,只有引擎加载时报「找不到图」。
|
|
244
265
|
// **先断言再落盘** —— 宁可什么都不写,也不写出一个指向空气的 atlas。
|
|
@@ -248,7 +269,7 @@ export function createArtRoute() {
|
|
|
248
269
|
expectedImage: resolve(dir, `${id}.png`),
|
|
249
270
|
});
|
|
250
271
|
}
|
|
251
|
-
|
|
272
|
+
await writeFile(out, packed.buf);
|
|
252
273
|
let atlas;
|
|
253
274
|
if (id && dir) {
|
|
254
275
|
writeAtlasJson(dir, id, packed);
|
|
@@ -269,10 +290,10 @@ export function createArtRoute() {
|
|
|
269
290
|
// `pack-atlas` 的 `id` 上踩过的那类坑,分开就不存在。
|
|
270
291
|
app.post('/normalize-sheet', (c) => run(c, async (b) => {
|
|
271
292
|
const { normalizeSheet } = await import('../../providers/art/sheet.js');
|
|
272
|
-
const inPath = resolveInputPath(reqStr(b, 'in'));
|
|
273
|
-
const out = outOf(b, inPath);
|
|
274
|
-
const r = await normalizeSheet(
|
|
275
|
-
|
|
293
|
+
const inPath = await resolveInputPath(reqStr(b, 'in'));
|
|
294
|
+
const out = await outOf(b, inPath);
|
|
295
|
+
const r = await normalizeSheet(await readFile(inPath), reqNum(b, 'cols'), reqNum(b, 'rows'));
|
|
296
|
+
await writeFile(out, r.buf);
|
|
276
297
|
return {
|
|
277
298
|
out,
|
|
278
299
|
mode: 'sheet',
|
|
@@ -290,7 +311,7 @@ export function createArtRoute() {
|
|
|
290
311
|
if (!Array.isArray(raw) || raw.length === 0) {
|
|
291
312
|
throw invalid('FIELD_REQUIRED', 'in 必须是非空的绝对路径数组', { field: 'in' });
|
|
292
313
|
}
|
|
293
|
-
const inputs = raw.map((p, i) => resolveInputPath(String(p), `in[${i}]`));
|
|
314
|
+
const inputs = await Promise.all(raw.map((p, i) => resolveInputPath(String(p), `in[${i}]`)));
|
|
294
315
|
const opts = {};
|
|
295
316
|
const tw = num(b, 'targetWidth');
|
|
296
317
|
const th = num(b, 'targetHeight');
|
|
@@ -302,17 +323,14 @@ export function createArtRoute() {
|
|
|
302
323
|
if (pd !== undefined)
|
|
303
324
|
opts.pad = pd;
|
|
304
325
|
const outDirRaw = str(b, 'outDir');
|
|
305
|
-
const outDir = outDirRaw ? resolveOutputDir(outDirRaw) : undefined;
|
|
326
|
+
const outDir = outDirRaw ? await resolveOutputDir(outDirRaw) : undefined;
|
|
306
327
|
// outDir 省略 = 原地覆盖各输入 —— 逐个过写围栏(资源库可读不可写,原地覆盖会在那里被挡住,
|
|
307
328
|
// 这正是我们要的:studio 该把结果写进共享树再自己搬回资源库)。
|
|
308
|
-
const targets = inputs.map((p, i) => outDir ? join(outDir, `frame_${i}.png`) : resolveOutputPath(p, `in[${i}]`));
|
|
309
|
-
const r = await normalizeFrames(inputs.map((p) =>
|
|
310
|
-
|
|
311
|
-
r.frames.
|
|
312
|
-
|
|
313
|
-
writeFileSync(p, buf);
|
|
314
|
-
written.push(p);
|
|
315
|
-
});
|
|
329
|
+
const targets = await Promise.all(inputs.map((p, i) => outDir ? Promise.resolve(join(outDir, `frame_${i}.png`)) : resolveOutputPath(p, `in[${i}]`)));
|
|
330
|
+
const r = await normalizeFrames(await Promise.all(inputs.map((p) => readFile(p))), opts);
|
|
331
|
+
// 逐帧目标先按 index 定好再并发写 —— written 的**次序是数据**(调用方按它对帧)。
|
|
332
|
+
const written = r.frames.map((_, i) => targets[i] ?? join(outDir ?? dirname(inputs[0]), `frame_${i}.png`));
|
|
333
|
+
await Promise.all(r.frames.map((buf, i) => writeFile(written[i], buf)));
|
|
316
334
|
return {
|
|
317
335
|
mode: 'frames',
|
|
318
336
|
width: r.width,
|
|
@@ -325,11 +343,11 @@ export function createArtRoute() {
|
|
|
325
343
|
// 🔴 不适用于图集!图集必须走 pack-atlas 的 frameMaxHeight(见上)。
|
|
326
344
|
app.post('/resize', (c) => run(c, async (b) => {
|
|
327
345
|
const { resizeToFit } = await import('../../providers/art/frames.js');
|
|
328
|
-
const inPath = resolveInputPath(reqStr(b, 'in'));
|
|
329
|
-
const out = outOf(b, inPath);
|
|
330
|
-
const r = await resizeToFit(
|
|
346
|
+
const inPath = await resolveInputPath(reqStr(b, 'in'));
|
|
347
|
+
const out = await outOf(b, inPath);
|
|
348
|
+
const r = await resizeToFit(await readFile(inPath), reqNum(b, 'maxWidth'), reqNum(b, 'maxHeight'));
|
|
331
349
|
if (r.changed)
|
|
332
|
-
|
|
350
|
+
await writeFile(out, r.buf);
|
|
333
351
|
return { out, changed: r.changed, width: r.width, height: r.height };
|
|
334
352
|
}));
|
|
335
353
|
return app;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"art.js","sourceRoot":"","sources":["../../../src/console/routes/art.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"art.js","sourceRoot":"","sources":["../../../src/console/routes/art.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module console/routes/artPipeline
|
|
3
|
+
* @description `/api/art/pipeline/runs` —— 美术流水线的 run 面(1.7 契约 + 1.8 并发闸)。
|
|
4
|
+
* @layer console
|
|
5
|
+
*
|
|
6
|
+
* 🔴 **这一层不干活**:校验 → 交给 `ArtRunService`(它把活丢进子进程)→ 立刻 202。
|
|
7
|
+
* 路由里**一次同步 fs 都没有**,也不等图跑完 —— 事件循环是所有请求共用的。
|
|
8
|
+
*
|
|
9
|
+
* 三条来自 1.7、写死在这里不许被"顺手优化"的:
|
|
10
|
+
* `verify` 缺省显式 false · `jobId` 禁 `:` · **拒收一切路径字段** —— 见 `artRunRequest`。
|
|
11
|
+
*/
|
|
12
|
+
import { Hono } from 'hono';
|
|
13
|
+
import type { ArtRunService } from '../../core/art/artRunService.js';
|
|
14
|
+
export declare function createArtPipelineRoute(runs: ArtRunService): Hono;
|
|
15
|
+
//# sourceMappingURL=artPipeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artPipeline.d.ts","sourceRoot":"","sources":["../../../src/console/routes/artPipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAG5B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAMrE,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,CAoEhE"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module console/routes/artPipeline
|
|
3
|
+
* @description `/api/art/pipeline/runs` —— 美术流水线的 run 面(1.7 契约 + 1.8 并发闸)。
|
|
4
|
+
* @layer console
|
|
5
|
+
*
|
|
6
|
+
* 🔴 **这一层不干活**:校验 → 交给 `ArtRunService`(它把活丢进子进程)→ 立刻 202。
|
|
7
|
+
* 路由里**一次同步 fs 都没有**,也不等图跑完 —— 事件循环是所有请求共用的。
|
|
8
|
+
*
|
|
9
|
+
* 三条来自 1.7、写死在这里不许被"顺手优化"的:
|
|
10
|
+
* `verify` 缺省显式 false · `jobId` 禁 `:` · **拒收一切路径字段** —— 见 `artRunRequest`。
|
|
11
|
+
*/
|
|
12
|
+
import { Hono } from 'hono';
|
|
13
|
+
import { domainError, toHttpStatus, toProblemJson } from '../../shared/errors.js';
|
|
14
|
+
import { parseArtRunRequest } from '../lib/artRunRequest.js';
|
|
15
|
+
function isDomainError(e) {
|
|
16
|
+
return typeof e === 'object' && e !== null && 'kind' in e && 'code' in e && 'message' in e;
|
|
17
|
+
}
|
|
18
|
+
export function createArtPipelineRoute(runs) {
|
|
19
|
+
const app = new Hono();
|
|
20
|
+
app.post('/runs', async (c) => {
|
|
21
|
+
let body;
|
|
22
|
+
try {
|
|
23
|
+
body = await c.req.json();
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
return c.json(toProblemJson(domainError('validation', 'BODY_INVALID', '请求体必须是 JSON 对象')), 422);
|
|
27
|
+
}
|
|
28
|
+
let req;
|
|
29
|
+
try {
|
|
30
|
+
req = parseArtRunRequest(body);
|
|
31
|
+
}
|
|
32
|
+
catch (e) {
|
|
33
|
+
if (isDomainError(e))
|
|
34
|
+
return c.json(toProblemJson(e), toHttpStatus(e));
|
|
35
|
+
throw e;
|
|
36
|
+
}
|
|
37
|
+
// 🔴 `verify:true` **当场拒绝,不是静默忽略**:验证棒(评委→docs/asset-issues.json)
|
|
38
|
+
// 还留在 studio 的 artPipeline 里,没搬。静默忽略的话调用方会以为它跑了 ——
|
|
39
|
+
// 而"没验证"这件事**不会有任何症状**,只会在某天被当成"验证没抓到"。
|
|
40
|
+
if (req.verify) {
|
|
41
|
+
return c.json(toProblemJson(domainError('validation', 'VERIFY_NOT_SUPPORTED', 'sps 本版不支持 verify:true(验证棒尚未迁移)——请显式传 false', { details: { field: 'verify' } })), 422);
|
|
42
|
+
}
|
|
43
|
+
// 🔴 凭据必须一路带到子进程(1.7b)。曾经这里只传前四个字段,
|
|
44
|
+
// `gatewayToken`/`gatewayBaseUrl` 校验完就没人要了 —— 子进程回落全局 provider,
|
|
45
|
+
// 归因落平台账、**不报错**。别再"精简"这个对象。
|
|
46
|
+
const r = runs.start({
|
|
47
|
+
locator: req.locator,
|
|
48
|
+
jobId: req.jobId,
|
|
49
|
+
manifestFile: req.manifestFile,
|
|
50
|
+
artPrompts: req.artPrompts,
|
|
51
|
+
gatewayToken: req.gatewayToken,
|
|
52
|
+
gatewayBaseUrl: req.gatewayBaseUrl,
|
|
53
|
+
...(req.imageModel ? { imageModel: req.imageModel } : {}),
|
|
54
|
+
});
|
|
55
|
+
if (!r.ok) {
|
|
56
|
+
// 🔴 429 直接写在这里,**不给共享错误模型加一种 kind**:`toHttpStatus` 是全仓公用的,
|
|
57
|
+
// 为一条路径改它会波及所有消费方的分流。Retry-After 是"什么时候再来问"的建议,不是 ETA。
|
|
58
|
+
const de = domainError('precondition', 'ART_RUNS_BUSY', `美术并发已满(在跑 ${r.running},排队 ${r.queued})——请稍后重试`, {
|
|
59
|
+
details: { running: r.running, queued: r.queued, retryAfterS: r.retryAfterS },
|
|
60
|
+
});
|
|
61
|
+
c.header('Retry-After', String(r.retryAfterS));
|
|
62
|
+
return c.json(toProblemJson(de), 429);
|
|
63
|
+
}
|
|
64
|
+
// 202:活已收下、还没做完(排队与在跑都是 202 —— 调用方该做的事一样:去查状态)。
|
|
65
|
+
return c.json({ runId: r.runId, status: r.status }, 202);
|
|
66
|
+
});
|
|
67
|
+
app.get('/runs/:id', (c) => {
|
|
68
|
+
const v = runs.get(c.req.param('id'));
|
|
69
|
+
if (!v)
|
|
70
|
+
return c.json(toProblemJson(domainError('not-found', 'RUN_NOT_FOUND', 'run 不存在(注册表是内存的:console 重启后旧 run 查不到)')), 404);
|
|
71
|
+
return c.json(v);
|
|
72
|
+
});
|
|
73
|
+
app.post('/runs/:id/cancel', (c) => {
|
|
74
|
+
const v = runs.cancel(c.req.param('id'));
|
|
75
|
+
if (!v)
|
|
76
|
+
return c.json(toProblemJson(domainError('not-found', 'RUN_NOT_FOUND', 'run 不存在')), 404);
|
|
77
|
+
// 🔴 **202 不是 204**(1.7 写死):取消是"已受理",不是"已取消" ——
|
|
78
|
+
// 真正停下要等子进程走到下一个资产边界。204 会被读成"停了",而它可能还在画最后一张。
|
|
79
|
+
return c.json(v, 202);
|
|
80
|
+
});
|
|
81
|
+
return app;
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=artPipeline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artPipeline.js","sourceRoot":"","sources":["../../../src/console/routes/artPipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module core/art/artConcurrency
|
|
3
|
+
* @description 美术流水线的**两个并发数**,以及它们为什么必须写在一起(1.5 / 1.8)。
|
|
4
|
+
* @layer core
|
|
5
|
+
* @boundedContext art
|
|
6
|
+
*
|
|
7
|
+
* ══════════════════════════════════════════════════════════════════════════
|
|
8
|
+
* 🔴 **瓶颈是 libuv 线程池,不是内存。**
|
|
9
|
+
*
|
|
10
|
+
* 每张图都要过 sharp(解码/抠图/缩放/编码),而 sharp 的活落在 **libuv 线程池**上,
|
|
11
|
+
* 池是**全进程共享**的。gameforge 并行生 8 张就能吃满它 —— 症状是
|
|
12
|
+
* **"sps 整体变慢"而不是"美术慢"**(同进程的每个 HTTP 请求、SSE 心跳一起卡),
|
|
13
|
+
* 归因会指向完全错的地方。
|
|
14
|
+
*
|
|
15
|
+
* ⚠️ 所以**不要复用 `RunGovernor` 的数字**:它是**内存刻度**(≈400MB/run),
|
|
16
|
+
* 按它算美术并发会得到"没满"的**假信号** —— 内存确实没满,卡住的是线程池。
|
|
17
|
+
* **两个闸量的是不同的东西,数字不可互借。**
|
|
18
|
+
*
|
|
19
|
+
* 🔴 **`UV_THREADPOOL_SIZE` 只在进程启动、线程池首次使用【之前】设才有效。**
|
|
20
|
+
* 池是懒初始化的:**定型之后改 `process.env` 静默无效**(没有报错,只是不生效)。
|
|
21
|
+
* ⇒ 唯一可靠的设法是 **spawn 子进程时放进它的 env**,
|
|
22
|
+
* 而不是写进 systemd(那会"影响无关的一切,且读代码的人看不见")。
|
|
23
|
+
*
|
|
24
|
+
* 所以这两个数**必须在同一处定义**:池的大小和"同时有几张图在处理"是同一个数的两面,
|
|
25
|
+
* 分开写的话它们会各自漂,而漂了之后**没有任何报错** —— 只是变慢或线程饿死。
|
|
26
|
+
* ══════════════════════════════════════════════════════════════════════════
|
|
27
|
+
*/
|
|
28
|
+
/**
|
|
29
|
+
* 一个 run 内同时处理的资产数**上限**(= 子进程的 `UV_THREADPOOL_SIZE`)。
|
|
30
|
+
*
|
|
31
|
+
* 两个使用点,改一个必须改另一个(它们 import 的是同一个常量,所以改不散):
|
|
32
|
+
* ```
|
|
33
|
+
* providers/art/artGen manifest.concurrency 的封顶
|
|
34
|
+
* core/art/artRunLauncher spawn 子进程时的 UV_THREADPOOL_SIZE
|
|
35
|
+
* ```
|
|
36
|
+
* 8 是 studio 侧既有的封顶值(`Math.min(8, manifest.concurrency ?? 4)`),原样搬 ——
|
|
37
|
+
* **不是新调的参数**。真要调,判据在 1.11 的实测,不在这里拍脑袋。
|
|
38
|
+
*/
|
|
39
|
+
export declare const ART_ASSET_CONCURRENCY_MAX = 8;
|
|
40
|
+
/**
|
|
41
|
+
* 并发闸的缺省值(1.8)。全局总闸 + 租户配额,**不做项目级**。
|
|
42
|
+
*
|
|
43
|
+
* ⚠️ 这三个数今天是**保守的猜测,不是测量结果** —— 唯一有把握的是"它们与
|
|
44
|
+
* RunGovernor 的内存刻度无关"。1.11 实测之后按线程池/CPU 的真实表现调,
|
|
45
|
+
* 调之前它们至少保证:**一台机器上不会同时跑起十几个吃满线程池的子进程**。
|
|
46
|
+
*/
|
|
47
|
+
export declare const ART_RUN_LIMITS: {
|
|
48
|
+
/** 全机同时在跑的 run 数。 */
|
|
49
|
+
readonly maxRuns: 2;
|
|
50
|
+
/** 同一租户同时在跑的 run 数(**不做项目级**:项目级配额是产品策略,不是资源保护)。 */
|
|
51
|
+
readonly maxRunsPerTenant: 1;
|
|
52
|
+
/** 排队深度(全局)。**超了就 429 + Retry-After,不无限积压** —— 无限队列
|
|
53
|
+
* 只是把"现在失败"变成"过很久之后失败",而调用方拿不到任何可操作的信号。 */
|
|
54
|
+
readonly maxQueued: 8;
|
|
55
|
+
/**
|
|
56
|
+
* `Retry-After` 的秒数。
|
|
57
|
+
*
|
|
58
|
+
* 🔴 **是"什么时候再来问"的建议,不是承诺**。刻意不按"队列深度 × 平均时长"估:
|
|
59
|
+
* 那个平均时长今天**没有测量过**,估出来的数会被调用方当成 ETA 用。
|
|
60
|
+
*/
|
|
61
|
+
readonly retryAfterS: 30;
|
|
62
|
+
};
|
|
63
|
+
//# sourceMappingURL=artConcurrency.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artConcurrency.d.ts","sourceRoot":"","sources":["../../../src/core/art/artConcurrency.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH;;;;;;;;;;GAUG;AACH,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAE3C;;;;;;GAMG;AACH,eAAO,MAAM,cAAc;IACzB,qBAAqB;;IAErB,oDAAoD;;IAEpD;gDAC4C;;IAE5C;;;;;OAKG;;CAEK,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module core/art/artConcurrency
|
|
3
|
+
* @description 美术流水线的**两个并发数**,以及它们为什么必须写在一起(1.5 / 1.8)。
|
|
4
|
+
* @layer core
|
|
5
|
+
* @boundedContext art
|
|
6
|
+
*
|
|
7
|
+
* ══════════════════════════════════════════════════════════════════════════
|
|
8
|
+
* 🔴 **瓶颈是 libuv 线程池,不是内存。**
|
|
9
|
+
*
|
|
10
|
+
* 每张图都要过 sharp(解码/抠图/缩放/编码),而 sharp 的活落在 **libuv 线程池**上,
|
|
11
|
+
* 池是**全进程共享**的。gameforge 并行生 8 张就能吃满它 —— 症状是
|
|
12
|
+
* **"sps 整体变慢"而不是"美术慢"**(同进程的每个 HTTP 请求、SSE 心跳一起卡),
|
|
13
|
+
* 归因会指向完全错的地方。
|
|
14
|
+
*
|
|
15
|
+
* ⚠️ 所以**不要复用 `RunGovernor` 的数字**:它是**内存刻度**(≈400MB/run),
|
|
16
|
+
* 按它算美术并发会得到"没满"的**假信号** —— 内存确实没满,卡住的是线程池。
|
|
17
|
+
* **两个闸量的是不同的东西,数字不可互借。**
|
|
18
|
+
*
|
|
19
|
+
* 🔴 **`UV_THREADPOOL_SIZE` 只在进程启动、线程池首次使用【之前】设才有效。**
|
|
20
|
+
* 池是懒初始化的:**定型之后改 `process.env` 静默无效**(没有报错,只是不生效)。
|
|
21
|
+
* ⇒ 唯一可靠的设法是 **spawn 子进程时放进它的 env**,
|
|
22
|
+
* 而不是写进 systemd(那会"影响无关的一切,且读代码的人看不见")。
|
|
23
|
+
*
|
|
24
|
+
* 所以这两个数**必须在同一处定义**:池的大小和"同时有几张图在处理"是同一个数的两面,
|
|
25
|
+
* 分开写的话它们会各自漂,而漂了之后**没有任何报错** —— 只是变慢或线程饿死。
|
|
26
|
+
* ══════════════════════════════════════════════════════════════════════════
|
|
27
|
+
*/
|
|
28
|
+
/**
|
|
29
|
+
* 一个 run 内同时处理的资产数**上限**(= 子进程的 `UV_THREADPOOL_SIZE`)。
|
|
30
|
+
*
|
|
31
|
+
* 两个使用点,改一个必须改另一个(它们 import 的是同一个常量,所以改不散):
|
|
32
|
+
* ```
|
|
33
|
+
* providers/art/artGen manifest.concurrency 的封顶
|
|
34
|
+
* core/art/artRunLauncher spawn 子进程时的 UV_THREADPOOL_SIZE
|
|
35
|
+
* ```
|
|
36
|
+
* 8 是 studio 侧既有的封顶值(`Math.min(8, manifest.concurrency ?? 4)`),原样搬 ——
|
|
37
|
+
* **不是新调的参数**。真要调,判据在 1.11 的实测,不在这里拍脑袋。
|
|
38
|
+
*/
|
|
39
|
+
export const ART_ASSET_CONCURRENCY_MAX = 8;
|
|
40
|
+
/**
|
|
41
|
+
* 并发闸的缺省值(1.8)。全局总闸 + 租户配额,**不做项目级**。
|
|
42
|
+
*
|
|
43
|
+
* ⚠️ 这三个数今天是**保守的猜测,不是测量结果** —— 唯一有把握的是"它们与
|
|
44
|
+
* RunGovernor 的内存刻度无关"。1.11 实测之后按线程池/CPU 的真实表现调,
|
|
45
|
+
* 调之前它们至少保证:**一台机器上不会同时跑起十几个吃满线程池的子进程**。
|
|
46
|
+
*/
|
|
47
|
+
export const ART_RUN_LIMITS = {
|
|
48
|
+
/** 全机同时在跑的 run 数。 */
|
|
49
|
+
maxRuns: 2,
|
|
50
|
+
/** 同一租户同时在跑的 run 数(**不做项目级**:项目级配额是产品策略,不是资源保护)。 */
|
|
51
|
+
maxRunsPerTenant: 1,
|
|
52
|
+
/** 排队深度(全局)。**超了就 429 + Retry-After,不无限积压** —— 无限队列
|
|
53
|
+
* 只是把"现在失败"变成"过很久之后失败",而调用方拿不到任何可操作的信号。 */
|
|
54
|
+
maxQueued: 8,
|
|
55
|
+
/**
|
|
56
|
+
* `Retry-After` 的秒数。
|
|
57
|
+
*
|
|
58
|
+
* 🔴 **是"什么时候再来问"的建议,不是承诺**。刻意不按"队列深度 × 平均时长"估:
|
|
59
|
+
* 那个平均时长今天**没有测量过**,估出来的数会被调用方当成 ETA 用。
|
|
60
|
+
*/
|
|
61
|
+
retryAfterS: 30,
|
|
62
|
+
};
|
|
63
|
+
//# sourceMappingURL=artConcurrency.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artConcurrency.js","sourceRoot":"","sources":["../../../src/core/art/artConcurrency.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC;AAE3C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,qBAAqB;IACrB,OAAO,EAAE,CAAC;IACV,oDAAoD;IACpD,gBAAgB,EAAE,CAAC;IACnB;gDAC4C;IAC5C,SAAS,EAAE,CAAC;IACZ;;;;;OAKG;IACH,WAAW,EAAE,EAAE;CACP,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ArtRunLauncher } from './artRunService.js';
|
|
2
|
+
/** 结果行前缀 —— 子进程的 stdout 上可能还有别的输出(算子的 warn 等),靠它挑出结果。 */
|
|
3
|
+
export declare const ART_RESULT_PREFIX = "SPS_ART_RESULT ";
|
|
4
|
+
/** 生产用 launcher。测试注入自己的(见 artRunService.test)。 */
|
|
5
|
+
export declare const spawnArtRun: ArtRunLauncher;
|
|
6
|
+
//# sourceMappingURL=artRunLauncher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artRunLauncher.d.ts","sourceRoot":"","sources":["../../../src/core/art/artRunLauncher.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAgC,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEvF,yDAAyD;AACzD,eAAO,MAAM,iBAAiB,oBAAoB,CAAC;AAuBnD,kDAAkD;AAClD,eAAO,MAAM,WAAW,EAAE,cA4CzB,CAAC"}
|