最后也最缠的一块:任务列表(浏览/筛选/滚动)+ selectTask 切换 + renderChatMeta/模型下拉 + renderMessages + live-run 助手 + sendMessage/cancel + fetchSse/handleSseEvent + 润色/粘贴文件 + 完成/废弃/删除/导出/清空 (原 main 连续区 64–1132)→ chat.js(1086 行)。 决策:合一个 chat.js 而非强拆 tasks.js+stream.js —— 二者共享 state.liveRuns + chat-stream DOM + run 生命周期,live-run 助手被 selectTask 与 SSE 机器两边调用、骑墙;强拆会制造双向各 ~4-5 个 import 且边界不自然。 - 导出 loadTaskList / loadModels / selectTask;embed/files/newtask 对这 三个的 import 从 ./main.js 改指 ./chat.js;formatUploadProgress 加 export。 - chat 不调 enterApp → 与 main 无环。 - main.js 仅留 enterApp(编排)+ loadStorage + Esc 关栈 + boot = 75 行入口, import 精简到 11 行(layout/markdown/media 不再被 main 直接引用,但经 chat 仍在依赖图、副作用照常)。 校验升级:node 全检 + import/export 一致性 + 从 main BFS 的模块可达性 (14/14 可达,确保副作用模块不掉出图)。 dev.html 4087 行单文件 → 14 个零构建 ES module + 纯 HTML;main 2719→75。 路径 1(拆文件)完成。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| static | ||
| __init__.py | ||
| app.py | ||
| auth.py | ||
| broker.py | ||
| sinks.py | ||