dsh-audiogen 0.4.20 → 0.4.23

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/lib/client.js CHANGED
@@ -29,7 +29,12 @@ window.__ModuleLoader__.load({
29
29
  /** Vendor voice management (browse/filter + delete) endpoints. */
30
30
  const VOICES_API = {
31
31
  list: "/api/dsh-audiogen/voices/list",
32
- delete: "/api/dsh-audiogen/voices/delete"
32
+ delete: "/api/dsh-audiogen/voices/delete",
33
+ recommend: "/api/dsh-audiogen/voices/recommend",
34
+ recommendHistory: {
35
+ list: "/api/dsh-audiogen/voices/recommend-history/list",
36
+ remove: "/api/dsh-audiogen/voices/recommend-history/remove"
37
+ }
33
38
  };
34
39
  /** Host-persisted generation history routes. */
35
40
  const HISTORY_API = {
@@ -135,6 +140,23 @@ window.__ModuleLoader__.load({
135
140
  ...body.message === void 0 ? {} : { message: body.message }
136
141
  };
137
142
  }
143
+ /** 读取最近 N 条 AI 音色推荐记录(面板与 Agent 共用)。 */
144
+ async voiceRecommendHistory(limit = 20) {
145
+ const body = await (await postJson(VOICES_API.recommendHistory.list, { limit })).json();
146
+ return {
147
+ ok: body.ok === true,
148
+ ...body.entries === void 0 ? {} : { entries: body.entries },
149
+ ...body.message === void 0 ? {} : { message: body.message }
150
+ };
151
+ }
152
+ /** 删除一条 AI 音色推荐记录。 */
153
+ async voiceRecommendHistoryRemove(id) {
154
+ const body = await (await postJson(VOICES_API.recommendHistory.remove, { id })).json();
155
+ return {
156
+ ok: body.ok === true,
157
+ ...body.message === void 0 ? {} : { message: body.message }
158
+ };
159
+ }
138
160
  /** 删除厂商音色(不可逆;confirm=true 必须)。 */
139
161
  async voiceDelete(request) {
140
162
  const body = await (await postJson(VOICES_API.delete, request)).json();
@@ -144,6 +166,22 @@ window.__ModuleLoader__.load({
144
166
  ...body.code === void 0 ? {} : { code: body.code }
145
167
  };
146
168
  }
169
+ /** 按需求描述(prompt)用 Agent 默认模型推荐音色(MiniMax / ElevenLabs)。 */
170
+ async voiceRecommend(request) {
171
+ const body = await (await postJson(VOICES_API.recommend, request)).json();
172
+ return {
173
+ ok: body.ok === true,
174
+ ...body.vendor === void 0 ? {} : { vendor: body.vendor },
175
+ ...body.channel === void 0 ? {} : { channel: body.channel },
176
+ ...body.requirement === void 0 ? {} : { requirement: body.requirement },
177
+ ...body.candidate_count === void 0 ? {} : { candidate_count: body.candidate_count },
178
+ ...body.top_k === void 0 ? {} : { top_k: body.top_k },
179
+ ...body.recommendations === void 0 ? {} : { recommendations: body.recommendations },
180
+ ...body.note === void 0 ? {} : { note: body.note },
181
+ ...body.code === void 0 ? {} : { code: body.code },
182
+ ...body.message === void 0 ? {} : { message: body.message }
183
+ };
184
+ }
147
185
  };
148
186
  //#endregion
149
187
  //#region src/client/controller.ts
@@ -1096,6 +1134,7 @@ window.__ModuleLoader__.load({
1096
1134
  }
1097
1135
  /** 当前模式 + 所选模型集合(渠道集合)对应的「全局字段」清单。 */
1098
1136
  function globalFieldSpecs(mode, presets) {
1137
+ if (mode === "voice_recommend") return [];
1099
1138
  const list = [];
1100
1139
  const all = (key, keys) => keys.includes(key) && presets.every((preset) => presetSupports(preset, key, mode));
1101
1140
  if (mode === "tts") {
@@ -1155,6 +1194,7 @@ window.__ModuleLoader__.load({
1155
1194
  }
1156
1195
  /** 「每模型参数覆盖」矩阵的字段全集(含适用渠道标注)。 */
1157
1196
  function overrideRowSpecs(mode) {
1197
+ if (mode === "voice_recommend") return [];
1158
1198
  const rows = [];
1159
1199
  const presets = [
1160
1200
  ["format", [
@@ -1204,7 +1244,7 @@ window.__ModuleLoader__.load({
1204
1244
  }
1205
1245
  //#endregion
1206
1246
  //#region \0dsh-css:/Users/shimingming/Projects_code/dsh-audiogen/src/client/audio-panel.module.css.mjs
1207
- const css$5 = ".Oo1fpq_panel{background:var(--dsw-alias-bg-base,#f7f7f8);min-width:0;height:100%;min-height:0;color:var(--dsw-alias-label-primary,#1f2328);font-family:var(--dsw-font-family,system-ui, sans-serif);flex-direction:column;gap:12px;padding:14px 16px 16px;display:flex;position:relative}.Oo1fpq_panel,.Oo1fpq_panel *,.Oo1fpq_panel :before,.Oo1fpq_panel :after{box-sizing:border-box}.Oo1fpq_header{flex:none;justify-content:space-between;align-items:center;gap:12px;display:flex}.Oo1fpq_title{color:var(--dsw-alias-label-primary,#1f2328);white-space:nowrap;margin:0;font-size:16px;font-weight:700}.Oo1fpq_tabs{border:1px solid var(--dsw-alias-border-l1,#e5e7eb);background:var(--dsw-alias-bg-layer-2,#f3f4f6);border-radius:10px;align-items:center;gap:2px;padding:3px;display:inline-flex}.Oo1fpq_tab{min-height:27px;color:var(--dsw-alias-label-secondary,#6b7280);cursor:pointer;background:0 0;border:0;border-radius:8px;align-items:center;gap:6px;padding:0 12px;font-family:inherit;font-size:12.5px;transition:color .12s,background .12s;display:inline-flex}.Oo1fpq_tab:hover{color:var(--dsw-alias-label-primary,#1f2328)}.Oo1fpq_tab[data-active=true]{color:var(--dsw-alias-label-primary,#1f2328);background:var(--dsw-alias-bg-layer-1,#fff);font-weight:600;box-shadow:0 1px 3px #0000001a}.Oo1fpq_studio{flex:1;gap:14px;min-width:0;min-height:0;display:flex}.Oo1fpq_formCol{scrollbar-width:thin;scrollbar-color:var(--dsw-alias-border-l2) transparent;flex-direction:column;flex:none;gap:11px;width:380px;min-width:320px;max-width:440px;min-height:0;padding:2px;display:flex;overflow-y:auto}.Oo1fpq_formCol::-webkit-scrollbar{width:8px}.Oo1fpq_formCol::-webkit-scrollbar-thumb{background:var(--dsw-alias-border-l2);border-radius:999px}.Oo1fpq_modeRow{flex-wrap:wrap;gap:6px;display:flex}.Oo1fpq_modeButton{border:1px solid var(--dsw-alias-border-l2,#d1d5db);background:var(--dsw-alias-bg-layer-1,#fff);min-width:0;min-height:34px;color:var(--dsw-alias-label-secondary,#6b7280);white-space:nowrap;cursor:pointer;border-radius:9px;flex:auto;justify-content:center;align-items:center;padding:6px 10px;font-family:inherit;font-size:11.5px;transition:border-color .12s,color .12s,background .12s;display:flex}.Oo1fpq_modeButton:hover{border-color:var(--dsw-alias-label-dimmed,#9ca3af);color:var(--dsw-alias-label-primary,#1f2328)}.Oo1fpq_modeButton[data-active=true]{border-color:var(--dsw-alias-brand-primary,#2563eb);color:var(--dsw-alias-brand-primary,#2563eb);background:color-mix(in srgb, var(--dsw-alias-brand-primary,#2563eb) 8%, transparent);font-weight:600}.Oo1fpq_label{color:var(--dsw-alias-label-secondary,#6b7280);flex-direction:column;gap:5px;font-size:12px;font-weight:600;display:flex}.Oo1fpq_input,.Oo1fpq_textarea{border:1px solid var(--dsw-alias-border-l2,#d1d5db);background:var(--dsw-alias-bg-layer-2,#fff);width:100%;min-height:36px;color:var(--dsw-alias-label-primary,#1f2328);border-radius:9px;outline:none;padding:7px 10px;font-family:inherit;font-size:13px;transition:border-color .12s,box-shadow .12s}.Oo1fpq_input:focus,.Oo1fpq_textarea:focus{border-color:var(--dsw-alias-brand-primary,#2563eb);box-shadow:0 0 0 3px color-mix(in srgb, var(--dsw-alias-brand-primary,#2563eb) 14%, transparent)}.Oo1fpq_textarea{resize:vertical;min-height:96px}.Oo1fpq_checkbox{color:var(--dsw-alias-label-secondary,#6b7280);cursor:pointer;align-items:center;gap:7px;font-size:12px;font-weight:600;display:flex}.Oo1fpq_checkbox input{accent-color:var(--dsw-alias-brand-primary,#2563eb);margin:0}.Oo1fpq_radioGroup{align-items:center;gap:8px;display:flex}.Oo1fpq_radioOption{border:1px solid var(--dsw-alias-border-l2,#d1d5db);background:var(--dsw-alias-bg-layer-2,#fff);color:var(--dsw-alias-label-primary,#1f2328);cursor:pointer;border-radius:9px;align-items:center;gap:6px;padding:7px 12px;font-size:13px;font-weight:500;transition:border-color .12s,background .12s;display:flex}.Oo1fpq_radioOption input{accent-color:var(--dsw-alias-brand-primary,#2563eb);margin:0}.Oo1fpq_radioOption[data-active=true]{border-color:var(--dsw-alias-brand-primary,#2563eb);background:color-mix(in srgb, var(--dsw-alias-brand-primary,#2563eb) 8%, transparent);font-weight:600}.Oo1fpq_hint{color:var(--dsw-alias-label-tertiary,#9ca3af);margin:0;font-size:11.5px;line-height:1.55}.Oo1fpq_row{align-items:flex-end;gap:8px;display:flex}.Oo1fpq_row .Oo1fpq_label{flex:1;min-width:0}.Oo1fpq_advanced{border:1px dashed var(--dsw-alias-border-l2,#d1d5db);background:var(--dsw-alias-bg-layer-1,#fff);border-radius:10px;flex-direction:column;gap:9px;padding:9px 11px;display:flex}.Oo1fpq_advanced summary{cursor:pointer;color:var(--dsw-alias-label-secondary,#6b7280);font-size:12px;font-weight:600}.Oo1fpq_generate{background:var(--dsw-alias-label-primary,#1f2328);color:var(--dsw-alias-bg-layer-3,#fff);cursor:pointer;border:0;border-radius:10px;padding:10px 14px;font-family:inherit;font-size:13px;font-weight:600;transition:opacity .12s,transform 80ms}.Oo1fpq_generate:hover:not(:disabled){opacity:.92}.Oo1fpq_generate:active:not(:disabled){transform:translateY(1px)}.Oo1fpq_generate:disabled{opacity:.5;cursor:default}.Oo1fpq_resultCol{border:1px solid var(--dsw-alias-border-l1,#e5e7eb);background:var(--dsw-alias-bg-layer-1,#fff);scrollbar-width:thin;scrollbar-color:var(--dsw-alias-border-l2) transparent;border-radius:12px;flex-direction:column;flex:1;gap:10px;min-width:0;max-width:760px;padding:14px;display:flex;overflow-y:auto}.Oo1fpq_resultCol::-webkit-scrollbar{width:8px}.Oo1fpq_resultCol::-webkit-scrollbar-thumb{background:var(--dsw-alias-border-l2);border-radius:999px}.Oo1fpq_resultEmpty{text-align:center;color:var(--dsw-alias-label-secondary,#6b7280);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:6px;font-size:13px;display:flex}.Oo1fpq_resultEmptyIcon{background:var(--dsw-alias-bg-layer-2,#f3f4f6);border-radius:50%;justify-content:center;align-items:center;width:52px;height:52px;margin-bottom:4px;font-size:24px;display:inline-flex}.Oo1fpq_resultEmptyHint{color:var(--dsw-alias-label-tertiary,#9ca3af);margin:0;font-size:11.5px}.Oo1fpq_error{border:1px solid var(--dsw-alias-label-error,#b91c1c);background:color-mix(in srgb, var(--dsw-alias-label-error,#b91c1c) 6%, transparent);color:var(--dsw-alias-label-error,#b91c1c);border-radius:9px;flex:none;margin:0;padding:9px 12px;font-size:12.5px;line-height:1.55}.Oo1fpq_resultMeta{color:var(--dsw-alias-label-tertiary,#9ca3af);flex:none;align-items:center;gap:8px;font-size:12px;display:flex}.Oo1fpq_resultModeChip{border:1px solid var(--dsw-alias-border-l1,#e5e7eb);background:var(--dsw-alias-bg-layer-2,#f3f4f6);color:var(--dsw-alias-label-secondary,#6b7280);border-radius:999px;padding:2px 9px;font-size:11px}.Oo1fpq_audioList{gap:10px;display:grid}.Oo1fpq_audioCard{border:1px solid var(--dsw-alias-border-l1,#e5e7eb);background:var(--dsw-alias-bg-layer-2,#f7f7f8);border-radius:12px;flex-direction:column;gap:8px;padding:12px;transition:border-color .12s;display:flex}.Oo1fpq_audioCard[data-saved=true]{border-color:color-mix(in srgb, var(--dsw-alias-brand-primary,#2563eb) 42%, var(--dsw-alias-border-l1,#e5e7eb));background:color-mix(in srgb, var(--dsw-alias-brand-primary,#2563eb) 5%, var(--dsw-alias-bg-layer-2,#f7f7f8))}.Oo1fpq_audioCardHead{flex-wrap:wrap;align-items:center;gap:6px;min-width:0;display:flex}.Oo1fpq_voiceIdChip{border:1px solid var(--dsw-alias-border-l1,#e5e7eb);background:var(--dsw-alias-bg-layer-1,#fff);max-width:100%;color:var(--dsw-alias-label-secondary,#6b7280);text-overflow:ellipsis;white-space:nowrap;border-radius:999px;padding:2px 9px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:10.5px;overflow:hidden}.Oo1fpq_savedChip{background:color-mix(in srgb, var(--dsw-alias-brand-primary,#2563eb) 12%, transparent);color:var(--dsw-alias-brand-primary,#2563eb);border-radius:999px;align-items:center;gap:5px;padding:2px 9px;font-size:11px;font-weight:600;display:inline-flex}.Oo1fpq_audioCardIndex{color:var(--dsw-alias-label-tertiary,#9ca3af);font-variant-numeric:tabular-nums;margin-left:auto;font-size:11px}.Oo1fpq_audioCardActions{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.Oo1fpq_ghostButton{border:1px solid var(--dsw-alias-border-l2,#d1d5db);min-height:27px;color:var(--dsw-alias-label-secondary,#6b7280);cursor:pointer;background:0 0;border-radius:999px;align-items:center;gap:5px;padding:3px 11px;font-family:inherit;font-size:12px;text-decoration:none;transition:color .12s,border-color .12s,background .12s;display:inline-flex}.Oo1fpq_ghostButton:hover{color:var(--dsw-alias-brand-primary,#2563eb);border-color:var(--dsw-alias-brand-primary,#2563eb);background:color-mix(in srgb, var(--dsw-alias-brand-primary,#2563eb) 8%, transparent)}.Oo1fpq_compareBox{border:1px dashed var(--dsw-alias-brand-primary,#2563eb);background:color-mix(in srgb, var(--dsw-alias-brand-primary,#2563eb) 4%, var(--dsw-alias-bg-layer-1,#fff));border-radius:10px;flex-direction:column;gap:7px;padding:9px 11px;display:flex}.Oo1fpq_compareChips{flex-wrap:wrap;gap:6px;display:flex}.Oo1fpq_compareChip{border:1px solid var(--dsw-alias-border-l2,#d1d5db);background:var(--dsw-alias-bg-layer-1,#fff);min-height:27px;color:var(--dsw-alias-label-secondary,#6b7280);cursor:pointer;border-radius:999px;align-items:center;padding:0 11px;font-family:inherit;font-size:12px;transition:color .12s,border-color .12s,background .12s;display:inline-flex}.Oo1fpq_compareChip:hover{color:var(--dsw-alias-label-primary,#1f2328);border-color:var(--dsw-alias-label-dimmed,#9ca3af)}.Oo1fpq_compareChip[data-active=true]{color:var(--dsw-alias-brand-primary,#2563eb);border-color:var(--dsw-alias-brand-primary,#2563eb);background:color-mix(in srgb, var(--dsw-alias-brand-primary,#2563eb) 9%, transparent);font-weight:600}.Oo1fpq_compareBoard{flex-direction:column;gap:12px;display:flex}.Oo1fpq_compareGroup{border:1px solid var(--dsw-alias-border-l1,#e5e7eb);background:var(--dsw-alias-bg-layer-2,#f7f7f8);border-radius:12px;flex-direction:column;gap:8px;padding:11px;display:flex}.Oo1fpq_compareGroup[data-state=running]{border-color:color-mix(in srgb, var(--dsw-alias-brand-primary,#2563eb) 45%, var(--dsw-alias-border-l1,#e5e7eb))}.Oo1fpq_compareGroup[data-state=done]{border-color:color-mix(in srgb, #10b981 45%, var(--dsw-alias-border-l1,#e5e7eb))}.Oo1fpq_compareGroup[data-state=error]{border-color:color-mix(in srgb, var(--dsw-alias-label-error,#b91c1c) 45%, var(--dsw-alias-border-l1,#e5e7eb))}.Oo1fpq_compareGroupHead{justify-content:space-between;align-items:center;gap:10px;display:flex}.Oo1fpq_compareModelName{background:var(--dsw-alias-bg-layer-1,#fff);border:1px solid var(--dsw-alias-border-l1,#e5e7eb);color:var(--dsw-alias-label-primary,#1f2328);text-overflow:ellipsis;white-space:nowrap;border-radius:999px;padding:3px 10px;font-size:12px;font-weight:600;overflow:hidden}.Oo1fpq_compareState{color:var(--dsw-alias-label-tertiary,#9ca3af);white-space:nowrap;align-items:center;gap:5px;font-size:11px;display:inline-flex}.Oo1fpq_compareGroup[data-state=running] .Oo1fpq_compareState{color:var(--dsw-alias-brand-primary,#2563eb)}.Oo1fpq_compareGroup[data-state=done] .Oo1fpq_compareState{color:#059669}.Oo1fpq_compareGroup[data-state=error] .Oo1fpq_compareState,.Oo1fpq_hint[data-error]{color:var(--dsw-alias-label-error,#b91c1c)}.Oo1fpq_historyCol{border:1px solid var(--dsw-alias-border-l1,#e5e7eb);background:var(--dsw-alias-bg-layer-1,#fff);border-radius:12px;flex-direction:column;flex:none;width:250px;min-width:210px;max-width:290px;min-height:0;display:flex;overflow:hidden}.Oo1fpq_historyHeader{border-bottom:1px solid var(--dsw-alias-border-l1,#e5e7eb);flex:none;justify-content:space-between;align-items:center;gap:8px;padding:10px 12px;display:flex}.Oo1fpq_historyTitle{color:var(--dsw-alias-label-primary,#1f2328);font-size:13px;font-weight:700}.Oo1fpq_historyClear{border:1px solid var(--dsw-alias-border-l2,#d1d5db);color:var(--dsw-alias-label-tertiary,#9ca3af);cursor:pointer;background:0 0;border-radius:999px;padding:2px 9px;font-family:inherit;font-size:11px}.Oo1fpq_historyClear:hover{color:var(--dsw-alias-label-error,#b91c1c);border-color:var(--dsw-alias-label-error,#b91c1c)}.Oo1fpq_historyList{scrollbar-width:thin;scrollbar-color:var(--dsw-alias-border-l2) transparent;flex-direction:column;flex:1;gap:8px;min-height:0;padding:9px;display:flex;overflow-y:auto}.Oo1fpq_historyList::-webkit-scrollbar{width:8px}.Oo1fpq_historyList::-webkit-scrollbar-thumb{background:var(--dsw-alias-border-l2);border-radius:999px}.Oo1fpq_historyEmpty{text-align:center;color:var(--dsw-alias-label-tertiary,#9ca3af);flex:1;justify-content:center;align-items:center;padding:18px;font-size:12px;display:flex}.Oo1fpq_historyItem{border:1px solid var(--dsw-alias-border-l1,#e5e7eb);background:var(--dsw-alias-bg-layer-2,#f7f7f8);border-radius:10px;flex-direction:column;gap:6px;padding:9px;display:flex}.Oo1fpq_historyPrompt{color:var(--dsw-alias-label-primary,#1f2328);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:12px;line-height:1.45;display:-webkit-box;overflow:hidden}.Oo1fpq_historyMeta{color:var(--dsw-alias-label-tertiary,#9ca3af);white-space:nowrap;text-overflow:ellipsis;font-size:10.5px;overflow:hidden}.Oo1fpq_historyActions{justify-content:flex-end;display:flex}.Oo1fpq_historyAction{border:1px solid var(--dsw-alias-border-l2,#d1d5db);color:var(--dsw-alias-label-secondary,#6b7280);cursor:pointer;background:0 0;border-radius:999px;align-items:center;gap:4px;padding:2px 9px;font-family:inherit;font-size:11px;display:inline-flex}.Oo1fpq_historyAction:hover{color:var(--dsw-alias-brand-primary,#2563eb);border-color:var(--dsw-alias-brand-primary,#2563eb)}.Oo1fpq_player{border:1px solid var(--dsw-alias-border-l1,#e5e7eb);background:var(--dsw-alias-bg-layer-1,#fff);border-radius:10px;align-items:center;gap:9px;padding:8px 10px;display:flex}.Oo1fpq_playerCompact{border:1px solid var(--dsw-alias-border-l1,#e5e7eb);background:var(--dsw-alias-bg-layer-1,#fff);border-radius:9px;align-items:center;gap:8px;padding:6px 8px;display:flex}.Oo1fpq_playButton{background:var(--dsw-alias-label-primary,#1f2328);width:30px;height:30px;color:var(--dsw-alias-bg-layer-3,#fff);cursor:pointer;border:0;border-radius:50%;flex:none;justify-content:center;align-items:center;transition:opacity .12s,transform 80ms;display:inline-flex}.Oo1fpq_playerCompact .Oo1fpq_playButton{width:26px;height:26px}.Oo1fpq_playButton:hover{opacity:.9}.Oo1fpq_playButton:active{transform:scale(.94)}.Oo1fpq_track{background:var(--dsw-alias-border-l2,#d1d5db);cursor:pointer;border-radius:999px;flex:1;min-width:0;height:4px;position:relative}.Oo1fpq_trackFill{background:var(--dsw-alias-brand-primary,#2563eb);border-radius:999px;position:absolute;inset:0 auto 0 0}.Oo1fpq_trackKnob{background:var(--dsw-alias-brand-primary,#2563eb);border-radius:50%;width:11px;height:11px;transition:transform .1s;position:absolute;top:50%;transform:translate(-50%,-50%)}.Oo1fpq_time{font-variant-numeric:tabular-nums;min-width:62px;color:var(--dsw-alias-label-tertiary,#9ca3af);white-space:nowrap;text-align:right;flex:none;font-size:10.5px}.Oo1fpq_playerCompact .Oo1fpq_time{min-width:56px;font-size:10px}.Oo1fpq_muteButton{width:24px;height:24px;color:var(--dsw-alias-label-tertiary,#9ca3af);cursor:pointer;background:0 0;border:0;border-radius:6px;flex:none;justify-content:center;align-items:center;display:inline-flex}.Oo1fpq_muteButton:hover{color:var(--dsw-alias-label-primary,#1f2328);background:var(--dsw-alias-bg-layer-2,#f3f4f6)}.Oo1fpq_modalMask{z-index:200;backdrop-filter:blur(3px);background:#0006;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.Oo1fpq_modal{border:1px solid var(--dsw-alias-border-l2,#d1d5db);background:var(--dsw-alias-bg-layer-1,#fff);border-radius:14px;flex-direction:column;gap:12px;width:440px;max-width:100%;max-height:calc(100vh - 40px);padding:16px;display:flex;box-shadow:0 18px 50px #00000038}.Oo1fpq_modalHead{color:var(--dsw-alias-label-primary,#1f2328);justify-content:space-between;align-items:center;gap:10px;font-size:14px;display:flex}.Oo1fpq_modalBody{flex-direction:column;gap:11px;min-height:0;display:flex;overflow-y:auto}.Oo1fpq_formRow{grid-template-columns:1fr 1fr;gap:10px;display:grid}.Oo1fpq_modalFoot{justify-content:flex-end;align-items:center;gap:8px;display:flex}.Oo1fpq_primaryButton{background:var(--dsw-alias-label-primary,#1f2328);min-height:32px;color:var(--dsw-alias-bg-layer-3,#fff);cursor:pointer;border:0;border-radius:8px;align-items:center;gap:6px;padding:0 14px;font-family:inherit;font-size:12.5px;font-weight:600;display:inline-flex}.Oo1fpq_primaryButton:disabled{opacity:.5;cursor:default}.Oo1fpq_secondaryButton{border:1px solid var(--dsw-alias-border-l2,#d1d5db);min-height:32px;color:var(--dsw-alias-label-secondary,#6b7280);cursor:pointer;background:0 0;border-radius:8px;padding:0 14px;font-family:inherit;font-size:12.5px}.Oo1fpq_secondaryButton:hover{color:var(--dsw-alias-label-primary,#1f2328);background:var(--dsw-alias-bg-layer-2,#f3f4f6)}.Oo1fpq_iconButton{width:26px;height:26px;color:var(--dsw-alias-label-tertiary,#9ca3af);cursor:pointer;background:0 0;border:0;border-radius:7px;flex:none;justify-content:center;align-items:center;font-size:16px;line-height:1;display:inline-flex}.Oo1fpq_iconButton:hover{color:var(--dsw-alias-label-primary,#1f2328);background:var(--dsw-alias-bg-layer-2,#f3f4f6)}.Oo1fpq_toast{z-index:150;border:1px solid var(--dsw-alias-border-l2,#d1d5db);background:var(--dsw-alias-bg-mask-1,#fff);color:var(--dsw-alias-label-primary,#1f2328);backdrop-filter:blur(6px);pointer-events:none;border-radius:999px;align-items:center;gap:7px;padding:7px 16px;font-size:12.5px;animation:.16s ease-out Oo1fpq_audiogenToastIn;display:inline-flex;position:absolute;bottom:18px;left:50%;transform:translate(-50%);box-shadow:0 8px 24px #00000038}@keyframes Oo1fpq_audiogenToastIn{0%{opacity:0;transform:translate(-50%,6px)}to{opacity:1;transform:translate(-50%)}}@media (prefers-reduced-motion:reduce){.Oo1fpq_toast{animation-duration:1ms}}.Oo1fpq_modelCheckList{border:1px solid var(--dsw-alias-border-l2,#d1d5db);background:var(--dsw-alias-bg-layer-3,#fff);border-radius:8px;flex-direction:column;gap:4px;max-height:180px;padding:8px;display:flex;overflow-y:auto}.Oo1fpq_resultGroups{flex-direction:column;gap:16px;display:flex}.Oo1fpq_resultGroup{flex-direction:column;gap:8px;display:flex}.Oo1fpq_resultGroupHead{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.Oo1fpq_resultGroupChip{background:var(--dsw-alias-interactive-bg-hover-accent,#26314824);border:1px solid var(--dsw-alias-border-l2,#d1d5db);color:var(--dsw-alias-label-primary,#1f2328);border-radius:999px;padding:3px 10px;font-size:12px;font-weight:600}.Oo1fpq_resultGroupError{color:var(--dsw-alias-state-error-primary,#dc2626);font-size:12px}.Oo1fpq_resultGroupCount{color:var(--dsw-alias-label-tertiary,#9ca3af);font-size:11px}.Oo1fpq_overrideTable{flex-direction:column;gap:6px;display:flex}.Oo1fpq_overrideRow{align-items:center;gap:6px;display:flex}.Oo1fpq_overrideCell{min-width:0;color:var(--dsw-alias-label-secondary,#6b7280);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:12px;font-weight:500;overflow:hidden}.Oo1fpq_overrideCell .Oo1fpq_input{min-height:30px;padding:5px 8px}.Oo1fpq_overrideCellHead{color:var(--dsw-alias-label-primary,#1f2328);white-space:normal;font-weight:700}.Oo1fpq_taskList{flex-direction:column;gap:14px;display:flex}.Oo1fpq_taskCard{border:1px solid var(--dsw-alias-border-l2,#d1d5db);background:var(--dsw-alias-bg-layer-2,#fafafa);border-radius:10px;flex-direction:column;gap:8px;padding:10px 12px;display:flex}.Oo1fpq_taskCard[data-state=failed]{border-color:var(--dsw-alias-state-error-primary,#dc2626)}.Oo1fpq_taskCard[data-state=cancelled]{opacity:.75}.Oo1fpq_taskHead{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.Oo1fpq_taskLabel{color:var(--dsw-alias-label-primary,#1f2328);text-overflow:ellipsis;white-space:nowrap;max-width:200px;font-size:13px;font-weight:600;overflow:hidden}.Oo1fpq_taskStatus{color:var(--dsw-alias-label-secondary,#6b7280);font-size:12px}.Oo1fpq_taskStatus[data-state=done]{color:var(--dsw-alias-state-success-primary,#16a34a)}.Oo1fpq_taskStatus[data-state=failed]{color:var(--dsw-alias-state-error-primary,#dc2626)}.Oo1fpq_taskActions{gap:6px;margin-left:auto;display:flex}.Oo1fpq_historyTabs{flex-wrap:wrap;gap:6px;margin-bottom:10px;display:flex}.Oo1fpq_historyTab{border:1px solid var(--dsw-alias-border-l2,#d1d5db);cursor:pointer;background:var(--dsw-alias-bg-layer-3,#fff);color:var(--dsw-alias-label-secondary,#6b7280);border-radius:999px;padding:3px 10px;font-size:12px}.Oo1fpq_historyTab[data-active=true]{background:var(--dsw-alias-interactive-bg-hover-accent,#26314824);color:var(--dsw-alias-label-primary,#1f2328);font-weight:600}.Oo1fpq_historyTabCount{color:var(--dsw-alias-label-tertiary,#9ca3af);margin-left:4px;font-size:11px}.Oo1fpq_historyCompareSummary{cursor:pointer;flex-wrap:wrap;align-items:center;gap:8px;display:flex}.Oo1fpq_historyCompareBadge{color:var(--dsw-alias-label-secondary,#6b7280);border:1px solid var(--dsw-alias-border-l2,#d1d5db);background:var(--dsw-alias-bg-layer-3,#fff);white-space:nowrap;border-radius:999px;padding:1px 8px;font-size:11px;font-weight:600}.Oo1fpq_historyModelRow{border-top:1px dashed var(--dsw-alias-border-l1,#e5e7eb);flex-direction:column;gap:4px;margin-top:8px;padding-top:8px;display:flex}.Oo1fpq_overrideOnly{color:var(--dsw-alias-label-tertiary,#9ca3af);font-size:10px;font-weight:500}.Oo1fpq_overrideDash{color:var(--dsw-alias-label-tertiary,#9ca3af);padding:0 6px}.Oo1fpq_historyTime{color:var(--dsw-alias-label-tertiary,#9ca3af);white-space:nowrap;margin:2px 0;font-size:11px}.Oo1fpq_formSection{letter-spacing:.04em;color:var(--dsw-alias-label-tertiary,#9ca3af);border-bottom:1px solid var(--dsw-alias-border-l1,#e5e7eb);margin:10px 0 2px;padding-bottom:4px;font-size:11px;font-weight:700}.Oo1fpq_formFields{grid-template-columns:1fr 1fr;align-items:end;gap:10px;display:grid}.Oo1fpq_fieldCell{min-width:0}.Oo1fpq_fieldFull{grid-column:1/-1}.Oo1fpq_textarea:disabled{opacity:.55;cursor:not-allowed;background:var(--dsw-alias-bg-layer-2,#f3f4f6)}.Oo1fpq_modeIcon{margin-right:4px;font-size:13px}.Oo1fpq_modeButton[data-active=true]{border-color:var(--dsw-alias-interactive-bg-hover-accent,#26314824);background:var(--dsw-alias-interactive-bg-hover-accent,#26314824);color:var(--dsw-alias-label-primary,#1f2328);font-weight:600}.Oo1fpq_taskBar{background:var(--dsw-alias-border-l1,#e5e7eb);border-radius:999px;flex:1;min-width:60px;height:4px;display:block;overflow:hidden}.Oo1fpq_taskBar i{background:var(--dsw-alias-interactive-bg-hover-accent,#26314859);border-radius:999px;height:100%;transition:width .3s;display:block}.Oo1fpq_historyIcon{width:26px;height:26px;color:var(--dsw-alias-label-secondary,#6b7280);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;justify-content:center;align-items:center;font-size:14px;display:inline-flex}.Oo1fpq_historyIcon:hover{background:var(--dsw-alias-interactive-bg-hover-accent,#26314824);color:var(--dsw-alias-label-primary,#1f2328)}.Oo1fpq_historyIcon[title^=删除]:hover{color:var(--dsw-alias-state-error-primary,#dc2626)}.Oo1fpq_historyPrompt{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.Oo1fpq_input:focus-visible,.Oo1fpq_select:focus-visible,.Oo1fpq_textarea:focus-visible,.Oo1fpq_modeButton:focus-visible,.Oo1fpq_ghostButton:focus-visible,.Oo1fpq_historyAction:focus-visible,.Oo1fpq_historyIcon:focus-visible{outline:2px solid var(--dsw-alias-interactive-bg-hover-accent,#26314859);outline-offset:1px}.Oo1fpq_generate:focus-visible{outline:2px solid var(--dsw-alias-interactive-bg-hover-accent,#26314859);outline-offset:2px}@media (width<=1100px){.Oo1fpq_studio{flex-wrap:wrap}.Oo1fpq_historyCol{width:100%;min-width:0;max-width:none}}@media (width<=720px){.Oo1fpq_formCol{width:100%;min-width:0;max-width:none}.Oo1fpq_resultCol{min-height:320px}}.Oo1fpq_formSectionRow{justify-content:space-between;align-items:flex-end;gap:8px;display:flex}.Oo1fpq_formSectionRow .Oo1fpq_formSection{flex:1}.Oo1fpq_enhanceCard{border:1px solid var(--dsw-alias-border-l1,#e5e7eb);background:var(--dsw-alias-bg-layer-2,#fafafa);border-radius:10px;flex-direction:column;gap:8px;padding:10px;display:flex}.Oo1fpq_enhanceCardHead{color:var(--dsw-alias-label-secondary,#6b7280);justify-content:space-between;align-items:center;gap:8px;font-size:12px;display:flex}.Oo1fpq_enhanceActions{gap:6px;display:flex}.Oo1fpq_enhanceActionsRow{justify-content:flex-end;margin-top:-4px;display:flex}";
1247
+ const css$5 = ".Oo1fpq_panel{background:var(--dsw-alias-bg-base,#f7f7f8);min-width:0;height:100%;min-height:0;color:var(--dsw-alias-label-primary,#1f2328);font-family:var(--dsw-font-family,system-ui, sans-serif);flex-direction:column;gap:12px;padding:14px 16px 16px;display:flex;position:relative}.Oo1fpq_panel,.Oo1fpq_panel *,.Oo1fpq_panel :before,.Oo1fpq_panel :after{box-sizing:border-box}.Oo1fpq_header{flex:none;justify-content:space-between;align-items:center;gap:12px;display:flex}.Oo1fpq_title{color:var(--dsw-alias-label-primary,#1f2328);white-space:nowrap;margin:0;font-size:16px;font-weight:700}.Oo1fpq_tabs{border:1px solid var(--dsw-alias-border-l1,#e5e7eb);background:var(--dsw-alias-bg-layer-2,#f3f4f6);border-radius:10px;align-items:center;gap:2px;padding:3px;display:inline-flex}.Oo1fpq_tab{min-height:27px;color:var(--dsw-alias-label-secondary,#6b7280);cursor:pointer;background:0 0;border:0;border-radius:8px;align-items:center;gap:6px;padding:0 12px;font-family:inherit;font-size:12.5px;transition:color .12s,background .12s;display:inline-flex}.Oo1fpq_tab:hover{color:var(--dsw-alias-label-primary,#1f2328)}.Oo1fpq_tab[data-active=true]{color:var(--dsw-alias-label-primary,#1f2328);background:var(--dsw-alias-bg-layer-1,#fff);font-weight:600;box-shadow:0 1px 3px #0000001a}.Oo1fpq_studio{flex:1;gap:14px;min-width:0;min-height:0;display:flex}.Oo1fpq_formCol{scrollbar-width:thin;scrollbar-color:var(--dsw-alias-border-l2) transparent;flex-direction:column;flex:none;gap:11px;width:380px;min-width:320px;max-width:440px;min-height:0;padding:2px;display:flex;overflow-y:auto}.Oo1fpq_formCol::-webkit-scrollbar{width:8px}.Oo1fpq_formCol::-webkit-scrollbar-thumb{background:var(--dsw-alias-border-l2);border-radius:999px}.Oo1fpq_modeRow{flex-wrap:wrap;gap:6px;display:flex}.Oo1fpq_modeButton{border:1px solid var(--dsw-alias-border-l2,#d1d5db);background:var(--dsw-alias-bg-layer-1,#fff);min-width:0;min-height:34px;color:var(--dsw-alias-label-secondary,#6b7280);white-space:nowrap;cursor:pointer;border-radius:9px;flex:auto;justify-content:center;align-items:center;padding:6px 10px;font-family:inherit;font-size:11.5px;transition:border-color .12s,color .12s,background .12s;display:flex}.Oo1fpq_modeButton:hover{border-color:var(--dsw-alias-label-dimmed,#9ca3af);color:var(--dsw-alias-label-primary,#1f2328)}.Oo1fpq_modeButton[data-active=true]{border-color:var(--dsw-alias-brand-primary,#2563eb);color:var(--dsw-alias-brand-primary,#2563eb);background:color-mix(in srgb, var(--dsw-alias-brand-primary,#2563eb) 8%, transparent);font-weight:600}.Oo1fpq_label{color:var(--dsw-alias-label-secondary,#6b7280);flex-direction:column;gap:5px;font-size:12px;font-weight:600;display:flex}.Oo1fpq_input,.Oo1fpq_textarea{border:1px solid var(--dsw-alias-border-l2,#d1d5db);background:var(--dsw-alias-bg-layer-2,#fff);width:100%;min-height:36px;color:var(--dsw-alias-label-primary,#1f2328);border-radius:9px;outline:none;padding:7px 10px;font-family:inherit;font-size:13px;transition:border-color .12s,box-shadow .12s}.Oo1fpq_input:focus,.Oo1fpq_textarea:focus{border-color:var(--dsw-alias-brand-primary,#2563eb);box-shadow:0 0 0 3px color-mix(in srgb, var(--dsw-alias-brand-primary,#2563eb) 14%, transparent)}.Oo1fpq_textarea{resize:vertical;min-height:96px}.Oo1fpq_checkbox{color:var(--dsw-alias-label-secondary,#6b7280);cursor:pointer;align-items:center;gap:7px;font-size:12px;font-weight:600;display:flex}.Oo1fpq_checkbox input{accent-color:var(--dsw-alias-brand-primary,#2563eb);margin:0}.Oo1fpq_radioGroup{align-items:center;gap:8px;display:flex}.Oo1fpq_radioOption{border:1px solid var(--dsw-alias-border-l2,#d1d5db);background:var(--dsw-alias-bg-layer-2,#fff);color:var(--dsw-alias-label-primary,#1f2328);cursor:pointer;border-radius:9px;align-items:center;gap:6px;padding:7px 12px;font-size:13px;font-weight:500;transition:border-color .12s,background .12s;display:flex}.Oo1fpq_radioOption input{accent-color:var(--dsw-alias-brand-primary,#2563eb);margin:0}.Oo1fpq_radioOption[data-active=true]{border-color:var(--dsw-alias-brand-primary,#2563eb);background:color-mix(in srgb, var(--dsw-alias-brand-primary,#2563eb) 8%, transparent);font-weight:600}.Oo1fpq_hint{color:var(--dsw-alias-label-tertiary,#9ca3af);margin:0;font-size:11.5px;line-height:1.55}.Oo1fpq_row{align-items:flex-end;gap:8px;display:flex}.Oo1fpq_row .Oo1fpq_label{flex:1;min-width:0}.Oo1fpq_advanced{border:1px dashed var(--dsw-alias-border-l2,#d1d5db);background:var(--dsw-alias-bg-layer-1,#fff);border-radius:10px;flex-direction:column;gap:9px;padding:9px 11px;display:flex}.Oo1fpq_advanced summary{cursor:pointer;color:var(--dsw-alias-label-secondary,#6b7280);font-size:12px;font-weight:600}.Oo1fpq_generate{background:var(--dsw-alias-label-primary,#1f2328);color:var(--dsw-alias-bg-layer-3,#fff);cursor:pointer;border:0;border-radius:10px;padding:10px 14px;font-family:inherit;font-size:13px;font-weight:600;transition:opacity .12s,transform 80ms}.Oo1fpq_generate:hover:not(:disabled){opacity:.92}.Oo1fpq_generate:active:not(:disabled){transform:translateY(1px)}.Oo1fpq_generate:disabled{opacity:.5;cursor:default}.Oo1fpq_resultCol{border:1px solid var(--dsw-alias-border-l1,#e5e7eb);background:var(--dsw-alias-bg-layer-1,#fff);scrollbar-width:thin;scrollbar-color:var(--dsw-alias-border-l2) transparent;border-radius:12px;flex-direction:column;flex:1;gap:10px;min-width:0;max-width:760px;padding:14px;display:flex;overflow-y:auto}.Oo1fpq_resultCol::-webkit-scrollbar{width:8px}.Oo1fpq_resultCol::-webkit-scrollbar-thumb{background:var(--dsw-alias-border-l2);border-radius:999px}.Oo1fpq_resultEmpty{text-align:center;color:var(--dsw-alias-label-secondary,#6b7280);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:6px;font-size:13px;display:flex}.Oo1fpq_resultEmptyIcon{background:var(--dsw-alias-bg-layer-2,#f3f4f6);border-radius:50%;justify-content:center;align-items:center;width:52px;height:52px;margin-bottom:4px;font-size:24px;display:inline-flex}.Oo1fpq_resultEmptyHint{color:var(--dsw-alias-label-tertiary,#9ca3af);margin:0;font-size:11.5px}.Oo1fpq_error{border:1px solid var(--dsw-alias-label-error,#b91c1c);background:color-mix(in srgb, var(--dsw-alias-label-error,#b91c1c) 6%, transparent);color:var(--dsw-alias-label-error,#b91c1c);border-radius:9px;flex:none;margin:0;padding:9px 12px;font-size:12.5px;line-height:1.55}.Oo1fpq_resultMeta{color:var(--dsw-alias-label-tertiary,#9ca3af);flex:none;align-items:center;gap:8px;font-size:12px;display:flex}.Oo1fpq_resultModeChip{border:1px solid var(--dsw-alias-border-l1,#e5e7eb);background:var(--dsw-alias-bg-layer-2,#f3f4f6);color:var(--dsw-alias-label-secondary,#6b7280);border-radius:999px;padding:2px 9px;font-size:11px}.Oo1fpq_audioList{gap:10px;display:grid}.Oo1fpq_audioCard{border:1px solid var(--dsw-alias-border-l1,#e5e7eb);background:var(--dsw-alias-bg-layer-2,#f7f7f8);border-radius:12px;flex-direction:column;gap:8px;padding:12px;transition:border-color .12s;display:flex}.Oo1fpq_audioCard[data-saved=true]{border-color:color-mix(in srgb, var(--dsw-alias-brand-primary,#2563eb) 42%, var(--dsw-alias-border-l1,#e5e7eb));background:color-mix(in srgb, var(--dsw-alias-brand-primary,#2563eb) 5%, var(--dsw-alias-bg-layer-2,#f7f7f8))}.Oo1fpq_audioCardHead{flex-wrap:wrap;align-items:center;gap:6px;min-width:0;display:flex}.Oo1fpq_voiceIdChip{border:1px solid var(--dsw-alias-border-l1,#e5e7eb);background:var(--dsw-alias-bg-layer-1,#fff);max-width:100%;color:var(--dsw-alias-label-secondary,#6b7280);text-overflow:ellipsis;white-space:nowrap;border-radius:999px;padding:2px 9px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:10.5px;overflow:hidden}.Oo1fpq_savedChip{background:color-mix(in srgb, var(--dsw-alias-brand-primary,#2563eb) 12%, transparent);color:var(--dsw-alias-brand-primary,#2563eb);border-radius:999px;align-items:center;gap:5px;padding:2px 9px;font-size:11px;font-weight:600;display:inline-flex}.Oo1fpq_audioCardIndex{color:var(--dsw-alias-label-tertiary,#9ca3af);font-variant-numeric:tabular-nums;margin-left:auto;font-size:11px}.Oo1fpq_audioCardActions{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.Oo1fpq_ghostButton{border:1px solid var(--dsw-alias-border-l2,#d1d5db);min-height:27px;color:var(--dsw-alias-label-secondary,#6b7280);cursor:pointer;background:0 0;border-radius:999px;align-items:center;gap:5px;padding:3px 11px;font-family:inherit;font-size:12px;text-decoration:none;transition:color .12s,border-color .12s,background .12s;display:inline-flex}.Oo1fpq_ghostButton:hover{color:var(--dsw-alias-brand-primary,#2563eb);border-color:var(--dsw-alias-brand-primary,#2563eb);background:color-mix(in srgb, var(--dsw-alias-brand-primary,#2563eb) 8%, transparent)}.Oo1fpq_compareBox{border:1px dashed var(--dsw-alias-brand-primary,#2563eb);background:color-mix(in srgb, var(--dsw-alias-brand-primary,#2563eb) 4%, var(--dsw-alias-bg-layer-1,#fff));border-radius:10px;flex-direction:column;gap:7px;padding:9px 11px;display:flex}.Oo1fpq_compareChips{flex-wrap:wrap;gap:6px;display:flex}.Oo1fpq_compareChip{border:1px solid var(--dsw-alias-border-l2,#d1d5db);background:var(--dsw-alias-bg-layer-1,#fff);min-height:27px;color:var(--dsw-alias-label-secondary,#6b7280);cursor:pointer;border-radius:999px;align-items:center;padding:0 11px;font-family:inherit;font-size:12px;transition:color .12s,border-color .12s,background .12s;display:inline-flex}.Oo1fpq_compareChip:hover{color:var(--dsw-alias-label-primary,#1f2328);border-color:var(--dsw-alias-label-dimmed,#9ca3af)}.Oo1fpq_compareChip[data-active=true]{color:var(--dsw-alias-brand-primary,#2563eb);border-color:var(--dsw-alias-brand-primary,#2563eb);background:color-mix(in srgb, var(--dsw-alias-brand-primary,#2563eb) 9%, transparent);font-weight:600}.Oo1fpq_compareBoard{flex-direction:column;gap:12px;display:flex}.Oo1fpq_compareGroup{border:1px solid var(--dsw-alias-border-l1,#e5e7eb);background:var(--dsw-alias-bg-layer-2,#f7f7f8);border-radius:12px;flex-direction:column;gap:8px;padding:11px;display:flex}.Oo1fpq_compareGroup[data-state=running]{border-color:color-mix(in srgb, var(--dsw-alias-brand-primary,#2563eb) 45%, var(--dsw-alias-border-l1,#e5e7eb))}.Oo1fpq_compareGroup[data-state=done]{border-color:color-mix(in srgb, #10b981 45%, var(--dsw-alias-border-l1,#e5e7eb))}.Oo1fpq_compareGroup[data-state=error]{border-color:color-mix(in srgb, var(--dsw-alias-label-error,#b91c1c) 45%, var(--dsw-alias-border-l1,#e5e7eb))}.Oo1fpq_compareGroupHead{justify-content:space-between;align-items:center;gap:10px;display:flex}.Oo1fpq_compareModelName{background:var(--dsw-alias-bg-layer-1,#fff);border:1px solid var(--dsw-alias-border-l1,#e5e7eb);color:var(--dsw-alias-label-primary,#1f2328);text-overflow:ellipsis;white-space:nowrap;border-radius:999px;padding:3px 10px;font-size:12px;font-weight:600;overflow:hidden}.Oo1fpq_compareState{color:var(--dsw-alias-label-tertiary,#9ca3af);white-space:nowrap;align-items:center;gap:5px;font-size:11px;display:inline-flex}.Oo1fpq_compareGroup[data-state=running] .Oo1fpq_compareState{color:var(--dsw-alias-brand-primary,#2563eb)}.Oo1fpq_compareGroup[data-state=done] .Oo1fpq_compareState{color:#059669}.Oo1fpq_compareGroup[data-state=error] .Oo1fpq_compareState,.Oo1fpq_hint[data-error]{color:var(--dsw-alias-label-error,#b91c1c)}.Oo1fpq_historyCol{border:1px solid var(--dsw-alias-border-l1,#e5e7eb);background:var(--dsw-alias-bg-layer-1,#fff);border-radius:12px;flex-direction:column;flex:none;width:250px;min-width:210px;max-width:290px;min-height:0;display:flex;overflow:hidden}.Oo1fpq_historyHeader{border-bottom:1px solid var(--dsw-alias-border-l1,#e5e7eb);flex:none;justify-content:space-between;align-items:center;gap:8px;padding:10px 12px;display:flex}.Oo1fpq_historyTitle{color:var(--dsw-alias-label-primary,#1f2328);font-size:13px;font-weight:700}.Oo1fpq_historyClear{border:1px solid var(--dsw-alias-border-l2,#d1d5db);color:var(--dsw-alias-label-tertiary,#9ca3af);cursor:pointer;background:0 0;border-radius:999px;padding:2px 9px;font-family:inherit;font-size:11px}.Oo1fpq_historyClear:hover{color:var(--dsw-alias-label-error,#b91c1c);border-color:var(--dsw-alias-label-error,#b91c1c)}.Oo1fpq_historyList{scrollbar-width:thin;scrollbar-color:var(--dsw-alias-border-l2) transparent;flex-direction:column;flex:1;gap:8px;min-height:0;padding:9px;display:flex;overflow-y:auto}.Oo1fpq_historyList::-webkit-scrollbar{width:8px}.Oo1fpq_historyList::-webkit-scrollbar-thumb{background:var(--dsw-alias-border-l2);border-radius:999px}.Oo1fpq_historyEmpty{text-align:center;color:var(--dsw-alias-label-tertiary,#9ca3af);flex:1;justify-content:center;align-items:center;padding:18px;font-size:12px;display:flex}.Oo1fpq_historyItem{border:1px solid var(--dsw-alias-border-l1,#e5e7eb);background:var(--dsw-alias-bg-layer-2,#f7f7f8);border-radius:10px;flex-direction:column;gap:6px;padding:9px;display:flex}.Oo1fpq_historyPrompt{color:var(--dsw-alias-label-primary,#1f2328);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:12px;line-height:1.45;display:-webkit-box;overflow:hidden}.Oo1fpq_historyMeta{color:var(--dsw-alias-label-tertiary,#9ca3af);white-space:nowrap;text-overflow:ellipsis;font-size:10.5px;overflow:hidden}.Oo1fpq_historyActions{justify-content:flex-end;display:flex}.Oo1fpq_historyAction{border:1px solid var(--dsw-alias-border-l2,#d1d5db);color:var(--dsw-alias-label-secondary,#6b7280);cursor:pointer;background:0 0;border-radius:999px;align-items:center;gap:4px;padding:2px 9px;font-family:inherit;font-size:11px;display:inline-flex}.Oo1fpq_historyAction:hover{color:var(--dsw-alias-brand-primary,#2563eb);border-color:var(--dsw-alias-brand-primary,#2563eb)}.Oo1fpq_player{border:1px solid var(--dsw-alias-border-l1,#e5e7eb);background:var(--dsw-alias-bg-layer-1,#fff);border-radius:10px;align-items:center;gap:9px;padding:8px 10px;display:flex}.Oo1fpq_playerCompact{border:1px solid var(--dsw-alias-border-l1,#e5e7eb);background:var(--dsw-alias-bg-layer-1,#fff);border-radius:9px;align-items:center;gap:8px;padding:6px 8px;display:flex}.Oo1fpq_playButton{background:var(--dsw-alias-label-primary,#1f2328);width:30px;height:30px;color:var(--dsw-alias-bg-layer-3,#fff);cursor:pointer;border:0;border-radius:50%;flex:none;justify-content:center;align-items:center;transition:opacity .12s,transform 80ms;display:inline-flex}.Oo1fpq_playerCompact .Oo1fpq_playButton{width:26px;height:26px}.Oo1fpq_playButton:hover{opacity:.9}.Oo1fpq_playButton:active{transform:scale(.94)}.Oo1fpq_track{background:var(--dsw-alias-border-l2,#d1d5db);cursor:pointer;border-radius:999px;flex:1;min-width:0;height:4px;position:relative}.Oo1fpq_trackFill{background:var(--dsw-alias-brand-primary,#2563eb);border-radius:999px;position:absolute;inset:0 auto 0 0}.Oo1fpq_trackKnob{background:var(--dsw-alias-brand-primary,#2563eb);border-radius:50%;width:11px;height:11px;transition:transform .1s;position:absolute;top:50%;transform:translate(-50%,-50%)}.Oo1fpq_time{font-variant-numeric:tabular-nums;min-width:62px;color:var(--dsw-alias-label-tertiary,#9ca3af);white-space:nowrap;text-align:right;flex:none;font-size:10.5px}.Oo1fpq_playerCompact .Oo1fpq_time{min-width:56px;font-size:10px}.Oo1fpq_muteButton{width:24px;height:24px;color:var(--dsw-alias-label-tertiary,#9ca3af);cursor:pointer;background:0 0;border:0;border-radius:6px;flex:none;justify-content:center;align-items:center;display:inline-flex}.Oo1fpq_muteButton:hover{color:var(--dsw-alias-label-primary,#1f2328);background:var(--dsw-alias-bg-layer-2,#f3f4f6)}.Oo1fpq_modalMask{z-index:200;backdrop-filter:blur(3px);background:#0006;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.Oo1fpq_modal{border:1px solid var(--dsw-alias-border-l2,#d1d5db);background:var(--dsw-alias-bg-layer-1,#fff);border-radius:14px;flex-direction:column;gap:12px;width:440px;max-width:100%;max-height:calc(100vh - 40px);padding:16px;display:flex;box-shadow:0 18px 50px #00000038}.Oo1fpq_modalHead{color:var(--dsw-alias-label-primary,#1f2328);justify-content:space-between;align-items:center;gap:10px;font-size:14px;display:flex}.Oo1fpq_modalBody{flex-direction:column;gap:11px;min-height:0;display:flex;overflow-y:auto}.Oo1fpq_formRow{grid-template-columns:1fr 1fr;gap:10px;display:grid}.Oo1fpq_modalFoot{justify-content:flex-end;align-items:center;gap:8px;display:flex}.Oo1fpq_primaryButton{background:var(--dsw-alias-label-primary,#1f2328);min-height:32px;color:var(--dsw-alias-bg-layer-3,#fff);cursor:pointer;border:0;border-radius:8px;align-items:center;gap:6px;padding:0 14px;font-family:inherit;font-size:12.5px;font-weight:600;display:inline-flex}.Oo1fpq_primaryButton:disabled{opacity:.5;cursor:default}.Oo1fpq_secondaryButton{border:1px solid var(--dsw-alias-border-l2,#d1d5db);min-height:32px;color:var(--dsw-alias-label-secondary,#6b7280);cursor:pointer;background:0 0;border-radius:8px;padding:0 14px;font-family:inherit;font-size:12.5px}.Oo1fpq_secondaryButton:hover{color:var(--dsw-alias-label-primary,#1f2328);background:var(--dsw-alias-bg-layer-2,#f3f4f6)}.Oo1fpq_iconButton{width:26px;height:26px;color:var(--dsw-alias-label-tertiary,#9ca3af);cursor:pointer;background:0 0;border:0;border-radius:7px;flex:none;justify-content:center;align-items:center;font-size:16px;line-height:1;display:inline-flex}.Oo1fpq_iconButton:hover{color:var(--dsw-alias-label-primary,#1f2328);background:var(--dsw-alias-bg-layer-2,#f3f4f6)}.Oo1fpq_toast{z-index:150;border:1px solid var(--dsw-alias-border-l2,#d1d5db);background:var(--dsw-alias-bg-mask-1,#fff);color:var(--dsw-alias-label-primary,#1f2328);backdrop-filter:blur(6px);pointer-events:none;border-radius:999px;align-items:center;gap:7px;padding:7px 16px;font-size:12.5px;animation:.16s ease-out Oo1fpq_audiogenToastIn;display:inline-flex;position:absolute;bottom:18px;left:50%;transform:translate(-50%);box-shadow:0 8px 24px #00000038}@keyframes Oo1fpq_audiogenToastIn{0%{opacity:0;transform:translate(-50%,6px)}to{opacity:1;transform:translate(-50%)}}@media (prefers-reduced-motion:reduce){.Oo1fpq_toast{animation-duration:1ms}}.Oo1fpq_modelCheckList{border:1px solid var(--dsw-alias-border-l2,#d1d5db);background:var(--dsw-alias-bg-layer-3,#fff);border-radius:8px;flex-direction:column;gap:4px;max-height:180px;padding:8px;display:flex;overflow-y:auto}.Oo1fpq_resultGroups{flex-direction:column;gap:16px;display:flex}.Oo1fpq_resultGroup{flex-direction:column;gap:8px;display:flex}.Oo1fpq_resultGroupHead{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.Oo1fpq_resultGroupChip{background:var(--dsw-alias-interactive-bg-hover-accent,#26314824);border:1px solid var(--dsw-alias-border-l2,#d1d5db);color:var(--dsw-alias-label-primary,#1f2328);border-radius:999px;padding:3px 10px;font-size:12px;font-weight:600}.Oo1fpq_resultGroupError{color:var(--dsw-alias-state-error-primary,#dc2626);font-size:12px}.Oo1fpq_resultGroupCount{color:var(--dsw-alias-label-tertiary,#9ca3af);font-size:11px}.Oo1fpq_overrideTable{flex-direction:column;gap:6px;display:flex}.Oo1fpq_overrideRow{align-items:center;gap:6px;display:flex}.Oo1fpq_overrideCell{min-width:0;color:var(--dsw-alias-label-secondary,#6b7280);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:12px;font-weight:500;overflow:hidden}.Oo1fpq_overrideCell .Oo1fpq_input{min-height:30px;padding:5px 8px}.Oo1fpq_overrideCellHead{color:var(--dsw-alias-label-primary,#1f2328);white-space:normal;font-weight:700}.Oo1fpq_taskList{flex-direction:column;gap:14px;display:flex}.Oo1fpq_taskCard{border:1px solid var(--dsw-alias-border-l2,#d1d5db);background:var(--dsw-alias-bg-layer-2,#fafafa);border-radius:10px;flex-direction:column;gap:8px;padding:10px 12px;display:flex}.Oo1fpq_taskCard[data-state=failed]{border-color:var(--dsw-alias-state-error-primary,#dc2626)}.Oo1fpq_taskCard[data-state=cancelled]{opacity:.75}.Oo1fpq_taskHead{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.Oo1fpq_taskLabel{color:var(--dsw-alias-label-primary,#1f2328);text-overflow:ellipsis;white-space:nowrap;max-width:200px;font-size:13px;font-weight:600;overflow:hidden}.Oo1fpq_taskStatus{color:var(--dsw-alias-label-secondary,#6b7280);font-size:12px}.Oo1fpq_taskStatus[data-state=done]{color:var(--dsw-alias-state-success-primary,#16a34a)}.Oo1fpq_taskStatus[data-state=failed]{color:var(--dsw-alias-state-error-primary,#dc2626)}.Oo1fpq_taskActions{gap:6px;margin-left:auto;display:flex}.Oo1fpq_historyTabs{flex-wrap:wrap;gap:6px;margin-bottom:10px;display:flex}.Oo1fpq_historyTab{border:1px solid var(--dsw-alias-border-l2,#d1d5db);cursor:pointer;background:var(--dsw-alias-bg-layer-3,#fff);color:var(--dsw-alias-label-secondary,#6b7280);border-radius:999px;padding:3px 10px;font-size:12px}.Oo1fpq_historyTab[data-active=true]{background:var(--dsw-alias-interactive-bg-hover-accent,#26314824);color:var(--dsw-alias-label-primary,#1f2328);font-weight:600}.Oo1fpq_historyTabCount{color:var(--dsw-alias-label-tertiary,#9ca3af);margin-left:4px;font-size:11px}.Oo1fpq_historyCompareSummary{cursor:pointer;flex-wrap:wrap;align-items:center;gap:8px;display:flex}.Oo1fpq_historyCompareBadge{color:var(--dsw-alias-label-secondary,#6b7280);border:1px solid var(--dsw-alias-border-l2,#d1d5db);background:var(--dsw-alias-bg-layer-3,#fff);white-space:nowrap;border-radius:999px;padding:1px 8px;font-size:11px;font-weight:600}.Oo1fpq_historyModelRow{border-top:1px dashed var(--dsw-alias-border-l1,#e5e7eb);flex-direction:column;gap:4px;margin-top:8px;padding-top:8px;display:flex}.Oo1fpq_overrideOnly{color:var(--dsw-alias-label-tertiary,#9ca3af);font-size:10px;font-weight:500}.Oo1fpq_overrideDash{color:var(--dsw-alias-label-tertiary,#9ca3af);padding:0 6px}.Oo1fpq_historyTime{color:var(--dsw-alias-label-tertiary,#9ca3af);white-space:nowrap;margin:2px 0;font-size:11px}.Oo1fpq_formSection{letter-spacing:.04em;color:var(--dsw-alias-label-tertiary,#9ca3af);border-bottom:1px solid var(--dsw-alias-border-l1,#e5e7eb);margin:10px 0 2px;padding-bottom:4px;font-size:11px;font-weight:700}.Oo1fpq_formFields{grid-template-columns:1fr 1fr;align-items:end;gap:10px;display:grid}.Oo1fpq_fieldCell{min-width:0}.Oo1fpq_fieldFull{grid-column:1/-1}.Oo1fpq_textarea:disabled{opacity:.55;cursor:not-allowed;background:var(--dsw-alias-bg-layer-2,#f3f4f6)}.Oo1fpq_modeIcon{margin-right:4px;font-size:13px}.Oo1fpq_modeButton[data-active=true]{border-color:var(--dsw-alias-interactive-bg-hover-accent,#26314824);background:var(--dsw-alias-interactive-bg-hover-accent,#26314824);color:var(--dsw-alias-label-primary,#1f2328);font-weight:600}.Oo1fpq_taskBar{background:var(--dsw-alias-border-l1,#e5e7eb);border-radius:999px;flex:1;min-width:60px;height:4px;display:block;overflow:hidden}.Oo1fpq_taskBar i{background:var(--dsw-alias-interactive-bg-hover-accent,#26314859);border-radius:999px;height:100%;transition:width .3s;display:block}.Oo1fpq_historyIcon{width:26px;height:26px;color:var(--dsw-alias-label-secondary,#6b7280);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;justify-content:center;align-items:center;font-size:14px;display:inline-flex}.Oo1fpq_historyIcon:hover{background:var(--dsw-alias-interactive-bg-hover-accent,#26314824);color:var(--dsw-alias-label-primary,#1f2328)}.Oo1fpq_historyIcon[title^=删除]:hover{color:var(--dsw-alias-state-error-primary,#dc2626)}.Oo1fpq_historyPrompt{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.Oo1fpq_input:focus-visible,.Oo1fpq_select:focus-visible,.Oo1fpq_textarea:focus-visible,.Oo1fpq_modeButton:focus-visible,.Oo1fpq_ghostButton:focus-visible,.Oo1fpq_historyAction:focus-visible,.Oo1fpq_historyIcon:focus-visible{outline:2px solid var(--dsw-alias-interactive-bg-hover-accent,#26314859);outline-offset:1px}.Oo1fpq_generate:focus-visible{outline:2px solid var(--dsw-alias-interactive-bg-hover-accent,#26314859);outline-offset:2px}@media (width<=1100px){.Oo1fpq_studio{flex-wrap:wrap}.Oo1fpq_historyCol{width:100%;min-width:0;max-width:none}}@media (width<=720px){.Oo1fpq_formCol{width:100%;min-width:0;max-width:none}.Oo1fpq_resultCol{min-height:320px}}.Oo1fpq_formSectionRow{justify-content:space-between;align-items:flex-end;gap:8px;display:flex}.Oo1fpq_formSectionRow .Oo1fpq_formSection{flex:1}.Oo1fpq_enhanceCard{border:1px solid var(--dsw-alias-border-l1,#e5e7eb);background:var(--dsw-alias-bg-layer-2,#fafafa);border-radius:10px;flex-direction:column;gap:8px;padding:10px;display:flex}.Oo1fpq_enhanceCardHead{color:var(--dsw-alias-label-secondary,#6b7280);justify-content:space-between;align-items:center;gap:8px;font-size:12px;display:flex}.Oo1fpq_enhanceActions{gap:6px;display:flex}.Oo1fpq_enhanceActionsRow{justify-content:flex-end;margin-top:-4px;display:flex}.Oo1fpq_recVoiceRow{border-top:1px solid var(--dsw-alias-border-l2,#f3f4f6);align-items:flex-start;gap:8px;padding:8px 0;display:flex}.Oo1fpq_recVoiceRow:first-of-type{border-top:none}.Oo1fpq_recRank{background:var(--dsw-accent,#2563eb);color:#fff;border-radius:999px;flex:none;justify-content:center;align-items:center;width:20px;height:20px;margin-top:2px;font-size:11px;font-weight:600;display:inline-flex}.Oo1fpq_recVoiceBody{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.Oo1fpq_recVoiceHead{align-items:center;gap:6px;display:flex}.Oo1fpq_recVoiceName{color:var(--dsw-alias-fg,#111827);text-overflow:ellipsis;white-space:nowrap;max-width:260px;font-size:13px;overflow:hidden}.Oo1fpq_recReason{color:var(--dsw-accent,#2563eb);margin:0;font-size:12.5px;line-height:1.5}.Oo1fpq_recDescription{color:var(--dsw-alias-fg-l2,#4b5563);white-space:pre-wrap;word-break:break-word;margin:0;font-size:12px;line-height:1.5}";
1208
1248
  const tagId$5 = "dsh-audiogen/audio-panel.module.css";
1209
1249
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$5) + "]") === null) {
1210
1250
  const tag = document.createElement("style");
@@ -1214,117 +1254,124 @@ window.__ModuleLoader__.load({
1214
1254
  document.head.appendChild(tag);
1215
1255
  }
1216
1256
  var audio_panel_module_css_default = {
1217
- "historyTabs": "Oo1fpq_historyTabs",
1218
- "resultGroupError": "Oo1fpq_resultGroupError",
1219
- "historyTab": "Oo1fpq_historyTab",
1220
- "modal": "Oo1fpq_modal",
1221
1257
  "historyCompareSummary": "Oo1fpq_historyCompareSummary",
1222
- "historyTime": "Oo1fpq_historyTime",
1223
- "fieldFull": "Oo1fpq_fieldFull",
1224
- "modeIcon": "Oo1fpq_modeIcon",
1225
- "audioCardIndex": "Oo1fpq_audioCardIndex",
1226
- "historyAction": "Oo1fpq_historyAction",
1227
- "resultGroupHead": "Oo1fpq_resultGroupHead",
1228
- "formRow": "Oo1fpq_formRow",
1229
- "formSectionRow": "Oo1fpq_formSectionRow",
1230
- "track": "Oo1fpq_track",
1231
- "header": "Oo1fpq_header",
1232
- "panel": "Oo1fpq_panel",
1258
+ "time": "Oo1fpq_time",
1259
+ "historyTabs": "Oo1fpq_historyTabs",
1260
+ "resultEmptyHint": "Oo1fpq_resultEmptyHint",
1261
+ "modelCheckList": "Oo1fpq_modelCheckList",
1262
+ "formCol": "Oo1fpq_formCol",
1263
+ "trackFill": "Oo1fpq_trackFill",
1233
1264
  "overrideDash": "Oo1fpq_overrideDash",
1234
- "taskBar": "Oo1fpq_taskBar",
1235
- "radioGroup": "Oo1fpq_radioGroup",
1236
- "enhanceActionsRow": "Oo1fpq_enhanceActionsRow",
1237
- "compareBox": "Oo1fpq_compareBox",
1265
+ "taskCard": "Oo1fpq_taskCard",
1238
1266
  "historyCompareBadge": "Oo1fpq_historyCompareBadge",
1239
1267
  "overrideTable": "Oo1fpq_overrideTable",
1240
- "compareChips": "Oo1fpq_compareChips",
1241
- "tab": "Oo1fpq_tab",
1242
- "historyCol": "Oo1fpq_historyCol",
1243
- "radioOption": "Oo1fpq_radioOption",
1244
- "historyItem": "Oo1fpq_historyItem",
1245
- "compareBoard": "Oo1fpq_compareBoard",
1246
- "trackFill": "Oo1fpq_trackFill",
1247
- "audioCardActions": "Oo1fpq_audioCardActions",
1248
- "iconButton": "Oo1fpq_iconButton",
1249
- "modalBody": "Oo1fpq_modalBody",
1250
- "modeButton": "Oo1fpq_modeButton",
1251
- "secondaryButton": "Oo1fpq_secondaryButton",
1268
+ "taskBar": "Oo1fpq_taskBar",
1269
+ "formSection": "Oo1fpq_formSection",
1270
+ "voiceIdChip": "Oo1fpq_voiceIdChip",
1271
+ "ghostButton": "Oo1fpq_ghostButton",
1272
+ "historyEmpty": "Oo1fpq_historyEmpty",
1252
1273
  "compareModelName": "Oo1fpq_compareModelName",
1253
- "resultGroup": "Oo1fpq_resultGroup",
1254
- "historyModelRow": "Oo1fpq_historyModelRow",
1255
- "overrideOnly": "Oo1fpq_overrideOnly",
1256
- "enhanceCardHead": "Oo1fpq_enhanceCardHead",
1257
- "enhanceActions": "Oo1fpq_enhanceActions",
1258
- "enhanceCard": "Oo1fpq_enhanceCard",
1259
- "resultEmptyHint": "Oo1fpq_resultEmptyHint",
1260
- "historyIcon": "Oo1fpq_historyIcon",
1261
- "resultEmptyIcon": "Oo1fpq_resultEmptyIcon",
1262
- "formCol": "Oo1fpq_formCol",
1263
- "resultCol": "Oo1fpq_resultCol",
1264
- "generate": "Oo1fpq_generate",
1265
- "modalFoot": "Oo1fpq_modalFoot",
1266
- "select": "Oo1fpq_select",
1274
+ "historyPrompt": "Oo1fpq_historyPrompt",
1275
+ "recDescription": "Oo1fpq_recDescription",
1276
+ "historyList": "Oo1fpq_historyList",
1267
1277
  "row": "Oo1fpq_row",
1268
- "resultModeChip": "Oo1fpq_resultModeChip",
1269
- "savedChip": "Oo1fpq_savedChip",
1270
- "compareChip": "Oo1fpq_compareChip",
1271
- "historyEmpty": "Oo1fpq_historyEmpty",
1272
- "historyTitle": "Oo1fpq_historyTitle",
1273
- "historyHeader": "Oo1fpq_historyHeader",
1274
- "audioList": "Oo1fpq_audioList",
1275
- "error": "Oo1fpq_error",
1278
+ "modalBody": "Oo1fpq_modalBody",
1279
+ "enhanceCardHead": "Oo1fpq_enhanceCardHead",
1280
+ "taskHead": "Oo1fpq_taskHead",
1281
+ "modalMask": "Oo1fpq_modalMask",
1282
+ "audioCardIndex": "Oo1fpq_audioCardIndex",
1283
+ "resultGroupCount": "Oo1fpq_resultGroupCount",
1276
1284
  "compareGroup": "Oo1fpq_compareGroup",
1285
+ "historyItem": "Oo1fpq_historyItem",
1286
+ "taskStatus": "Oo1fpq_taskStatus",
1287
+ "taskActions": "Oo1fpq_taskActions",
1288
+ "overrideCellHead": "Oo1fpq_overrideCellHead",
1289
+ "trackKnob": "Oo1fpq_trackKnob",
1290
+ "advanced": "Oo1fpq_advanced",
1291
+ "resultEmpty": "Oo1fpq_resultEmpty",
1292
+ "compareChip": "Oo1fpq_compareChip",
1293
+ "historyTabCount": "Oo1fpq_historyTabCount",
1294
+ "historyTab": "Oo1fpq_historyTab",
1295
+ "secondaryButton": "Oo1fpq_secondaryButton",
1296
+ "savedChip": "Oo1fpq_savedChip",
1297
+ "header": "Oo1fpq_header",
1298
+ "audiogenToastIn": "Oo1fpq_audiogenToastIn",
1299
+ "formSectionRow": "Oo1fpq_formSectionRow",
1300
+ "recVoiceName": "Oo1fpq_recVoiceName",
1301
+ "hint": "Oo1fpq_hint",
1277
1302
  "historyActions": "Oo1fpq_historyActions",
1303
+ "modalFoot": "Oo1fpq_modalFoot",
1304
+ "resultGroupError": "Oo1fpq_resultGroupError",
1305
+ "recVoiceBody": "Oo1fpq_recVoiceBody",
1306
+ "audioList": "Oo1fpq_audioList",
1307
+ "overrideOnly": "Oo1fpq_overrideOnly",
1278
1308
  "playButton": "Oo1fpq_playButton",
1279
- "advanced": "Oo1fpq_advanced",
1280
- "playerCompact": "Oo1fpq_playerCompact",
1281
- "compareState": "Oo1fpq_compareState",
1282
- "time": "Oo1fpq_time",
1283
- "primaryButton": "Oo1fpq_primaryButton",
1284
- "modalMask": "Oo1fpq_modalMask",
1285
- "modelCheckList": "Oo1fpq_modelCheckList",
1286
- "voiceIdChip": "Oo1fpq_voiceIdChip",
1287
- "audioCard": "Oo1fpq_audioCard",
1288
- "overrideCell": "Oo1fpq_overrideCell",
1309
+ "historyTitle": "Oo1fpq_historyTitle",
1310
+ "generate": "Oo1fpq_generate",
1311
+ "track": "Oo1fpq_track",
1312
+ "toast": "Oo1fpq_toast",
1289
1313
  "taskList": "Oo1fpq_taskList",
1290
- "taskCard": "Oo1fpq_taskCard",
1291
- "historyTabCount": "Oo1fpq_historyTabCount",
1314
+ "recReason": "Oo1fpq_recReason",
1315
+ "compareBox": "Oo1fpq_compareBox",
1316
+ "historyHeader": "Oo1fpq_historyHeader",
1317
+ "overrideRow": "Oo1fpq_overrideRow",
1318
+ "compareGroupHead": "Oo1fpq_compareGroupHead",
1292
1319
  "formFields": "Oo1fpq_formFields",
1293
- "tabs": "Oo1fpq_tabs",
1320
+ "resultGroupChip": "Oo1fpq_resultGroupChip",
1321
+ "recVoiceRow": "Oo1fpq_recVoiceRow",
1322
+ "audioCardHead": "Oo1fpq_audioCardHead",
1323
+ "label": "Oo1fpq_label",
1324
+ "historyCol": "Oo1fpq_historyCol",
1325
+ "modal": "Oo1fpq_modal",
1326
+ "modeButton": "Oo1fpq_modeButton",
1327
+ "resultEmptyIcon": "Oo1fpq_resultEmptyIcon",
1294
1328
  "historyMeta": "Oo1fpq_historyMeta",
1295
- "fieldCell": "Oo1fpq_fieldCell",
1296
- "player": "Oo1fpq_player",
1297
- "taskHead": "Oo1fpq_taskHead",
1298
- "textarea": "Oo1fpq_textarea",
1299
- "toast": "Oo1fpq_toast",
1329
+ "historyAction": "Oo1fpq_historyAction",
1330
+ "historyIcon": "Oo1fpq_historyIcon",
1331
+ "checkbox": "Oo1fpq_checkbox",
1332
+ "resultCol": "Oo1fpq_resultCol",
1300
1333
  "modalHead": "Oo1fpq_modalHead",
1301
- "audioCardHead": "Oo1fpq_audioCardHead",
1302
- "audiogenToastIn": "Oo1fpq_audiogenToastIn",
1303
- "resultGroupCount": "Oo1fpq_resultGroupCount",
1304
- "resultMeta": "Oo1fpq_resultMeta",
1305
- "formSection": "Oo1fpq_formSection",
1306
- "historyList": "Oo1fpq_historyList",
1334
+ "recVoiceHead": "Oo1fpq_recVoiceHead",
1335
+ "fieldFull": "Oo1fpq_fieldFull",
1336
+ "historyTime": "Oo1fpq_historyTime",
1337
+ "resultGroupHead": "Oo1fpq_resultGroupHead",
1338
+ "primaryButton": "Oo1fpq_primaryButton",
1339
+ "error": "Oo1fpq_error",
1307
1340
  "title": "Oo1fpq_title",
1308
- "modeRow": "Oo1fpq_modeRow",
1309
- "input": "Oo1fpq_input",
1310
- "ghostButton": "Oo1fpq_ghostButton",
1311
- "historyClear": "Oo1fpq_historyClear",
1312
- "trackKnob": "Oo1fpq_trackKnob",
1341
+ "tab": "Oo1fpq_tab",
1342
+ "resultGroups": "Oo1fpq_resultGroups",
1343
+ "overrideCell": "Oo1fpq_overrideCell",
1344
+ "historyModelRow": "Oo1fpq_historyModelRow",
1345
+ "resultMeta": "Oo1fpq_resultMeta",
1346
+ "enhanceActions": "Oo1fpq_enhanceActions",
1313
1347
  "studio": "Oo1fpq_studio",
1348
+ "compareChips": "Oo1fpq_compareChips",
1349
+ "radioOption": "Oo1fpq_radioOption",
1350
+ "player": "Oo1fpq_player",
1351
+ "playerCompact": "Oo1fpq_playerCompact",
1352
+ "iconButton": "Oo1fpq_iconButton",
1353
+ "formRow": "Oo1fpq_formRow",
1314
1354
  "muteButton": "Oo1fpq_muteButton",
1315
- "resultGroupChip": "Oo1fpq_resultGroupChip",
1316
- "overrideRow": "Oo1fpq_overrideRow",
1317
- "overrideCellHead": "Oo1fpq_overrideCellHead",
1318
- "label": "Oo1fpq_label",
1319
- "historyPrompt": "Oo1fpq_historyPrompt",
1320
- "resultEmpty": "Oo1fpq_resultEmpty",
1321
- "compareGroupHead": "Oo1fpq_compareGroupHead",
1322
- "checkbox": "Oo1fpq_checkbox",
1323
- "hint": "Oo1fpq_hint",
1324
- "resultGroups": "Oo1fpq_resultGroups",
1355
+ "fieldCell": "Oo1fpq_fieldCell",
1356
+ "tabs": "Oo1fpq_tabs",
1357
+ "textarea": "Oo1fpq_textarea",
1358
+ "audioCard": "Oo1fpq_audioCard",
1359
+ "recRank": "Oo1fpq_recRank",
1360
+ "compareBoard": "Oo1fpq_compareBoard",
1361
+ "select": "Oo1fpq_select",
1362
+ "enhanceActionsRow": "Oo1fpq_enhanceActionsRow",
1363
+ "panel": "Oo1fpq_panel",
1364
+ "resultModeChip": "Oo1fpq_resultModeChip",
1365
+ "compareState": "Oo1fpq_compareState",
1366
+ "modeRow": "Oo1fpq_modeRow",
1367
+ "audioCardActions": "Oo1fpq_audioCardActions",
1325
1368
  "taskLabel": "Oo1fpq_taskLabel",
1326
- "taskStatus": "Oo1fpq_taskStatus",
1327
- "taskActions": "Oo1fpq_taskActions"
1369
+ "input": "Oo1fpq_input",
1370
+ "modeIcon": "Oo1fpq_modeIcon",
1371
+ "radioGroup": "Oo1fpq_radioGroup",
1372
+ "enhanceCard": "Oo1fpq_enhanceCard",
1373
+ "historyClear": "Oo1fpq_historyClear",
1374
+ "resultGroup": "Oo1fpq_resultGroup"
1328
1375
  };
1329
1376
  //#endregion
1330
1377
  //#region src/client/audio-player.tsx
@@ -1691,6 +1738,7 @@ window.__ModuleLoader__.load({
1691
1738
  if (mode === "tts") return tt("mode.tts");
1692
1739
  if (mode === "music") return tt("mode.music");
1693
1740
  if (mode === "sfx") return tt("mode.sfx");
1741
+ if (mode === "voice_recommend") return "音色推荐";
1694
1742
  return tt("mode.voiceDesign");
1695
1743
  }
1696
1744
  /** 历史时间显示(YYYY-MM-DD HH:mm)。 */
@@ -1805,12 +1853,13 @@ window.__ModuleLoader__.load({
1805
1853
  return channel.apiUrl.trim() !== "" && keyHeld && (channel.models.length > 0 || channel.preset === "minimax");
1806
1854
  });
1807
1855
  const [mode, setMode] = (0, react.useState)("tts");
1808
- /** 每个模式独立的输入内容(TTS 文本 / 音乐·音效提示词 / 音色描述),切模式互不干扰。 */
1856
+ /** 每个模式独立的输入内容(TTS 文本 / 音乐·音效提示词 / 音色描述 / 音色需求),切模式互不干扰。 */
1809
1857
  const [promptByMode, setPromptByMode] = (0, react.useState)({
1810
1858
  tts: "",
1811
1859
  music: "",
1812
1860
  sfx: "",
1813
- voice_design: ""
1861
+ voice_design: "",
1862
+ voice_recommend: ""
1814
1863
  });
1815
1864
  const prompt = promptByMode[mode] ?? "";
1816
1865
  const setPrompt = (next) => {
@@ -1862,7 +1911,8 @@ window.__ModuleLoader__.load({
1862
1911
  tts: false,
1863
1912
  music: false,
1864
1913
  sfx: false,
1865
- voice_design: false
1914
+ voice_design: false,
1915
+ voice_recommend: false
1866
1916
  });
1867
1917
  const compareMode = compareModeByMode[mode] ?? false;
1868
1918
  const setCompareMode = (next) => {
@@ -1876,7 +1926,8 @@ window.__ModuleLoader__.load({
1876
1926
  tts: [],
1877
1927
  music: [],
1878
1928
  sfx: [],
1879
- voice_design: []
1929
+ voice_design: [],
1930
+ voice_recommend: []
1880
1931
  });
1881
1932
  const compareModels = compareModelsByMode[mode] ?? [];
1882
1933
  const setCompareModels = (next) => {
@@ -1905,12 +1956,81 @@ window.__ModuleLoader__.load({
1905
1956
  modelOptions.defaultChannelId,
1906
1957
  designChannelId
1907
1958
  ]);
1959
+ const [recommendChannelId, setRecommendChannelId] = (0, react.useState)("");
1960
+ (0, react.useEffect)(() => {
1961
+ if (channels.length === 0) return;
1962
+ if (recommendChannelId === "" || !channels.some((candidate) => candidate.id === recommendChannelId)) setRecommendChannelId(modelOptions.defaultChannelId ?? channels[0].id);
1963
+ }, [
1964
+ channels,
1965
+ modelOptions.defaultChannelId,
1966
+ recommendChannelId
1967
+ ]);
1968
+ const [recommendTopK, setRecommendTopK] = (0, react.useState)(5);
1969
+ const [recommending, setRecommending] = (0, react.useState)(false);
1970
+ const [recommendError, setRecommendError] = (0, react.useState)(null);
1971
+ const [recommendResult, setRecommendResult] = (0, react.useState)(null);
1972
+ /** 右侧推荐记录(与音色管理页、Agent action=recommend 共用同一宿主存储)。 */
1973
+ const [recommendRecords, setRecommendRecords] = (0, react.useState)([]);
1974
+ const loadRecommendRecords = () => {
1975
+ api.voiceRecommendHistory(30).then((response) => setRecommendRecords(response.entries ?? [])).catch(() => {});
1976
+ };
1977
+ (0, react.useEffect)(() => {
1978
+ loadRecommendRecords();
1979
+ }, [api]);
1980
+ const recommendVoice = async () => {
1981
+ const text = prompt.trim();
1982
+ if (text === "") {
1983
+ setRecommendError("请先描述你想要的音色,例如「17岁清亮甜美的少女音,适合活泼女主角」。");
1984
+ return;
1985
+ }
1986
+ if (recommendChannelId === "") {
1987
+ setRecommendError("请先选择渠道(需要在设置中添加且填写 API 地址与密钥)。");
1988
+ return;
1989
+ }
1990
+ setRecommending(true);
1991
+ setRecommendError(null);
1992
+ setRecommendResult(null);
1993
+ try {
1994
+ const response = await api.voiceRecommend({
1995
+ channel: recommendChannelId,
1996
+ requirement: text,
1997
+ top_k: recommendTopK
1998
+ });
1999
+ if (response.ok) {
2000
+ setRecommendResult({
2001
+ channelId: recommendChannelId,
2002
+ channel: response.channel ?? "",
2003
+ requirement: text,
2004
+ candidateCount: response.candidate_count ?? 0,
2005
+ voices: response.recommendations ?? []
2006
+ });
2007
+ loadRecommendRecords();
2008
+ props.showToast("推荐完成,已记录到右侧「推荐记录」");
2009
+ } else setRecommendError(response.message ?? "音色推荐失败");
2010
+ } catch (err) {
2011
+ setRecommendError(err instanceof Error ? err.message : String(err));
2012
+ } finally {
2013
+ setRecommending(false);
2014
+ }
2015
+ };
2016
+ /** 从推荐结果/记录复用音色:切回 TTS 并回填音色与模型。 */
2017
+ const reuseRecommendVoice = (voiceId, channelId) => {
2018
+ const ttsModel = channels.find((item) => item.id === channelId)?.models.find((candidate) => candidate.category === "tts" || /tts|speech|voice|t2a/i.test(candidate.alias));
2019
+ setMode("tts");
2020
+ setVoice(voiceId);
2021
+ if (ttsModel !== void 0 && ttsModel.alias !== "") setModel(ttsModel.alias);
2022
+ };
2023
+ const removeRecommendRecord = async (id) => {
2024
+ await api.voiceRecommendHistoryRemove(id).catch(() => {});
2025
+ loadRecommendRecords();
2026
+ };
1908
2027
  const visibleModels = (0, react.useMemo)(() => {
1909
- if (mode === "voice_design") return [];
2028
+ if (mode === "voice_design" || mode === "voice_recommend") return [];
1910
2029
  return modelOptions.models.filter((entry) => modelSuitableForMode(entry, mode)).map((entry) => entry.alias);
1911
2030
  }, [modelOptions.models, mode]);
1912
2031
  const currentPreset = (0, react.useMemo)(() => {
1913
2032
  if (mode === "voice_design") return channels.find((candidate) => candidate.id === designChannelId)?.preset ?? "";
2033
+ if (mode === "voice_recommend") return channels.find((candidate) => candidate.id === recommendChannelId)?.preset ?? "";
1914
2034
  return (modelOptions.models.find((entry) => entry.alias === model) ?? modelOptions.models.find((entry) => entry.alias === (visibleModels[0] ?? "")))?.preset ?? "";
1915
2035
  }, [
1916
2036
  mode,
@@ -1918,7 +2038,8 @@ window.__ModuleLoader__.load({
1918
2038
  visibleModels,
1919
2039
  modelOptions.models,
1920
2040
  channels,
1921
- designChannelId
2041
+ designChannelId,
2042
+ recommendChannelId
1922
2043
  ]);
1923
2044
  const fieldPresets = (0, react.useMemo)(() => {
1924
2045
  if (mode === "voice_design") return [];
@@ -1980,9 +2101,11 @@ window.__ModuleLoader__.load({
1980
2101
  if (reuse.voiceId !== void 0 || reuse.voice !== void 0) setVoice(reuse.voiceId ?? reuse.voice ?? "");
1981
2102
  if (reuse.model !== void 0 && reuse.model !== "") setModel(reuse.model);
1982
2103
  }, [reuse?.nonce]);
2104
+ /** 音色推荐模式不参与生成:生成请求一律收敛为音频模式(运行时不会触发)。 */
2105
+ const genMode = mode === "voice_recommend" ? "tts" : mode;
1983
2106
  /** Build the shared generation request for one model. */
1984
2107
  const requestOf = (modelName) => ({
1985
- mode,
2108
+ mode: genMode,
1986
2109
  model: modelName,
1987
2110
  prompt: prompt.trim(),
1988
2111
  saveToLibrary,
@@ -2052,7 +2175,7 @@ window.__ModuleLoader__.load({
2052
2175
  }));
2053
2176
  const task = {
2054
2177
  id: taskId,
2055
- mode,
2178
+ mode: genMode,
2056
2179
  prompt: prompt.trim(),
2057
2180
  kind: isCompare ? "compare" : "single",
2058
2181
  label: isCompare ? `对比 ${models.join(" / ")}` : singleModel,
@@ -2663,7 +2786,7 @@ window.__ModuleLoader__.load({
2663
2786
  type: "button",
2664
2787
  className: audio_panel_module_css_default.ghostButton,
2665
2788
  onClick: () => openSaveDialog([audio], {
2666
- mode,
2789
+ mode: genMode,
2667
2790
  prompt: prompt.trim(),
2668
2791
  ...voice.trim() !== "" ? { voice: voice.trim() } : {},
2669
2792
  ...audio.voiceId === void 0 ? {} : { voiceId: audio.voiceId },
@@ -2734,7 +2857,7 @@ window.__ModuleLoader__.load({
2734
2857
  }
2735
2858
  return merged.sort((left, right) => right.createdAt - left.createdAt);
2736
2859
  }, [entries]);
2737
- const needModel = mode !== "voice_design";
2860
+ const needModel = mode !== "voice_design" && mode !== "voice_recommend";
2738
2861
  const runningCount = tasks.filter((task) => task.status === "running").length;
2739
2862
  /** 结果列只显示当前模式的任务(历史面板已按模式分组)。 */
2740
2863
  const visibleTasks = (0, react.useMemo)(() => tasks.filter((task) => task.mode === mode), [tasks, mode]);
@@ -2750,7 +2873,8 @@ window.__ModuleLoader__.load({
2750
2873
  ["tts", "🎙️"],
2751
2874
  ["music", "🎵"],
2752
2875
  ["sfx", "🔊"],
2753
- ["voice_design", "🎨"]
2876
+ ["voice_design", "🎨"],
2877
+ ["voice_recommend", "🎤"]
2754
2878
  ].map(([item, icon]) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
2755
2879
  type: "button",
2756
2880
  className: audio_panel_module_css_default.modeButton,
@@ -2768,14 +2892,14 @@ window.__ModuleLoader__.load({
2768
2892
  }),
2769
2893
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
2770
2894
  className: audio_panel_module_css_default.label,
2771
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: mode === "voice_design" ? "音色描述" : mode === "tts" ? "文本" : "提示词" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("textarea", {
2895
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: mode === "voice_design" ? "音色描述" : mode === "voice_recommend" ? "音色需求" : mode === "tts" ? "文本" : "提示词" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("textarea", {
2772
2896
  className: audio_panel_module_css_default.textarea,
2773
2897
  value: prompt,
2774
2898
  onChange: (event) => setPrompt(event.target.value),
2775
- placeholder: tt("prompt.placeholder")
2899
+ placeholder: mode === "voice_recommend" ? "描述你想要的音色,例如:17岁清亮甜美的少女音,适合活泼女主角,英式口音…" : tt("prompt.placeholder")
2776
2900
  })]
2777
2901
  }),
2778
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
2902
+ mode !== "voice_recommend" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
2779
2903
  className: audio_panel_module_css_default.enhanceActionsRow,
2780
2904
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
2781
2905
  type: "button",
@@ -2784,8 +2908,8 @@ window.__ModuleLoader__.load({
2784
2908
  onClick: () => void runEnhance(),
2785
2909
  children: enhancing ? "增强中…" : "✨ 增强提示词"
2786
2910
  })
2787
- }),
2788
- enhancePreview !== null ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2911
+ }) : null,
2912
+ enhancePreview !== null && mode !== "voice_recommend" ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2789
2913
  className: audio_panel_module_css_default.enhanceCard,
2790
2914
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2791
2915
  className: audio_panel_module_css_default.enhanceCardHead,
@@ -2861,6 +2985,49 @@ window.__ModuleLoader__.load({
2861
2985
  placeholder: "你好,这是新设计的音色试听。"
2862
2986
  })]
2863
2987
  })
2988
+ ] }) : mode === "voice_recommend" ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
2989
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
2990
+ className: audio_panel_module_css_default.label,
2991
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "厂商 / 渠道" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("select", {
2992
+ className: audio_panel_module_css_default.input,
2993
+ value: recommendChannelId,
2994
+ onChange: (event) => setRecommendChannelId(event.target.value),
2995
+ children: channels.map((channel) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
2996
+ value: channel.id,
2997
+ children: channel.name
2998
+ }, channel.id))
2999
+ })]
3000
+ }),
3001
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
3002
+ className: audio_panel_module_css_default.label,
3003
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "推荐数量" }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("select", {
3004
+ className: audio_panel_module_css_default.input,
3005
+ value: String(recommendTopK),
3006
+ onChange: (event) => setRecommendTopK(Number(event.target.value)),
3007
+ children: [
3008
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
3009
+ value: "3",
3010
+ children: "3 条"
3011
+ }),
3012
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
3013
+ value: "5",
3014
+ children: "5 条"
3015
+ }),
3016
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
3017
+ value: "8",
3018
+ children: "8 条"
3019
+ }),
3020
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("option", {
3021
+ value: "10",
3022
+ children: "10 条"
3023
+ })
3024
+ ]
3025
+ })]
3026
+ }),
3027
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
3028
+ className: audio_panel_module_css_default.hint,
3029
+ children: "按需求描述挑选:候选范围为该渠道全部可用音色(语言/口音等由描述自然约束),结果会记录到右侧「推荐记录」"
3030
+ })
2864
3031
  ] }) : null,
2865
3032
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
2866
3033
  className: audio_panel_module_css_default.formSection,
@@ -2999,7 +3166,7 @@ window.__ModuleLoader__.load({
2999
3166
  className: audio_panel_module_css_default.advanced,
3000
3167
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("summary", { children: "MiniMax 高级参数" }), globalSpecs.filter((spec) => spec.advanced === true).map((spec) => renderField(spec))]
3001
3168
  }) : null,
3002
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
3169
+ mode !== "voice_recommend" ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
3003
3170
  className: audio_panel_module_css_default.checkbox,
3004
3171
  title: "生成完成后自动保存到资源库;也可在设置中开启全部自动保存",
3005
3172
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
@@ -3007,12 +3174,18 @@ window.__ModuleLoader__.load({
3007
3174
  checked: saveToLibrary,
3008
3175
  onChange: (event) => setSaveToLibrary(event.target.checked)
3009
3176
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "生成后保存到资源库" })]
3010
- }),
3177
+ }) : null,
3011
3178
  !connected && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
3012
3179
  className: audio_panel_module_css_default.hint,
3013
3180
  children: tt("config.missing")
3014
3181
  }),
3015
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
3182
+ mode === "voice_recommend" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
3183
+ type: "button",
3184
+ className: audio_panel_module_css_default.generate,
3185
+ disabled: !connected || recommending,
3186
+ onClick: () => void recommendVoice(),
3187
+ children: recommending ? "AI 推荐中…" : "✨ AI 推荐音色"
3188
+ }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
3016
3189
  type: "button",
3017
3190
  className: audio_panel_module_css_default.generate,
3018
3191
  disabled: !connected || (compareMode && needModel ? compareModels.length < 2 : needModel && visibleModels.length === 0),
@@ -3029,9 +3202,128 @@ window.__ModuleLoader__.load({
3029
3202
  }) : null
3030
3203
  ]
3031
3204
  }),
3032
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
3205
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
3033
3206
  className: audio_panel_module_css_default.resultCol,
3034
- children: [error !== null ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
3207
+ children: mode === "voice_recommend" ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
3208
+ recommendError !== null ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
3209
+ className: audio_panel_module_css_default.error,
3210
+ children: recommendError
3211
+ }) : null,
3212
+ recommending ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
3213
+ className: audio_panel_module_css_default.resultEmpty,
3214
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
3215
+ className: audio_panel_module_css_default.resultEmptyIcon,
3216
+ children: "🎤"
3217
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", { children: "正在让模型从候选音色中挑选…(约 10-45 秒,结果会记录到右侧)" })]
3218
+ }) : null,
3219
+ !recommending && recommendResult !== null ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
3220
+ className: audio_panel_module_css_default.taskList,
3221
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
3222
+ className: audio_panel_module_css_default.taskCard,
3223
+ children: [
3224
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
3225
+ className: audio_panel_module_css_default.taskHead,
3226
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
3227
+ className: audio_panel_module_css_default.resultModeChip,
3228
+ children: "音色推荐"
3229
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
3230
+ className: audio_panel_module_css_default.taskLabel,
3231
+ title: recommendResult.requirement,
3232
+ children: recommendResult.requirement
3233
+ })]
3234
+ }),
3235
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
3236
+ className: audio_panel_module_css_default.historyMeta,
3237
+ children: [
3238
+ recommendResult.channel,
3239
+ " · 候选池 ",
3240
+ recommendResult.candidateCount,
3241
+ " 个音色 · 推荐 ",
3242
+ recommendResult.voices.length,
3243
+ " 条"
3244
+ ]
3245
+ }),
3246
+ recommendResult.voices.map((voice, index) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
3247
+ className: audio_panel_module_css_default.recVoiceRow,
3248
+ children: [
3249
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
3250
+ className: audio_panel_module_css_default.recRank,
3251
+ children: index + 1
3252
+ }),
3253
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
3254
+ className: audio_panel_module_css_default.recVoiceBody,
3255
+ children: [
3256
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
3257
+ className: audio_panel_module_css_default.recVoiceHead,
3258
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("strong", {
3259
+ className: audio_panel_module_css_default.recVoiceName,
3260
+ title: voice.name,
3261
+ children: voice.name
3262
+ })
3263
+ }),
3264
+ voice.reason === "" ? null : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
3265
+ className: audio_panel_module_css_default.recReason,
3266
+ children: voice.reason
3267
+ }),
3268
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
3269
+ className: audio_panel_module_css_default.historyMeta,
3270
+ children: [
3271
+ "ID: ",
3272
+ voice.voice_id,
3273
+ voice.language === void 0 ? "" : ` · ${voice.language}`,
3274
+ voice.locale === void 0 ? "" : ` · ${voice.locale}`,
3275
+ voice.accent === void 0 ? "" : ` · ${voice.accent}`,
3276
+ voice.gender === void 0 ? "" : ` · ${voice.gender}`,
3277
+ voice.age === void 0 ? "" : ` · ${voice.age}`,
3278
+ voice.use_case === void 0 ? "" : ` · ${voice.use_case}`
3279
+ ]
3280
+ }),
3281
+ voice.descriptive === void 0 && (voice.labels === void 0 || Object.keys(voice.labels).length === 0) ? null : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
3282
+ className: audio_panel_module_css_default.historyMeta,
3283
+ children: [voice.descriptive !== void 0 ? `标签 descriptive: ${voice.descriptive}` : "", voice.labels !== void 0 ? Object.entries(voice.labels).filter(([key]) => key !== "description" && key !== "descriptive").map(([key, value]) => `${key === "use_case" ? "用途" : key === "accent" ? "口音" : key === "gender" ? "性别" : key === "age" ? "年龄" : key}: ${value}`).join(" · ") : ""]
3284
+ }),
3285
+ voice.description === void 0 || voice.description === "" ? null : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
3286
+ className: audio_panel_module_css_default.recDescription,
3287
+ children: voice.description
3288
+ }),
3289
+ voice.preview_url === void 0 || voice.preview_url === "" ? null : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(AudioPlayer, {
3290
+ src: voice.preview_url,
3291
+ compact: true
3292
+ })
3293
+ ]
3294
+ }),
3295
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
3296
+ type: "button",
3297
+ className: audio_panel_module_css_default.ghostButton,
3298
+ onClick: () => reuseRecommendVoice(voice.voice_id, recommendResult.channelId),
3299
+ children: "用此音色生成"
3300
+ })
3301
+ ]
3302
+ }, `${voice.source}:${voice.voice_id}`))
3303
+ ]
3304
+ })
3305
+ }) : null,
3306
+ !recommending && recommendResult === null ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
3307
+ className: audio_panel_module_css_default.resultEmpty,
3308
+ children: [
3309
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
3310
+ className: audio_panel_module_css_default.resultEmptyIcon,
3311
+ children: "🎤"
3312
+ }),
3313
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", { children: "在左侧描述想要的音色,点「✨ AI 推荐音色」" }),
3314
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
3315
+ className: audio_panel_module_css_default.resultEmptyHint,
3316
+ children: "模型会从该渠道候选池里挑最匹配的 top-k 音色;每次推荐自动记录到右侧「推荐记录」"
3317
+ }),
3318
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
3319
+ type: "button",
3320
+ className: audio_panel_module_css_default.ghostButton,
3321
+ onClick: () => setPrompt("17岁清亮甜美的少女音,适合活泼女主角,英式口音"),
3322
+ children: "填入示例需求"
3323
+ })
3324
+ ]
3325
+ }) : null
3326
+ ] }) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [error !== null ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
3035
3327
  className: audio_panel_module_css_default.error,
3036
3328
  children: error
3037
3329
  }) : null, visibleTasks.length === 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
@@ -3142,11 +3434,114 @@ window.__ModuleLoader__.load({
3142
3434
  ]
3143
3435
  }, task.id);
3144
3436
  })
3145
- })]
3437
+ })] })
3146
3438
  }),
3147
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("aside", {
3439
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("aside", {
3148
3440
  className: audio_panel_module_css_default.historyCol,
3149
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
3441
+ children: mode === "voice_recommend" ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
3442
+ className: audio_panel_module_css_default.historyHeader,
3443
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("strong", {
3444
+ className: audio_panel_module_css_default.historyTitle,
3445
+ children: "推荐记录"
3446
+ })
3447
+ }), recommendRecords.length === 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
3448
+ className: audio_panel_module_css_default.historyEmpty,
3449
+ children: "还没有推荐记录——在左侧输入音色需求,点「✨ AI 推荐音色」后自动记录在这里"
3450
+ }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
3451
+ className: audio_panel_module_css_default.historyList,
3452
+ children: recommendRecords.map((record) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("details", {
3453
+ className: audio_panel_module_css_default.historyItem,
3454
+ children: [
3455
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("summary", {
3456
+ className: audio_panel_module_css_default.historyCompareSummary,
3457
+ children: [
3458
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
3459
+ className: audio_panel_module_css_default.historyPrompt,
3460
+ children: record.requirement
3461
+ }),
3462
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
3463
+ className: audio_panel_module_css_default.historyCompareBadge,
3464
+ children: [
3465
+ record.channel,
3466
+ " · ",
3467
+ record.recommendations.length,
3468
+ " 条"
3469
+ ]
3470
+ }),
3471
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
3472
+ className: audio_panel_module_css_default.historyTime,
3473
+ children: formatClock(record.createdAt)
3474
+ })
3475
+ ]
3476
+ }),
3477
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
3478
+ className: audio_panel_module_css_default.historyMeta,
3479
+ children: [
3480
+ "候选池 ",
3481
+ record.candidate_count,
3482
+ " 个音色"
3483
+ ]
3484
+ }),
3485
+ record.recommendations.map((voice, index) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
3486
+ className: audio_panel_module_css_default.recVoiceRow,
3487
+ children: [
3488
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
3489
+ className: audio_panel_module_css_default.recRank,
3490
+ children: index + 1
3491
+ }),
3492
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
3493
+ className: audio_panel_module_css_default.recVoiceBody,
3494
+ children: [
3495
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
3496
+ className: audio_panel_module_css_default.recVoiceHead,
3497
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("strong", {
3498
+ className: audio_panel_module_css_default.recVoiceName,
3499
+ title: voice.name,
3500
+ children: voice.name
3501
+ })
3502
+ }),
3503
+ voice.reason === "" ? null : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
3504
+ className: audio_panel_module_css_default.recReason,
3505
+ children: voice.reason
3506
+ }),
3507
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
3508
+ className: audio_panel_module_css_default.historyMeta,
3509
+ children: [
3510
+ "ID: ",
3511
+ voice.voice_id,
3512
+ voice.descriptive === void 0 ? "" : ` · ${voice.descriptive}`,
3513
+ voice.accent === void 0 ? "" : ` · ${voice.accent}`,
3514
+ voice.gender === void 0 ? "" : ` · ${voice.gender}`,
3515
+ voice.age === void 0 ? "" : ` · ${voice.age}`
3516
+ ]
3517
+ }),
3518
+ voice.description === void 0 || voice.description === "" ? null : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
3519
+ className: audio_panel_module_css_default.recDescription,
3520
+ children: voice.description.length > 120 ? `${voice.description.slice(0, 119)}…` : voice.description
3521
+ })
3522
+ ]
3523
+ }),
3524
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
3525
+ type: "button",
3526
+ className: audio_panel_module_css_default.ghostButton,
3527
+ onClick: () => reuseRecommendVoice(voice.voice_id, record.channel_id ?? recommendChannelId),
3528
+ children: "用此音色生成"
3529
+ })
3530
+ ]
3531
+ }, `${record.id}:${voice.voice_id}`)),
3532
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
3533
+ className: audio_panel_module_css_default.historyActions,
3534
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
3535
+ type: "button",
3536
+ className: audio_panel_module_css_default.historyIcon,
3537
+ title: "删除这条推荐记录",
3538
+ onClick: () => void removeRecommendRecord(record.id),
3539
+ children: "✕"
3540
+ })
3541
+ })
3542
+ ]
3543
+ }, record.id))
3544
+ })] }) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
3150
3545
  className: audio_panel_module_css_default.historyHeader,
3151
3546
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("strong", {
3152
3547
  className: audio_panel_module_css_default.historyTitle,
@@ -3321,7 +3716,7 @@ window.__ModuleLoader__.load({
3321
3716
  ]
3322
3717
  }, item.key);
3323
3718
  })
3324
- })] })]
3719
+ })] })] })
3325
3720
  }),
3326
3721
  saveDialog !== null ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(LibrarySaveDialog, {
3327
3722
  api,
@@ -3345,62 +3740,62 @@ window.__ModuleLoader__.load({
3345
3740
  document.head.appendChild(tag);
3346
3741
  }
3347
3742
  var library_module_css_default = {
3743
+ "typeChips": "vzUV2a_typeChips",
3744
+ "card": "vzUV2a_card",
3745
+ "drawer": "vzUV2a_drawer",
3348
3746
  "emptyHint": "vzUV2a_emptyHint",
3349
- "provRow": "vzUV2a_provRow",
3747
+ "library": "vzUV2a_library",
3748
+ "cardCheck": "vzUV2a_cardCheck",
3749
+ "drawerPlayer": "vzUV2a_drawerPlayer",
3750
+ "drawerActions": "vzUV2a_drawerActions",
3751
+ "listCount": "vzUV2a_listCount",
3752
+ "cardTime": "vzUV2a_cardTime",
3753
+ "smallChip": "vzUV2a_smallChip",
3754
+ "drawerSplit": "vzUV2a_drawerSplit",
3755
+ "metaChip": "vzUV2a_metaChip",
3350
3756
  "provValue": "vzUV2a_provValue",
3757
+ "chip": "vzUV2a_chip",
3758
+ "dangerBtn": "vzUV2a_dangerBtn",
3759
+ "drawerMask": "vzUV2a_drawerMask",
3760
+ "drawerHead": "vzUV2a_drawerHead",
3761
+ "drawerPlayerList": "vzUV2a_drawerPlayerList",
3762
+ "provKey": "vzUV2a_provKey",
3763
+ "promptText": "vzUV2a_promptText",
3764
+ "selCount": "vzUV2a_selCount",
3765
+ "cardHead": "vzUV2a_cardHead",
3766
+ "listHead": "vzUV2a_listHead",
3767
+ "cardFoot": "vzUV2a_cardFoot",
3768
+ "typeBadge": "vzUV2a_typeBadge",
3769
+ "drawerLabel": "vzUV2a_drawerLabel",
3770
+ "emptyIcon": "vzUV2a_emptyIcon",
3771
+ "filterRow": "vzUV2a_filterRow",
3772
+ "audiogenDrawerIn": "vzUV2a_audiogenDrawerIn",
3773
+ "drawerField": "vzUV2a_drawerField",
3774
+ "provRow": "vzUV2a_provRow",
3775
+ "empty": "vzUV2a_empty",
3351
3776
  "drawerSection": "vzUV2a_drawerSection",
3352
- "cardTime": "vzUV2a_cardTime",
3353
- "paramsDetails": "vzUV2a_paramsDetails",
3777
+ "searchBox": "vzUV2a_searchBox",
3778
+ "stateNote": "vzUV2a_stateNote",
3779
+ "ghostBtn": "vzUV2a_ghostBtn",
3780
+ "listActions": "vzUV2a_listActions",
3781
+ "chipCount": "vzUV2a_chipCount",
3354
3782
  "textarea": "vzUV2a_textarea",
3355
- "selCount": "vzUV2a_selCount",
3783
+ "drawerPlayerName": "vzUV2a_drawerPlayerName",
3784
+ "cardName": "vzUV2a_cardName",
3356
3785
  "primaryBtn": "vzUV2a_primaryBtn",
3357
- "empty": "vzUV2a_empty",
3786
+ "searchInput": "vzUV2a_searchInput",
3787
+ "drawerTitle": "vzUV2a_drawerTitle",
3788
+ "filterLabel": "vzUV2a_filterLabel",
3789
+ "paramsDetails": "vzUV2a_paramsDetails",
3790
+ "toolbar": "vzUV2a_toolbar",
3358
3791
  "smallSelect": "vzUV2a_smallSelect",
3359
- "iconBtn": "vzUV2a_iconBtn",
3360
- "listActions": "vzUV2a_listActions",
3361
3792
  "drawerBody": "vzUV2a_drawerBody",
3362
- "drawerPlayerName": "vzUV2a_drawerPlayerName",
3363
- "card": "vzUV2a_card",
3364
- "drawerActions": "vzUV2a_drawerActions",
3793
+ "provenance": "vzUV2a_provenance",
3365
3794
  "code": "vzUV2a_code",
3366
- "toolbar": "vzUV2a_toolbar",
3367
- "library": "vzUV2a_library",
3368
- "ghostBtn": "vzUV2a_ghostBtn",
3369
3795
  "grid": "vzUV2a_grid",
3370
- "chipCount": "vzUV2a_chipCount",
3371
- "drawerPlayerList": "vzUV2a_drawerPlayerList",
3372
- "drawerField": "vzUV2a_drawerField",
3373
- "drawerHead": "vzUV2a_drawerHead",
3374
- "filterRow": "vzUV2a_filterRow",
3375
- "provKey": "vzUV2a_provKey",
3376
- "typeChips": "vzUV2a_typeChips",
3377
- "chip": "vzUV2a_chip",
3378
- "drawerPlayer": "vzUV2a_drawerPlayer",
3379
3796
  "mono": "vzUV2a_mono",
3380
- "stateNote": "vzUV2a_stateNote",
3381
- "cardFoot": "vzUV2a_cardFoot",
3382
- "drawerTitle": "vzUV2a_drawerTitle",
3383
- "searchInput": "vzUV2a_searchInput",
3384
- "audiogenDrawerIn": "vzUV2a_audiogenDrawerIn",
3385
- "drawerLabel": "vzUV2a_drawerLabel",
3386
- "cardCheck": "vzUV2a_cardCheck",
3387
- "listHead": "vzUV2a_listHead",
3388
- "filterLabel": "vzUV2a_filterLabel",
3389
- "drawerMask": "vzUV2a_drawerMask",
3390
3797
  "input": "vzUV2a_input",
3391
- "emptyIcon": "vzUV2a_emptyIcon",
3392
- "drawer": "vzUV2a_drawer",
3393
- "promptText": "vzUV2a_promptText",
3394
- "metaChip": "vzUV2a_metaChip",
3395
- "dangerBtn": "vzUV2a_dangerBtn",
3396
- "drawerSplit": "vzUV2a_drawerSplit",
3397
- "typeBadge": "vzUV2a_typeBadge",
3398
- "listCount": "vzUV2a_listCount",
3399
- "cardHead": "vzUV2a_cardHead",
3400
- "smallChip": "vzUV2a_smallChip",
3401
- "provenance": "vzUV2a_provenance",
3402
- "cardName": "vzUV2a_cardName",
3403
- "searchBox": "vzUV2a_searchBox"
3798
+ "iconBtn": "vzUV2a_iconBtn"
3404
3799
  };
3405
3800
  //#endregion
3406
3801
  //#region src/client/library-view.tsx
@@ -4192,7 +4587,7 @@ window.__ModuleLoader__.load({
4192
4587
  }
4193
4588
  //#endregion
4194
4589
  //#region \0dsh-css:/Users/shimingming/Projects_code/dsh-audiogen/src/client/voices.module.css.mjs
4195
- const css$3 = ".FjxQqG_view{flex-direction:column;gap:10px;height:100%;min-height:0;padding:14px 16px;display:flex;overflow:hidden}.FjxQqG_toolbar{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));align-items:end;gap:8px;display:grid}.FjxQqG_field{flex-direction:column;gap:4px;min-width:0;display:flex}.FjxQqG_fieldLabel{color:var(--dsw-alias-fg-l3,#6b7280);font-size:12px}.FjxQqG_input,.FjxQqG_select{border:1px solid var(--dsw-alias-border-l2,#d1d5db);background:var(--dsw-alias-bg,#fff);width:100%;min-height:30px;color:var(--dsw-alias-fg,#111827);border-radius:8px;outline:none;padding:5px 8px;font-size:13px}.FjxQqG_input:focus,.FjxQqG_select:focus{border-color:var(--dsw-accent,#2563eb)}.FjxQqG_primaryBtn{background:var(--dsw-accent,#2563eb);color:#fff;cursor:pointer;border:none;border-radius:8px;align-items:center;gap:6px;height:30px;padding:0 12px;font-size:13px;display:inline-flex}.FjxQqG_primaryBtn:hover:not(:disabled){filter:brightness(1.1)}.FjxQqG_primaryBtn:disabled{opacity:.6;cursor:not-allowed}.FjxQqG_advanced{border:1px solid var(--dsw-alias-border-l2,#e5e7eb);background:var(--dsw-alias-bg-layer-2,#f9fafb);border-radius:8px;padding:6px 10px}.FjxQqG_advancedSummary{color:var(--dsw-alias-fg-l3,#6b7280);cursor:pointer;user-select:none;font-size:12px}.FjxQqG_advancedGrid{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px;margin-top:8px;display:grid}.FjxQqG_checkRow{color:var(--dsw-alias-fg-l2,#374151);align-items:center;gap:6px;min-height:30px;font-size:12px;display:flex}.FjxQqG_stateLine{align-items:center;gap:10px;min-height:18px;display:flex}.FjxQqG_stateNote{color:var(--dsw-alias-fg-l3,#6b7280);font-size:12px}.FjxQqG_stateNote[data-error]{color:#dc2626}.FjxQqG_count{color:var(--dsw-alias-fg-l3,#6b7280);font-size:12px}.FjxQqG_list{flex-direction:column;flex:1;gap:8px;min-height:0;padding-right:2px;display:flex;overflow-y:auto}.FjxQqG_card{border:1px solid var(--dsw-alias-border-l2,#e5e7eb);background:var(--dsw-alias-bg,#fff);border-radius:10px;flex-direction:column;gap:6px;padding:10px 12px;display:flex}.FjxQqG_cardHead{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.FjxQqG_voiceName{color:var(--dsw-alias-fg,#111827);text-overflow:ellipsis;white-space:nowrap;max-width:60%;font-size:13.5px;font-weight:600;overflow:hidden}.FjxQqG_badge{background:var(--dsw-alias-bg-layer-2,#f3f4f6);color:var(--dsw-alias-fg-l3,#6b7280);border-radius:999px;padding:2px 8px;font-size:11px}.FjxQqG_badge[data-source=custom],.FjxQqG_badge[data-source=owned]{color:#1d4ed8;background:#dbeafe}.FjxQqG_meta{color:var(--dsw-alias-fg-l3,#6b7280);flex-wrap:wrap;gap:8px;font-size:11.5px;display:flex}.FjxQqG_voiceId{word-break:break-all;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.FjxQqG_description{color:var(--dsw-alias-fg-l2,#374151);max-height:64px;margin:0;font-size:12.5px;line-height:1.5;overflow:hidden}.FjxQqG_preview{max-width:340px}.FjxQqG_actions{align-items:center;gap:8px;display:flex}.FjxQqG_useBtn,.FjxQqG_deleteBtn{cursor:pointer;border:1px solid var(--dsw-alias-border-l2,#d1d5db);background:var(--dsw-alias-bg,#fff);height:28px;color:var(--dsw-alias-fg,#111827);border-radius:8px;align-items:center;gap:5px;padding:0 10px;font-size:12.5px;display:inline-flex}.FjxQqG_useBtn:hover{border-color:var(--dsw-accent,#2563eb);color:var(--dsw-accent,#2563eb)}.FjxQqG_deleteBtn{color:#dc2626}.FjxQqG_deleteBtn:hover:not(:disabled){background:#fef2f2;border-color:#dc2626}.FjxQqG_deleteBtn:disabled{opacity:.5;cursor:not-allowed}.FjxQqG_empty{border:1px dashed var(--dsw-alias-border-l2,#d1d5db);color:var(--dsw-alias-fg-l3,#6b7280);border-radius:10px;justify-content:center;align-items:center;gap:8px;padding:28px 12px;font-size:12.5px;display:flex}";
4590
+ const css$3 = ".FjxQqG_view{flex-direction:column;gap:10px;height:100%;min-height:0;padding:14px 16px;display:flex;overflow:hidden}.FjxQqG_toolbar{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));align-items:end;gap:8px;display:grid}.FjxQqG_field{flex-direction:column;gap:4px;min-width:0;display:flex}.FjxQqG_fieldLabel{color:var(--dsw-alias-fg-l3,#6b7280);font-size:12px}.FjxQqG_input,.FjxQqG_select{border:1px solid var(--dsw-alias-border-l2,#d1d5db);background:var(--dsw-alias-bg,#fff);width:100%;min-height:30px;color:var(--dsw-alias-fg,#111827);border-radius:8px;outline:none;padding:5px 8px;font-size:13px}.FjxQqG_input:focus,.FjxQqG_select:focus{border-color:var(--dsw-accent,#2563eb)}.FjxQqG_primaryBtn{background:var(--dsw-accent,#2563eb);color:#fff;cursor:pointer;border:none;border-radius:8px;align-items:center;gap:6px;height:30px;padding:0 12px;font-size:13px;display:inline-flex}.FjxQqG_primaryBtn:hover:not(:disabled){filter:brightness(1.1)}.FjxQqG_primaryBtn:disabled{opacity:.6;cursor:not-allowed}.FjxQqG_advanced{border:1px solid var(--dsw-alias-border-l2,#e5e7eb);background:var(--dsw-alias-bg-layer-2,#f9fafb);border-radius:8px;padding:6px 10px}.FjxQqG_advancedSummary{color:var(--dsw-alias-fg-l3,#6b7280);cursor:pointer;user-select:none;font-size:12px}.FjxQqG_advancedGrid{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px;margin-top:8px;display:grid}.FjxQqG_checkRow{color:var(--dsw-alias-fg-l2,#374151);align-items:center;gap:6px;min-height:30px;font-size:12px;display:flex}.FjxQqG_stateLine{align-items:center;gap:10px;min-height:18px;display:flex}.FjxQqG_stateNote{color:var(--dsw-alias-fg-l3,#6b7280);font-size:12px}.FjxQqG_stateNote[data-error]{color:#dc2626}.FjxQqG_count{color:var(--dsw-alias-fg-l3,#6b7280);font-size:12px}.FjxQqG_list{flex-direction:column;flex:1;gap:8px;min-height:0;padding-right:2px;display:flex;overflow-y:auto}.FjxQqG_card{border:1px solid var(--dsw-alias-border-l2,#e5e7eb);background:var(--dsw-alias-bg,#fff);border-radius:10px;flex-direction:column;gap:6px;padding:10px 12px;display:flex}.FjxQqG_cardHead{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.FjxQqG_voiceName{color:var(--dsw-alias-fg,#111827);text-overflow:ellipsis;white-space:nowrap;max-width:60%;font-size:13.5px;font-weight:600;overflow:hidden}.FjxQqG_badge{background:var(--dsw-alias-bg-layer-2,#f3f4f6);color:var(--dsw-alias-fg-l3,#6b7280);border-radius:999px;padding:2px 8px;font-size:11px}.FjxQqG_badge[data-source=custom],.FjxQqG_badge[data-source=owned]{color:#1d4ed8;background:#dbeafe}.FjxQqG_meta{color:var(--dsw-alias-fg-l3,#6b7280);flex-wrap:wrap;gap:8px;font-size:11.5px;display:flex}.FjxQqG_voiceId{word-break:break-all;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.FjxQqG_description{color:var(--dsw-alias-fg-l2,#374151);max-height:64px;margin:0;font-size:12.5px;line-height:1.5;overflow:hidden}.FjxQqG_preview{max-width:340px}.FjxQqG_actions{align-items:center;gap:8px;display:flex}.FjxQqG_useBtn,.FjxQqG_deleteBtn{cursor:pointer;border:1px solid var(--dsw-alias-border-l2,#d1d5db);background:var(--dsw-alias-bg,#fff);height:28px;color:var(--dsw-alias-fg,#111827);border-radius:8px;align-items:center;gap:5px;padding:0 10px;font-size:12.5px;display:inline-flex}.FjxQqG_useBtn:hover{border-color:var(--dsw-accent,#2563eb);color:var(--dsw-accent,#2563eb)}.FjxQqG_deleteBtn{color:#dc2626}.FjxQqG_deleteBtn:hover:not(:disabled){background:#fef2f2;border-color:#dc2626}.FjxQqG_deleteBtn:disabled{opacity:.5;cursor:not-allowed}.FjxQqG_empty{border:1px dashed var(--dsw-alias-border-l2,#d1d5db);color:var(--dsw-alias-fg-l3,#6b7280);border-radius:10px;justify-content:center;align-items:center;gap:8px;padding:28px 12px;font-size:12.5px;display:flex}.FjxQqG_recommend{border:1px solid var(--dsw-alias-border-l2,#e5e7eb);background:var(--dsw-alias-bg-layer-2,#f9fafb);border-radius:10px;flex-direction:column;gap:8px;padding:10px 12px;display:flex}.FjxQqG_recommendHead{color:var(--dsw-accent,#2563eb);flex-wrap:wrap;align-items:center;gap:6px;display:flex}.FjxQqG_recommendTitle{color:var(--dsw-alias-fg,#111827);font-size:13px;font-weight:600}.FjxQqG_recommendHint{color:var(--dsw-alias-fg-l3,#6b7280);font-size:11.5px}.FjxQqG_recommendBody{flex-direction:column;gap:8px;display:flex}.FjxQqG_recommendInput{border:1px solid var(--dsw-alias-border-l2,#d1d5db);background:var(--dsw-alias-bg,#fff);width:100%;min-height:48px;color:var(--dsw-alias-fg,#111827);resize:vertical;border-radius:8px;outline:none;padding:7px 9px;font-family:inherit;font-size:13px}.FjxQqG_recommendInput:focus{border-color:var(--dsw-accent,#2563eb)}.FjxQqG_recommendControls{align-items:end;gap:8px;display:flex}.FjxQqG_recommendResults{flex-direction:column;gap:8px;margin-top:2px;display:flex}.FjxQqG_recommendCard{border-color:var(--dsw-accent,#2563eb);background:color-mix(in srgb, var(--dsw-accent,#2563eb) 4%, var(--dsw-alias-bg,#fff))}.FjxQqG_rank{background:var(--dsw-accent,#2563eb);color:#fff;border-radius:999px;flex:none;justify-content:center;align-items:center;width:20px;height:20px;font-size:11px;font-weight:600;display:inline-flex}.FjxQqG_reason{color:var(--dsw-accent,#2563eb);margin:0;font-size:12.5px;line-height:1.5}.FjxQqG_recordBox{border:1px solid var(--dsw-alias-border-l2,#e5e7eb);background:var(--dsw-alias-bg-layer-2,#f9fafb);border-radius:10px;padding:8px 12px}.FjxQqG_recordSummary{cursor:pointer;color:var(--dsw-alias-fg,#111827);user-select:none;align-items:center;gap:6px;font-size:13px;font-weight:600;display:flex}.FjxQqG_recordHint{color:var(--dsw-alias-fg-l3,#6b7280);font-size:11.5px;font-weight:400}.FjxQqG_recordList{flex-direction:column;gap:8px;margin-top:8px;display:flex}.FjxQqG_recordCard{border-left:3px solid var(--dsw-accent,#2563eb)}.FjxQqG_recordVoices{flex-direction:column;gap:4px;margin-top:6px;display:flex}.FjxQqG_recordVoiceRow{border-radius:6px;flex-wrap:wrap;align-items:center;gap:8px;padding:4px 2px;display:flex}.FjxQqG_recordVoiceRow:hover{background:color-mix(in srgb, var(--dsw-accent,#2563eb) 5%, transparent)}.FjxQqG_recordVoiceName{color:var(--dsw-alias-fg,#111827);text-overflow:ellipsis;white-space:nowrap;max-width:220px;font-size:13px;font-weight:500;overflow:hidden}.FjxQqG_reasonInline{color:var(--dsw-accent,#2563eb);font-size:12px}";
4196
4591
  const tagId$3 = "dsh-audiogen/voices.module.css";
4197
4592
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$3) + "]") === null) {
4198
4593
  const tag = document.createElement("style");
@@ -4202,33 +4597,53 @@ window.__ModuleLoader__.load({
4202
4597
  document.head.appendChild(tag);
4203
4598
  }
4204
4599
  var voices_module_css_default = {
4205
- "list": "FjxQqG_list",
4206
- "primaryBtn": "FjxQqG_primaryBtn",
4600
+ "recommendCard": "FjxQqG_recommendCard",
4601
+ "advancedSummary": "FjxQqG_advancedSummary",
4602
+ "recommendInput": "FjxQqG_recommendInput",
4603
+ "recordBox": "FjxQqG_recordBox",
4604
+ "view": "FjxQqG_view",
4605
+ "reasonInline": "FjxQqG_reasonInline",
4606
+ "actions": "FjxQqG_actions",
4607
+ "stateNote": "FjxQqG_stateNote",
4608
+ "field": "FjxQqG_field",
4609
+ "recordSummary": "FjxQqG_recordSummary",
4610
+ "meta": "FjxQqG_meta",
4611
+ "stateLine": "FjxQqG_stateLine",
4612
+ "description": "FjxQqG_description",
4207
4613
  "voiceName": "FjxQqG_voiceName",
4614
+ "rank": "FjxQqG_rank",
4615
+ "recordVoiceRow": "FjxQqG_recordVoiceRow",
4208
4616
  "cardHead": "FjxQqG_cardHead",
4617
+ "recordHint": "FjxQqG_recordHint",
4618
+ "useBtn": "FjxQqG_useBtn",
4619
+ "card": "FjxQqG_card",
4620
+ "voiceId": "FjxQqG_voiceId",
4621
+ "recordCard": "FjxQqG_recordCard",
4622
+ "advancedGrid": "FjxQqG_advancedGrid",
4623
+ "empty": "FjxQqG_empty",
4624
+ "recommendBody": "FjxQqG_recommendBody",
4625
+ "recommendControls": "FjxQqG_recommendControls",
4626
+ "recommendResults": "FjxQqG_recommendResults",
4627
+ "list": "FjxQqG_list",
4628
+ "recordVoices": "FjxQqG_recordVoices",
4209
4629
  "badge": "FjxQqG_badge",
4210
4630
  "select": "FjxQqG_select",
4211
- "fieldLabel": "FjxQqG_fieldLabel",
4212
- "advanced": "FjxQqG_advanced",
4213
- "meta": "FjxQqG_meta",
4214
- "advancedSummary": "FjxQqG_advancedSummary",
4215
- "stateLine": "FjxQqG_stateLine",
4216
- "voiceId": "FjxQqG_voiceId",
4217
- "preview": "FjxQqG_preview",
4218
- "useBtn": "FjxQqG_useBtn",
4219
4631
  "toolbar": "FjxQqG_toolbar",
4220
- "advancedGrid": "FjxQqG_advancedGrid",
4632
+ "input": "FjxQqG_input",
4221
4633
  "deleteBtn": "FjxQqG_deleteBtn",
4222
- "field": "FjxQqG_field",
4223
- "actions": "FjxQqG_actions",
4224
- "view": "FjxQqG_view",
4225
- "empty": "FjxQqG_empty",
4226
- "card": "FjxQqG_card",
4227
- "description": "FjxQqG_description",
4634
+ "recordList": "FjxQqG_recordList",
4635
+ "recordVoiceName": "FjxQqG_recordVoiceName",
4228
4636
  "checkRow": "FjxQqG_checkRow",
4637
+ "recommendHint": "FjxQqG_recommendHint",
4638
+ "fieldLabel": "FjxQqG_fieldLabel",
4639
+ "reason": "FjxQqG_reason",
4640
+ "recommendHead": "FjxQqG_recommendHead",
4229
4641
  "count": "FjxQqG_count",
4230
- "stateNote": "FjxQqG_stateNote",
4231
- "input": "FjxQqG_input"
4642
+ "primaryBtn": "FjxQqG_primaryBtn",
4643
+ "preview": "FjxQqG_preview",
4644
+ "recommend": "FjxQqG_recommend",
4645
+ "recommendTitle": "FjxQqG_recommendTitle",
4646
+ "advanced": "FjxQqG_advanced"
4232
4647
  };
4233
4648
  //#endregion
4234
4649
  //#region src/client/voices-view.tsx
@@ -4246,7 +4661,8 @@ window.__ModuleLoader__.load({
4246
4661
  system: "官方预置",
4247
4662
  custom: "自建设计",
4248
4663
  owned: "账户自有",
4249
- shared: "社区共享"
4664
+ shared: "社区共享",
4665
+ configured: "渠道模型"
4250
4666
  };
4251
4667
  /** 语言下拉:ISO 639-1 值;后端按两套厂商词汇匹配(ElevenLabs ISO / MiniMax 前缀)。 */
4252
4668
  const LANGUAGE_OPTIONS = [
@@ -4341,28 +4757,46 @@ window.__ModuleLoader__.load({
4341
4757
  const [error, setError] = (0, react.useState)(null);
4342
4758
  const [note, setNote] = (0, react.useState)(null);
4343
4759
  const [deletingId, setDeletingId] = (0, react.useState)(null);
4760
+ const [records, setRecords] = (0, react.useState)([]);
4761
+ const [recordsOpen, setRecordsOpen] = (0, react.useState)(false);
4762
+ const loadRecords = async () => {
4763
+ try {
4764
+ const response = await api.voiceRecommendHistory(30);
4765
+ setRecords(response.entries ?? []);
4766
+ } catch {}
4767
+ };
4768
+ const removeRecord = async (id) => {
4769
+ await api.voiceRecommendHistoryRemove(id).catch(() => {});
4770
+ loadRecords();
4771
+ };
4772
+ (0, react.useEffect)(() => {
4773
+ loadRecords();
4774
+ }, [api]);
4775
+ /** 当前的筛选载荷(查询音色列表用)。 */
4776
+ const currentFilterPayload = () => ({
4777
+ channel: channelId,
4778
+ ...language.trim() === "" ? {} : { language: language.trim() },
4779
+ ...keyword.trim() === "" ? {} : { keyword: keyword.trim() },
4780
+ ...source === "" ? {} : { source },
4781
+ ...search.trim() === "" ? {} : { search: search.trim() },
4782
+ ...useCase.trim() === "" ? {} : { use_case: useCase.trim() },
4783
+ ...accent.trim() === "" ? {} : { accent: accent.trim() },
4784
+ ...gender.trim() === "" ? {} : { gender: gender.trim() },
4785
+ ...age.trim() === "" ? {} : { age: age.trim() },
4786
+ ...locale.trim() === "" ? {} : { locale: locale.trim() },
4787
+ ...category.trim() === "" ? {} : { category: category.trim() },
4788
+ ...sort === "" ? {} : { sort },
4789
+ ...featured ? { featured: true } : {},
4790
+ ...freeUsersAllowed ? { free_users_allowed: true } : {}
4791
+ });
4344
4792
  const load = async () => {
4345
- const channel = channels.find((item) => item.id === channelId);
4346
- if (channel === void 0) return;
4793
+ if (channels.find((item) => item.id === channelId) === void 0) return;
4347
4794
  setLoading(true);
4348
4795
  setError(null);
4349
4796
  setNote(null);
4350
4797
  try {
4351
4798
  const response = await api.voiceList({
4352
- channel: channel.id,
4353
- ...language.trim() === "" ? {} : { language: language.trim() },
4354
- ...keyword.trim() === "" ? {} : { keyword: keyword.trim() },
4355
- ...source === "" ? {} : { source },
4356
- ...search.trim() === "" ? {} : { search: search.trim() },
4357
- ...useCase.trim() === "" ? {} : { use_case: useCase.trim() },
4358
- ...accent.trim() === "" ? {} : { accent: accent.trim() },
4359
- ...gender.trim() === "" ? {} : { gender: gender.trim() },
4360
- ...age.trim() === "" ? {} : { age: age.trim() },
4361
- ...locale.trim() === "" ? {} : { locale: locale.trim() },
4362
- ...category.trim() === "" ? {} : { category: category.trim() },
4363
- ...sort === "" ? {} : { sort },
4364
- ...featured ? { featured: true } : {},
4365
- ...freeUsersAllowed ? { free_users_allowed: true } : {},
4799
+ ...currentFilterPayload(),
4366
4800
  limit: 500
4367
4801
  });
4368
4802
  if (response.ok) {
@@ -4411,6 +4845,16 @@ window.__ModuleLoader__.load({
4411
4845
  ...ttsModel === void 0 || ttsModel.alias === "" ? {} : { model: ttsModel.alias }
4412
4846
  });
4413
4847
  };
4848
+ /** 从推荐记录里复用音色:切到记录对应的渠道,再回填 TTS 表单。 */
4849
+ const reuseFromRecord = (record, voice) => {
4850
+ if (record.channel_id !== void 0 && record.channel_id !== "" && channels.some((item) => item.id === record.channel_id)) setChannelId(record.channel_id);
4851
+ const ttsModel = channels.find((item) => item.id === (record.channel_id ?? channelId))?.models.find((model) => model.category === "tts" || /tts|speech|voice|t2a/i.test(model.alias));
4852
+ onReuseVoice({
4853
+ mode: "tts",
4854
+ voiceId: voice.voice_id,
4855
+ ...ttsModel === void 0 || ttsModel.alias === "" ? {} : { model: ttsModel.alias }
4856
+ });
4857
+ };
4414
4858
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
4415
4859
  className: voices_module_css_default.view,
4416
4860
  children: [
@@ -4505,6 +4949,104 @@ window.__ModuleLoader__.load({
4505
4949
  })
4506
4950
  ]
4507
4951
  }),
4952
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
4953
+ className: voices_module_css_default.stateNote,
4954
+ children: "按需求描述(prompt)推荐音色请使用生成页左侧「🎤 音色推荐」模式;这里仅浏览/筛选/删除音色,下方为历次 AI 推荐记录。"
4955
+ }),
4956
+ records.length > 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("details", {
4957
+ className: voices_module_css_default.recordBox,
4958
+ open: recordsOpen,
4959
+ onToggle: (event) => setRecordsOpen(event.target.open),
4960
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("summary", {
4961
+ className: voices_module_css_default.recordSummary,
4962
+ children: [
4963
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ListIcon, {}),
4964
+ " 最近 AI 推荐(",
4965
+ records.length,
4966
+ ")",
4967
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4968
+ className: voices_module_css_default.recordHint,
4969
+ children: "每次推荐自动记录,点「用此音色生成」可直接回填 TTS 表单"
4970
+ })
4971
+ ]
4972
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
4973
+ className: voices_module_css_default.recordList,
4974
+ children: records.map((record) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
4975
+ className: `${voices_module_css_default.card} ${voices_module_css_default.recordCard}`,
4976
+ children: [
4977
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
4978
+ className: voices_module_css_default.cardHead,
4979
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4980
+ className: voices_module_css_default.voiceName,
4981
+ title: record.requirement,
4982
+ children: record.requirement
4983
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4984
+ className: voices_module_css_default.badge,
4985
+ "data-source": record.vendor,
4986
+ children: record.channel
4987
+ })]
4988
+ }),
4989
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
4990
+ className: voices_module_css_default.meta,
4991
+ children: [
4992
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: new Date(record.createdAt).toLocaleString() }),
4993
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", { children: ["候选池 ", record.candidate_count] }),
4994
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", { children: [
4995
+ "推荐 ",
4996
+ record.recommendations.length,
4997
+ " 条"
4998
+ ] })
4999
+ ]
5000
+ }),
5001
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
5002
+ className: voices_module_css_default.recordVoices,
5003
+ children: record.recommendations.map((voice, index) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
5004
+ className: voices_module_css_default.recordVoiceRow,
5005
+ children: [
5006
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
5007
+ className: voices_module_css_default.rank,
5008
+ children: index + 1
5009
+ }),
5010
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
5011
+ className: voices_module_css_default.recordVoiceName,
5012
+ title: voice.name,
5013
+ children: voice.name
5014
+ }),
5015
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
5016
+ className: voices_module_css_default.voiceId,
5017
+ title: voice.voice_id,
5018
+ children: ["ID: ", voice.voice_id]
5019
+ }),
5020
+ voice.descriptive === void 0 ? null : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
5021
+ className: voices_module_css_default.reasonInline,
5022
+ children: ["descriptive: ", voice.descriptive]
5023
+ }),
5024
+ voice.reason === "" ? null : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
5025
+ className: voices_module_css_default.reasonInline,
5026
+ children: voice.reason
5027
+ }),
5028
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
5029
+ type: "button",
5030
+ className: voices_module_css_default.useBtn,
5031
+ onClick: () => reuseFromRecord(record, voice),
5032
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(MicIcon, {}), " 用此音色生成"]
5033
+ })
5034
+ ]
5035
+ }, `${record.id}:${voice.voice_id}`))
5036
+ }),
5037
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
5038
+ className: voices_module_css_default.actions,
5039
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
5040
+ type: "button",
5041
+ className: voices_module_css_default.deleteBtn,
5042
+ onClick: () => void removeRecord(record.id),
5043
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(TrashIcon, {}), " 删除记录"]
5044
+ })
5045
+ })
5046
+ ]
5047
+ }, record.id))
5048
+ })]
5049
+ }) : null,
4508
5050
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("details", {
4509
5051
  className: voices_module_css_default.advanced,
4510
5052
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("summary", {
@@ -4823,11 +5365,7 @@ window.__ModuleLoader__.load({
4823
5365
  className: audio_panel_module_css_default.tab,
4824
5366
  "data-active": tab === "voices" ? "true" : "false",
4825
5367
  onClick: () => setTab("voices"),
4826
- children: [
4827
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(MicIcon, {}),
4828
- " ",
4829
- tt("tab.voices")
4830
- ]
5368
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(MicIcon, {}), " 音色管理"]
4831
5369
  })
4832
5370
  ]
4833
5371
  })]
@@ -4878,167 +5416,167 @@ window.__ModuleLoader__.load({
4878
5416
  document.head.appendChild(tag);
4879
5417
  }
4880
5418
  var panel_module_css_default = {
5419
+ "bigSpinner": "rwa6qG_bigSpinner",
5420
+ "historySearch": "rwa6qG_historySearch",
5421
+ "spinner": "rwa6qG_spinner",
5422
+ "galleryViewToggle": "rwa6qG_galleryViewToggle",
5423
+ "lightboxFigure": "rwa6qG_lightboxFigure",
5424
+ "lightboxCopy": "rwa6qG_lightboxCopy",
5425
+ "lightboxClose": "rwa6qG_lightboxClose",
5426
+ "taskTrayChevron": "rwa6qG_taskTrayChevron",
5427
+ "historyMain": "rwa6qG_historyMain",
5428
+ "historyInfo": "rwa6qG_historyInfo",
4881
5429
  "updateActions": "rwa6qG_updateActions",
4882
- "historyThumb": "rwa6qG_historyThumb",
4883
- "galleryFilterNote": "rwa6qG_galleryFilterNote",
4884
- "promptFooter": "rwa6qG_promptFooter",
4885
- "galleryCard": "rwa6qG_galleryCard",
4886
- "promptCount": "rwa6qG_promptCount",
4887
- "dshImageGenToastIn": "rwa6qG_dshImageGenToastIn",
4888
- "historyList": "rwa6qG_historyList",
4889
- "card": "rwa6qG_card",
4890
- "galleryToolbarActions": "rwa6qG_galleryToolbarActions",
4891
- "galleryImageButton": "rwa6qG_galleryImageButton",
4892
- "gallerySelectMode": "rwa6qG_gallerySelectMode",
4893
- "galleryTagFilter": "rwa6qG_galleryTagFilter",
4894
- "panelHeader": "rwa6qG_panelHeader",
4895
- "panelTitle": "rwa6qG_panelTitle",
4896
- "reference": "rwa6qG_reference",
4897
- "canvasMeta": "rwa6qG_canvasMeta",
4898
5430
  "modePill": "rwa6qG_modePill",
4899
- "galleryClear": "rwa6qG_galleryClear",
4900
- "taskRow": "rwa6qG_taskRow",
4901
- "modelMenu": "rwa6qG_modelMenu",
4902
- "galleryRatio": "rwa6qG_galleryRatio",
4903
- "historyThumbPlaceholder": "rwa6qG_historyThumbPlaceholder",
4904
- "comparisonFullscreenGrid": "rwa6qG_comparisonFullscreenGrid",
4905
- "uploadHint": "rwa6qG_uploadHint",
4906
- "galleryRemove": "rwa6qG_galleryRemove",
4907
- "canvas": "rwa6qG_canvas",
4908
- "compareToggle": "rwa6qG_compareToggle",
4909
- "historyMeta": "rwa6qG_historyMeta",
4910
- "panel": "rwa6qG_panel",
4911
- "historyActions": "rwa6qG_historyActions",
4912
- "lightboxDownload": "rwa6qG_lightboxDownload",
4913
- "lightboxClose": "rwa6qG_lightboxClose",
5431
+ "gallerySelect": "rwa6qG_gallerySelect",
4914
5432
  "lightboxIndex": "rwa6qG_lightboxIndex",
4915
- "historyAction": "rwa6qG_historyAction",
4916
- "updateBanner": "rwa6qG_updateBanner",
4917
5433
  "taskTrayClose": "rwa6qG_taskTrayClose",
4918
- "galleryToast": "rwa6qG_galleryToast",
4919
- "comparisonGrid": "rwa6qG_comparisonGrid",
4920
- "canvasStateHint": "rwa6qG_canvasStateHint",
4921
- "updateText": "rwa6qG_updateText",
4922
- "galleryAdd": "rwa6qG_galleryAdd",
4923
- "gallerySelect": "rwa6qG_gallerySelect",
4924
- "view": "rwa6qG_view",
4925
- "canvasHistoryTag": "rwa6qG_canvasHistoryTag",
4926
- "zoomHint": "rwa6qG_zoomHint",
4927
- "galleryFilterHeading": "rwa6qG_galleryFilterHeading",
4928
- "galleryCardInfo": "rwa6qG_galleryCardInfo",
5434
+ "galleryToolbarActions": "rwa6qG_galleryToolbarActions",
5435
+ "lightboxTools": "rwa6qG_lightboxTools",
5436
+ "configGuide": "rwa6qG_configGuide",
5437
+ "dshImageGenSpin": "rwa6qG_dshImageGenSpin",
5438
+ "galleryCard": "rwa6qG_galleryCard",
5439
+ "generateInner": "rwa6qG_generateInner",
5440
+ "uploadBox": "rwa6qG_uploadBox",
5441
+ "canvas": "rwa6qG_canvas",
5442
+ "canvasState": "rwa6qG_canvasState",
4929
5443
  "modelMenuItem": "rwa6qG_modelMenuItem",
4930
- "galleryFilterCount": "rwa6qG_galleryFilterCount",
4931
- "configScroll": "rwa6qG_configScroll",
4932
- "taskPrompt": "rwa6qG_taskPrompt",
4933
- "historyInfo": "rwa6qG_historyInfo",
4934
- "compareControl": "rwa6qG_compareControl",
4935
- "uploadIcon": "rwa6qG_uploadIcon",
4936
- "imageCard": "rwa6qG_imageCard",
4937
- "galleryRatioList": "rwa6qG_galleryRatioList",
5444
+ "image": "rwa6qG_image",
4938
5445
  "taskTray": "rwa6qG_taskTray",
4939
- "galleryWorkspace": "rwa6qG_galleryWorkspace",
4940
- "download": "rwa6qG_download",
4941
- "updateRelease": "rwa6qG_updateRelease",
5446
+ "taskRow": "rwa6qG_taskRow",
5447
+ "gallerySearch": "rwa6qG_gallerySearch",
5448
+ "historyAction": "rwa6qG_historyAction",
5449
+ "galleryHeading": "rwa6qG_galleryHeading",
4942
5450
  "galleryTags": "rwa6qG_galleryTags",
4943
- "lightboxTools": "rwa6qG_lightboxTools",
4944
- "optionRow": "rwa6qG_optionRow",
4945
- "configGuide": "rwa6qG_configGuide",
4946
- "modelLabel": "rwa6qG_modelLabel",
4947
- "generateButton": "rwa6qG_generateButton",
4948
- "galleryImage": "rwa6qG_galleryImage",
5451
+ "dshImageGenToastIn": "rwa6qG_dshImageGenToastIn",
5452
+ "lightboxZoomLevel": "rwa6qG_lightboxZoomLevel",
5453
+ "gallerySort": "rwa6qG_gallerySort",
5454
+ "compareModelChoices": "rwa6qG_compareModelChoices",
5455
+ "lightboxImage": "rwa6qG_lightboxImage",
5456
+ "promptCount": "rwa6qG_promptCount",
5457
+ "galleryRemove": "rwa6qG_galleryRemove",
5458
+ "historyMeta": "rwa6qG_historyMeta",
5459
+ "modelWrap": "rwa6qG_modelWrap",
5460
+ "historyHeader": "rwa6qG_historyHeader",
5461
+ "card": "rwa6qG_card",
5462
+ "canvasError": "rwa6qG_canvasError",
5463
+ "gallerySelectionClear": "rwa6qG_gallerySelectionClear",
5464
+ "historyItem": "rwa6qG_historyItem",
5465
+ "galleryClear": "rwa6qG_galleryClear",
5466
+ "galleryToolbar": "rwa6qG_galleryToolbar",
5467
+ "galleryFilterDivider": "rwa6qG_galleryFilterDivider",
5468
+ "lightboxScaleFrame": "rwa6qG_lightboxScaleFrame",
4949
5469
  "modelMenuList": "rwa6qG_modelMenuList",
4950
- "lightboxActions": "rwa6qG_lightboxActions",
4951
- "galleryBulkButton": "rwa6qG_galleryBulkButton",
4952
- "historyClear": "rwa6qG_historyClear",
5470
+ "historyThumbPlaceholder": "rwa6qG_historyThumbPlaceholder",
5471
+ "config": "rwa6qG_config",
4953
5472
  "galleryMasonry": "rwa6qG_galleryMasonry",
4954
- "gallerySelectionBar": "rwa6qG_gallerySelectionBar",
4955
- "historyMain": "rwa6qG_historyMain",
4956
- "historyItem": "rwa6qG_historyItem",
4957
- "imageCaption": "rwa6qG_imageCaption",
5473
+ "panelTitle": "rwa6qG_panelTitle",
5474
+ "galleryFilterNote": "rwa6qG_galleryFilterNote",
5475
+ "view": "rwa6qG_view",
5476
+ "galleryImage": "rwa6qG_galleryImage",
5477
+ "connectionDot": "rwa6qG_connectionDot",
5478
+ "canvasStateHint": "rwa6qG_canvasStateHint",
5479
+ "lightboxCaptionRow": "rwa6qG_lightboxCaptionRow",
5480
+ "updateRelease": "rwa6qG_updateRelease",
5481
+ "taskPrompt": "rwa6qG_taskPrompt",
4958
5482
  "enhanceButton": "rwa6qG_enhanceButton",
4959
- "githubLink": "rwa6qG_githubLink",
4960
- "paramHint": "rwa6qG_paramHint",
5483
+ "historyList": "rwa6qG_historyList",
4961
5484
  "galleryCount": "rwa6qG_galleryCount",
5485
+ "taskTrayHeader": "rwa6qG_taskTrayHeader",
5486
+ "historyActions": "rwa6qG_historyActions",
5487
+ "hiddenFile": "rwa6qG_hiddenFile",
5488
+ "modelSelect": "rwa6qG_modelSelect",
5489
+ "canvasBody": "rwa6qG_canvasBody",
5490
+ "lightboxStage": "rwa6qG_lightboxStage",
5491
+ "canvasHistoryTag": "rwa6qG_canvasHistoryTag",
5492
+ "entryLabel": "rwa6qG_entryLabel",
5493
+ "historyClear": "rwa6qG_historyClear",
4962
5494
  "historyEmpty": "rwa6qG_historyEmpty",
5495
+ "optionGrid": "rwa6qG_optionGrid",
5496
+ "lightboxActions": "rwa6qG_lightboxActions",
5497
+ "compareControl": "rwa6qG_compareControl",
5498
+ "referenceActions": "rwa6qG_referenceActions",
5499
+ "comparisonFullscreen": "rwa6qG_comparisonFullscreen",
5500
+ "reference": "rwa6qG_reference",
4963
5501
  "paramLabel": "rwa6qG_paramLabel",
4964
- "canvasStateTitle": "rwa6qG_canvasStateTitle",
4965
- "lightboxNav": "rwa6qG_lightboxNav",
4966
- "taskTrayCount": "rwa6qG_taskTrayCount",
5502
+ "optionRow": "rwa6qG_optionRow",
4967
5503
  "lightboxMeta": "rwa6qG_lightboxMeta",
4968
- "spinner": "rwa6qG_spinner",
4969
- "galleryFilterDivider": "rwa6qG_galleryFilterDivider",
4970
- "dshImageGenSpin": "rwa6qG_dshImageGenSpin",
4971
- "hiddenFile": "rwa6qG_hiddenFile",
4972
- "lightboxStage": "rwa6qG_lightboxStage",
4973
- "taskTrayChevron": "rwa6qG_taskTrayChevron",
4974
- "comparisonBoard": "rwa6qG_comparisonBoard",
5504
+ "gallerySelectionBar": "rwa6qG_gallerySelectionBar",
5505
+ "githubLink": "rwa6qG_githubLink",
5506
+ "templatesButton": "rwa6qG_templatesButton",
5507
+ "entry": "rwa6qG_entry",
4975
5508
  "configGuideBody": "rwa6qG_configGuideBody",
4976
- "historyTitle": "rwa6qG_historyTitle",
4977
- "historySearch": "rwa6qG_historySearch",
4978
- "taskTrayToggle": "rwa6qG_taskTrayToggle",
4979
- "galleryTagEdit": "rwa6qG_galleryTagEdit",
4980
- "taskRows": "rwa6qG_taskRows",
5509
+ "panelHeading": "rwa6qG_panelHeading",
4981
5510
  "connectionStatus": "rwa6qG_connectionStatus",
4982
- "historyPrompt": "rwa6qG_historyPrompt",
4983
- "image": "rwa6qG_image",
4984
- "connectionDot": "rwa6qG_connectionDot",
4985
- "galleryCardFooter": "rwa6qG_galleryCardFooter",
5511
+ "modelLabel": "rwa6qG_modelLabel",
5512
+ "configScroll": "rwa6qG_configScroll",
5513
+ "taskStatus": "rwa6qG_taskStatus",
5514
+ "generateButton": "rwa6qG_generateButton",
5515
+ "download": "rwa6qG_download",
4986
5516
  "galleryTagEditor": "rwa6qG_galleryTagEditor",
4987
- "entryLabel": "rwa6qG_entryLabel",
4988
- "canvasEmptyIcon": "rwa6qG_canvasEmptyIcon",
4989
- "gallerySelectionClear": "rwa6qG_gallerySelectionClear",
4990
- "panelHeading": "rwa6qG_panelHeading",
5517
+ "modelMenu": "rwa6qG_modelMenu",
5518
+ "imageCaption": "rwa6qG_imageCaption",
4991
5519
  "modeRow": "rwa6qG_modeRow",
5520
+ "lightboxDownload": "rwa6qG_lightboxDownload",
5521
+ "galleryTagFilter": "rwa6qG_galleryTagFilter",
5522
+ "galleryWorkspace": "rwa6qG_galleryWorkspace",
5523
+ "comparisonImageButton": "rwa6qG_comparisonImageButton",
5524
+ "lightbox": "rwa6qG_lightbox",
5525
+ "compareToggle": "rwa6qG_compareToggle",
5526
+ "comparisonFullscreenGrid": "rwa6qG_comparisonFullscreenGrid",
5527
+ "galleryBulkButton": "rwa6qG_galleryBulkButton",
5528
+ "galleryBadge": "rwa6qG_galleryBadge",
5529
+ "updateBanner": "rwa6qG_updateBanner",
5530
+ "galleryToast": "rwa6qG_galleryToast",
5531
+ "comparisonGrid": "rwa6qG_comparisonGrid",
5532
+ "paramGroup": "rwa6qG_paramGroup",
5533
+ "prompt": "rwa6qG_prompt",
5534
+ "galleryAdd": "rwa6qG_galleryAdd",
4992
5535
  "footer": "rwa6qG_footer",
4993
- "lightboxImage": "rwa6qG_lightboxImage",
4994
- "canvasError": "rwa6qG_canvasError",
4995
- "optionGrid": "rwa6qG_optionGrid",
4996
- "entry": "rwa6qG_entry",
5536
+ "historyThumb": "rwa6qG_historyThumb",
5537
+ "lightboxCaption": "rwa6qG_lightboxCaption",
5538
+ "comparisonBoard": "rwa6qG_comparisonBoard",
5539
+ "taskRows": "rwa6qG_taskRows",
5540
+ "lightboxEdit": "rwa6qG_lightboxEdit",
5541
+ "historyTitle": "rwa6qG_historyTitle",
5542
+ "imageCard": "rwa6qG_imageCard",
5543
+ "taskTrayToggle": "rwa6qG_taskTrayToggle",
4997
5544
  "optionPill": "rwa6qG_optionPill",
4998
- "galleryTagInput": "rwa6qG_galleryTagInput",
4999
- "galleryFilters": "rwa6qG_galleryFilters",
5000
- "prompt": "rwa6qG_prompt",
5001
- "galleryBadge": "rwa6qG_galleryBadge",
5002
- "historyHeader": "rwa6qG_historyHeader",
5003
- "modelSelect": "rwa6qG_modelSelect",
5004
- "referenceImage": "rwa6qG_referenceImage",
5545
+ "lightboxNav": "rwa6qG_lightboxNav",
5546
+ "paramHint": "rwa6qG_paramHint",
5547
+ "canvasEmptyIcon": "rwa6qG_canvasEmptyIcon",
5005
5548
  "galleryFilter": "rwa6qG_galleryFilter",
5006
- "paramGroup": "rwa6qG_paramGroup",
5007
- "lightboxCopy": "rwa6qG_lightboxCopy",
5008
- "lightboxFigure": "rwa6qG_lightboxFigure",
5009
- "galleryToolbar": "rwa6qG_galleryToolbar",
5010
- "galleryViewToggle": "rwa6qG_galleryViewToggle",
5549
+ "galleryRatio": "rwa6qG_galleryRatio",
5550
+ "historyFilters": "rwa6qG_historyFilters",
5551
+ "panelHeader": "rwa6qG_panelHeader",
5552
+ "gallerySelectMode": "rwa6qG_gallerySelectMode",
5553
+ "updateText": "rwa6qG_updateText",
5554
+ "galleryFilterCount": "rwa6qG_galleryFilterCount",
5011
5555
  "galleryTagFilterList": "rwa6qG_galleryTagFilterList",
5012
- "comparisonFullscreen": "rwa6qG_comparisonFullscreen",
5013
- "gallerySearch": "rwa6qG_gallerySearch",
5014
- "referenceActions": "rwa6qG_referenceActions",
5015
- "lightboxCaptionRow": "rwa6qG_lightboxCaptionRow",
5556
+ "galleryFilterHeading": "rwa6qG_galleryFilterHeading",
5557
+ "zoomHint": "rwa6qG_zoomHint",
5558
+ "galleryFilters": "rwa6qG_galleryFilters",
5559
+ "panel": "rwa6qG_panel",
5560
+ "grid": "rwa6qG_grid",
5561
+ "galleryRatioList": "rwa6qG_galleryRatioList",
5562
+ "galleryImageButton": "rwa6qG_galleryImageButton",
5563
+ "canvasMeta": "rwa6qG_canvasMeta",
5564
+ "uploadIcon": "rwa6qG_uploadIcon",
5565
+ "galleryCardFooter": "rwa6qG_galleryCardFooter",
5566
+ "galleryCardInfo": "rwa6qG_galleryCardInfo",
5567
+ "galleryTagEdit": "rwa6qG_galleryTagEdit",
5568
+ "historyPrompt": "rwa6qG_historyPrompt",
5016
5569
  "entryIcon": "rwa6qG_entryIcon",
5017
- "lightboxScaleFrame": "rwa6qG_lightboxScaleFrame",
5018
- "lightboxTool": "rwa6qG_lightboxTool",
5019
- "lightboxEdit": "rwa6qG_lightboxEdit",
5020
- "gallerySort": "rwa6qG_gallerySort",
5021
- "canvasState": "rwa6qG_canvasState",
5022
- "historyFilters": "rwa6qG_historyFilters",
5023
- "galleryAvatar": "rwa6qG_galleryAvatar",
5024
- "galleryHeading": "rwa6qG_galleryHeading",
5025
- "compareModelChoices": "rwa6qG_compareModelChoices",
5026
- "modelWrap": "rwa6qG_modelWrap",
5027
- "uploadBox": "rwa6qG_uploadBox",
5570
+ "promptFooter": "rwa6qG_promptFooter",
5028
5571
  "history": "rwa6qG_history",
5029
- "generateInner": "rwa6qG_generateInner",
5030
- "lightboxZoomLevel": "rwa6qG_lightboxZoomLevel",
5031
- "comparisonImageButton": "rwa6qG_comparisonImageButton",
5032
- "config": "rwa6qG_config",
5033
- "canvasBody": "rwa6qG_canvasBody",
5572
+ "uploadHint": "rwa6qG_uploadHint",
5573
+ "lightboxTool": "rwa6qG_lightboxTool",
5574
+ "referenceImage": "rwa6qG_referenceImage",
5575
+ "canvasStateTitle": "rwa6qG_canvasStateTitle",
5034
5576
  "studio": "rwa6qG_studio",
5035
- "taskTrayHeader": "rwa6qG_taskTrayHeader",
5036
- "templatesButton": "rwa6qG_templatesButton",
5037
- "lightbox": "rwa6qG_lightbox",
5038
- "grid": "rwa6qG_grid",
5039
- "bigSpinner": "rwa6qG_bigSpinner",
5040
- "taskStatus": "rwa6qG_taskStatus",
5041
- "lightboxCaption": "rwa6qG_lightboxCaption"
5577
+ "galleryAvatar": "rwa6qG_galleryAvatar",
5578
+ "galleryTagInput": "rwa6qG_galleryTagInput",
5579
+ "taskTrayCount": "rwa6qG_taskTrayCount"
5042
5580
  };
5043
5581
  //#endregion
5044
5582
  //#region src/client/mount.tsx
@@ -5695,79 +6233,79 @@ window.__ModuleLoader__.load({
5695
6233
  document.head.appendChild(tag);
5696
6234
  }
5697
6235
  var settings_card_module_css_default = {
5698
- "modelCatalogTools": "zmjoSq_modelCatalogTools",
5699
- "header": "zmjoSq_header",
5700
- "customSettingsSummary": "zmjoSq_customSettingsSummary",
5701
- "customSettingsBody": "zmjoSq_customSettingsBody",
5702
- "link": "zmjoSq_link",
6236
+ "channelMeta": "zmjoSq_channelMeta",
6237
+ "channelHost": "zmjoSq_channelHost",
6238
+ "label": "zmjoSq_label",
6239
+ "sectionHint": "zmjoSq_sectionHint",
5703
6240
  "field": "zmjoSq_field",
5704
- "deleteConfirmText": "zmjoSq_deleteConfirmText",
5705
- "reset": "zmjoSq_reset",
5706
- "modelArrow": "zmjoSq_modelArrow",
5707
- "channelDotWarn": "zmjoSq_channelDotWarn",
6241
+ "readOnly": "zmjoSq_readOnly",
6242
+ "channelAddRow": "zmjoSq_channelAddRow",
5708
6243
  "channelName": "zmjoSq_channelName",
5709
- "modelInput": "zmjoSq_modelInput",
5710
- "candidateList": "zmjoSq_candidateList",
5711
- "editorWrap": "zmjoSq_editorWrap",
5712
6244
  "editorHeader": "zmjoSq_editorHeader",
5713
- "detectOk": "zmjoSq_detectOk",
5714
- "failed": "zmjoSq_failed",
5715
- "addModel": "zmjoSq_addModel",
5716
- "channelList": "zmjoSq_channelList",
5717
- "discard": "zmjoSq_discard",
5718
- "modelBadge": "zmjoSq_modelBadge",
5719
- "candidateHead": "zmjoSq_candidateHead",
5720
- "channelRow": "zmjoSq_channelRow",
5721
- "readOnly": "zmjoSq_readOnly",
5722
- "channelDotReady": "zmjoSq_channelDotReady",
5723
- "modelCatalogMeta": "zmjoSq_modelCatalogMeta",
5724
- "sectionHint": "zmjoSq_sectionHint",
5725
- "modelEmpty": "zmjoSq_modelEmpty",
5726
- "chevronOpen": "zmjoSq_chevronOpen",
5727
- "channelMeta": "zmjoSq_channelMeta",
5728
- "customSettings": "zmjoSq_customSettings",
5729
- "headText": "zmjoSq_headText",
5730
- "modelCatalogTitle": "zmjoSq_modelCatalogTitle",
5731
6245
  "modelRows": "zmjoSq_modelRows",
5732
- "channelHost": "zmjoSq_channelHost",
6246
+ "modelCategorySelect": "zmjoSq_modelCategorySelect",
6247
+ "candidateLabel": "zmjoSq_candidateLabel",
5733
6248
  "modelCatalog": "zmjoSq_modelCatalog",
5734
- "save": "zmjoSq_save",
6249
+ "channelSection": "zmjoSq_channelSection",
5735
6250
  "channelBadge": "zmjoSq_channelBadge",
5736
- "linkButton": "zmjoSq_linkButton",
5737
- "channelEditor": "zmjoSq_channelEditor",
5738
- "channelAddRow": "zmjoSq_channelAddRow",
5739
- "channelAction": "zmjoSq_channelAction",
5740
- "channelEmpty": "zmjoSq_channelEmpty",
5741
- "select": "zmjoSq_select",
5742
- "sectionHeader": "zmjoSq_sectionHeader",
6251
+ "modelEmpty": "zmjoSq_modelEmpty",
5743
6252
  "modelRow": "zmjoSq_modelRow",
5744
- "candidate": "zmjoSq_candidate",
5745
- "channelSection": "zmjoSq_channelSection",
5746
- "head": "zmjoSq_head",
5747
- "modelCatalogHead": "zmjoSq_modelCatalogHead",
5748
- "label": "zmjoSq_label",
5749
6253
  "card": "zmjoSq_card",
6254
+ "channelList": "zmjoSq_channelList",
6255
+ "description": "zmjoSq_description",
6256
+ "link": "zmjoSq_link",
6257
+ "reset": "zmjoSq_reset",
6258
+ "linkButton": "zmjoSq_linkButton",
5750
6259
  "input": "zmjoSq_input",
5751
- "name": "zmjoSq_name",
5752
- "channelMain": "zmjoSq_channelMain",
5753
- "candidatePanel": "zmjoSq_candidatePanel",
6260
+ "customSettingsBody": "zmjoSq_customSettingsBody",
6261
+ "chevron": "zmjoSq_chevron",
6262
+ "candidate": "zmjoSq_candidate",
6263
+ "modelArrow": "zmjoSq_modelArrow",
6264
+ "sectionHeader": "zmjoSq_sectionHeader",
6265
+ "deleteConfirmText": "zmjoSq_deleteConfirmText",
5754
6266
  "candidateTitle": "zmjoSq_candidateTitle",
5755
- "candidateActions": "zmjoSq_candidateActions",
5756
- "footer": "zmjoSq_footer",
5757
- "editorFooter": "zmjoSq_editorFooter",
5758
- "candidateLabel": "zmjoSq_candidateLabel",
5759
- "editorTag": "zmjoSq_editorTag",
6267
+ "discard": "zmjoSq_discard",
6268
+ "name": "zmjoSq_name",
6269
+ "channelDotWarn": "zmjoSq_channelDotWarn",
6270
+ "candidateList": "zmjoSq_candidateList",
6271
+ "head": "zmjoSq_head",
5760
6272
  "channelAdd": "zmjoSq_channelAdd",
5761
- "candidateId": "zmjoSq_candidateId",
5762
- "chevron": "zmjoSq_chevron",
6273
+ "select": "zmjoSq_select",
5763
6274
  "editorTitle": "zmjoSq_editorTitle",
5764
6275
  "pending": "zmjoSq_pending",
5765
- "modelCategorySelect": "zmjoSq_modelCategorySelect",
6276
+ "channelEditor": "zmjoSq_channelEditor",
5766
6277
  "body": "zmjoSq_body",
5767
- "modelRowRemove": "zmjoSq_modelRowRemove",
6278
+ "modelCatalogTitle": "zmjoSq_modelCatalogTitle",
6279
+ "editorFooter": "zmjoSq_editorFooter",
6280
+ "editorTag": "zmjoSq_editorTag",
6281
+ "channelEmpty": "zmjoSq_channelEmpty",
6282
+ "modelCatalogTools": "zmjoSq_modelCatalogTools",
6283
+ "channelAction": "zmjoSq_channelAction",
6284
+ "detectOk": "zmjoSq_detectOk",
6285
+ "channelMain": "zmjoSq_channelMain",
6286
+ "sectionTitle": "zmjoSq_sectionTitle",
6287
+ "headText": "zmjoSq_headText",
5768
6288
  "channelDanger": "zmjoSq_channelDanger",
5769
- "description": "zmjoSq_description",
5770
- "sectionTitle": "zmjoSq_sectionTitle"
6289
+ "modelCatalogMeta": "zmjoSq_modelCatalogMeta",
6290
+ "modelBadge": "zmjoSq_modelBadge",
6291
+ "candidateActions": "zmjoSq_candidateActions",
6292
+ "failed": "zmjoSq_failed",
6293
+ "customSettingsSummary": "zmjoSq_customSettingsSummary",
6294
+ "customSettings": "zmjoSq_customSettings",
6295
+ "footer": "zmjoSq_footer",
6296
+ "modelCatalogHead": "zmjoSq_modelCatalogHead",
6297
+ "header": "zmjoSq_header",
6298
+ "modelInput": "zmjoSq_modelInput",
6299
+ "chevronOpen": "zmjoSq_chevronOpen",
6300
+ "save": "zmjoSq_save",
6301
+ "editorWrap": "zmjoSq_editorWrap",
6302
+ "channelRow": "zmjoSq_channelRow",
6303
+ "addModel": "zmjoSq_addModel",
6304
+ "candidateHead": "zmjoSq_candidateHead",
6305
+ "channelDotReady": "zmjoSq_channelDotReady",
6306
+ "candidateId": "zmjoSq_candidateId",
6307
+ "modelRowRemove": "zmjoSq_modelRowRemove",
6308
+ "candidatePanel": "zmjoSq_candidatePanel"
5771
6309
  };
5772
6310
  //#endregion
5773
6311
  //#region src/client/SettingsCard.tsx
@@ -6783,17 +7321,17 @@ window.__ModuleLoader__.load({
6783
7321
  document.head.appendChild(tag);
6784
7322
  }
6785
7323
  var audio_toolview_module_css_default = {
6786
- "message": "_7K1QKa_message",
6787
7324
  "header": "_7K1QKa_header",
7325
+ "message": "_7K1QKa_message",
7326
+ "download": "_7K1QKa_download",
6788
7327
  "error": "_7K1QKa_error",
6789
7328
  "audio": "_7K1QKa_audio",
6790
- "root": "_7K1QKa_root",
6791
- "audioRow": "_7K1QKa_audioRow",
6792
- "download": "_7K1QKa_download",
7329
+ "audios": "_7K1QKa_audios",
6793
7330
  "empty": "_7K1QKa_empty",
6794
7331
  "status": "_7K1QKa_status",
6795
- "audios": "_7K1QKa_audios",
6796
- "icon": "_7K1QKa_icon"
7332
+ "root": "_7K1QKa_root",
7333
+ "icon": "_7K1QKa_icon",
7334
+ "audioRow": "_7K1QKa_audioRow"
6797
7335
  };
6798
7336
  //#endregion
6799
7337
  //#region src/client/audio-toolview.tsx