F-19 Customize 领域逻辑。Tab 状态机、定时器租约(unmount 清掉每一轮询)、同源 API 客户端、火山/DataPro/豆包辅助函数。Window 导出 openCust / custTab / telemetryRow 由本模块赋值,不写进 compat/window-exports.ts。能力判定走 compat/stub.ts 的 isReady。
| 文件 | 职责 |
|---|---|
actions.ts |
openCust / custTab / closeCust。递增 generation 让面板重新挂载。 |
load.ts |
每个 tab generation 的有界首次加载:beginCustomizeLoad / markCustomizeLoaded / markCustomizeFailed / markCustomizeTimedOut,CUST_LOAD_TIMEOUT_MS(30 秒,与 app.js 一致)。 |
load.test.ts |
custTab() 开始一次待定加载;标记只结算一次;超时只对仍在等待的 generation 生效。 |
api.ts |
api / ApiError / apiErrorText。路径必须是单个前导斜杠。 |
environment.ts |
Skill readiness 文案;sanitizeStandardProfileReadiness。 |
host.ts |
经 isReady 调用 hint / openViewer;直接 re-export models.ts 里真正的 loadModels(不经 window 桥);effProject。 |
index.ts |
installCustomize / bootCustomize 与对外 re-export。 |
layout.ts |
os-layout 密度。setLayout / applyLayout。 |
memory.ts |
Memory 作用域。绝不发送字面 "default"。 |
models.ts |
本机端点清洗、协议目录、capability-receipt 读取;loadModels / chooseComposerModel 用 GET /models 与 PUT /models/default 填充 composer #model-select 的 store(由 bootCustomize 调用)。 |
models.test.ts |
loadModels 请求 /models 并填充 models / defaultModel / defaultModelName(配置档条目用模型名命名,id 原样保留);bootCustomize 接好了它。 |
state.ts |
customizeOpen / customizeTab / customizeGeneration / nestedEditor。 |
tabs.ts |
九个 tab id;agents → specialists。 |
tabs.test.ts |
Tab 状态机。 |
telemetry.ts |
同意开关 drain 循环;契约 telemetryRow(host)。 |
timers.ts |
按挂载的定时器租约。unmount 即 dispose。 |
timers.test.ts |
unmount 后零残留;火山 key 轮询;vendor 辅助;window 导出。 |
vendors.ts |
DataPro index-complete;豆包专用 source 检查。 |
volcengine.ts |
额度计算;key 轮询 2500/5000×24 绑在租约上。 |