@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.
Files changed (103) hide show
  1. package/dist/console/index.d.ts.map +1 -1
  2. package/dist/console/index.js +6 -0
  3. package/dist/console/index.js.map +1 -1
  4. package/dist/console/lib/artPaths.d.ts +4 -4
  5. package/dist/console/lib/artPaths.d.ts.map +1 -1
  6. package/dist/console/lib/artPaths.js +24 -16
  7. package/dist/console/lib/artPaths.js.map +1 -1
  8. package/dist/console/lib/artRunRequest.d.ts +46 -0
  9. package/dist/console/lib/artRunRequest.d.ts.map +1 -0
  10. package/dist/console/lib/artRunRequest.js +107 -0
  11. package/dist/console/lib/artRunRequest.js.map +1 -0
  12. package/dist/console/routes/art.d.ts.map +1 -1
  13. package/dist/console/routes/art.js +65 -47
  14. package/dist/console/routes/art.js.map +1 -1
  15. package/dist/console/routes/artPipeline.d.ts +15 -0
  16. package/dist/console/routes/artPipeline.d.ts.map +1 -0
  17. package/dist/console/routes/artPipeline.js +83 -0
  18. package/dist/console/routes/artPipeline.js.map +1 -0
  19. package/dist/core/art/artConcurrency.d.ts +63 -0
  20. package/dist/core/art/artConcurrency.d.ts.map +1 -0
  21. package/dist/core/art/artConcurrency.js +63 -0
  22. package/dist/core/art/artConcurrency.js.map +1 -0
  23. package/dist/core/art/artRunLauncher.d.ts +6 -0
  24. package/dist/core/art/artRunLauncher.d.ts.map +1 -0
  25. package/dist/core/art/artRunLauncher.js +91 -0
  26. package/dist/core/art/artRunLauncher.js.map +1 -0
  27. package/dist/core/art/artRunService.d.ts +102 -0
  28. package/dist/core/art/artRunService.d.ts.map +1 -0
  29. package/dist/core/art/artRunService.js +181 -0
  30. package/dist/core/art/artRunService.js.map +1 -0
  31. package/dist/core/art/assetLocator.d.ts +33 -0
  32. package/dist/core/art/assetLocator.d.ts.map +1 -0
  33. package/dist/core/art/assetLocator.js +61 -0
  34. package/dist/core/art/assetLocator.js.map +1 -0
  35. package/dist/providers/art/artDriver.d.ts +71 -0
  36. package/dist/providers/art/artDriver.d.ts.map +1 -0
  37. package/dist/providers/art/artDriver.js +119 -0
  38. package/dist/providers/art/artDriver.js.map +1 -0
  39. package/dist/providers/art/artEvents.d.ts +23 -0
  40. package/dist/providers/art/artEvents.d.ts.map +1 -0
  41. package/dist/providers/art/artEvents.js +40 -0
  42. package/dist/providers/art/artEvents.js.map +1 -0
  43. package/dist/providers/art/artGen.d.ts +253 -0
  44. package/dist/providers/art/artGen.d.ts.map +1 -0
  45. package/dist/providers/art/artGen.js +1263 -0
  46. package/dist/providers/art/artGen.js.map +1 -0
  47. package/dist/providers/art/artPrompt.d.ts +42 -0
  48. package/dist/providers/art/artPrompt.d.ts.map +1 -0
  49. package/dist/providers/art/artPrompt.js +41 -0
  50. package/dist/providers/art/artPrompt.js.map +1 -0
  51. package/dist/providers/art/artRunChild.d.ts +3 -0
  52. package/dist/providers/art/artRunChild.d.ts.map +1 -0
  53. package/dist/providers/art/artRunChild.js +127 -0
  54. package/dist/providers/art/artRunChild.js.map +1 -0
  55. package/dist/providers/art/atomicWrite.d.ts +16 -0
  56. package/dist/providers/art/atomicWrite.d.ts.map +1 -0
  57. package/dist/providers/art/atomicWrite.js +62 -0
  58. package/dist/providers/art/atomicWrite.js.map +1 -0
  59. package/dist/providers/art/cancelMarker.d.ts +9 -0
  60. package/dist/providers/art/cancelMarker.d.ts.map +1 -0
  61. package/dist/providers/art/cancelMarker.js +60 -0
  62. package/dist/providers/art/cancelMarker.js.map +1 -0
  63. package/dist/providers/art/composeAsset.d.ts +52 -0
  64. package/dist/providers/art/composeAsset.d.ts.map +1 -0
  65. package/dist/providers/art/composeAsset.js +73 -0
  66. package/dist/providers/art/composeAsset.js.map +1 -0
  67. package/dist/providers/art/imageSize.d.ts +31 -0
  68. package/dist/providers/art/imageSize.d.ts.map +1 -0
  69. package/dist/providers/art/imageSize.js +92 -0
  70. package/dist/providers/art/imageSize.js.map +1 -0
  71. package/dist/providers/art/jobContext.d.ts +25 -0
  72. package/dist/providers/art/jobContext.d.ts.map +1 -0
  73. package/dist/providers/art/jobContext.js +5 -0
  74. package/dist/providers/art/jobContext.js.map +1 -0
  75. package/dist/providers/art/rateLimitRetry.d.ts +25 -0
  76. package/dist/providers/art/rateLimitRetry.d.ts.map +1 -0
  77. package/dist/providers/art/rateLimitRetry.js +40 -0
  78. package/dist/providers/art/rateLimitRetry.js.map +1 -0
  79. package/dist/providers/art/uiKit.d.ts +61 -0
  80. package/dist/providers/art/uiKit.d.ts.map +1 -0
  81. package/dist/providers/art/uiKit.js +331 -0
  82. package/dist/providers/art/uiKit.js.map +1 -0
  83. package/dist/providers/art/visionJudge.d.ts +26 -0
  84. package/dist/providers/art/visionJudge.d.ts.map +1 -0
  85. package/dist/providers/art/visionJudge.js +127 -0
  86. package/dist/providers/art/visionJudge.js.map +1 -0
  87. package/dist/providers/art/withinDir.d.ts +2 -0
  88. package/dist/providers/art/withinDir.d.ts.map +1 -0
  89. package/dist/providers/art/withinDir.js +19 -0
  90. package/dist/providers/art/withinDir.js.map +1 -0
  91. package/dist/providers/media/gatewayMediaProviders.d.ts +58 -0
  92. package/dist/providers/media/gatewayMediaProviders.d.ts.map +1 -0
  93. package/dist/providers/media/gatewayMediaProviders.js +46 -0
  94. package/dist/providers/media/gatewayMediaProviders.js.map +1 -0
  95. package/dist/providers/media/generateAsset.d.ts +9 -0
  96. package/dist/providers/media/generateAsset.d.ts.map +1 -1
  97. package/dist/providers/media/generateAsset.js +7 -1
  98. package/dist/providers/media/generateAsset.js.map +1 -1
  99. package/dist/providers/media/mediaProviders.d.ts +31 -1
  100. package/dist/providers/media/mediaProviders.d.ts.map +1 -1
  101. package/dist/providers/media/mediaProviders.js +33 -1
  102. package/dist/providers/media/mediaProviders.js.map +1 -1
  103. 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 { readFileSync, writeFileSync } from 'node:fs';
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(readFileSync(inPath), opts);
113
- writeFileSync(out, buf);
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(readFileSync(inPath));
121
- writeFileSync(out, buf);
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(readFileSync(inPath), num(b, 'lo') ?? 30, num(b, 'hi') ?? 200);
129
- writeFileSync(out, buf);
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 = readFileSync(resolveInputPath(reqStr(b, 'in')));
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 = readFileSync(resolveInputPath(reqStr(b, 'in')));
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(readFileSync(inPath), cols, rows, { grid: bool(b, 'grid') });
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
- const items = r.frames.map((buf, i) => {
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
- writeFileSync(join(outDir, file), buf);
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(readFileSync(inPath), cols, rows, opts);
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
- writeFileSync(out, packed.buf);
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(readFileSync(inPath), reqNum(b, 'cols'), reqNum(b, 'rows'));
275
- writeFileSync(out, r.buf);
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) => readFileSync(p)), opts);
310
- const written = [];
311
- r.frames.forEach((buf, i) => {
312
- const p = targets[i] ?? join(outDir ?? dirname(inputs[0]), `frame_${i}.png`);
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(readFileSync(inPath), reqNum(b, 'maxWidth'), reqNum(b, 'maxHeight'));
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
- writeFileSync(out, r.buf);
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"}