@coralai/sps-cli 0.65.87 → 0.65.92

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 (76) hide show
  1. package/dist/console/index.d.ts.map +1 -1
  2. package/dist/console/index.js +12 -0
  3. package/dist/console/index.js.map +1 -1
  4. package/dist/console/lib/artPaths.d.ts +5 -5
  5. package/dist/console/lib/artPaths.d.ts.map +1 -1
  6. package/dist/console/lib/artPaths.js +8 -26
  7. package/dist/console/lib/artPaths.js.map +1 -1
  8. package/dist/console/routes/play.d.ts +15 -0
  9. package/dist/console/routes/play.d.ts.map +1 -0
  10. package/dist/console/routes/play.js +156 -0
  11. package/dist/console/routes/play.js.map +1 -0
  12. package/dist/console/routes/storage.d.ts +21 -0
  13. package/dist/console/routes/storage.d.ts.map +1 -0
  14. package/dist/console/routes/storage.js +115 -0
  15. package/dist/console/routes/storage.js.map +1 -0
  16. package/dist/core/pathFence.d.ts +20 -0
  17. package/dist/core/pathFence.d.ts.map +1 -0
  18. package/dist/core/pathFence.js +60 -0
  19. package/dist/core/pathFence.js.map +1 -0
  20. package/dist/daemon/sessionDaemon.d.ts +1 -0
  21. package/dist/daemon/sessionDaemon.d.ts.map +1 -1
  22. package/dist/daemon/sessionDaemon.js +6 -0
  23. package/dist/daemon/sessionDaemon.js.map +1 -1
  24. package/dist/daemon/storageSyncLoop.d.ts +9 -0
  25. package/dist/daemon/storageSyncLoop.d.ts.map +1 -0
  26. package/dist/daemon/storageSyncLoop.js +70 -0
  27. package/dist/daemon/storageSyncLoop.js.map +1 -0
  28. package/dist/providers/serve/playToken.d.ts +18 -0
  29. package/dist/providers/serve/playToken.d.ts.map +1 -0
  30. package/dist/providers/serve/playToken.js +78 -0
  31. package/dist/providers/serve/playToken.js.map +1 -0
  32. package/dist/providers/serve/servable.d.ts +37 -0
  33. package/dist/providers/serve/servable.d.ts.map +1 -0
  34. package/dist/providers/serve/servable.js +106 -0
  35. package/dist/providers/serve/servable.js.map +1 -0
  36. package/dist/providers/storage/FakeStorage.d.ts +14 -0
  37. package/dist/providers/storage/FakeStorage.d.ts.map +1 -0
  38. package/dist/providers/storage/FakeStorage.js +33 -0
  39. package/dist/providers/storage/FakeStorage.js.map +1 -0
  40. package/dist/providers/storage/MinioBackend.d.ts +31 -0
  41. package/dist/providers/storage/MinioBackend.d.ts.map +1 -0
  42. package/dist/providers/storage/MinioBackend.js +60 -0
  43. package/dist/providers/storage/MinioBackend.js.map +1 -0
  44. package/dist/providers/storage/StorageBackend.d.ts +43 -0
  45. package/dist/providers/storage/StorageBackend.d.ts.map +1 -0
  46. package/dist/providers/storage/StorageBackend.js +29 -0
  47. package/dist/providers/storage/StorageBackend.js.map +1 -0
  48. package/dist/providers/storage/keys.d.ts +33 -0
  49. package/dist/providers/storage/keys.d.ts.map +1 -0
  50. package/dist/providers/storage/keys.js +52 -0
  51. package/dist/providers/storage/keys.js.map +1 -0
  52. package/dist/providers/storage/scanWorkspace.d.ts +56 -0
  53. package/dist/providers/storage/scanWorkspace.d.ts.map +1 -0
  54. package/dist/providers/storage/scanWorkspace.js +205 -0
  55. package/dist/providers/storage/scanWorkspace.js.map +1 -0
  56. package/dist/providers/storage/storageConfig.d.ts +46 -0
  57. package/dist/providers/storage/storageConfig.d.ts.map +1 -0
  58. package/dist/providers/storage/storageConfig.js +94 -0
  59. package/dist/providers/storage/storageConfig.js.map +1 -0
  60. package/dist/providers/storage/syncProject.d.ts +67 -0
  61. package/dist/providers/storage/syncProject.d.ts.map +1 -0
  62. package/dist/providers/storage/syncProject.js +136 -0
  63. package/dist/providers/storage/syncProject.js.map +1 -0
  64. package/dist/providers/storage/syncRunner.d.ts +59 -0
  65. package/dist/providers/storage/syncRunner.d.ts.map +1 -0
  66. package/dist/providers/storage/syncRunner.js +119 -0
  67. package/dist/providers/storage/syncRunner.js.map +1 -0
  68. package/dist/providers/storage/syncScope.d.ts +25 -0
  69. package/dist/providers/storage/syncScope.d.ts.map +1 -0
  70. package/dist/providers/storage/syncScope.js +68 -0
  71. package/dist/providers/storage/syncScope.js.map +1 -0
  72. package/dist/providers/storage/syncable.d.ts +47 -0
  73. package/dist/providers/storage/syncable.d.ts.map +1 -0
  74. package/dist/providers/storage/syncable.js +84 -0
  75. package/dist/providers/storage/syncable.js.map +1 -0
  76. package/package.json +6 -2
@@ -0,0 +1,60 @@
1
+ /**
2
+ * @module core/pathFence
3
+ * @description 路径围栏的**共用原语**:realpath 之后再判"在不在某个根之内"。
4
+ *
5
+ * @layer core
6
+ *
7
+ * 🔴 **为什么抽出来:安全判据不能有第二份。**
8
+ * 本仓已经有过一次教训的形状 —— `providers/art/withinDir.ts`(字符串,**理智检查**)与
9
+ * `console/lib/artPaths.ts`(realpath,**安全边界**)长得几乎一样,靠头注区分。
10
+ * coral 同日实测出同族:一条规则在 `scan.ts:143` 做对了(Dirent.isFile 对 symlink 天然 false),
11
+ * 隔壁那条用 `stat`(跟随软链)就漏了。
12
+ * > **一条安全规则做对过一次,不代表它在第二条路上也在** ——
13
+ * > 而两条路写法不同时(Dirent vs 路径字符串),正是它只做一半的时候。
14
+ * ⇒ 同步这条路要围栏时,**不再写第三份**。
15
+ *
16
+ * ⚠️ 本模块**只做围栏**,不做"这个文件该不该同步/发布/服务" —— 那三者判据不同、
17
+ * 各自命名(`syncable` / `publishable` / `servable`)。把它们合并会制造"它们本该一致"的错觉,
18
+ * 而那个错觉比漂移本身更危险:下一个人会去"修复不一致",把三条用途不同的规则强行统一。
19
+ */
20
+ import { realpath } from 'node:fs/promises';
21
+ import { dirname, join, resolve, sep } from 'node:path';
22
+ /**
23
+ * `p` 是否在 `root` 之内(含 root 自身)。
24
+ *
25
+ * 🔴 **必须比到分隔符**:裸 `startsWith(root)` 会把 `<root>-old` 当成 root 内。
26
+ * (与 `console/lib/artPaths.ts` 的判据同一句;studio 的 `assertSharedWorkspace` 测试里
27
+ * 也有这个前缀陷阱。)
28
+ */
29
+ export function isUnderRoot(p, root) {
30
+ const r = resolve(root);
31
+ const t = resolve(p);
32
+ return t === r || t.startsWith(r + sep);
33
+ }
34
+ /**
35
+ * 把路径解析到**真实位置**(软链解开)。
36
+ *
37
+ * 目标可能尚不存在(输出文件),故解析其**父目录**的 realpath 再拼回文件名。
38
+ *
39
+ * ⚠️ **异步**:同步 fs 会阻塞事件循环(含 `/api/health` 探针与 SSE 心跳)。
40
+ * > 判据:**同步在移交件里是对的 —— 它本来跑在 CLI 里;换了宿主之后才变错。**
41
+ */
42
+ export async function realResolve(p) {
43
+ const abs = resolve(p);
44
+ try {
45
+ return await realpath(abs);
46
+ }
47
+ catch {
48
+ try {
49
+ return join(await realpath(dirname(abs)), abs.slice(dirname(abs).length + 1));
50
+ }
51
+ catch {
52
+ return abs;
53
+ }
54
+ }
55
+ }
56
+ /** realpath 之后再判围栏。**这是唯一该被安全路径调用的那个**;字符串比较不算围栏。 */
57
+ export async function isRealUnderRoot(p, root) {
58
+ return isUnderRoot(await realResolve(p), await realResolve(root));
59
+ }
60
+ //# sourceMappingURL=pathFence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pathFence.js","sourceRoot":"","sources":["../../src/core/pathFence.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAExD;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,CAAS,EAAE,IAAY;IACjD,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACrB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;AAC1C,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,CAAS;IACzC,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACvB,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QAChF,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,GAAG,CAAC;QACb,CAAC;IACH,CAAC;AACH,CAAC;AAED,qDAAqD;AACrD,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,CAAS,EAAE,IAAY;IAC3D,OAAO,WAAW,CAAC,MAAM,WAAW,CAAC,CAAC,CAAC,EAAE,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AACpE,CAAC"}
@@ -126,6 +126,7 @@ export declare class SessionDaemon {
126
126
  private pidFile;
127
127
  private server;
128
128
  private pollTimer;
129
+ private storageSync;
129
130
  private runtime;
130
131
  private pollCount;
131
132
  private ctx;
@@ -1 +1 @@
1
- {"version":3,"file":"sessionDaemon.d.ts","sourceRoot":"","sources":["../../src/daemon/sessionDaemon.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AA+DH,MAAM,WAAW,aAAa;IAC5B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,EACF,eAAe,GACf,UAAU,GACV,SAAS,GACT,aAAa,GACb,eAAe,GACf,UAAU,GACV,WAAW,GACX,mBAAmB,GACnB,mBAAmB,GACnB,UAAU,GACV,cAAc,GACd,UAAU,GACV,cAAc,GACd,gBAAgB,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2CAA2C;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,8CAA8C;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kCAAkC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,2BAA2B;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,UAAU,mBAAmB;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,KAAK,eAAe,GAChB;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACvC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AACjC,8CAA8C;GAC5C;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9J;IAAE,KAAK,EAAE,aAAa,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAC7H;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GACpL;IAAE,KAAK,EAAE,cAAc,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE,GAC7G;IAAE,KAAK,EAAE,aAAa,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GACrI;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,GACzE;IAAE,KAAK,EAAE,YAAY,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GACpF;IAAE,KAAK,EAAE,eAAe,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAAE,GACzE;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACzD;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AACtC,MAAM,MAAM,WAAW,GAAG,eAAe,GAAG,mBAAmB,CAAC;AAKhE,qBAAa,aAAa;IAuBtB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,OAAO;IAvBjB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,SAAS,CAA+C;IAChE,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,GAAG,CAAiB;IAC5B,OAAO,CAAC,OAAO,CAAqB;IACpC;;;OAGG;IACH,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,yDAAyD;IACzD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAsB;IAChD,mCAAmC;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAc;IACvC,4DAA4D;IAC5D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA6B;IACxD,uDAAuD;IACvD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAiC;gBAGnD,UAAU,SAAiB,EAC3B,OAAO,SAAc;IAYzB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA2D5B,OAAO,CAAC,YAAY;YAqBN,aAAa;IAsE3B;;;;OAIG;IACH;;;OAGG;YACW,cAAc;YA4Cd,kBAAkB;YAqFlB,QAAQ;IA+KtB,4CAA4C;IAC5C,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,cAAc;IAStB,gFAAgF;IAChF,OAAO,CAAC,cAAc;IAUtB,6EAA6E;IAC7E,OAAO,CAAC,cAAc;YAcR,YAAY;IA0E1B,OAAO,CAAC,YAAY,CAAS;IAE7B,8EAA8E;YAChE,QAAQ;IAmCtB,gDAAgD;IAChD,OAAO,CAAC,IAAI;IAQZ,OAAO,CAAC,GAAG;CAIZ"}
1
+ {"version":3,"file":"sessionDaemon.d.ts","sourceRoot":"","sources":["../../src/daemon/sessionDaemon.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,7 @@ import { existsSync, mkdirSync, readFileSync, unlinkSync, writeFileSync } from '
17
17
  import { createServer } from 'node:net';
18
18
  import { dirname, resolve } from 'node:path';
19
19
  import { appendAudit } from '../core/auditLog.js';
20
+ import { startStorageSyncLoop } from './storageSyncLoop.js';
20
21
  import { getReclaimMinutes } from '../core/reclaimConfig.js';
21
22
  import { reclaimOrphanSessions } from './orphanReclaim.js';
22
23
  import { ChatRelayHub } from './chatRelay.js';
@@ -72,6 +73,7 @@ export class SessionDaemon {
72
73
  pidFile;
73
74
  server = null;
74
75
  pollTimer = null;
76
+ storageSync = null;
75
77
  runtime;
76
78
  pollCount = 0;
77
79
  ctx;
@@ -149,6 +151,8 @@ export class SessionDaemon {
149
151
  this.log(`Poll rejected: ${err instanceof Error ? err.message : String(err)}`);
150
152
  });
151
153
  }, 2_000);
154
+ // 工作区 → 桶的对账同步(未配置时它一行日志都不打,见 storageSyncLoop 头注)
155
+ this.storageSync = startStorageSyncLoop((l) => this.log(l));
152
156
  // Graceful shutdown on signals and unexpected exit(记录触发源用于审计)
153
157
  process.on('SIGINT', () => this.shutdown('SIGINT'));
154
158
  process.on('SIGTERM', () => this.shutdown('SIGTERM'));
@@ -664,6 +668,8 @@ export class SessionDaemon {
664
668
  this.log(`Shutting down (trigger=${trigger})...`);
665
669
  if (this.pollTimer)
666
670
  clearInterval(this.pollTimer);
671
+ // 停同步循环,否则它的 setTimeout 会把进程吊住(表现是"重启时 socket 还被占着")
672
+ this.storageSync?.stop();
667
673
  if (this.server)
668
674
  this.server.close();
669
675
  // 先清退排队者:否则它们只会看到连接断开,不知道发生了什么(也不知道该不该重试)。
@@ -1 +1 @@
1
- {"version":3,"file":"sessionDaemon.js","sourceRoot":"","sources":["../../src/daemon/sessionDaemon.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sessionDaemon.js","sourceRoot":"","sources":["../../src/daemon/sessionDaemon.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export interface StorageSyncLoopHandle {
2
+ stop(): void;
3
+ }
4
+ /**
5
+ * 起循环。**返回 handle 而不是 never** —— daemon 关停时要能停掉它,
6
+ * 否则进程退不干净(而"退不干净"的表现是重启时端口/socket 还被占着)。
7
+ */
8
+ export declare function startStorageSyncLoop(log: (line: string) => void): StorageSyncLoopHandle;
9
+ //# sourceMappingURL=storageSyncLoop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storageSyncLoop.d.ts","sourceRoot":"","sources":["../../src/daemon/storageSyncLoop.ts"],"names":[],"mappings":"AA4BA,MAAM,WAAW,qBAAqB;IACpC,IAAI,IAAI,IAAI,CAAC;CACd;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,qBAAqB,CAqCvF"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * @module daemon/storageSyncLoop
3
+ * @description 把工作区 → 桶的对账同步挂进 daemon 的常驻循环。
4
+ *
5
+ * @layer daemon
6
+ *
7
+ * 🔴 **为什么在 daemon 而不是 console**:console 是**共享事件循环**,同步要读整棵树、
8
+ * 算 md5、缩略图、发网络请求 —— 跑在请求路径里会阻塞 `/api/health` 探针与 SSE 心跳。
9
+ * > 判据:**同步在移交件里是对的 —— 它本来跑在 CLI 里;换了宿主之后才变错。**
10
+ *
11
+ * 🔴 **一轮没跑完不开下一轮。** 用 `setTimeout` 自排,不用 `setInterval`:
12
+ * `setInterval` 在一轮变慢时会叠罗汉 —— 两轮并发对同一个前缀列举 + 上传,
13
+ * 表现是"同步好像更忙了",实际是互相重复做功,而且**没有任何报错**。
14
+ *
15
+ * 🔴 **未配置 ⇒ 一行日志都不打。** 未配置是合法状态(sps 是通用工具,别人装它不需要对象存储);
16
+ * 每 N 分钟打一次"未配置"会把真正的告警淹掉。
17
+ */
18
+ import { workspacesRoot } from '../core/workspacePaths.js';
19
+ import { activeStorageConfig } from '../providers/storage/storageConfig.js';
20
+ import { runSyncPass } from '../providers/storage/syncRunner.js';
21
+ /** 轮间隔。与 coral sidecar 同量级(它是分钟级);太密只会重复列举,收益为零。 */
22
+ const DEFAULT_INTERVAL_MS = 5 * 60_000;
23
+ /** 只同步近 N 天动过的项目。0 = 全部(首轮全量迁移时用)。 */
24
+ const DEFAULT_SINCE_DAYS = 30;
25
+ /** 单文件上限:显式给,不靠运气。 */
26
+ const DEFAULT_MAX_BYTES = 64 * 1024 * 1024;
27
+ /**
28
+ * 起循环。**返回 handle 而不是 never** —— daemon 关停时要能停掉它,
29
+ * 否则进程退不干净(而"退不干净"的表现是重启时端口/socket 还被占着)。
30
+ */
31
+ export function startStorageSyncLoop(log) {
32
+ const intervalMs = Number(process.env.SPS_STORAGE_SYNC_INTERVAL_MS) || DEFAULT_INTERVAL_MS;
33
+ const sinceDays = process.env.SPS_STORAGE_SYNC_SINCE_DAYS !== undefined
34
+ ? Number(process.env.SPS_STORAGE_SYNC_SINCE_DAYS)
35
+ : DEFAULT_SINCE_DAYS;
36
+ const maxBytes = Number(process.env.SPS_STORAGE_SYNC_MAX_BYTES) || DEFAULT_MAX_BYTES;
37
+ let timer = null;
38
+ let stopped = false;
39
+ let announced = false;
40
+ const tick = async () => {
41
+ if (stopped)
42
+ return;
43
+ try {
44
+ if (activeStorageConfig() !== null && !announced) {
45
+ announced = true;
46
+ log(`[sps-sync] 常驻:根=${workspacesRoot()} 间隔=${intervalMs}ms 范围=近 ${sinceDays || '∞'} 天`);
47
+ }
48
+ await runSyncPass({ root: workspacesRoot(), sinceDays, maxBytes, log });
49
+ }
50
+ catch (e) {
51
+ // 同步器**不能因为一轮失败就死掉**;但原因要留下。
52
+ log(`[sps-sync] 本轮异常:${e instanceof Error ? e.message : String(e)}`);
53
+ }
54
+ finally {
55
+ if (!stopped)
56
+ timer = setTimeout(() => void tick(), intervalMs);
57
+ }
58
+ };
59
+ // 起步不立刻跑:daemon 启动那一刻正忙着恢复会话,别抢 IO。
60
+ timer = setTimeout(() => void tick(), 10_000);
61
+ return {
62
+ stop() {
63
+ stopped = true;
64
+ if (timer)
65
+ clearTimeout(timer);
66
+ timer = null;
67
+ },
68
+ };
69
+ }
70
+ //# sourceMappingURL=storageSyncLoop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storageSyncLoop.js","sourceRoot":"","sources":["../../src/daemon/storageSyncLoop.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAEjE,oDAAoD;AACpD,MAAM,mBAAmB,GAAG,CAAC,GAAG,MAAM,CAAC;AACvC,sCAAsC;AACtC,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAC9B,sBAAsB;AACtB,MAAM,iBAAiB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAM3C;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAA2B;IAC9D,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,IAAI,mBAAmB,CAAC;IAC3F,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,2BAA2B,KAAK,SAAS;QACrE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC;QACjD,CAAC,CAAC,kBAAkB,CAAC;IACvB,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,IAAI,iBAAiB,CAAC;IAErF,IAAI,KAAK,GAAyC,IAAI,CAAC;IACvD,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,MAAM,IAAI,GAAG,KAAK,IAAmB,EAAE;QACrC,IAAI,OAAO;YAAE,OAAO;QACpB,IAAI,CAAC;YACH,IAAI,mBAAmB,EAAE,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjD,SAAS,GAAG,IAAI,CAAC;gBACjB,GAAG,CAAC,mBAAmB,cAAc,EAAE,OAAO,UAAU,WAAW,SAAS,IAAI,GAAG,IAAI,CAAC,CAAC;YAC3F,CAAC;YACD,MAAM,WAAW,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;QAC1E,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,6BAA6B;YAC7B,GAAG,CAAC,mBAAmB,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACvE,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,OAAO;gBAAE,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,EAAE,EAAE,UAAU,CAAC,CAAC;QAClE,CAAC;IACH,CAAC,CAAC;IAEF,oCAAoC;IACpC,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC;IAE9C,OAAO;QACL,IAAI;YACF,OAAO,GAAG,IAAI,CAAC;YACf,IAAI,KAAK;gBAAE,YAAY,CAAC,KAAK,CAAC,CAAC;YAC/B,KAAK,GAAG,IAAI,CAAC;QACf,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,18 @@
1
+ /** 用途绑定的子钥:复用已有信任关系(两侧同值的 service key),但**不直接拿它当签名钥**。 */
2
+ export declare function deriveSigningKey(serviceKey: string): Buffer;
3
+ export type TokenRejection = {
4
+ code: 'PLAY_TOKEN_INVALID';
5
+ detail: string;
6
+ } | {
7
+ code: 'PLAY_SESSION_EXPIRED';
8
+ detail: string;
9
+ };
10
+ /**
11
+ * 验一个令牌是否对 `project` 有效。
12
+ *
13
+ * @param nowSec 注入是为了用例不依赖真实时间(过期这条只有能构造才验得了)。
14
+ */
15
+ export declare function verifyPlayToken(token: string, project: string, serviceKey: string, nowSec: number): TokenRejection | null;
16
+ /** 仅供用例与排障:按同一契约签一个(生产签发方是 studio,不是这里)。 */
17
+ export declare function signPlayToken(project: string, expSec: number, serviceKey: string): string;
18
+ //# sourceMappingURL=playToken.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playToken.d.ts","sourceRoot":"","sources":["../../../src/providers/serve/playToken.ts"],"names":[],"mappings":"AAkBA,0DAA0D;AAC1D,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE3D;AAID,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,sBAAsB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAErD;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GACb,cAAc,GAAG,IAAI,CA4CvB;AAED,4CAA4C;AAC5C,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAKzF"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * @module providers/serve/playToken
3
+ * @description `/play` 直连节点的**项目级短时令牌**验签。契约由 studio 定
4
+ * (`coral-studio/docs/48-play-signed-url.md`),本文件只**验**,不签。
5
+ *
6
+ * @layer providers
7
+ *
8
+ * 🔴 **为什么是项目级令牌 + Cookie,而不是逐文件签名 URL**(studio 的结构性发现):
9
+ * 游戏产物的资源是**相对路径**加载的 ⇒ 302 到节点后,`assets/x.png` 的请求
10
+ * **不带任何查询参数**。逐文件签名要求服务端改写 HTML/CSS/JS 里的所有引用
11
+ * (含运行时拼出来的路径)—— **做不全,而漏掉的那个只在运行时裂**。
12
+ * 失败形状是:**首页 200、里面的图全裂**,首屏看起来像"成功了"。
13
+ *
14
+ * 🔴 **判据分工**:能不能看这个项目 = **studio**(产品判断);
15
+ * 这个路径能不能服务 + 内容闸 = **sps**。令牌**不绑用户** —— sps 不认识用户。
16
+ */
17
+ import { createHmac, timingSafeEqual } from 'node:crypto';
18
+ /** 用途绑定的子钥:复用已有信任关系(两侧同值的 service key),但**不直接拿它当签名钥**。 */
19
+ export function deriveSigningKey(serviceKey) {
20
+ return createHmac('sha256', serviceKey).update('studio-play-url/v1').digest();
21
+ }
22
+ const b64url = (b) => b.toString('base64url');
23
+ /**
24
+ * 验一个令牌是否对 `project` 有效。
25
+ *
26
+ * @param nowSec 注入是为了用例不依赖真实时间(过期这条只有能构造才验得了)。
27
+ */
28
+ export function verifyPlayToken(token, project, serviceKey, nowSec) {
29
+ const parts = token.split('.');
30
+ if (parts.length !== 4 || parts[0] !== 'v1') {
31
+ return { code: 'PLAY_TOKEN_INVALID', detail: '令牌形状不对(期望 v1.<project>.<exp>.<sig>)' };
32
+ }
33
+ const [, projB64, expRaw, sigB64] = parts;
34
+ let tokenProject;
35
+ try {
36
+ tokenProject = Buffer.from(projB64, 'base64url').toString('utf-8');
37
+ }
38
+ catch {
39
+ return { code: 'PLAY_TOKEN_INVALID', detail: 'project 段不是合法 base64url' };
40
+ }
41
+ // 🔴 令牌里的项目必须与**被请求的**项目一致 —— 否则一个项目的令牌能读另一个项目。
42
+ // 这条不能靠"studio 只会签对的" —— 服务端永远不能信任客户端的自我约束。
43
+ if (tokenProject !== project) {
44
+ return { code: 'PLAY_TOKEN_INVALID', detail: '令牌不是签给这个项目的' };
45
+ }
46
+ const exp = Number(expRaw);
47
+ if (!Number.isFinite(exp) || !Number.isInteger(exp)) {
48
+ return { code: 'PLAY_TOKEN_INVALID', detail: 'exp 不是整数' };
49
+ }
50
+ // 🔴 **先验签再看过期**:反过来的话,一个签名错误的过期令牌会被报成"过期了",
51
+ // 而调用方会去重新取令牌 —— 于是一个**伪造**尝试被伪装成一次正常续期。
52
+ const expect = createHmac('sha256', deriveSigningKey(serviceKey))
53
+ .update(`studio-play/v1\n${tokenProject}\n${exp}`)
54
+ .digest();
55
+ let got;
56
+ try {
57
+ got = Buffer.from(sigB64, 'base64url');
58
+ }
59
+ catch {
60
+ return { code: 'PLAY_TOKEN_INVALID', detail: 'sig 段不是合法 base64url' };
61
+ }
62
+ // 定长比较:长度不等时 timingSafeEqual 会抛,所以先比长度(比长度本身不泄露内容)
63
+ if (got.length !== expect.length || !timingSafeEqual(got, expect)) {
64
+ return { code: 'PLAY_TOKEN_INVALID', detail: '签名不匹配' };
65
+ }
66
+ if (exp <= nowSec) {
67
+ return { code: 'PLAY_SESSION_EXPIRED', detail: `令牌已于 ${exp} 过期` };
68
+ }
69
+ return null;
70
+ }
71
+ /** 仅供用例与排障:按同一契约签一个(生产签发方是 studio,不是这里)。 */
72
+ export function signPlayToken(project, expSec, serviceKey) {
73
+ const sig = createHmac('sha256', deriveSigningKey(serviceKey))
74
+ .update(`studio-play/v1\n${project}\n${expSec}`)
75
+ .digest();
76
+ return `v1.${b64url(Buffer.from(project, 'utf-8'))}.${expSec}.${b64url(sig)}`;
77
+ }
78
+ //# sourceMappingURL=playToken.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playToken.js","sourceRoot":"","sources":["../../../src/providers/serve/playToken.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE1D,0DAA0D;AAC1D,MAAM,UAAU,gBAAgB,CAAC,UAAkB;IACjD,OAAO,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,MAAM,EAAE,CAAC;AAChF,CAAC;AAED,MAAM,MAAM,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAM9D;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAC7B,KAAa,EACb,OAAe,EACf,UAAkB,EAClB,MAAc;IAEd,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC5C,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,qCAAqC,EAAE,CAAC;IACvF,CAAC;IACD,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,KAAyC,CAAC;IAE9E,IAAI,YAAoB,CAAC;IACzB,IAAI,CAAC;QACH,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACrE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,yBAAyB,EAAE,CAAC;IAC3E,CAAC;IACD,gDAAgD;IAChD,+CAA+C;IAC/C,IAAI,YAAY,KAAK,OAAO,EAAE,CAAC;QAC7B,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;IAC/D,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAC3B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;QACpD,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IAC5D,CAAC;IAED,6CAA6C;IAC7C,4CAA4C;IAC5C,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC;SAC9D,MAAM,CAAC,mBAAmB,YAAY,KAAK,GAAG,EAAE,CAAC;SACjD,MAAM,EAAE,CAAC;IACZ,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC;IACvE,CAAC;IACD,mDAAmD;IACnD,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC;QAClE,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IACzD,CAAC;IAED,IAAI,GAAG,IAAI,MAAM,EAAE,CAAC;QAClB,OAAO,EAAE,IAAI,EAAE,sBAAsB,EAAE,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,CAAC;IACpE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,4CAA4C;AAC5C,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,MAAc,EAAE,UAAkB;IAC/E,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC;SAC3D,MAAM,CAAC,mBAAmB,OAAO,KAAK,MAAM,EAAE,CAAC;SAC/C,MAAM,EAAE,CAAC;IACZ,OAAO,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,IAAI,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;AAChF,CAAC"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * 读多少字节才够判。
3
+ * 🔴 **必须 ≥ 262**(257 + 5):只比前几个字节的实现会**放过 tar**,而且在八种 magic 上全绿 ——
4
+ * 那正是"看起来对"的实现。取 512 是留余量。
5
+ */
6
+ export declare const HEAD_BYTES = 512;
7
+ export declare function looksLikeArchive(head: Buffer): string | null;
8
+ /** 体积闸是同一道守卫的**第二半**,别只搬第一半。 */
9
+ export declare const SIZE_LIMITS: {
10
+ readonly image: number;
11
+ readonly audio: number;
12
+ readonly video: number;
13
+ };
14
+ /** 其它类型**不设**体积闸 —— 游戏 js/html 不该受媒体限额。 */
15
+ export declare function sizeLimitFor(rel: string): number | null;
16
+ export type ServeRejection = {
17
+ code: 'ARCHIVE';
18
+ detail: string;
19
+ } | {
20
+ code: 'TOO_LARGE';
21
+ detail: string;
22
+ } | {
23
+ code: 'UNREADABLE';
24
+ detail: string;
25
+ };
26
+ /**
27
+ * 内容闸。**必须在真正回字节之前跑**,而且必须拿到**文件开头**。
28
+ *
29
+ * 🔴 **Range 会把这道闸整个绕过**(studio 指出,sps 加 Range 才有这个洞):
30
+ * `Range: bytes=1000-` 时手上根本没有文件头 ⇒ 嗅探永远命中不了,
31
+ * 表现是 **200 + 正确字节、零报错**。
32
+ * ⇒ 所以本函数**自己开文件读头**,不接受调用方传进来的分片。
33
+ * > 判据:**一道基于"文件开头"的检查,遇到能跳过开头的协议就失效** ——
34
+ * > 而新增 Range 支持看起来完全是性能改动,没人会想到它动了安全面。
35
+ */
36
+ export declare function servable(absPath: string, rel: string, size: number): Promise<ServeRejection | null>;
37
+ //# sourceMappingURL=servable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"servable.d.ts","sourceRoot":"","sources":["../../../src/providers/serve/servable.ts"],"names":[],"mappings":"AA4CA;;;;GAIG;AACH,eAAO,MAAM,UAAU,MAAM,CAAC;AAE9B,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM5D;AAED,gCAAgC;AAChC,eAAO,MAAM,WAAW;;;;CAA2F,CAAC;AAQpH,2CAA2C;AAC3C,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGvD;AAED,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3C;;;;;;;;;GASG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAsBzG"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * @module providers/serve/servable
3
+ * @description **服务**(`/play` 实时预览)这条路的安全下限。规则原文由 coral 交付,照搬不重想。
4
+ *
5
+ * @layer providers
6
+ *
7
+ * 🔴 **它与另外两道下限方向不同,三者各自命名、不互相抄:**
8
+ * ```
9
+ * publishable() 能不能**发布** —— 后缀白名单(怕多发;树里长出什么由 agent 决定,黑名单追不上)
10
+ * syncable() 能不能**同步** —— 只挡点开头/`..`/越界(怕少发;白名单会静默丢 .blend/.psd)
11
+ * servable() 能不能**服务** —— **拒归档**,判据看**内容**不看后缀
12
+ * ```
13
+ *
14
+ * 🔴 **威胁模型(studio 2026-08-07 的真实演练,不是假想)** ——
15
+ * 没有这段,下一个人会觉得这道闸是过度设计然后简化掉:
16
+ * > 已封禁用户在会话里让 agent `tar` 宿主目录(`~/.coral` 平台凭据、平台源码 546MB),
17
+ * > 把归档改成 `.png` 后缀放进项目资源,想经资源栏/静态托管下载带走。
18
+ * > **实际零下载得手,但手法完整 —— 只差找对投递位置。**
19
+ *
20
+ * 🔴 **判据是"拒归档",不是"认白名单"**:后缀是攻击者定的,文件头不是。
21
+ * 实现成"只有 png/jpg 放行"会把正常游戏产物(js/html/json)全拦掉。
22
+ *
23
+ * 🔴 **读失败按"拦"处理** —— 拿不准 ≠ 放行。
24
+ *
25
+ * ⚠️ 边界:项目打包下载(`/api/projects/:id/download`)**本职就是 zip**,不在此闸内。
26
+ * 这道闸只挂在**服务单个文件**的出口上。
27
+ */
28
+ import { open } from 'node:fs/promises';
29
+ import { extname } from 'node:path';
30
+ /** 归档 magic(coral 给的八种)。**tar 单列** —— 见下。 */
31
+ const MAGICS = [
32
+ { bytes: [0x1f, 0x8b], name: 'gzip' },
33
+ { bytes: [0x50, 0x4b, 0x03, 0x04], name: 'zip' },
34
+ { bytes: [0x50, 0x4b, 0x05, 0x06], name: 'zip(empty)' },
35
+ { bytes: [0x37, 0x7a, 0xbc, 0xaf, 0x27, 0x1c], name: '7z' },
36
+ { bytes: [0x52, 0x61, 0x72, 0x21], name: 'rar' },
37
+ { bytes: [0xfd, 0x37, 0x7a, 0x58, 0x5a], name: 'xz' },
38
+ { bytes: [0x42, 0x5a, 0x68], name: 'bzip2' },
39
+ { bytes: [0x28, 0xb5, 0x2f, 0xfd], name: 'zstd' },
40
+ ];
41
+ /** 🔴 裸 tar **没有前导 magic**,靠 offset 257 的 `ustar`。而 tar 正是那次演练里实际用的手法。 */
42
+ const USTAR = [0x75, 0x73, 0x74, 0x61, 0x72];
43
+ /**
44
+ * 读多少字节才够判。
45
+ * 🔴 **必须 ≥ 262**(257 + 5):只比前几个字节的实现会**放过 tar**,而且在八种 magic 上全绿 ——
46
+ * 那正是"看起来对"的实现。取 512 是留余量。
47
+ */
48
+ export const HEAD_BYTES = 512;
49
+ export function looksLikeArchive(head) {
50
+ for (const m of MAGICS) {
51
+ if (head.length >= m.bytes.length && m.bytes.every((b, i) => head[i] === b))
52
+ return m.name;
53
+ }
54
+ if (head.length >= 262 && USTAR.every((b, i) => head[257 + i] === b))
55
+ return 'tar';
56
+ return null;
57
+ }
58
+ /** 体积闸是同一道守卫的**第二半**,别只搬第一半。 */
59
+ export const SIZE_LIMITS = { image: 50 * 1024 * 1024, audio: 100 * 1024 * 1024, video: 200 * 1024 * 1024 };
60
+ const EXT_KIND = {
61
+ '.png': 'image', '.jpg': 'image', '.jpeg': 'image', '.webp': 'image', '.gif': 'image', '.svg': 'image', '.ico': 'image',
62
+ '.mp3': 'audio', '.wav': 'audio', '.ogg': 'audio', '.m4a': 'audio', '.flac': 'audio',
63
+ '.mp4': 'video', '.webm': 'video', '.mov': 'video', '.mkv': 'video',
64
+ };
65
+ /** 其它类型**不设**体积闸 —— 游戏 js/html 不该受媒体限额。 */
66
+ export function sizeLimitFor(rel) {
67
+ const kind = EXT_KIND[extname(rel).toLowerCase()];
68
+ return kind ? SIZE_LIMITS[kind] : null;
69
+ }
70
+ /**
71
+ * 内容闸。**必须在真正回字节之前跑**,而且必须拿到**文件开头**。
72
+ *
73
+ * 🔴 **Range 会把这道闸整个绕过**(studio 指出,sps 加 Range 才有这个洞):
74
+ * `Range: bytes=1000-` 时手上根本没有文件头 ⇒ 嗅探永远命中不了,
75
+ * 表现是 **200 + 正确字节、零报错**。
76
+ * ⇒ 所以本函数**自己开文件读头**,不接受调用方传进来的分片。
77
+ * > 判据:**一道基于"文件开头"的检查,遇到能跳过开头的协议就失效** ——
78
+ * > 而新增 Range 支持看起来完全是性能改动,没人会想到它动了安全面。
79
+ */
80
+ export async function servable(absPath, rel, size) {
81
+ const limit = sizeLimitFor(rel);
82
+ if (limit !== null && size > limit) {
83
+ return { code: 'TOO_LARGE', detail: `${rel} ${size}B 超过该类型上限 ${limit}B` };
84
+ }
85
+ let head;
86
+ try {
87
+ const fh = await open(absPath, 'r');
88
+ try {
89
+ const buf = Buffer.alloc(HEAD_BYTES);
90
+ const { bytesRead } = await fh.read(buf, 0, HEAD_BYTES, 0);
91
+ head = buf.subarray(0, bytesRead);
92
+ }
93
+ finally {
94
+ await fh.close();
95
+ }
96
+ }
97
+ catch (e) {
98
+ // 读失败按"拦"处理 —— 拿不准 ≠ 放行
99
+ return { code: 'UNREADABLE', detail: `${rel}: ${e instanceof Error ? e.message : String(e)}` };
100
+ }
101
+ const archive = looksLikeArchive(head);
102
+ if (archive)
103
+ return { code: 'ARCHIVE', detail: `${rel} 看起来是 ${archive} 归档(判据看内容,不看后缀)` };
104
+ return null;
105
+ }
106
+ //# sourceMappingURL=servable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"servable.js","sourceRoot":"","sources":["../../../src/providers/serve/servable.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,6CAA6C;AAC7C,MAAM,MAAM,GAAwC;IAClD,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;IACrC,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE;IAChD,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE;IACvD,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE;IAC3D,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE;IAChD,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE;IACrD,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE;IAC5C,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;CAClD,CAAC;AACF,0EAA0E;AAC1E,MAAM,KAAK,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAE7C;;;;GAIG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,CAAC;AAE9B,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC,IAAI,CAAC;IAC7F,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACnF,OAAO,IAAI,CAAC;AACd,CAAC;AAED,gCAAgC;AAChC,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI,EAAW,CAAC;AAEpH,MAAM,QAAQ,GAA6C;IACzD,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO;IACvH,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO;IACpF,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO;CACpE,CAAC;AAEF,2CAA2C;AAC3C,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IAClD,OAAO,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACzC,CAAC;AAOD;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAe,EAAE,GAAW,EAAE,IAAY;IACvE,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,GAAG,KAAK,EAAE,CAAC;QACnC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,GAAG,IAAI,IAAI,aAAa,KAAK,GAAG,EAAE,CAAC;IAC5E,CAAC;IACD,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACpC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YACrC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;YAC3D,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QACpC,CAAC;gBAAS,CAAC;YACT,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,wBAAwB;QACxB,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,GAAG,KAAK,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACjG,CAAC;IACD,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,OAAO;QAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,GAAG,SAAS,OAAO,iBAAiB,EAAE,CAAC;IACzF,OAAO,IAAI,CAAC;AACd,CAAC"}