@tbox.cn/app-template-agent 0.10.1 → 0.10.2
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/apps/server/src/dev.ts +21 -6
- package/package.json +1 -1
package/apps/server/src/dev.ts
CHANGED
|
@@ -41,17 +41,32 @@ const vite = await createViteServer({
|
|
|
41
41
|
appType: 'custom',
|
|
42
42
|
});
|
|
43
43
|
|
|
44
|
-
//
|
|
45
|
-
//
|
|
46
|
-
//
|
|
47
|
-
//
|
|
44
|
+
// 升级委托:pathname === 认领路径(与 vite 同一 resolved config 同式 posix.join 派生——
|
|
45
|
+
// 恒等无漂移,字面比较在未来设 base 时有悬挂方向:delegate 认领转发而 vite 不接,socket
|
|
46
|
+
// 无人销毁);协议轴 = 子协议补写 + 白名单(见下)。
|
|
47
|
+
// 子协议补写(2026-09-21,详见 .agents/notes/implemented/bug-fix/
|
|
48
|
+
// 2026-09-21-spanner-ws-subprotocol-strip-reload-loop.md):Spanner 网关(*.coding.tboxpro.cn
|
|
49
|
+
// 车道)把 WS 升级的 Sec-WebSocket-Protocol 视为 hop-by-hop 在下游拨号时剥除(2026-09-09
|
|
50
|
+
// Terminal Note 同源实证:Authorization/Cookie/子协议均剥、query 唯一存活)。剥除后的拨号
|
|
51
|
+
// 无协议头——原逻辑不认领 → 回落 app upgrade destroy → 网关报 "unexpected EOF";WebKit
|
|
52
|
+
// (Safari/iOS 支付宝·微信)宽松接受网关乐观 101(无协议回显),hmr WS open 即断 → vite
|
|
53
|
+
// client vite:ws:disconnect → vite-ping 探测又被乐观 101 放行(成功判据 = open 事件,先于
|
|
54
|
+
// 下游拨号结果)→ location.reload() 无限循环(Chrome/Blink 严格校验协议回显恒不 open,
|
|
55
|
+
// 走静默分支免疫)。补写让下游握手成立:vite 101 带协议回显 + connected → 连接保持 →
|
|
56
|
+
// 无 disconnect/ping/reload,WebKit 下 HMR 恢复可用。补写在网关透传修复(agtchannel spec
|
|
57
|
+
// 2026-09-21 close/握手头透传,1b)落地后自动退化为死分支——长留不移除(sync 覆盖 + DRM
|
|
58
|
+
// 回滚场景防回归载体)。其余非 vite 协议值仍不认领(smoke ⑤⑥ 语义不变)。
|
|
48
59
|
// 未认领的升级回落 app 路由(业务 /ws、根路径归还业务、fail-fast 语义不变)。
|
|
49
60
|
const viteHmrPath = path.posix.join(vite.config.base, HMR_WS_PATH);
|
|
50
61
|
registerUpgradeDelegate((request, socket, head) => {
|
|
51
|
-
const protocol = request.headers['sec-websocket-protocol'];
|
|
52
|
-
if (protocol !== 'vite-hmr' && protocol !== 'vite-ping') return false;
|
|
53
62
|
const { pathname } = new URL(request.url || '/', 'http://localhost');
|
|
54
63
|
if (pathname !== viteHmrPath) return false;
|
|
64
|
+
const protocol = request.headers['sec-websocket-protocol'];
|
|
65
|
+
if (!protocol) {
|
|
66
|
+
request.headers['sec-websocket-protocol'] = 'vite-hmr';
|
|
67
|
+
} else if (protocol !== 'vite-hmr' && protocol !== 'vite-ping') {
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
55
70
|
hmrHub.emit('upgrade', request, socket, head);
|
|
56
71
|
return true;
|
|
57
72
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tbox.cn/app-template-agent",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.2",
|
|
4
4
|
"description": "tbox AI Agent 全栈模板(多包 pnpm workspace):apps/client + apps/server。唯一模板(W4 单一模板统一化:缺省空装配 chat 形态;mall 能力经 profiles/mall 加装),能力经 tbox-app module add 模块扩展(shopping-guide/member 等)。",
|
|
5
5
|
"engines": {
|
|
6
6
|
"node": ">=24.0.0 <25.0.0"
|