@downcity/plugins 1.0.56 → 1.0.57

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (201) hide show
  1. package/bin/BuiltinPlugins.d.ts.map +1 -1
  2. package/bin/BuiltinPlugins.js +0 -4
  3. package/bin/BuiltinPlugins.js.map +1 -1
  4. package/bin/asr/Plugin.d.ts +67 -7
  5. package/bin/asr/Plugin.d.ts.map +1 -1
  6. package/bin/asr/Plugin.js +229 -461
  7. package/bin/asr/Plugin.js.map +1 -1
  8. package/bin/asr/types/AsrPlugin.d.ts +114 -0
  9. package/bin/asr/types/AsrPlugin.d.ts.map +1 -0
  10. package/bin/asr/types/AsrPlugin.js +10 -0
  11. package/bin/asr/types/AsrPlugin.js.map +1 -0
  12. package/bin/image/ImagePlugin.d.ts +1 -1
  13. package/bin/image/ImagePlugin.d.ts.map +1 -1
  14. package/bin/image/ImagePlugin.js +23 -5
  15. package/bin/image/ImagePlugin.js.map +1 -1
  16. package/bin/index.d.ts +2 -0
  17. package/bin/index.d.ts.map +1 -1
  18. package/bin/tts/Plugin.d.ts +53 -6
  19. package/bin/tts/Plugin.d.ts.map +1 -1
  20. package/bin/tts/Plugin.js +197 -474
  21. package/bin/tts/Plugin.js.map +1 -1
  22. package/bin/tts/types/TtsPlugin.d.ts +63 -102
  23. package/bin/tts/types/TtsPlugin.d.ts.map +1 -1
  24. package/bin/tts/types/TtsPlugin.js +4 -3
  25. package/bin/tts/types/TtsPlugin.js.map +1 -1
  26. package/bin/web/PROMPT.d.ts +1 -1
  27. package/bin/web/PROMPT.d.ts.map +1 -1
  28. package/bin/web/PROMPT.js +1 -1
  29. package/bin/web/PROMPT.js.map +1 -1
  30. package/bin/web/Plugin.d.ts +66 -5
  31. package/bin/web/Plugin.d.ts.map +1 -1
  32. package/bin/web/Plugin.js +126 -450
  33. package/bin/web/Plugin.js.map +1 -1
  34. package/bin/web/WebPromptAssets.d.ts +1 -9
  35. package/bin/web/WebPromptAssets.d.ts.map +1 -1
  36. package/bin/web/WebPromptAssets.js +1 -11
  37. package/bin/web/WebPromptAssets.js.map +1 -1
  38. package/bin/web/runtime/Install.d.ts +19 -0
  39. package/bin/web/runtime/Install.d.ts.map +1 -0
  40. package/bin/web/runtime/Install.js +178 -0
  41. package/bin/web/runtime/Install.js.map +1 -0
  42. package/bin/web/types/WebPlugin.d.ts +37 -109
  43. package/bin/web/types/WebPlugin.d.ts.map +1 -1
  44. package/bin/web/types/WebPlugin.js +5 -7
  45. package/bin/web/types/WebPlugin.js.map +1 -1
  46. package/package.json +2 -2
  47. package/src/BuiltinPlugins.ts +0 -4
  48. package/src/asr/Plugin.ts +264 -483
  49. package/src/asr/types/AsrPlugin.ts +118 -0
  50. package/src/image/ImagePlugin.ts +23 -5
  51. package/src/index.ts +12 -0
  52. package/src/tts/Plugin.ts +225 -492
  53. package/src/tts/types/TtsPlugin.ts +67 -102
  54. package/src/web/PROMPT.ts +1 -1
  55. package/src/web/PROMPT.ts.txt +32 -6
  56. package/src/web/Plugin.ts +119 -453
  57. package/src/web/WebPromptAssets.ts +1 -13
  58. package/src/web/runtime/Install.ts +241 -0
  59. package/src/web/types/WebPlugin.ts +37 -113
  60. package/bin/asr/Config.d.ts +0 -43
  61. package/bin/asr/Config.d.ts.map +0 -1
  62. package/bin/asr/Config.js +0 -107
  63. package/bin/asr/Config.js.map +0 -1
  64. package/bin/asr/Dependency.d.ts +0 -77
  65. package/bin/asr/Dependency.d.ts.map +0 -1
  66. package/bin/asr/Dependency.js +0 -238
  67. package/bin/asr/Dependency.js.map +0 -1
  68. package/bin/asr/InboundAugment.d.ts +0 -17
  69. package/bin/asr/InboundAugment.d.ts.map +0 -1
  70. package/bin/asr/InboundAugment.js +0 -47
  71. package/bin/asr/InboundAugment.js.map +0 -1
  72. package/bin/asr/ModelCatalog.d.ts +0 -29
  73. package/bin/asr/ModelCatalog.d.ts.map +0 -1
  74. package/bin/asr/ModelCatalog.js +0 -25
  75. package/bin/asr/ModelCatalog.js.map +0 -1
  76. package/bin/tts/Dependency.d.ts +0 -90
  77. package/bin/tts/Dependency.d.ts.map +0 -1
  78. package/bin/tts/Dependency.js +0 -344
  79. package/bin/tts/Dependency.js.map +0 -1
  80. package/bin/tts/PluginSupport.d.ts +0 -25
  81. package/bin/tts/PluginSupport.d.ts.map +0 -1
  82. package/bin/tts/PluginSupport.js +0 -72
  83. package/bin/tts/PluginSupport.js.map +0 -1
  84. package/bin/tts/runtime/Catalog.d.ts +0 -21
  85. package/bin/tts/runtime/Catalog.d.ts.map +0 -1
  86. package/bin/tts/runtime/Catalog.js +0 -90
  87. package/bin/tts/runtime/Catalog.js.map +0 -1
  88. package/bin/tts/runtime/DependencyInstaller.d.ts +0 -143
  89. package/bin/tts/runtime/DependencyInstaller.d.ts.map +0 -1
  90. package/bin/tts/runtime/DependencyInstaller.js +0 -261
  91. package/bin/tts/runtime/DependencyInstaller.js.map +0 -1
  92. package/bin/tts/runtime/Installer.d.ts +0 -89
  93. package/bin/tts/runtime/Installer.d.ts.map +0 -1
  94. package/bin/tts/runtime/Installer.js +0 -188
  95. package/bin/tts/runtime/Installer.js.map +0 -1
  96. package/bin/tts/runtime/Paths.d.ts +0 -20
  97. package/bin/tts/runtime/Paths.d.ts.map +0 -1
  98. package/bin/tts/runtime/Paths.js +0 -32
  99. package/bin/tts/runtime/Paths.js.map +0 -1
  100. package/bin/tts/runtime/Synthesizer.d.ts +0 -44
  101. package/bin/tts/runtime/Synthesizer.d.ts.map +0 -1
  102. package/bin/tts/runtime/Synthesizer.js +0 -363
  103. package/bin/tts/runtime/Synthesizer.js.map +0 -1
  104. package/bin/tts/types/Tts.d.ts +0 -91
  105. package/bin/tts/types/Tts.d.ts.map +0 -1
  106. package/bin/tts/types/Tts.js +0 -9
  107. package/bin/tts/types/Tts.js.map +0 -1
  108. package/bin/voice/Config.d.ts +0 -43
  109. package/bin/voice/Config.d.ts.map +0 -1
  110. package/bin/voice/Config.js +0 -104
  111. package/bin/voice/Config.js.map +0 -1
  112. package/bin/voice/Dependency.d.ts +0 -77
  113. package/bin/voice/Dependency.d.ts.map +0 -1
  114. package/bin/voice/Dependency.js +0 -237
  115. package/bin/voice/Dependency.js.map +0 -1
  116. package/bin/voice/InboundAugment.d.ts +0 -17
  117. package/bin/voice/InboundAugment.d.ts.map +0 -1
  118. package/bin/voice/InboundAugment.js +0 -47
  119. package/bin/voice/InboundAugment.js.map +0 -1
  120. package/bin/voice/ModelCatalog.d.ts +0 -29
  121. package/bin/voice/ModelCatalog.d.ts.map +0 -1
  122. package/bin/voice/ModelCatalog.js +0 -25
  123. package/bin/voice/ModelCatalog.js.map +0 -1
  124. package/bin/voice/runtime/Catalog.d.ts +0 -18
  125. package/bin/voice/runtime/Catalog.d.ts.map +0 -1
  126. package/bin/voice/runtime/Catalog.js +0 -61
  127. package/bin/voice/runtime/Catalog.js.map +0 -1
  128. package/bin/voice/runtime/DependencyInstaller.d.ts +0 -145
  129. package/bin/voice/runtime/DependencyInstaller.d.ts.map +0 -1
  130. package/bin/voice/runtime/DependencyInstaller.js +0 -309
  131. package/bin/voice/runtime/DependencyInstaller.js.map +0 -1
  132. package/bin/voice/runtime/Installer.d.ts +0 -94
  133. package/bin/voice/runtime/Installer.d.ts.map +0 -1
  134. package/bin/voice/runtime/Installer.js +0 -200
  135. package/bin/voice/runtime/Installer.js.map +0 -1
  136. package/bin/voice/runtime/Paths.d.ts +0 -8
  137. package/bin/voice/runtime/Paths.d.ts.map +0 -1
  138. package/bin/voice/runtime/Paths.js +0 -26
  139. package/bin/voice/runtime/Paths.js.map +0 -1
  140. package/bin/voice/runtime/Transcriber.d.ts +0 -57
  141. package/bin/voice/runtime/Transcriber.d.ts.map +0 -1
  142. package/bin/voice/runtime/Transcriber.js +0 -329
  143. package/bin/voice/runtime/Transcriber.js.map +0 -1
  144. package/bin/voice/types/Voice.d.ts +0 -58
  145. package/bin/voice/types/Voice.d.ts.map +0 -1
  146. package/bin/voice/types/Voice.js +0 -9
  147. package/bin/voice/types/Voice.js.map +0 -1
  148. package/bin/voice/types/VoicePlugin.d.ts +0 -190
  149. package/bin/voice/types/VoicePlugin.d.ts.map +0 -1
  150. package/bin/voice/types/VoicePlugin.js +0 -9
  151. package/bin/voice/types/VoicePlugin.js.map +0 -1
  152. package/bin/web/Dependency.d.ts +0 -10
  153. package/bin/web/Dependency.d.ts.map +0 -1
  154. package/bin/web/Dependency.js +0 -10
  155. package/bin/web/Dependency.js.map +0 -1
  156. package/bin/web/PROMPT.agent-browser.d.ts +0 -7
  157. package/bin/web/PROMPT.agent-browser.d.ts.map +0 -1
  158. package/bin/web/PROMPT.agent-browser.js +0 -8
  159. package/bin/web/PROMPT.agent-browser.js.map +0 -1
  160. package/bin/web/PROMPT.web-access.d.ts +0 -7
  161. package/bin/web/PROMPT.web-access.d.ts.map +0 -1
  162. package/bin/web/PROMPT.web-access.js +0 -8
  163. package/bin/web/PROMPT.web-access.js.map +0 -1
  164. package/bin/web/runtime/Config.d.ts +0 -21
  165. package/bin/web/runtime/Config.d.ts.map +0 -1
  166. package/bin/web/runtime/Config.js +0 -79
  167. package/bin/web/runtime/Config.js.map +0 -1
  168. package/bin/web/runtime/Source.d.ts +0 -29
  169. package/bin/web/runtime/Source.d.ts.map +0 -1
  170. package/bin/web/runtime/Source.js +0 -209
  171. package/bin/web/runtime/Source.js.map +0 -1
  172. package/src/asr/Config.ts +0 -138
  173. package/src/asr/Dependency.ts +0 -336
  174. package/src/asr/InboundAugment.ts +0 -59
  175. package/src/asr/ModelCatalog.ts +0 -43
  176. package/src/tts/Dependency.ts +0 -473
  177. package/src/tts/PluginSupport.ts +0 -85
  178. package/src/tts/runtime/Catalog.ts +0 -97
  179. package/src/tts/runtime/DependencyInstaller.ts +0 -436
  180. package/src/tts/runtime/Installer.ts +0 -297
  181. package/src/tts/runtime/Paths.ts +0 -39
  182. package/src/tts/runtime/Synthesizer.ts +0 -480
  183. package/src/tts/types/Tts.ts +0 -99
  184. package/src/voice/Config.ts +0 -135
  185. package/src/voice/Dependency.ts +0 -329
  186. package/src/voice/InboundAugment.ts +0 -59
  187. package/src/voice/ModelCatalog.ts +0 -43
  188. package/src/voice/runtime/Catalog.ts +0 -68
  189. package/src/voice/runtime/DependencyInstaller.ts +0 -505
  190. package/src/voice/runtime/Installer.ts +0 -324
  191. package/src/voice/runtime/Paths.ts +0 -26
  192. package/src/voice/runtime/Transcriber.ts +0 -467
  193. package/src/voice/types/Voice.ts +0 -68
  194. package/src/voice/types/VoicePlugin.ts +0 -194
  195. package/src/web/Dependency.ts +0 -17
  196. package/src/web/PROMPT.agent-browser.ts +0 -9
  197. package/src/web/PROMPT.agent-browser.ts.txt +0 -17
  198. package/src/web/PROMPT.web-access.ts +0 -9
  199. package/src/web/PROMPT.web-access.ts.txt +0 -13
  200. package/src/web/runtime/Config.ts +0 -105
  201. package/src/web/runtime/Source.ts +0 -257
@@ -1,344 +0,0 @@
1
- /**
2
- * TTS Plugin Dependency Helper。
3
- *
4
- * 关键点(中文)
5
- * - TTS 的模型安装、配置读写与可用性检查都内聚在 plugin 内部。
6
- * - Console 只调用 plugin action,不直接理解底层资源结构。
7
- */
8
- import { execFile as execFileCb } from "node:child_process";
9
- import { promisify } from "node:util";
10
- import { getTtsModelCatalogItem, resolveTtsModelId, TTS_MODEL_CATALOG, } from "../tts/runtime/Catalog.js";
11
- import { detectLocalTtsModelInstallState, installTtsModelFromHuggingFace, } from "../tts/runtime/Installer.js";
12
- import { ensureTtsVirtualEnv, installTtsDependencies, resolveDefaultTtsVenvPythonBin, resolveTtsRunnersByModels, } from "../tts/runtime/DependencyInstaller.js";
13
- import { resolveTtsModelsRootDir } from "../tts/runtime/Paths.js";
14
- const execFileAsync = promisify(execFileCb);
15
- function readTtsPluginRecord(context) {
16
- const current = context.config.plugins?.tts;
17
- if (!current || typeof current !== "object" || Array.isArray(current)) {
18
- return {};
19
- }
20
- return current;
21
- }
22
- function toJsonObject(input) {
23
- const out = {};
24
- if (!input)
25
- return out;
26
- for (const [key, value] of Object.entries(input)) {
27
- if (value === undefined)
28
- continue;
29
- if (value === null ||
30
- typeof value === "string" ||
31
- typeof value === "number" ||
32
- typeof value === "boolean") {
33
- out[key] = value;
34
- continue;
35
- }
36
- if (Array.isArray(value)) {
37
- out[key] = value
38
- .filter((item) => item !== undefined)
39
- .map((item) => item);
40
- continue;
41
- }
42
- if (typeof value === "object") {
43
- out[key] = toJsonObject(value);
44
- }
45
- }
46
- return out;
47
- }
48
- function normalizeFormat(value) {
49
- return String(value || "").trim().toLowerCase() === "flac" ? "flac" : "wav";
50
- }
51
- function normalizeTtsPythonBin(value) {
52
- const text = String(value || "").trim();
53
- if (!text || text === "python3") {
54
- return resolveDefaultTtsVenvPythonBin();
55
- }
56
- return text;
57
- }
58
- async function readPythonVersionInfo(pythonBin) {
59
- try {
60
- const { stdout, stderr } = await execFileAsync(pythonBin, ["--version"], {
61
- timeout: 15_000,
62
- maxBuffer: 1024 * 1024,
63
- });
64
- const text = String(stdout || stderr || "").trim();
65
- const match = text.match(/Python\s+(\d+)\.(\d+)\.(\d+)/i);
66
- if (!match)
67
- return null;
68
- return {
69
- major: Number(match[1]),
70
- minor: Number(match[2]),
71
- patch: Number(match[3]),
72
- raw: text,
73
- };
74
- }
75
- catch {
76
- return null;
77
- }
78
- }
79
- function getTtsPythonCompatibilityReason(params) {
80
- if (!params.version)
81
- return null;
82
- if (params.modelId === "kokoro-82m") {
83
- if (params.version.major > 3 || (params.version.major === 3 && params.version.minor >= 13)) {
84
- return `kokoro-82m currently requires Python < 3.13, current is ${params.version.major}.${params.version.minor}.${params.version.patch}`;
85
- }
86
- }
87
- return null;
88
- }
89
- /**
90
- * 读取 TTS Plugin 配置。
91
- */
92
- export function readTtsPluginConfig(context) {
93
- const { enabled: _ignoredEnabled, ...current } = readTtsPluginRecord(context);
94
- return {
95
- provider: "local",
96
- ...(typeof current.modelId === "string" ? { modelId: current.modelId } : {}),
97
- ...(typeof current.modelsDir === "string" ? { modelsDir: current.modelsDir } : {}),
98
- pythonBin: normalizeTtsPythonBin(current.pythonBin),
99
- ...(typeof current.language === "string" ? { language: current.language } : {}),
100
- ...(typeof current.voice === "string" ? { voice: current.voice } : {}),
101
- ...(typeof current.outputDir === "string" ? { outputDir: current.outputDir } : {}),
102
- ...(typeof current.timeoutMs === "number" ? { timeoutMs: current.timeoutMs } : {}),
103
- ...(typeof current.speed === "number" ? { speed: current.speed } : {}),
104
- format: normalizeFormat(current.format),
105
- ...(Array.isArray(current.installedModels)
106
- ? { installedModels: current.installedModels }
107
- : {}),
108
- };
109
- }
110
- /**
111
- * 写入完整 TTS plugin 配置。
112
- */
113
- export async function writeTtsPluginConfig(params) {
114
- if (!params.context.config.plugins) {
115
- params.context.config.plugins = {};
116
- }
117
- const next = {
118
- ...params.value,
119
- };
120
- delete next.enabled;
121
- params.context.config.plugins.tts = toJsonObject(next);
122
- await params.context.pluginConfig.persistProjectPlugins(params.context.config.plugins);
123
- return params.context.config.plugins.tts;
124
- }
125
- async function checkPythonPackageImports(params) {
126
- const importScript = params.modelId === "qwen3-tts-0.6b"
127
- ? "import qwen_tts, soundfile"
128
- : "import kokoro, soundfile";
129
- try {
130
- await execFileAsync(params.pythonBin, ["-c", importScript], {
131
- timeout: 30_000,
132
- maxBuffer: 1024 * 1024,
133
- });
134
- return null;
135
- }
136
- catch (error) {
137
- return `python packages missing: ${String(error)}`;
138
- }
139
- }
140
- /**
141
- * 检查 TTS 依赖可用性。
142
- */
143
- export async function checkTtsSynthesizer(context) {
144
- const config = readTtsPluginConfig(context);
145
- const reasons = [];
146
- const modelId = resolveTtsModelId(String(config.modelId || ""));
147
- if (!modelId) {
148
- reasons.push("tts modelId is missing");
149
- return {
150
- available: false,
151
- reasons,
152
- };
153
- }
154
- const modelsRootDir = resolveTtsModelsRootDir({
155
- projectRoot: context.rootPath,
156
- modelsDir: config.modelsDir,
157
- });
158
- const installState = await detectLocalTtsModelInstallState({
159
- modelId,
160
- modelsRootDir,
161
- });
162
- if (!installState.installed) {
163
- reasons.push(`tts model is not installed: ${modelId}`);
164
- }
165
- const pythonBin = normalizeTtsPythonBin(config.pythonBin);
166
- const pythonVersion = await readPythonVersionInfo(pythonBin);
167
- if (!pythonVersion) {
168
- reasons.push(`python runtime missing: ${pythonBin}`);
169
- return {
170
- available: false,
171
- reasons,
172
- };
173
- }
174
- const compatibilityReason = getTtsPythonCompatibilityReason({
175
- modelId,
176
- version: pythonVersion,
177
- });
178
- if (compatibilityReason) {
179
- reasons.push(compatibilityReason);
180
- return {
181
- available: false,
182
- reasons,
183
- details: {
184
- modelDir: installState.modelDir,
185
- source: installState.source || null,
186
- pythonVersion: pythonVersion.raw,
187
- },
188
- };
189
- }
190
- const importError = await checkPythonPackageImports({
191
- pythonBin,
192
- modelId,
193
- });
194
- if (importError) {
195
- reasons.push(importError);
196
- }
197
- return {
198
- available: reasons.length === 0,
199
- reasons,
200
- details: {
201
- modelDir: installState.modelDir,
202
- source: installState.source || null,
203
- },
204
- };
205
- }
206
- /**
207
- * 安装或修复 TTS 依赖。
208
- */
209
- export async function installTtsSynthesizer(params) {
210
- const context = params.context;
211
- const input = params.input;
212
- const config = readTtsPluginConfig(context);
213
- const logs = [];
214
- const requestedModelIds = (Array.isArray(input?.modelIds) ? input.modelIds : [])
215
- .map((item) => resolveTtsModelId(String(item || "").trim()))
216
- .filter((item) => Boolean(item));
217
- const selectedModelIds = requestedModelIds.length > 0
218
- ? requestedModelIds
219
- : [resolveTtsModelId(String(config.modelId || "qwen3-tts-0.6b")) || "qwen3-tts-0.6b"];
220
- const modelsRootDir = resolveTtsModelsRootDir({
221
- projectRoot: context.rootPath,
222
- modelsDir: input?.modelsDir || config.modelsDir,
223
- });
224
- logs.push(`models dir: ${modelsRootDir}`);
225
- const installResults = [];
226
- for (const modelId of selectedModelIds) {
227
- logs.push(`prepare model: ${modelId}`);
228
- const model = getTtsModelCatalogItem(modelId);
229
- if (!model) {
230
- throw new Error(`Unsupported tts model: ${modelId}`);
231
- }
232
- const installState = await detectLocalTtsModelInstallState({
233
- modelId,
234
- modelsRootDir,
235
- });
236
- if (!installState.installed || input?.force === true) {
237
- logs.push(installState.installed && input?.force === true
238
- ? `redownload model: ${modelId}`
239
- : `download model: ${modelId}`);
240
- const result = await installTtsModelFromHuggingFace({
241
- model,
242
- modelsRootDir,
243
- force: input?.force === true,
244
- hfToken: input?.hfToken,
245
- });
246
- logs.push(`model ready: ${modelId} (downloaded ${result.downloadedFiles}, skipped ${result.skippedFiles})`);
247
- installResults.push(toJsonObject({
248
- modelId,
249
- downloadedFiles: result.downloadedFiles,
250
- skippedFiles: result.skippedFiles,
251
- }));
252
- continue;
253
- }
254
- logs.push(`reuse installed model: ${modelId}`);
255
- installResults.push(toJsonObject({
256
- modelId,
257
- downloadedFiles: 0,
258
- skippedFiles: 0,
259
- reused: true,
260
- }));
261
- }
262
- const basePythonBin = String(input?.pythonBin || "").trim() || "python3";
263
- const basePythonVersion = await readPythonVersionInfo(basePythonBin);
264
- let resolvedPythonBin = normalizeTtsPythonBin(config.pythonBin);
265
- let dependencyDetails;
266
- const compatibilityFailures = selectedModelIds
267
- .map((modelId) => getTtsPythonCompatibilityReason({
268
- modelId,
269
- version: basePythonVersion,
270
- }))
271
- .filter((item) => Boolean(item));
272
- if (compatibilityFailures.length > 0) {
273
- logs.push(...compatibilityFailures);
274
- return {
275
- success: false,
276
- message: compatibilityFailures.join(" · "),
277
- details: {
278
- pythonVersion: basePythonVersion?.raw || basePythonBin,
279
- logs,
280
- },
281
- };
282
- }
283
- if (input?.installDeps !== false) {
284
- logs.push(`prepare python env from: ${basePythonBin}`);
285
- const dependencyResult = await installTtsDependencies({
286
- pythonBin: basePythonBin,
287
- runners: resolveTtsRunnersByModels(selectedModelIds),
288
- });
289
- resolvedPythonBin = dependencyResult.pythonBin;
290
- logs.push(`python env ready: ${dependencyResult.pythonBin}`);
291
- for (const item of dependencyResult.items) {
292
- logs.push(item.skipped
293
- ? `dependency ${item.runner}: already installed`
294
- : `dependency ${item.runner}: installed`);
295
- }
296
- dependencyDetails = toJsonObject({
297
- pythonBin: dependencyResult.pythonBin,
298
- runners: dependencyResult.runners,
299
- usedVirtualEnv: dependencyResult.usedVirtualEnv,
300
- venvDir: dependencyResult.venvDir,
301
- });
302
- }
303
- else {
304
- logs.push(`prepare python env only: ${basePythonBin}`);
305
- resolvedPythonBin = await ensureTtsVirtualEnv({
306
- basePythonBin,
307
- });
308
- logs.push(`python env ready: ${resolvedPythonBin}`);
309
- }
310
- const activeModelId = resolveTtsModelId(String(input?.activeModel || "")) || selectedModelIds[0];
311
- const nextConfig = await writeTtsPluginConfig({
312
- context,
313
- value: {
314
- ...config,
315
- provider: "local",
316
- modelId: activeModelId,
317
- modelsDir: modelsRootDir,
318
- pythonBin: resolvedPythonBin,
319
- format: normalizeFormat(input?.format || config.format),
320
- installedModels: selectedModelIds,
321
- },
322
- });
323
- return {
324
- success: true,
325
- message: "tts synthesizer installed",
326
- details: {
327
- plugin: toJsonObject(nextConfig),
328
- models: installResults,
329
- dependency: dependencyDetails || null,
330
- logs,
331
- },
332
- };
333
- }
334
- /**
335
- * 列出可用于 TTS 的内置模型选项。
336
- */
337
- export function listTtsModelOptions() {
338
- return TTS_MODEL_CATALOG.map((item) => ({
339
- label: item.label,
340
- value: item.id,
341
- hint: item.description,
342
- }));
343
- }
344
- //# sourceMappingURL=Dependency.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Dependency.js","sourceRoot":"","sources":["../../src/tts/Dependency.ts"],"names":[],"mappings":"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"}
@@ -1,25 +0,0 @@
1
- /**
2
- * TTS plugin 输入与 JSON 辅助。
3
- *
4
- * 关键点(中文)
5
- * - 只放 plugin action 映射中的通用 option 读取与 JSON 标准化。
6
- * - TTS 依赖安装、合成执行等领域逻辑仍留在 dependency/runtime 模块。
7
- */
8
- import type { JsonObject, JsonValue } from "@downcity/agent/internal/types/common/Json.js";
9
- /**
10
- * 将普通对象转为可持久化 JSON object。
11
- */
12
- export declare function toJsonObject(input: Record<string, unknown> | null | undefined): JsonObject | null;
13
- /**
14
- * 读取字符串选项。
15
- */
16
- export declare function getStringOpt(opts: Record<string, JsonValue>, key: string): string | undefined;
17
- /**
18
- * 读取布尔选项。
19
- */
20
- export declare function getBooleanOpt(opts: Record<string, JsonValue>, key: string, defaultValue: boolean): boolean;
21
- /**
22
- * 读取数字选项。
23
- */
24
- export declare function getNumberOpt(opts: Record<string, JsonValue>, key: string): number | undefined;
25
- //# sourceMappingURL=PluginSupport.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PluginSupport.d.ts","sourceRoot":"","sources":["../../src/tts/PluginSupport.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAC;AAE3F;;GAEG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,GAChD,UAAU,GAAG,IAAI,CAyBnB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EAC/B,GAAG,EAAE,MAAM,GACV,MAAM,GAAG,SAAS,CAKpB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EAC/B,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,OAAO,GACpB,OAAO,CAST;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EAC/B,GAAG,EAAE,MAAM,GACV,MAAM,GAAG,SAAS,CAKpB"}
@@ -1,72 +0,0 @@
1
- /**
2
- * TTS plugin 输入与 JSON 辅助。
3
- *
4
- * 关键点(中文)
5
- * - 只放 plugin action 映射中的通用 option 读取与 JSON 标准化。
6
- * - TTS 依赖安装、合成执行等领域逻辑仍留在 dependency/runtime 模块。
7
- */
8
- /**
9
- * 将普通对象转为可持久化 JSON object。
10
- */
11
- export function toJsonObject(input) {
12
- if (!input)
13
- return null;
14
- const out = {};
15
- for (const [key, value] of Object.entries(input)) {
16
- if (value === undefined)
17
- continue;
18
- if (value === null ||
19
- typeof value === "string" ||
20
- typeof value === "number" ||
21
- typeof value === "boolean") {
22
- out[key] = value;
23
- continue;
24
- }
25
- if (Array.isArray(value)) {
26
- out[key] = value
27
- .filter((item) => item !== undefined)
28
- .map((item) => item);
29
- continue;
30
- }
31
- if (typeof value === "object") {
32
- out[key] = toJsonObject(value) || {};
33
- }
34
- }
35
- return out;
36
- }
37
- /**
38
- * 读取字符串选项。
39
- */
40
- export function getStringOpt(opts, key) {
41
- const value = opts[key];
42
- if (typeof value !== "string")
43
- return undefined;
44
- const trimmed = value.trim();
45
- return trimmed || undefined;
46
- }
47
- /**
48
- * 读取布尔选项。
49
- */
50
- export function getBooleanOpt(opts, key, defaultValue) {
51
- const value = opts[key];
52
- if (typeof value === "boolean")
53
- return value;
54
- if (typeof value === "string") {
55
- const normalized = value.trim().toLowerCase();
56
- if (["1", "true", "yes", "y", "on"].includes(normalized))
57
- return true;
58
- if (["0", "false", "no", "n", "off"].includes(normalized))
59
- return false;
60
- }
61
- return defaultValue;
62
- }
63
- /**
64
- * 读取数字选项。
65
- */
66
- export function getNumberOpt(opts, key) {
67
- const value = opts[key];
68
- return typeof value === "number" && Number.isFinite(value) && !Number.isNaN(value)
69
- ? value
70
- : undefined;
71
- }
72
- //# sourceMappingURL=PluginSupport.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PluginSupport.js","sourceRoot":"","sources":["../../src/tts/PluginSupport.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH;;GAEG;AACH,MAAM,UAAU,YAAY,CAC1B,KAAiD;IAEjD,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,MAAM,GAAG,GAAe,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,IAAI,KAAK,KAAK,SAAS;YAAE,SAAS;QAClC,IACE,KAAK,KAAK,IAAI;YACd,OAAO,KAAK,KAAK,QAAQ;YACzB,OAAO,KAAK,KAAK,QAAQ;YACzB,OAAO,KAAK,KAAK,SAAS,EAC1B,CAAC;YACD,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACjB,SAAS;QACX,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK;iBACb,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC;iBACpC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAiB,CAAC,CAAC;YACpC,SAAS;QACX,CAAC;QACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,GAAG,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,KAAgC,CAAC,IAAI,EAAE,CAAC;QAClE,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAC1B,IAA+B,EAC/B,GAAW;IAEX,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IACxB,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,OAAO,OAAO,IAAI,SAAS,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAC3B,IAA+B,EAC/B,GAAW,EACX,YAAqB;IAErB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IACxB,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC9C,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;YAAE,OAAO,IAAI,CAAC;QACtE,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1E,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAC1B,IAA+B,EAC/B,GAAW;IAEX,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IACxB,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;QAChF,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC"}
@@ -1,21 +0,0 @@
1
- /**
2
- * TTS 内置模型目录。
3
- *
4
- * 关键点(中文)
5
- * - 默认主推 `Qwen 0.6B` 与 `Kokoro`。
6
- * - 目录只保留 Console/UI 需要的稳定元数据,不暴露底层实现细节。
7
- */
8
- import type { TtsModelCatalogItem, TtsModelId } from "../../tts/types/Tts.js";
9
- /**
10
- * 内置 TTS 模型目录。
11
- */
12
- export declare const TTS_MODEL_CATALOG: readonly TtsModelCatalogItem[];
13
- /**
14
- * 解析用户输入为稳定模型 ID(支持别名与大小写)。
15
- */
16
- export declare function resolveTtsModelId(input: string): TtsModelId | null;
17
- /**
18
- * 读取目录项;不存在返回 null。
19
- */
20
- export declare function getTtsModelCatalogItem(id: TtsModelId): TtsModelCatalogItem | null;
21
- //# sourceMappingURL=Catalog.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Catalog.d.ts","sourceRoot":"","sources":["../../../src/tts/runtime/Catalog.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAE1E;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,SAAS,mBAAmB,EA8ClD,CAAC;AAqBX;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAMlE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,UAAU,GAAG,mBAAmB,GAAG,IAAI,CAEjF"}
@@ -1,90 +0,0 @@
1
- /**
2
- * TTS 内置模型目录。
3
- *
4
- * 关键点(中文)
5
- * - 默认主推 `Qwen 0.6B` 与 `Kokoro`。
6
- * - 目录只保留 Console/UI 需要的稳定元数据,不暴露底层实现细节。
7
- */
8
- /**
9
- * 内置 TTS 模型目录。
10
- */
11
- export const TTS_MODEL_CATALOG = [
12
- {
13
- id: "qwen3-tts-0.6b",
14
- label: "Qwen3-TTS 0.6B",
15
- description: "中英文与多语言能力更强,作为主推荐模型。",
16
- family: "qwen3",
17
- recommended: true,
18
- assets: [
19
- {
20
- repoId: "Qwen/Qwen3-TTS-12Hz-0.6B-CustomVoice",
21
- revision: "main",
22
- },
23
- ],
24
- },
25
- {
26
- id: "kokoro-82m",
27
- label: "Kokoro 82M",
28
- description: "体积更小,启动更轻,适合本地快速合成。",
29
- family: "kokoro",
30
- recommended: true,
31
- assets: [
32
- {
33
- repoId: "hexgrad/Kokoro-82M",
34
- revision: "main",
35
- files: [
36
- "config.json",
37
- "kokoro-v1_0.pth",
38
- "voices/af_heart.pt",
39
- "voices/zf_xiaoni.pt",
40
- ],
41
- },
42
- ],
43
- },
44
- {
45
- id: "qwen3-tts-1.7b",
46
- label: "Qwen3-TTS 1.7B",
47
- description: "效果更强,但体积更大,适合更看重质量的本地合成。",
48
- family: "qwen3",
49
- recommended: false,
50
- assets: [
51
- {
52
- repoId: "Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice",
53
- revision: "main",
54
- },
55
- ],
56
- },
57
- ];
58
- const TTS_MODEL_ALIAS_MAP = {
59
- "qwen3-tts-0.6b": "qwen3-tts-0.6b",
60
- qwen3tts06b: "qwen3-tts-0.6b",
61
- qwen_06b: "qwen3-tts-0.6b",
62
- "kokoro-82m": "kokoro-82m",
63
- kokoro82m: "kokoro-82m",
64
- "qwen3-tts-1.7b": "qwen3-tts-1.7b",
65
- qwen3tts17b: "qwen3-tts-1.7b",
66
- qwen_17b: "qwen3-tts-1.7b",
67
- };
68
- const CATALOG_BY_ID = TTS_MODEL_CATALOG.reduce((acc, item) => {
69
- acc[item.id] = item;
70
- return acc;
71
- }, {});
72
- /**
73
- * 解析用户输入为稳定模型 ID(支持别名与大小写)。
74
- */
75
- export function resolveTtsModelId(input) {
76
- const raw = String(input || "").trim();
77
- if (!raw)
78
- return null;
79
- const exact = TTS_MODEL_CATALOG.find((item) => item.id === raw);
80
- if (exact)
81
- return exact.id;
82
- return TTS_MODEL_ALIAS_MAP[raw.toLowerCase()] || null;
83
- }
84
- /**
85
- * 读取目录项;不存在返回 null。
86
- */
87
- export function getTtsModelCatalogItem(id) {
88
- return CATALOG_BY_ID[id] || null;
89
- }
90
- //# sourceMappingURL=Catalog.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Catalog.js","sourceRoot":"","sources":["../../../src/tts/runtime/Catalog.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAmC;IAC/D;QACE,EAAE,EAAE,gBAAgB;QACpB,KAAK,EAAE,gBAAgB;QACvB,WAAW,EAAE,sBAAsB;QACnC,MAAM,EAAE,OAAO;QACf,WAAW,EAAE,IAAI;QACjB,MAAM,EAAE;YACN;gBACE,MAAM,EAAE,sCAAsC;gBAC9C,QAAQ,EAAE,MAAM;aACjB;SACF;KACF;IACD;QACE,EAAE,EAAE,YAAY;QAChB,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,qBAAqB;QAClC,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,IAAI;QACjB,MAAM,EAAE;YACN;gBACE,MAAM,EAAE,oBAAoB;gBAC5B,QAAQ,EAAE,MAAM;gBAChB,KAAK,EAAE;oBACL,aAAa;oBACb,iBAAiB;oBACjB,oBAAoB;oBACpB,qBAAqB;iBACtB;aACF;SACF;KACF;IACD;QACE,EAAE,EAAE,gBAAgB;QACpB,KAAK,EAAE,gBAAgB;QACvB,WAAW,EAAE,0BAA0B;QACvC,MAAM,EAAE,OAAO;QACf,WAAW,EAAE,KAAK;QAClB,MAAM,EAAE;YACN;gBACE,MAAM,EAAE,sCAAsC;gBAC9C,QAAQ,EAAE,MAAM;aACjB;SACF;KACF;CACO,CAAC;AAEX,MAAM,mBAAmB,GAA+B;IACtD,gBAAgB,EAAE,gBAAgB;IAClC,WAAW,EAAE,gBAAgB;IAC7B,QAAQ,EAAE,gBAAgB;IAC1B,YAAY,EAAE,YAAY;IAC1B,SAAS,EAAE,YAAY;IACvB,gBAAgB,EAAE,gBAAgB;IAClC,WAAW,EAAE,gBAAgB;IAC7B,QAAQ,EAAE,gBAAgB;CAC3B,CAAC;AAEF,MAAM,aAAa,GAA4C,iBAAiB,CAAC,MAAM,CACrF,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;IACZ,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;IACpB,OAAO,GAAG,CAAC;AACb,CAAC,EACD,EAA6C,CAC9C,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACvC,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC;IAChE,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC,EAAE,CAAC;IAC3B,OAAO,mBAAmB,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,IAAI,IAAI,CAAC;AACxD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,EAAc;IACnD,OAAO,aAAa,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;AACnC,CAAC"}