whale-code 6.5.5 β†’ 6.5.6

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 (847) hide show
  1. package/README.md +39 -31
  2. package/bin/{swagmanager-mcp.js β†’ whale-code.js} +17 -2
  3. package/dist/cli/app.js +148 -72
  4. package/dist/cli/app.js.map +1 -0
  5. package/dist/cli/chat/AgentSelector.js +105 -10
  6. package/dist/cli/chat/AgentSelector.js.map +1 -0
  7. package/dist/cli/chat/ChatApp.d.ts +31 -0
  8. package/dist/cli/chat/ChatApp.js +539 -286
  9. package/dist/cli/chat/ChatApp.js.map +1 -0
  10. package/dist/cli/chat/ChatInput.js +1088 -770
  11. package/dist/cli/chat/ChatInput.js.map +1 -0
  12. package/dist/cli/chat/MarkdownText.js +39 -14
  13. package/dist/cli/chat/MarkdownText.js.map +1 -0
  14. package/dist/cli/chat/MemoryManager.js +181 -46
  15. package/dist/cli/chat/MemoryManager.js.map +1 -0
  16. package/dist/cli/chat/MessageList.d.ts +2 -3
  17. package/dist/cli/chat/MessageList.js +186 -45
  18. package/dist/cli/chat/MessageList.js.map +1 -0
  19. package/dist/cli/chat/ModelSelector.js +282 -63
  20. package/dist/cli/chat/ModelSelector.js.map +1 -0
  21. package/dist/cli/chat/NodeManager.js +165 -75
  22. package/dist/cli/chat/NodeManager.js.map +1 -0
  23. package/dist/cli/chat/NodeSelector.js +171 -30
  24. package/dist/cli/chat/NodeSelector.js.map +1 -0
  25. package/dist/cli/chat/PlanApproval.js +281 -57
  26. package/dist/cli/chat/PlanApproval.js.map +1 -0
  27. package/dist/cli/chat/RewindViewer.js +559 -144
  28. package/dist/cli/chat/RewindViewer.js.map +1 -0
  29. package/dist/cli/chat/SessionManager.js +137 -30
  30. package/dist/cli/chat/SessionManager.js.map +1 -0
  31. package/dist/cli/chat/SlashMenu.js +293 -164
  32. package/dist/cli/chat/SlashMenu.js.map +1 -0
  33. package/dist/cli/chat/StatusBar.js +172 -9
  34. package/dist/cli/chat/StatusBar.js.map +1 -0
  35. package/dist/cli/chat/StoreSelector.js +147 -18
  36. package/dist/cli/chat/StoreSelector.js.map +1 -0
  37. package/dist/cli/chat/StreamingText.d.ts +1 -5
  38. package/dist/cli/chat/StreamingText.js +22 -7
  39. package/dist/cli/chat/StreamingText.js.map +1 -0
  40. package/dist/cli/chat/SubagentPanel.d.ts +1 -2
  41. package/dist/cli/chat/SubagentPanel.js +612 -72
  42. package/dist/cli/chat/SubagentPanel.js.map +1 -0
  43. package/dist/cli/chat/TeamPanel.d.ts +1 -0
  44. package/dist/cli/chat/TeamPanel.js +230 -30
  45. package/dist/cli/chat/TeamPanel.js.map +1 -0
  46. package/dist/cli/chat/ThemeSelector.js +84 -24
  47. package/dist/cli/chat/ThemeSelector.js.map +1 -0
  48. package/dist/cli/chat/ToolIndicator.js +1476 -371
  49. package/dist/cli/chat/ToolIndicator.js.map +1 -0
  50. package/dist/cli/chat/hooks/useAgentLoop.d.ts +1 -0
  51. package/dist/cli/chat/hooks/useAgentLoop.js +481 -367
  52. package/dist/cli/chat/hooks/useAgentLoop.js.map +1 -0
  53. package/dist/cli/chat/hooks/useSlashCommands.d.ts +3 -14
  54. package/dist/cli/chat/hooks/useSlashCommands.js +744 -572
  55. package/dist/cli/chat/hooks/useSlashCommands.js.map +1 -0
  56. package/dist/cli/commands/config-cmd.js +56 -57
  57. package/dist/cli/commands/config-cmd.js.map +1 -0
  58. package/dist/cli/commands/db.js +184 -169
  59. package/dist/cli/commands/db.js.map +1 -0
  60. package/dist/cli/commands/doctor.js +212 -122
  61. package/dist/cli/commands/doctor.js.map +1 -0
  62. package/dist/cli/commands/init.js +211 -244
  63. package/dist/cli/commands/init.js.map +1 -0
  64. package/dist/cli/commands/mcp.js +127 -122
  65. package/dist/cli/commands/mcp.js.map +1 -0
  66. package/dist/cli/login/LoginApp.js +355 -141
  67. package/dist/cli/login/LoginApp.js.map +1 -0
  68. package/dist/cli/print-mode.js +196 -177
  69. package/dist/cli/print-mode.js.map +1 -0
  70. package/dist/cli/serve-mode.js +615 -530
  71. package/dist/cli/serve-mode.js.map +1 -0
  72. package/dist/cli/services/agent-config.d.ts +5 -1
  73. package/dist/cli/services/agent-config.js +66 -36
  74. package/dist/cli/services/agent-config.js.map +1 -0
  75. package/dist/cli/services/agent-definitions.d.ts +4 -1
  76. package/dist/cli/services/agent-definitions.js +97 -56
  77. package/dist/cli/services/agent-definitions.js.map +1 -0
  78. package/dist/cli/services/agent-events.js +225 -162
  79. package/dist/cli/services/agent-events.js.map +1 -0
  80. package/dist/cli/services/agent-loop.js +976 -688
  81. package/dist/cli/services/agent-loop.js.map +1 -0
  82. package/dist/cli/services/agent-worker-base.d.ts +35 -5
  83. package/dist/cli/services/agent-worker-base.js +337 -153
  84. package/dist/cli/services/agent-worker-base.js.map +1 -0
  85. package/dist/cli/services/api-retry.js +69 -64
  86. package/dist/cli/services/api-retry.js.map +1 -0
  87. package/dist/cli/services/auth-service.d.ts +3 -3
  88. package/dist/cli/services/auth-service.js +209 -132
  89. package/dist/cli/services/auth-service.js.map +1 -0
  90. package/dist/cli/services/background-processes.js +343 -267
  91. package/dist/cli/services/background-processes.js.map +1 -0
  92. package/dist/cli/services/browser-auth.d.ts +2 -2
  93. package/dist/cli/services/browser-auth.js +159 -118
  94. package/dist/cli/services/browser-auth.js.map +1 -0
  95. package/dist/cli/services/claude-md-loader.js +40 -36
  96. package/dist/cli/services/claude-md-loader.js.map +1 -0
  97. package/dist/cli/services/config-store.d.ts +9 -4
  98. package/dist/cli/services/config-store.js +164 -117
  99. package/dist/cli/services/config-store.js.map +1 -0
  100. package/dist/cli/services/debug-log.d.ts +1 -1
  101. package/dist/cli/services/debug-log.js +34 -35
  102. package/dist/cli/services/debug-log.js.map +1 -0
  103. package/dist/cli/services/env-detect.d.ts +7 -0
  104. package/dist/cli/services/env-detect.js +9 -0
  105. package/dist/cli/services/env-detect.js.map +1 -0
  106. package/dist/cli/services/error-logger.js +187 -169
  107. package/dist/cli/services/error-logger.js.map +1 -0
  108. package/dist/cli/services/file-history.d.ts +1 -1
  109. package/dist/cli/services/file-history.js +50 -54
  110. package/dist/cli/services/file-history.js.map +1 -0
  111. package/dist/cli/services/format-server-response.js +332 -372
  112. package/dist/cli/services/format-server-response.js.map +1 -0
  113. package/dist/cli/services/git-context.js +61 -45
  114. package/dist/cli/services/git-context.js.map +1 -0
  115. package/dist/cli/services/hooks.d.ts +2 -2
  116. package/dist/cli/services/hooks.js +195 -180
  117. package/dist/cli/services/hooks.js.map +1 -0
  118. package/dist/cli/services/ink-incremental.d.ts +19 -0
  119. package/dist/cli/services/ink-incremental.js +59 -0
  120. package/dist/cli/services/ink-incremental.js.map +1 -0
  121. package/dist/cli/services/ink-resize-fix.js +54 -44
  122. package/dist/cli/services/ink-resize-fix.js.map +1 -0
  123. package/dist/cli/services/ink-sync-output.d.ts +12 -0
  124. package/dist/cli/services/ink-sync-output.js +16 -0
  125. package/dist/cli/services/ink-sync-output.js.map +1 -0
  126. package/dist/cli/services/interactive-tools.js +268 -212
  127. package/dist/cli/services/interactive-tools.js.map +1 -0
  128. package/dist/cli/services/keybinding-manager.d.ts +11 -1
  129. package/dist/cli/services/keybinding-manager.js +126 -63
  130. package/dist/cli/services/keybinding-manager.js.map +1 -0
  131. package/dist/cli/services/local-tools.d.ts +1 -1
  132. package/dist/cli/services/local-tools.js +939 -656
  133. package/dist/cli/services/local-tools.js.map +1 -0
  134. package/dist/cli/services/lsp-manager.js +757 -594
  135. package/dist/cli/services/lsp-manager.js.map +1 -0
  136. package/dist/cli/services/mcp-client.d.ts +1 -1
  137. package/dist/cli/services/mcp-client.js +173 -134
  138. package/dist/cli/services/mcp-client.js.map +1 -0
  139. package/dist/cli/services/memory-manager.js +53 -40
  140. package/dist/cli/services/memory-manager.js.map +1 -0
  141. package/dist/cli/services/model-manager.js +55 -40
  142. package/dist/cli/services/model-manager.js.map +1 -0
  143. package/dist/cli/services/model-router.js +115 -85
  144. package/dist/cli/services/model-router.js.map +1 -0
  145. package/dist/cli/services/paths.d.ts +30 -0
  146. package/dist/cli/services/paths.js +81 -0
  147. package/dist/cli/services/paths.js.map +1 -0
  148. package/dist/cli/services/permission-modes.js +32 -25
  149. package/dist/cli/services/permission-modes.js.map +1 -0
  150. package/dist/cli/services/rewind.js +182 -168
  151. package/dist/cli/services/rewind.js.map +1 -0
  152. package/dist/cli/services/ripgrep.js +115 -115
  153. package/dist/cli/services/ripgrep.js.map +1 -0
  154. package/dist/cli/services/sandbox.d.ts +1 -1
  155. package/dist/cli/services/sandbox.js +58 -37
  156. package/dist/cli/services/sandbox.js.map +1 -0
  157. package/dist/cli/services/server-tools.js +738 -565
  158. package/dist/cli/services/server-tools.js.map +1 -0
  159. package/dist/cli/services/session-persistence.js +69 -74
  160. package/dist/cli/services/session-persistence.js.map +1 -0
  161. package/dist/cli/services/subagent-worker.js +42 -27
  162. package/dist/cli/services/subagent-worker.js.map +1 -0
  163. package/dist/cli/services/subagent.d.ts +2 -0
  164. package/dist/cli/services/subagent.js +605 -433
  165. package/dist/cli/services/subagent.js.map +1 -0
  166. package/dist/cli/services/system-prompt.js +86 -78
  167. package/dist/cli/services/system-prompt.js.map +1 -0
  168. package/dist/cli/services/task-decomposer.d.ts +1 -1
  169. package/dist/cli/services/task-decomposer.js +172 -139
  170. package/dist/cli/services/task-decomposer.js.map +1 -0
  171. package/dist/cli/services/team-lead.d.ts +2 -2
  172. package/dist/cli/services/team-lead.js +727 -529
  173. package/dist/cli/services/team-lead.js.map +1 -0
  174. package/dist/cli/services/team-state.js +319 -319
  175. package/dist/cli/services/team-state.js.map +1 -0
  176. package/dist/cli/services/teammate.d.ts +8 -2
  177. package/dist/cli/services/teammate.js +857 -569
  178. package/dist/cli/services/teammate.js.map +1 -0
  179. package/dist/cli/services/telemetry.d.ts +6 -1
  180. package/dist/cli/services/telemetry.js +180 -157
  181. package/dist/cli/services/telemetry.js.map +1 -0
  182. package/dist/cli/services/tools/agent-tools.d.ts +3 -3
  183. package/dist/cli/services/tools/agent-tools.js +480 -322
  184. package/dist/cli/services/tools/agent-tools.js.map +1 -0
  185. package/dist/cli/services/tools/file-ops.js +563 -450
  186. package/dist/cli/services/tools/file-ops.js.map +1 -0
  187. package/dist/cli/services/tools/search-tools.js +231 -162
  188. package/dist/cli/services/tools/search-tools.js.map +1 -0
  189. package/dist/cli/services/tools/shell-exec.js +197 -151
  190. package/dist/cli/services/tools/shell-exec.js.map +1 -0
  191. package/dist/cli/services/tools/task-manager.js +206 -173
  192. package/dist/cli/services/tools/task-manager.js.map +1 -0
  193. package/dist/cli/services/tools/web-tools.js +388 -341
  194. package/dist/cli/services/tools/web-tools.js.map +1 -0
  195. package/dist/cli/setup/SetupApp.d.ts +2 -2
  196. package/dist/cli/setup/SetupApp.js +608 -160
  197. package/dist/cli/setup/SetupApp.js.map +1 -0
  198. package/dist/cli/shared/ErrorBoundary.d.ts +22 -0
  199. package/dist/cli/shared/ErrorBoundary.js +73 -0
  200. package/dist/cli/shared/ErrorBoundary.js.map +1 -0
  201. package/dist/cli/shared/MatrixIntro.js +66 -69
  202. package/dist/cli/shared/MatrixIntro.js.map +1 -0
  203. package/dist/cli/shared/SpinnerSlot.d.ts +14 -0
  204. package/dist/cli/shared/SpinnerSlot.js +63 -0
  205. package/dist/cli/shared/SpinnerSlot.js.map +1 -0
  206. package/dist/cli/shared/Theme.d.ts +1 -1
  207. package/dist/cli/shared/Theme.js +136 -92
  208. package/dist/cli/shared/Theme.js.map +1 -0
  209. package/dist/cli/shared/WhaleBanner.js +99 -11
  210. package/dist/cli/shared/WhaleBanner.js.map +1 -0
  211. package/dist/cli/shared/markdown.d.ts +3 -1
  212. package/dist/cli/shared/markdown.js +736 -674
  213. package/dist/cli/shared/markdown.js.map +1 -0
  214. package/dist/cli/shared/marked-terminal.d.js +2 -0
  215. package/dist/cli/shared/marked-terminal.d.js.map +1 -0
  216. package/dist/cli/shared/theme-manager.js +99 -90
  217. package/dist/cli/shared/theme-manager.js.map +1 -0
  218. package/dist/cli/shared/theme-presets.js +256 -254
  219. package/dist/cli/shared/theme-presets.js.map +1 -0
  220. package/dist/cli/status/StatusApp.js +235 -86
  221. package/dist/cli/status/StatusApp.js.map +1 -0
  222. package/dist/cli/stores/StoreApp.js +275 -65
  223. package/dist/cli/stores/StoreApp.js.map +1 -0
  224. package/dist/index.d.ts +2 -2
  225. package/dist/index.js +509 -396
  226. package/dist/index.js.map +1 -0
  227. package/dist/local-agent/connection.d.ts +2 -2
  228. package/dist/local-agent/connection.js +352 -293
  229. package/dist/local-agent/connection.js.map +1 -0
  230. package/dist/local-agent/discovery.js +259 -122
  231. package/dist/local-agent/discovery.js.map +1 -0
  232. package/dist/local-agent/executor.js +216 -193
  233. package/dist/local-agent/executor.js.map +1 -0
  234. package/dist/local-agent/index.d.ts +2 -2
  235. package/dist/local-agent/index.js +156 -156
  236. package/dist/local-agent/index.js.map +1 -0
  237. package/dist/node/adapters/base.js +18 -8
  238. package/dist/node/adapters/base.js.map +1 -0
  239. package/dist/node/adapters/discord.js +286 -275
  240. package/dist/node/adapters/discord.js.map +1 -0
  241. package/dist/node/adapters/email.js +189 -202
  242. package/dist/node/adapters/email.js.map +1 -0
  243. package/dist/node/adapters/imessage.js +145 -142
  244. package/dist/node/adapters/imessage.js.map +1 -0
  245. package/dist/node/adapters/slack.js +237 -236
  246. package/dist/node/adapters/slack.js.map +1 -0
  247. package/dist/node/adapters/sms.js +149 -151
  248. package/dist/node/adapters/sms.js.map +1 -0
  249. package/dist/node/adapters/telegram.js +88 -92
  250. package/dist/node/adapters/telegram.js.map +1 -0
  251. package/dist/node/adapters/webchat.js +160 -136
  252. package/dist/node/adapters/webchat.js.map +1 -0
  253. package/dist/node/adapters/whatsapp.js +212 -215
  254. package/dist/node/adapters/whatsapp.js.map +1 -0
  255. package/dist/node/cli.js +884 -653
  256. package/dist/node/cli.js.map +1 -0
  257. package/dist/node/config.js +20 -18
  258. package/dist/node/config.js.map +1 -0
  259. package/dist/node/gateway-client.js +191 -181
  260. package/dist/node/gateway-client.js.map +1 -0
  261. package/dist/node/portal/clipboard.js +161 -130
  262. package/dist/node/portal/clipboard.js.map +1 -0
  263. package/dist/node/portal/discovery.js +51 -45
  264. package/dist/node/portal/discovery.js.map +1 -0
  265. package/dist/node/portal/forward.js +64 -58
  266. package/dist/node/portal/forward.js.map +1 -0
  267. package/dist/node/portal/index.js +246 -221
  268. package/dist/node/portal/index.js.map +1 -0
  269. package/dist/node/portal/multiplexer.js +192 -182
  270. package/dist/node/portal/multiplexer.js.map +1 -0
  271. package/dist/node/portal/permissions.js +102 -70
  272. package/dist/node/portal/permissions.js.map +1 -0
  273. package/dist/node/portal/protocol.js +153 -116
  274. package/dist/node/portal/protocol.js.map +1 -0
  275. package/dist/node/portal/screen.js +80 -69
  276. package/dist/node/portal/screen.js.map +1 -0
  277. package/dist/node/portal/session.js +124 -117
  278. package/dist/node/portal/session.js.map +1 -0
  279. package/dist/node/portal/shell.js +140 -113
  280. package/dist/node/portal/shell.js.map +1 -0
  281. package/dist/node/portal/stream.js +77 -75
  282. package/dist/node/portal/stream.js.map +1 -0
  283. package/dist/node/portal/transfer.js +190 -167
  284. package/dist/node/portal/transfer.js.map +1 -0
  285. package/dist/node/portal/ui.js +124 -99
  286. package/dist/node/portal/ui.js.map +1 -0
  287. package/dist/node/remote-desktop/compile-helper.js +50 -45
  288. package/dist/node/remote-desktop/compile-helper.js.map +1 -0
  289. package/dist/node/remote-desktop/index.js +215 -187
  290. package/dist/node/remote-desktop/index.js.map +1 -0
  291. package/dist/node/remote-desktop/protocol.js +45 -29
  292. package/dist/node/remote-desktop/protocol.js.map +1 -0
  293. package/dist/node/runtime.js +493 -410
  294. package/dist/node/runtime.js.map +1 -0
  295. package/dist/server/handlers/__test-utils__/test-db.js +39 -89
  296. package/dist/server/handlers/__test-utils__/test-db.js.map +1 -0
  297. package/dist/server/handlers/analytics.js +467 -261
  298. package/dist/server/handlers/analytics.js.map +1 -0
  299. package/dist/server/handlers/api-docs.js +1030 -895
  300. package/dist/server/handlers/api-docs.js.map +1 -0
  301. package/dist/server/handlers/api-keys.js +291 -242
  302. package/dist/server/handlers/api-keys.js.map +1 -0
  303. package/dist/server/handlers/billing.js +330 -239
  304. package/dist/server/handlers/billing.js.map +1 -0
  305. package/dist/server/handlers/browser.js +468 -395
  306. package/dist/server/handlers/browser.js.map +1 -0
  307. package/dist/server/handlers/catalog.js +1377 -978
  308. package/dist/server/handlers/catalog.js.map +1 -0
  309. package/dist/server/handlers/clickhouse.js +157 -109
  310. package/dist/server/handlers/clickhouse.js.map +1 -0
  311. package/dist/server/handlers/comms.js +1439 -984
  312. package/dist/server/handlers/comms.js.map +1 -0
  313. package/dist/server/handlers/creations.js +461 -394
  314. package/dist/server/handlers/creations.js.map +1 -0
  315. package/dist/server/handlers/crm.js +1082 -791
  316. package/dist/server/handlers/crm.js.map +1 -0
  317. package/dist/server/handlers/discovery.js +251 -232
  318. package/dist/server/handlers/discovery.js.map +1 -0
  319. package/dist/server/handlers/embeddings.js +241 -164
  320. package/dist/server/handlers/embeddings.js.map +1 -0
  321. package/dist/server/handlers/enrichment.js +887 -718
  322. package/dist/server/handlers/enrichment.js.map +1 -0
  323. package/dist/server/handlers/image-gen.js +467 -376
  324. package/dist/server/handlers/image-gen.js.map +1 -0
  325. package/dist/server/handlers/inventory.js +797 -424
  326. package/dist/server/handlers/inventory.js.map +1 -0
  327. package/dist/server/handlers/kali.js +272 -230
  328. package/dist/server/handlers/kali.js.map +1 -0
  329. package/dist/server/handlers/llm-providers.js +803 -580
  330. package/dist/server/handlers/llm-providers.js.map +1 -0
  331. package/dist/server/handlers/local-agent.js +133 -105
  332. package/dist/server/handlers/local-agent.js.map +1 -0
  333. package/dist/server/handlers/media.js +1179 -857
  334. package/dist/server/handlers/media.js.map +1 -0
  335. package/dist/server/handlers/meta-ads.js +2669 -2093
  336. package/dist/server/handlers/meta-ads.js.map +1 -0
  337. package/dist/server/handlers/nodes.js +1321 -913
  338. package/dist/server/handlers/nodes.js.map +1 -0
  339. package/dist/server/handlers/operations.js +183 -157
  340. package/dist/server/handlers/operations.js.map +1 -0
  341. package/dist/server/handlers/platform.js +346 -210
  342. package/dist/server/handlers/platform.js.map +1 -0
  343. package/dist/server/handlers/remove-bg.js +118 -86
  344. package/dist/server/handlers/remove-bg.js.map +1 -0
  345. package/dist/server/handlers/storefront.js +586 -446
  346. package/dist/server/handlers/storefront.js.map +1 -0
  347. package/dist/server/handlers/supply-chain.js +546 -326
  348. package/dist/server/handlers/supply-chain.js.map +1 -0
  349. package/dist/server/handlers/transcription.js +106 -97
  350. package/dist/server/handlers/transcription.js.map +1 -0
  351. package/dist/server/handlers/video-gen.js +593 -424
  352. package/dist/server/handlers/video-gen.js.map +1 -0
  353. package/dist/server/handlers/voice.js +1458 -1039
  354. package/dist/server/handlers/voice.js.map +1 -0
  355. package/dist/server/handlers/workflow-steps.js +2837 -2116
  356. package/dist/server/handlers/workflow-steps.js.map +1 -0
  357. package/dist/server/handlers/workflows.js +1630 -933
  358. package/dist/server/handlers/workflows.js.map +1 -0
  359. package/dist/server/index.js +3167 -2422
  360. package/dist/server/index.js.map +1 -0
  361. package/dist/server/lib/batch-client.js +471 -409
  362. package/dist/server/lib/batch-client.js.map +1 -0
  363. package/dist/server/lib/clickhouse-buffer.js +118 -104
  364. package/dist/server/lib/clickhouse-buffer.js.map +1 -0
  365. package/dist/server/lib/clickhouse-client.js +107 -107
  366. package/dist/server/lib/clickhouse-client.js.map +1 -0
  367. package/dist/server/lib/coa-renderer.js +1786 -356
  368. package/dist/server/lib/coa-renderer.js.map +1 -0
  369. package/dist/server/lib/code-worker-pool.js +227 -177
  370. package/dist/server/lib/code-worker-pool.js.map +1 -0
  371. package/dist/server/lib/code-worker.js +174 -164
  372. package/dist/server/lib/code-worker.js.map +1 -0
  373. package/dist/server/lib/compaction-service.d.ts +2 -12
  374. package/dist/server/lib/compaction-service.js +74 -184
  375. package/dist/server/lib/compaction-service.js.map +1 -0
  376. package/dist/server/lib/logger.js +36 -24
  377. package/dist/server/lib/logger.js.map +1 -0
  378. package/dist/server/lib/otel.js +101 -80
  379. package/dist/server/lib/otel.js.map +1 -0
  380. package/dist/server/lib/pdf-renderer.js +952 -788
  381. package/dist/server/lib/pdf-renderer.js.map +1 -0
  382. package/dist/server/lib/prompt-sanitizer.js +188 -108
  383. package/dist/server/lib/prompt-sanitizer.js.map +1 -0
  384. package/dist/server/lib/provider-capabilities.js +136 -138
  385. package/dist/server/lib/provider-capabilities.js.map +1 -0
  386. package/dist/server/lib/provider-failover.js +190 -168
  387. package/dist/server/lib/provider-failover.js.map +1 -0
  388. package/dist/server/lib/rate-limiter.js +186 -117
  389. package/dist/server/lib/rate-limiter.js.map +1 -0
  390. package/dist/server/lib/react-pdf-layout.js +551 -382
  391. package/dist/server/lib/react-pdf-layout.js.map +1 -0
  392. package/dist/server/lib/server-agent-loop.d.ts +4 -1
  393. package/dist/server/lib/server-agent-loop.js +906 -634
  394. package/dist/server/lib/server-agent-loop.js.map +1 -0
  395. package/dist/server/lib/server-subagent.js +260 -164
  396. package/dist/server/lib/server-subagent.js.map +1 -0
  397. package/dist/server/lib/session-checkpoint.js +105 -96
  398. package/dist/server/lib/session-checkpoint.js.map +1 -0
  399. package/dist/server/lib/ssrf-guard.js +193 -184
  400. package/dist/server/lib/ssrf-guard.js.map +1 -0
  401. package/dist/server/lib/supabase-client.js +94 -82
  402. package/dist/server/lib/supabase-client.js.map +1 -0
  403. package/dist/server/lib/template-resolver.js +154 -176
  404. package/dist/server/lib/template-resolver.js.map +1 -0
  405. package/dist/server/lib/utils.js +242 -133
  406. package/dist/server/lib/utils.js.map +1 -0
  407. package/dist/server/local-agent-gateway.d.ts +2 -2
  408. package/dist/server/local-agent-gateway.js +785 -627
  409. package/dist/server/local-agent-gateway.js.map +1 -0
  410. package/dist/server/providers/anthropic.js +250 -172
  411. package/dist/server/providers/anthropic.js.map +1 -0
  412. package/dist/server/providers/bedrock.js +217 -158
  413. package/dist/server/providers/bedrock.js.map +1 -0
  414. package/dist/server/providers/gemini.js +548 -418
  415. package/dist/server/providers/gemini.js.map +1 -0
  416. package/dist/server/providers/openai.js +571 -437
  417. package/dist/server/providers/openai.js.map +1 -0
  418. package/dist/server/providers/registry.js +23 -18
  419. package/dist/server/providers/registry.js.map +1 -0
  420. package/dist/server/providers/shared.js +123 -95
  421. package/dist/server/providers/shared.js.map +1 -0
  422. package/dist/server/providers/types.js +1 -11
  423. package/dist/server/providers/types.js.map +1 -0
  424. package/dist/server/proxy-handlers.js +209 -165
  425. package/dist/server/proxy-handlers.js.map +1 -0
  426. package/dist/server/tool-router.js +959 -599
  427. package/dist/server/tool-router.js.map +1 -0
  428. package/dist/server/validation.js +248 -188
  429. package/dist/server/validation.js.map +1 -0
  430. package/dist/server/worker.js +202 -133
  431. package/dist/server/worker.js.map +1 -0
  432. package/dist/setup.d.ts +2 -2
  433. package/dist/setup.js +151 -147
  434. package/dist/setup.js.map +1 -0
  435. package/dist/shared/agent-core.d.ts +115 -26
  436. package/dist/shared/agent-core.js +956 -522
  437. package/dist/shared/agent-core.js.map +1 -0
  438. package/dist/shared/anthropic-types.js +1 -6
  439. package/dist/shared/anthropic-types.js.map +1 -0
  440. package/dist/shared/api-client.d.ts +16 -9
  441. package/dist/shared/api-client.js +419 -327
  442. package/dist/shared/api-client.js.map +1 -0
  443. package/dist/shared/compaction.d.ts +36 -0
  444. package/dist/shared/compaction.js +138 -0
  445. package/dist/shared/compaction.js.map +1 -0
  446. package/dist/shared/constants.js +67 -64
  447. package/dist/shared/constants.js.map +1 -0
  448. package/dist/shared/sse-parser.js +221 -219
  449. package/dist/shared/sse-parser.js.map +1 -0
  450. package/dist/shared/tool-dispatch.d.ts +4 -0
  451. package/dist/shared/tool-dispatch.js +226 -165
  452. package/dist/shared/tool-dispatch.js.map +1 -0
  453. package/dist/shared/types.js +1 -6
  454. package/dist/shared/types.js.map +1 -0
  455. package/dist/types/cli-highlight.d.js +2 -0
  456. package/dist/types/cli-highlight.d.js.map +1 -0
  457. package/dist/types/diff.d.js +2 -0
  458. package/dist/types/diff.d.js.map +1 -0
  459. package/dist/types/pdf-parse.d.js +2 -0
  460. package/dist/types/pdf-parse.d.js.map +1 -0
  461. package/dist/updater.d.ts +1 -1
  462. package/dist/updater.js +118 -92
  463. package/dist/updater.js.map +1 -0
  464. package/dist/webchat/widget.js +227 -380
  465. package/dist/webchat/widget.js.map +1 -0
  466. package/package.json +22 -10
  467. package/vendor/ink/build/ansi-tokenizer.d.ts +38 -0
  468. package/vendor/ink/build/ansi-tokenizer.js +316 -0
  469. package/vendor/ink/build/ansi-tokenizer.js.map +1 -0
  470. package/vendor/ink/build/apply-styles.js +175 -0
  471. package/vendor/ink/build/build-layout.js +77 -0
  472. package/vendor/ink/build/calculate-wrapped-text.js +53 -0
  473. package/vendor/ink/build/colorize.d.ts +3 -0
  474. package/vendor/ink/build/colorize.js +48 -0
  475. package/vendor/ink/build/colorize.js.map +1 -0
  476. package/vendor/ink/build/components/AccessibilityContext.d.ts +3 -0
  477. package/vendor/ink/build/components/AccessibilityContext.js +5 -0
  478. package/vendor/ink/build/components/AccessibilityContext.js.map +1 -0
  479. package/vendor/ink/build/components/App.d.ts +18 -0
  480. package/vendor/ink/build/components/App.js +351 -0
  481. package/vendor/ink/build/components/App.js.map +1 -0
  482. package/vendor/ink/build/components/AppContext.d.ts +15 -0
  483. package/vendor/ink/build/components/AppContext.js +11 -0
  484. package/vendor/ink/build/components/AppContext.js.map +1 -0
  485. package/vendor/ink/build/components/BackgroundContext.d.ts +4 -0
  486. package/vendor/ink/build/components/BackgroundContext.js +3 -0
  487. package/vendor/ink/build/components/BackgroundContext.js.map +1 -0
  488. package/vendor/ink/build/components/Box.d.ts +117 -0
  489. package/vendor/ink/build/components/Box.js +34 -0
  490. package/vendor/ink/build/components/Box.js.map +1 -0
  491. package/vendor/ink/build/components/Color.js +62 -0
  492. package/vendor/ink/build/components/Cursor.d.ts +83 -0
  493. package/vendor/ink/build/components/Cursor.js +53 -0
  494. package/vendor/ink/build/components/Cursor.js.map +1 -0
  495. package/vendor/ink/build/components/CursorContext.d.ts +11 -0
  496. package/vendor/ink/build/components/CursorContext.js +8 -0
  497. package/vendor/ink/build/components/CursorContext.js.map +1 -0
  498. package/vendor/ink/build/components/ErrorBoundary.d.ts +18 -0
  499. package/vendor/ink/build/components/ErrorBoundary.js +23 -0
  500. package/vendor/ink/build/components/ErrorBoundary.js.map +1 -0
  501. package/vendor/ink/build/components/ErrorOverview.d.ts +6 -0
  502. package/vendor/ink/build/components/ErrorOverview.js +84 -0
  503. package/vendor/ink/build/components/ErrorOverview.js.map +1 -0
  504. package/vendor/ink/build/components/FocusContext.d.ts +16 -0
  505. package/vendor/ink/build/components/FocusContext.js +17 -0
  506. package/vendor/ink/build/components/FocusContext.js.map +1 -0
  507. package/vendor/ink/build/components/Newline.d.ts +13 -0
  508. package/vendor/ink/build/components/Newline.js +8 -0
  509. package/vendor/ink/build/components/Newline.js.map +1 -0
  510. package/vendor/ink/build/components/Spacer.d.ts +7 -0
  511. package/vendor/ink/build/components/Spacer.js +11 -0
  512. package/vendor/ink/build/components/Spacer.js.map +1 -0
  513. package/vendor/ink/build/components/Static.d.ts +24 -0
  514. package/vendor/ink/build/components/Static.js +28 -0
  515. package/vendor/ink/build/components/Static.js.map +1 -0
  516. package/vendor/ink/build/components/StderrContext.d.ts +15 -0
  517. package/vendor/ink/build/components/StderrContext.js +13 -0
  518. package/vendor/ink/build/components/StderrContext.js.map +1 -0
  519. package/vendor/ink/build/components/StdinContext.d.ts +22 -0
  520. package/vendor/ink/build/components/StdinContext.js +19 -0
  521. package/vendor/ink/build/components/StdinContext.js.map +1 -0
  522. package/vendor/ink/build/components/StdoutContext.d.ts +15 -0
  523. package/vendor/ink/build/components/StdoutContext.js +13 -0
  524. package/vendor/ink/build/components/StdoutContext.js.map +1 -0
  525. package/vendor/ink/build/components/Text.d.ts +55 -0
  526. package/vendor/ink/build/components/Text.js +50 -0
  527. package/vendor/ink/build/components/Text.js.map +1 -0
  528. package/vendor/ink/build/components/Transform.d.ts +16 -0
  529. package/vendor/ink/build/components/Transform.js +15 -0
  530. package/vendor/ink/build/components/Transform.js.map +1 -0
  531. package/vendor/ink/build/cursor-helpers.d.ts +38 -0
  532. package/vendor/ink/build/cursor-helpers.js +56 -0
  533. package/vendor/ink/build/cursor-helpers.js.map +1 -0
  534. package/vendor/ink/build/devtools-window-polyfill.d.ts +1 -0
  535. package/vendor/ink/build/devtools-window-polyfill.js +65 -0
  536. package/vendor/ink/build/devtools-window-polyfill.js.map +1 -0
  537. package/vendor/ink/build/devtools.d.ts +1 -0
  538. package/vendor/ink/build/devtools.js +11 -0
  539. package/vendor/ink/build/devtools.js.map +1 -0
  540. package/vendor/ink/build/dom.d.ts +56 -0
  541. package/vendor/ink/build/dom.js +124 -0
  542. package/vendor/ink/build/dom.js.map +1 -0
  543. package/vendor/ink/build/experimental/apply-style.js +140 -0
  544. package/vendor/ink/build/experimental/dom.js +123 -0
  545. package/vendor/ink/build/experimental/output.js +91 -0
  546. package/vendor/ink/build/experimental/reconciler.js +141 -0
  547. package/vendor/ink/build/experimental/renderer.js +81 -0
  548. package/vendor/ink/build/get-max-width.d.ts +3 -0
  549. package/vendor/ink/build/get-max-width.js +10 -0
  550. package/vendor/ink/build/get-max-width.js.map +1 -0
  551. package/vendor/ink/build/hooks/use-app.d.ts +5 -0
  552. package/vendor/ink/build/hooks/use-app.js +8 -0
  553. package/vendor/ink/build/hooks/use-app.js.map +1 -0
  554. package/vendor/ink/build/hooks/use-cursor.d.ts +12 -0
  555. package/vendor/ink/build/hooks/use-cursor.js +29 -0
  556. package/vendor/ink/build/hooks/use-cursor.js.map +1 -0
  557. package/vendor/ink/build/hooks/use-focus-manager.d.ts +28 -0
  558. package/vendor/ink/build/hooks/use-focus-manager.js +17 -0
  559. package/vendor/ink/build/hooks/use-focus-manager.js.map +1 -0
  560. package/vendor/ink/build/hooks/use-focus.d.ts +29 -0
  561. package/vendor/ink/build/hooks/use-focus.js +42 -0
  562. package/vendor/ink/build/hooks/use-focus.js.map +1 -0
  563. package/vendor/ink/build/hooks/use-input.d.ts +131 -0
  564. package/vendor/ink/build/hooks/use-input.js +124 -0
  565. package/vendor/ink/build/hooks/use-input.js.map +1 -0
  566. package/vendor/ink/build/hooks/use-is-screen-reader-enabled.d.ts +5 -0
  567. package/vendor/ink/build/hooks/use-is-screen-reader-enabled.js +11 -0
  568. package/vendor/ink/build/hooks/use-is-screen-reader-enabled.js.map +1 -0
  569. package/vendor/ink/build/hooks/use-stderr.d.ts +5 -0
  570. package/vendor/ink/build/hooks/use-stderr.js +8 -0
  571. package/vendor/ink/build/hooks/use-stderr.js.map +1 -0
  572. package/vendor/ink/build/hooks/use-stdin.d.ts +5 -0
  573. package/vendor/ink/build/hooks/use-stdin.js +8 -0
  574. package/vendor/ink/build/hooks/use-stdin.js.map +1 -0
  575. package/vendor/ink/build/hooks/use-stdout.d.ts +5 -0
  576. package/vendor/ink/build/hooks/use-stdout.js +8 -0
  577. package/vendor/ink/build/hooks/use-stdout.js.map +1 -0
  578. package/vendor/ink/build/hooks/useInput.js +38 -0
  579. package/vendor/ink/build/index.d.ts +34 -0
  580. package/vendor/ink/build/index.js +20 -0
  581. package/vendor/ink/build/index.js.map +1 -0
  582. package/vendor/ink/build/ink.d.ts +90 -0
  583. package/vendor/ink/build/ink.js +654 -0
  584. package/vendor/ink/build/ink.js.map +1 -0
  585. package/vendor/ink/build/input-parser.d.ts +7 -0
  586. package/vendor/ink/build/input-parser.js +154 -0
  587. package/vendor/ink/build/input-parser.js.map +1 -0
  588. package/vendor/ink/build/instance.js +205 -0
  589. package/vendor/ink/build/instances.d.ts +3 -0
  590. package/vendor/ink/build/instances.js +8 -0
  591. package/vendor/ink/build/instances.js.map +1 -0
  592. package/vendor/ink/build/kitty-keyboard.d.ts +23 -0
  593. package/vendor/ink/build/kitty-keyboard.js +32 -0
  594. package/vendor/ink/build/kitty-keyboard.js.map +1 -0
  595. package/vendor/ink/build/layout.d.ts +7 -0
  596. package/vendor/ink/build/layout.js +33 -0
  597. package/vendor/ink/build/layout.js.map +1 -0
  598. package/vendor/ink/build/log-update.d.ts +19 -0
  599. package/vendor/ink/build/log-update.js +243 -0
  600. package/vendor/ink/build/log-update.js.map +1 -0
  601. package/vendor/ink/build/measure-element.d.ts +16 -0
  602. package/vendor/ink/build/measure-element.js +9 -0
  603. package/vendor/ink/build/measure-element.js.map +1 -0
  604. package/vendor/ink/build/measure-text.d.ts +6 -0
  605. package/vendor/ink/build/measure-text.js +21 -0
  606. package/vendor/ink/build/measure-text.js.map +1 -0
  607. package/vendor/ink/build/options.d.ts +52 -0
  608. package/vendor/ink/build/options.js +2 -0
  609. package/vendor/ink/build/options.js.map +1 -0
  610. package/vendor/ink/build/output.d.ts +35 -0
  611. package/vendor/ink/build/output.js +183 -0
  612. package/vendor/ink/build/output.js.map +1 -0
  613. package/vendor/ink/build/parse-keypress.d.ts +22 -0
  614. package/vendor/ink/build/parse-keypress.js +493 -0
  615. package/vendor/ink/build/parse-keypress.js.map +1 -0
  616. package/vendor/ink/build/reconciler.d.ts +4 -0
  617. package/vendor/ink/build/reconciler.js +274 -0
  618. package/vendor/ink/build/reconciler.js.map +1 -0
  619. package/vendor/ink/build/render-background.d.ts +4 -0
  620. package/vendor/ink/build/render-background.js +25 -0
  621. package/vendor/ink/build/render-background.js.map +1 -0
  622. package/vendor/ink/build/render-border.d.ts +4 -0
  623. package/vendor/ink/build/render-border.js +73 -0
  624. package/vendor/ink/build/render-border.js.map +1 -0
  625. package/vendor/ink/build/render-node-to-output.d.ts +14 -0
  626. package/vendor/ink/build/render-node-to-output.js +147 -0
  627. package/vendor/ink/build/render-node-to-output.js.map +1 -0
  628. package/vendor/ink/build/render-to-string.d.ts +38 -0
  629. package/vendor/ink/build/render-to-string.js +115 -0
  630. package/vendor/ink/build/render-to-string.js.map +1 -0
  631. package/vendor/ink/build/render.d.ts +121 -0
  632. package/vendor/ink/build/render.js +55 -0
  633. package/vendor/ink/build/render.js.map +1 -0
  634. package/vendor/ink/build/renderer.d.ts +8 -0
  635. package/vendor/ink/build/renderer.js +55 -0
  636. package/vendor/ink/build/renderer.js.map +1 -0
  637. package/vendor/ink/build/sanitize-ansi.d.ts +2 -0
  638. package/vendor/ink/build/sanitize-ansi.js +27 -0
  639. package/vendor/ink/build/sanitize-ansi.js.map +1 -0
  640. package/vendor/ink/build/screen-reader-update.d.ts +13 -0
  641. package/vendor/ink/build/screen-reader-update.js +38 -0
  642. package/vendor/ink/build/screen-reader-update.js.map +1 -0
  643. package/vendor/ink/build/squash-text-nodes.d.ts +3 -0
  644. package/vendor/ink/build/squash-text-nodes.js +36 -0
  645. package/vendor/ink/build/squash-text-nodes.js.map +1 -0
  646. package/vendor/ink/build/styles.d.ts +240 -0
  647. package/vendor/ink/build/styles.js +232 -0
  648. package/vendor/ink/build/styles.js.map +1 -0
  649. package/vendor/ink/build/utils.d.ts +2 -0
  650. package/vendor/ink/build/utils.js +4 -0
  651. package/vendor/ink/build/utils.js.map +1 -0
  652. package/vendor/ink/build/wrap-text.d.ts +3 -0
  653. package/vendor/ink/build/wrap-text.js +31 -0
  654. package/vendor/ink/build/wrap-text.js.map +1 -0
  655. package/vendor/ink/build/write-synchronized.d.ts +4 -0
  656. package/vendor/ink/build/write-synchronized.js +7 -0
  657. package/vendor/ink/build/write-synchronized.js.map +1 -0
  658. package/vendor/ink/license +10 -0
  659. package/vendor/ink/node_modules/@types/node/LICENSE +21 -0
  660. package/vendor/ink/node_modules/@types/node/README.md +15 -0
  661. package/vendor/ink/node_modules/@types/node/assert/strict.d.ts +105 -0
  662. package/vendor/ink/node_modules/@types/node/assert.d.ts +955 -0
  663. package/vendor/ink/node_modules/@types/node/async_hooks.d.ts +623 -0
  664. package/vendor/ink/node_modules/@types/node/buffer.buffer.d.ts +466 -0
  665. package/vendor/ink/node_modules/@types/node/buffer.d.ts +1810 -0
  666. package/vendor/ink/node_modules/@types/node/child_process.d.ts +1428 -0
  667. package/vendor/ink/node_modules/@types/node/cluster.d.ts +486 -0
  668. package/vendor/ink/node_modules/@types/node/compatibility/iterators.d.ts +21 -0
  669. package/vendor/ink/node_modules/@types/node/console.d.ts +151 -0
  670. package/vendor/ink/node_modules/@types/node/constants.d.ts +20 -0
  671. package/vendor/ink/node_modules/@types/node/crypto.d.ts +4065 -0
  672. package/vendor/ink/node_modules/@types/node/dgram.d.ts +564 -0
  673. package/vendor/ink/node_modules/@types/node/diagnostics_channel.d.ts +576 -0
  674. package/vendor/ink/node_modules/@types/node/dns/promises.d.ts +503 -0
  675. package/vendor/ink/node_modules/@types/node/dns.d.ts +922 -0
  676. package/vendor/ink/node_modules/@types/node/domain.d.ts +166 -0
  677. package/vendor/ink/node_modules/@types/node/events.d.ts +1054 -0
  678. package/vendor/ink/node_modules/@types/node/fs/promises.d.ts +1329 -0
  679. package/vendor/ink/node_modules/@types/node/fs.d.ts +4676 -0
  680. package/vendor/ink/node_modules/@types/node/globals.d.ts +150 -0
  681. package/vendor/ink/node_modules/@types/node/globals.typedarray.d.ts +101 -0
  682. package/vendor/ink/node_modules/@types/node/http.d.ts +2167 -0
  683. package/vendor/ink/node_modules/@types/node/http2.d.ts +2480 -0
  684. package/vendor/ink/node_modules/@types/node/https.d.ts +405 -0
  685. package/vendor/ink/node_modules/@types/node/index.d.ts +115 -0
  686. package/vendor/ink/node_modules/@types/node/inspector/promises.d.ts +41 -0
  687. package/vendor/ink/node_modules/@types/node/inspector.d.ts +224 -0
  688. package/vendor/ink/node_modules/@types/node/inspector.generated.d.ts +4226 -0
  689. package/vendor/ink/node_modules/@types/node/module.d.ts +819 -0
  690. package/vendor/ink/node_modules/@types/node/net.d.ts +933 -0
  691. package/vendor/ink/node_modules/@types/node/os.d.ts +507 -0
  692. package/vendor/ink/node_modules/@types/node/package.json +155 -0
  693. package/vendor/ink/node_modules/@types/node/path/posix.d.ts +8 -0
  694. package/vendor/ink/node_modules/@types/node/path/win32.d.ts +8 -0
  695. package/vendor/ink/node_modules/@types/node/path.d.ts +187 -0
  696. package/vendor/ink/node_modules/@types/node/perf_hooks.d.ts +643 -0
  697. package/vendor/ink/node_modules/@types/node/process.d.ts +2156 -0
  698. package/vendor/ink/node_modules/@types/node/punycode.d.ts +117 -0
  699. package/vendor/ink/node_modules/@types/node/querystring.d.ts +152 -0
  700. package/vendor/ink/node_modules/@types/node/quic.d.ts +910 -0
  701. package/vendor/ink/node_modules/@types/node/readline/promises.d.ts +161 -0
  702. package/vendor/ink/node_modules/@types/node/readline.d.ts +541 -0
  703. package/vendor/ink/node_modules/@types/node/repl.d.ts +415 -0
  704. package/vendor/ink/node_modules/@types/node/sea.d.ts +162 -0
  705. package/vendor/ink/node_modules/@types/node/sqlite.d.ts +955 -0
  706. package/vendor/ink/node_modules/@types/node/stream/consumers.d.ts +38 -0
  707. package/vendor/ink/node_modules/@types/node/stream/promises.d.ts +211 -0
  708. package/vendor/ink/node_modules/@types/node/stream/web.d.ts +296 -0
  709. package/vendor/ink/node_modules/@types/node/stream.d.ts +1760 -0
  710. package/vendor/ink/node_modules/@types/node/string_decoder.d.ts +67 -0
  711. package/vendor/ink/node_modules/@types/node/test/reporters.d.ts +96 -0
  712. package/vendor/ink/node_modules/@types/node/test.d.ts +2240 -0
  713. package/vendor/ink/node_modules/@types/node/timers/promises.d.ts +108 -0
  714. package/vendor/ink/node_modules/@types/node/timers.d.ts +159 -0
  715. package/vendor/ink/node_modules/@types/node/tls.d.ts +1198 -0
  716. package/vendor/ink/node_modules/@types/node/trace_events.d.ts +197 -0
  717. package/vendor/ink/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +462 -0
  718. package/vendor/ink/node_modules/@types/node/ts5.6/compatibility/float16array.d.ts +71 -0
  719. package/vendor/ink/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +36 -0
  720. package/vendor/ink/node_modules/@types/node/ts5.6/index.d.ts +117 -0
  721. package/vendor/ink/node_modules/@types/node/ts5.7/compatibility/float16array.d.ts +72 -0
  722. package/vendor/ink/node_modules/@types/node/ts5.7/index.d.ts +117 -0
  723. package/vendor/ink/node_modules/@types/node/tty.d.ts +250 -0
  724. package/vendor/ink/node_modules/@types/node/url.d.ts +519 -0
  725. package/vendor/ink/node_modules/@types/node/util/types.d.ts +558 -0
  726. package/vendor/ink/node_modules/@types/node/util.d.ts +1662 -0
  727. package/vendor/ink/node_modules/@types/node/v8.d.ts +983 -0
  728. package/vendor/ink/node_modules/@types/node/vm.d.ts +1208 -0
  729. package/vendor/ink/node_modules/@types/node/wasi.d.ts +202 -0
  730. package/vendor/ink/node_modules/@types/node/web-globals/abortcontroller.d.ts +59 -0
  731. package/vendor/ink/node_modules/@types/node/web-globals/blob.d.ts +23 -0
  732. package/vendor/ink/node_modules/@types/node/web-globals/console.d.ts +9 -0
  733. package/vendor/ink/node_modules/@types/node/web-globals/crypto.d.ts +39 -0
  734. package/vendor/ink/node_modules/@types/node/web-globals/domexception.d.ts +68 -0
  735. package/vendor/ink/node_modules/@types/node/web-globals/encoding.d.ts +11 -0
  736. package/vendor/ink/node_modules/@types/node/web-globals/events.d.ts +106 -0
  737. package/vendor/ink/node_modules/@types/node/web-globals/fetch.d.ts +69 -0
  738. package/vendor/ink/node_modules/@types/node/web-globals/importmeta.d.ts +13 -0
  739. package/vendor/ink/node_modules/@types/node/web-globals/messaging.d.ts +23 -0
  740. package/vendor/ink/node_modules/@types/node/web-globals/navigator.d.ts +25 -0
  741. package/vendor/ink/node_modules/@types/node/web-globals/performance.d.ts +45 -0
  742. package/vendor/ink/node_modules/@types/node/web-globals/storage.d.ts +24 -0
  743. package/vendor/ink/node_modules/@types/node/web-globals/streams.d.ts +115 -0
  744. package/vendor/ink/node_modules/@types/node/web-globals/timers.d.ts +44 -0
  745. package/vendor/ink/node_modules/@types/node/web-globals/url.d.ts +24 -0
  746. package/vendor/ink/node_modules/@types/node/worker_threads.d.ts +717 -0
  747. package/vendor/ink/node_modules/@types/node/zlib.d.ts +618 -0
  748. package/vendor/ink/node_modules/node-pty/LICENSE +69 -0
  749. package/vendor/ink/node_modules/node-pty/README.md +164 -0
  750. package/vendor/ink/node_modules/node-pty/binding.gyp +150 -0
  751. package/vendor/ink/node_modules/node-pty/lib/conpty_console_list_agent.js +25 -0
  752. package/vendor/ink/node_modules/node-pty/lib/eventEmitter2.js +47 -0
  753. package/vendor/ink/node_modules/node-pty/lib/index.js +52 -0
  754. package/vendor/ink/node_modules/node-pty/lib/interfaces.js +7 -0
  755. package/vendor/ink/node_modules/node-pty/lib/shared/conout.js +11 -0
  756. package/vendor/ink/node_modules/node-pty/lib/terminal.js +190 -0
  757. package/vendor/ink/node_modules/node-pty/lib/types.js +7 -0
  758. package/vendor/ink/node_modules/node-pty/lib/unixTerminal.js +349 -0
  759. package/vendor/ink/node_modules/node-pty/lib/utils.js +39 -0
  760. package/vendor/ink/node_modules/node-pty/lib/windowsConoutConnection.js +125 -0
  761. package/vendor/ink/node_modules/node-pty/lib/windowsPtyAgent.js +287 -0
  762. package/vendor/ink/node_modules/node-pty/lib/windowsTerminal.js +201 -0
  763. package/vendor/ink/node_modules/node-pty/lib/worker/conoutSocketWorker.js +22 -0
  764. package/vendor/ink/node_modules/node-pty/package.json +65 -0
  765. package/vendor/ink/node_modules/node-pty/prebuilds/darwin-arm64/pty.node +0 -0
  766. package/vendor/ink/node_modules/node-pty/prebuilds/darwin-arm64/spawn-helper +0 -0
  767. package/vendor/ink/node_modules/node-pty/prebuilds/darwin-x64/pty.node +0 -0
  768. package/vendor/ink/node_modules/node-pty/prebuilds/darwin-x64/spawn-helper +0 -0
  769. package/vendor/ink/node_modules/node-pty/prebuilds/linux-arm64/pty.node +0 -0
  770. package/vendor/ink/node_modules/node-pty/prebuilds/linux-x64/pty.node +0 -0
  771. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty/OpenConsole.exe +0 -0
  772. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty/conpty.dll +0 -0
  773. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty.node +0 -0
  774. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty.pdb +0 -0
  775. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty_console_list.node +0 -0
  776. package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty_console_list.pdb +0 -0
  777. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty/OpenConsole.exe +0 -0
  778. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty/conpty.dll +0 -0
  779. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty.node +0 -0
  780. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty.pdb +0 -0
  781. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty_console_list.node +0 -0
  782. package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty_console_list.pdb +0 -0
  783. package/vendor/ink/node_modules/node-pty/scripts/post-install.js +76 -0
  784. package/vendor/ink/node_modules/node-pty/scripts/prebuild.js +34 -0
  785. package/vendor/ink/node_modules/node-pty/src/unix/pty.cc +875 -0
  786. package/vendor/ink/node_modules/node-pty/src/unix/spawn-helper.cc +23 -0
  787. package/vendor/ink/node_modules/node-pty/src/win/conpty.cc +582 -0
  788. package/vendor/ink/node_modules/node-pty/src/win/conpty.h +41 -0
  789. package/vendor/ink/node_modules/node-pty/src/win/conpty_console_list.cc +44 -0
  790. package/vendor/ink/node_modules/node-pty/src/win/path_util.cc +95 -0
  791. package/vendor/ink/node_modules/node-pty/src/win/path_util.h +26 -0
  792. package/vendor/ink/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-arm64/OpenConsole.exe +0 -0
  793. package/vendor/ink/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-arm64/conpty.dll +0 -0
  794. package/vendor/ink/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-x64/OpenConsole.exe +0 -0
  795. package/vendor/ink/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-x64/conpty.dll +0 -0
  796. package/vendor/ink/node_modules/node-pty/typings/node-pty.d.ts +215 -0
  797. package/vendor/ink/node_modules/undici-types/LICENSE +21 -0
  798. package/vendor/ink/node_modules/undici-types/README.md +6 -0
  799. package/vendor/ink/node_modules/undici-types/agent.d.ts +32 -0
  800. package/vendor/ink/node_modules/undici-types/api.d.ts +43 -0
  801. package/vendor/ink/node_modules/undici-types/balanced-pool.d.ts +30 -0
  802. package/vendor/ink/node_modules/undici-types/cache-interceptor.d.ts +173 -0
  803. package/vendor/ink/node_modules/undici-types/cache.d.ts +36 -0
  804. package/vendor/ink/node_modules/undici-types/client-stats.d.ts +15 -0
  805. package/vendor/ink/node_modules/undici-types/client.d.ts +108 -0
  806. package/vendor/ink/node_modules/undici-types/connector.d.ts +34 -0
  807. package/vendor/ink/node_modules/undici-types/content-type.d.ts +21 -0
  808. package/vendor/ink/node_modules/undici-types/cookies.d.ts +30 -0
  809. package/vendor/ink/node_modules/undici-types/diagnostics-channel.d.ts +74 -0
  810. package/vendor/ink/node_modules/undici-types/dispatcher.d.ts +276 -0
  811. package/vendor/ink/node_modules/undici-types/env-http-proxy-agent.d.ts +22 -0
  812. package/vendor/ink/node_modules/undici-types/errors.d.ts +161 -0
  813. package/vendor/ink/node_modules/undici-types/eventsource.d.ts +66 -0
  814. package/vendor/ink/node_modules/undici-types/fetch.d.ts +211 -0
  815. package/vendor/ink/node_modules/undici-types/formdata.d.ts +108 -0
  816. package/vendor/ink/node_modules/undici-types/global-dispatcher.d.ts +9 -0
  817. package/vendor/ink/node_modules/undici-types/global-origin.d.ts +7 -0
  818. package/vendor/ink/node_modules/undici-types/h2c-client.d.ts +73 -0
  819. package/vendor/ink/node_modules/undici-types/handlers.d.ts +15 -0
  820. package/vendor/ink/node_modules/undici-types/header.d.ts +160 -0
  821. package/vendor/ink/node_modules/undici-types/index.d.ts +88 -0
  822. package/vendor/ink/node_modules/undici-types/interceptors.d.ts +73 -0
  823. package/vendor/ink/node_modules/undici-types/mock-agent.d.ts +68 -0
  824. package/vendor/ink/node_modules/undici-types/mock-call-history.d.ts +111 -0
  825. package/vendor/ink/node_modules/undici-types/mock-client.d.ts +27 -0
  826. package/vendor/ink/node_modules/undici-types/mock-errors.d.ts +12 -0
  827. package/vendor/ink/node_modules/undici-types/mock-interceptor.d.ts +94 -0
  828. package/vendor/ink/node_modules/undici-types/mock-pool.d.ts +27 -0
  829. package/vendor/ink/node_modules/undici-types/package.json +55 -0
  830. package/vendor/ink/node_modules/undici-types/patch.d.ts +29 -0
  831. package/vendor/ink/node_modules/undici-types/pool-stats.d.ts +19 -0
  832. package/vendor/ink/node_modules/undici-types/pool.d.ts +41 -0
  833. package/vendor/ink/node_modules/undici-types/proxy-agent.d.ts +29 -0
  834. package/vendor/ink/node_modules/undici-types/readable.d.ts +68 -0
  835. package/vendor/ink/node_modules/undici-types/retry-agent.d.ts +8 -0
  836. package/vendor/ink/node_modules/undici-types/retry-handler.d.ts +125 -0
  837. package/vendor/ink/node_modules/undici-types/round-robin-pool.d.ts +41 -0
  838. package/vendor/ink/node_modules/undici-types/snapshot-agent.d.ts +109 -0
  839. package/vendor/ink/node_modules/undici-types/util.d.ts +18 -0
  840. package/vendor/ink/node_modules/undici-types/utility.d.ts +7 -0
  841. package/vendor/ink/node_modules/undici-types/webidl.d.ts +341 -0
  842. package/vendor/ink/node_modules/undici-types/websocket.d.ts +186 -0
  843. package/vendor/ink/package.json +201 -0
  844. package/vendor/ink/readme.md +2636 -0
  845. package/bin/swag-agent.js +0 -9
  846. package/dist/server/lib/pg-rate-limiter.d.ts +0 -21
  847. package/dist/server/lib/pg-rate-limiter.js +0 -86
@@ -0,0 +1 @@
1
+ {"version":3,"file":"voice.js","names":["ELEVENLABS_BASE","DEFAULT_VOICE_ID","DEFAULT_TTS_MODEL","DEFAULT_STS_MODEL","DEFAULT_MUSIC_MODEL","DEFAULT_SFX_MODEL","DEFAULT_TTV_MODEL","DEFAULT_STT_MODEL","MAX_RETRIES","RETRY_DELAY_MS","VOICE_CACHE_TTL","KEY_CACHE_TTL","keyCache","Map","getElevenLabsKey","sb","storeId","cached","get","Date","now","fetchedAt","key","data","error","rpc","p_name","p_store_id","set","size","oldestKey","oldestTime","Infinity","k","v","delete","voiceListCache","VOICE_PRESETS","rachel","daniel","roger","sarah","adam","charlie","emily","josh","resolveVoiceId","nameOrId","apiKey","test","preset","toLowerCase","voices","resp","fetch","headers","ok","json","list","map","voice_id","name","lower","exact","find","starts","startsWith","contains","includes","uploadAudioAndRecord","audioBuffer","label","ext","mimeType","aiTags","id","crypto","randomUUID","fileName","storagePath","toUpperCase","uploadErr","storage","from","upload","contentType","upsert","Error","message","urlData","getPublicUrl","fileUrl","publicUrl","mediaRow","mediaErr","insert","store_id","file_name","file_path","file_url","file_size","length","file_type","category","ai_tags","ai_description","source","select","single","console","media_id","formatInfo","outputFormat","mime","fetchWithRetry","url","init","lastErr","attempt","status","delay","Math","pow","Promise","r","setTimeout","err","generateAndUpload","body","tags","extraFields","method","Accept","JSON","stringify","errText","text","success","Buffer","arrayBuffer","format","processFormData","formData","audioFormData","audioBase64","fieldName","buffer","blob","Blob","type","FormData","append","handleVoice","args","sid","action","output_format","voiceInput","voice_name","voiceId","modelId","model_id","presetIds","Set","Object","values","isCloned","has","defaultStability","defaultSimilarity","defaultStyle","voice_settings","stability","similarity_boost","style","use_speaker_boost","speaker_boost","substring","text_length","cloned_voice","items","results","allSettled","item","batchStability","batchSimilarity","batchStyle","clips","errors","forEach","i","push","value","index","reason","generated","failed","total","audio_base64","language_code","prompt_influence","loop","duration_seconds","prompt","planBody","music_length_ms","plan","composition_plan","hint","compositionPlan","isInstrumental","force_instrumental","musicFormat","musicFmt","parse","positive_global_styles","negative_global_styles","instrumental","planToUse","with_timestamps","stemVariation","stem_variation","stems","String","remove_background_noise","description","voiceDescription","voice_description","preview_text","auto_enhance_description","auto_enhance","reference_audio_base64","reference_audio","reference_weight","undefined","previews","p","b64","audio_base_64","buf","generated_voice_id","generatedVoiceId","voiceName","labels","samples","Array","isArray","audio_samples","s","shortestSample","min","autoNoiseRemoval","removeNoise","totalBytes","reduce","sum","ceil","totalSecs","round","qualityNote","samples_used","noise_removed","quality_note","language","next_step","sampleData","sampleIds","sample_id","samples_uploaded","sample_ids","sampleId","voice","fine_tuning","speakerIds","speaker_ids","selected_speaker_ids","selected_speakers","extraText","extra_text","transcript","query","params","URLSearchParams","page_size","gender","accent","age","use_case","preview_url","count","settings","voicesResp","keyWorks","voiceCount","tier","character_count","character_limit","characters_remaining","usage_percent","next_reset","key_valid","voice_count","note","sub","next_character_count_reset_unix","toISOString","max_voice_add_edits","voice_add_edit_counter","professional_voice_limit","models","m","can_be_finetuned","can_do_text_to_speech","can_do_voice_conversion","languages"],"sources":["../../../src/server/handlers/voice.ts"],"sourcesContent":["// server/handlers/voice.ts β€” ElevenLabs audio suite v2.1\n//\n// Actions: speak, batch, sound_effects, music_plan, music_compose,\n// music_compose_detailed, speech_to_text, stem_separation,\n// voice_changer, audio_isolation, voice_design, voice_design_create,\n// forced_alignment, search_voices, list_voices, get_voice,\n// clone_voice, usage, list_models,\n// pvc_create, pvc_upload, pvc_separate_speakers, pvc_status,\n// pvc_select_speaker, pvc_verify, pvc_train\n//\n// v2.1: music_plan (structured composition plans), auto vocal clarity styles,\n// composition_plan support on music_compose, 192kbps music output\n// v2: DRY helpers, credential caching, voice name resolution, batch TTS,\n// retry with backoff, updated models (eleven_v3, scribe_v2)\n\nimport type { SupabaseClient } from \"@supabase/supabase-js\";\n\n// ============================================================================\n// CONSTANTS\n// ============================================================================\n\nconst ELEVENLABS_BASE = \"https://api.elevenlabs.io/v1\";\nconst DEFAULT_VOICE_ID = \"21m00Tcm4TlvDq8ikWAM\"; // Rachel\nconst DEFAULT_TTS_MODEL = \"eleven_v3\";\nconst DEFAULT_STS_MODEL = \"eleven_english_sts_v2\";\nconst DEFAULT_MUSIC_MODEL = \"music_v1\";\nconst DEFAULT_SFX_MODEL = \"eleven_text_to_sound_v2\";\nconst DEFAULT_TTV_MODEL = \"eleven_ttv_v3\";\nconst DEFAULT_STT_MODEL = \"scribe_v2\";\n\nconst MAX_RETRIES = 2;\nconst RETRY_DELAY_MS = 1000;\nconst VOICE_CACHE_TTL = 600_000; // 10 min\nconst KEY_CACHE_TTL = 300_000; // 5 min\n\ntype Result = { success: boolean; data?: unknown; error?: string };\n\n// ============================================================================\n// CREDENTIAL CACHING β€” 5-min TTL, avoids decrypt RPC on every call\n// ============================================================================\n\nconst keyCache = new Map<string, { key: string; fetchedAt: number }>();\n\nasync function getElevenLabsKey(sb: SupabaseClient, storeId: string): Promise<string | null> {\n const cached = keyCache.get(storeId);\n if (cached && Date.now() - cached.fetchedAt < KEY_CACHE_TTL) return cached.key;\n\n const { data, error } = await sb.rpc(\"decrypt_secret\", {\n p_name: \"ELEVENLABS_API_KEY\",\n p_store_id: storeId,\n });\n if (error || !data) return null;\n const key = data as string;\n keyCache.set(storeId, { key, fetchedAt: Date.now() });\n if (keyCache.size > 50) {\n // Evict oldest entry by fetchedAt, not insertion order\n let oldestKey: string | undefined;\n let oldestTime = Infinity;\n for (const [k, v] of keyCache) {\n if (v.fetchedAt < oldestTime) { oldestTime = v.fetchedAt; oldestKey = k; }\n }\n if (oldestKey) keyCache.delete(oldestKey);\n }\n return key;\n}\n\n// ============================================================================\n// VOICE NAME RESOLUTION β€” accept name or ID, cache voice list 10 min\n// ============================================================================\n\nconst voiceListCache = new Map<string, { voices: Array<{ voice_id: string; name: string }>; fetchedAt: number }>();\n\n/** Popular voice presets for quick lookup without API call */\nconst VOICE_PRESETS: Record<string, string> = {\n rachel: \"21m00Tcm4TlvDq8ikWAM\",\n daniel: \"onwK4e9ZLuTAKqWW03F9\",\n roger: \"CwhRBWXzGAHq8TQ4Fs17\",\n sarah: \"EXAVITQu4vr4xnSDxMaL\",\n adam: \"pNInz6obpgDQGcFmaJgB\",\n charlie: \"IKne3meq5aSn9XLyUdCD\",\n emily: \"LcfcDJNUP1GQjkzn1xUU\",\n josh: \"TxGEqnHWrfWFTfGW9XjX\",\n};\n\nasync function resolveVoiceId(nameOrId: string, apiKey: string, storeId: string): Promise<string> {\n // Already a voice ID (UUID-like or 20+ char alphanumeric)?\n if (/^[a-zA-Z0-9]{20,}$/.test(nameOrId)) return nameOrId;\n\n // Check presets first (instant, no API call)\n const preset = VOICE_PRESETS[nameOrId.toLowerCase()];\n if (preset) return preset;\n\n // Fetch and cache voice list from ElevenLabs\n let voices = voiceListCache.get(storeId);\n if (!voices || Date.now() - voices.fetchedAt > VOICE_CACHE_TTL) {\n try {\n const resp = await fetch(`${ELEVENLABS_BASE}/voices`, {\n headers: { \"xi-api-key\": apiKey },\n });\n if (resp.ok) {\n const data = await resp.json();\n const list = (data.voices || []).map((v: any) => ({ voice_id: v.voice_id, name: v.name }));\n voices = { voices: list, fetchedAt: Date.now() };\n voiceListCache.set(storeId, voices);\n if (voiceListCache.size > 50) {\n let oldestKey: string | undefined;\n let oldestTime = Infinity;\n for (const [k, v] of voiceListCache) {\n if (v.fetchedAt < oldestTime) { oldestTime = v.fetchedAt; oldestKey = k; }\n }\n if (oldestKey) voiceListCache.delete(oldestKey);\n }\n }\n } catch { /* fall through to fuzzy match on stale cache */ }\n }\n\n if (voices) {\n const lower = nameOrId.toLowerCase();\n // Exact match\n const exact = voices.voices.find(v => v.name.toLowerCase() === lower);\n if (exact) return exact.voice_id;\n // Starts-with match\n const starts = voices.voices.find(v => v.name.toLowerCase().startsWith(lower));\n if (starts) return starts.voice_id;\n // Contains match\n const contains = voices.voices.find(v => v.name.toLowerCase().includes(lower));\n if (contains) return contains.voice_id;\n }\n\n // Fall back β€” treat as voice ID (let ElevenLabs return 404 if invalid)\n return nameOrId;\n}\n\n// ============================================================================\n// STORAGE β€” upload audio to Supabase Storage + store_media\n// ============================================================================\n\ninterface AudioUploadResult {\n file_url: string;\n file_name: string;\n file_size: number;\n media_id: string;\n}\n\nasync function uploadAudioAndRecord(\n sb: SupabaseClient, storeId: string, audioBuffer: Buffer,\n label: string, ext: string, mimeType: string, aiTags: string[],\n): Promise<AudioUploadResult> {\n const id = crypto.randomUUID();\n const fileName = `${id}.${ext}`;\n const storagePath = `ai-generated/${storeId.toUpperCase()}/audio/${fileName}`;\n\n const { error: uploadErr } = await sb.storage\n .from(\"store-media\")\n .upload(storagePath, audioBuffer, { contentType: mimeType, upsert: true });\n if (uploadErr) throw new Error(`Storage upload failed: ${uploadErr.message}`);\n\n const { data: urlData } = sb.storage.from(\"store-media\").getPublicUrl(storagePath);\n const fileUrl = urlData.publicUrl;\n\n const { data: mediaRow, error: mediaErr } = await sb\n .from(\"store_media\")\n .insert({\n store_id: storeId, file_name: fileName, file_path: storagePath,\n file_url: fileUrl, file_size: audioBuffer.length, file_type: mimeType,\n category: \"ai_generated\", ai_tags: aiTags, ai_description: label, source: \"elevenlabs\",\n })\n .select(\"id\")\n .single();\n if (mediaErr) console.error(\"[voice] store_media insert error:\", mediaErr.message);\n\n return { file_url: fileUrl, file_name: fileName, file_size: audioBuffer.length, media_id: mediaRow?.id || id };\n}\n\n// ============================================================================\n// DRY HELPERS β€” eliminate 90% of code duplication\n// ============================================================================\n\nfunction formatInfo(outputFormat: string): { ext: string; mime: string } {\n if (outputFormat.startsWith(\"pcm\")) return { ext: \"pcm\", mime: \"audio/pcm\" };\n if (outputFormat.startsWith(\"opus\")) return { ext: \"opus\", mime: \"audio/opus\" };\n return { ext: \"mp3\", mime: \"audio/mpeg\" };\n}\n\n/** Fetch with retry for ElevenLabs API (handles 429/500/502/503) */\nasync function fetchWithRetry(url: string, init: RequestInit): Promise<Response> {\n let lastErr: Error | null = null;\n for (let attempt = 0; attempt <= MAX_RETRIES; attempt++) {\n try {\n const resp = await fetch(url, init);\n if (resp.ok || (resp.status < 500 && resp.status !== 429)) return resp;\n if (attempt < MAX_RETRIES) {\n const delay = RETRY_DELAY_MS * Math.pow(2, attempt);\n await new Promise(r => setTimeout(r, delay));\n continue;\n }\n return resp; // final attempt, return whatever we got\n } catch (err: any) {\n lastErr = err;\n if (attempt < MAX_RETRIES) {\n await new Promise(r => setTimeout(r, RETRY_DELAY_MS * Math.pow(2, attempt)));\n }\n }\n }\n throw lastErr || new Error(\"Fetch failed after retries\");\n}\n\n/** API call β†’ buffer β†’ upload β†’ standard result */\nasync function generateAndUpload(\n sb: SupabaseClient, storeId: string, apiKey: string,\n url: string, body: Record<string, unknown>,\n label: string, tags: string[], ext: string, mime: string,\n extraFields: Record<string, unknown> = {},\n): Promise<Result> {\n try {\n const resp = await fetchWithRetry(url, {\n method: \"POST\",\n headers: { \"xi-api-key\": apiKey, \"Content-Type\": \"application/json\", Accept: \"audio/mpeg\" },\n body: JSON.stringify(body),\n });\n if (!resp.ok) {\n const errText = await resp.text();\n return { success: false, error: `ElevenLabs error ${resp.status}: ${errText}` };\n }\n const audioBuffer = Buffer.from(await resp.arrayBuffer());\n const upload = await uploadAudioAndRecord(sb, storeId, audioBuffer, label, ext, mime, tags);\n return {\n success: true,\n data: {\n file_url: upload.file_url,\n file_size: upload.file_size,\n media_id: upload.media_id,\n format: ext,\n ...extraFields,\n },\n };\n } catch (err) {\n return { success: false, error: `${label} failed: ${err}` };\n }\n}\n\n/** FormData-based API call β†’ buffer β†’ upload β†’ standard result */\nasync function processFormData(\n sb: SupabaseClient, storeId: string, apiKey: string,\n url: string, formData: FormData,\n label: string, tags: string[], ext: string, mime: string,\n extraFields: Record<string, unknown> = {},\n): Promise<Result> {\n try {\n const resp = await fetchWithRetry(url, {\n method: \"POST\",\n headers: { \"xi-api-key\": apiKey },\n body: formData,\n });\n if (!resp.ok) {\n const errText = await resp.text();\n return { success: false, error: `ElevenLabs error ${resp.status}: ${errText}` };\n }\n const audioBuffer = Buffer.from(await resp.arrayBuffer());\n const upload = await uploadAudioAndRecord(sb, storeId, audioBuffer, label, ext, mime, tags);\n return {\n success: true,\n data: {\n file_url: upload.file_url,\n file_size: upload.file_size,\n media_id: upload.media_id,\n format: ext,\n ...extraFields,\n },\n };\n } catch (err) {\n return { success: false, error: `${label} failed: ${err}` };\n }\n}\n\n/** Build FormData from base64 audio input */\nfunction audioFormData(audioBase64: string, fieldName = \"file\", fileName = \"audio.mp3\"): FormData {\n const buffer = Buffer.from(audioBase64, \"base64\");\n const blob = new Blob([buffer], { type: \"audio/mpeg\" });\n const formData = new FormData();\n formData.append(fieldName, blob, fileName);\n return formData;\n}\n\n// ============================================================================\n// MAIN HANDLER\n// ============================================================================\n\nexport async function handleVoice(\n sb: SupabaseClient,\n args: Record<string, unknown>,\n storeId?: string,\n): Promise<Result> {\n const sid = storeId as string;\n const action = args.action as string;\n\n const apiKey = await getElevenLabsKey(sb, sid);\n if (!apiKey) {\n return { success: false, error: \"ELEVENLABS_API_KEY not configured. Add it to user_tool_secrets for this store.\" };\n }\n\n const outputFormat = (args.output_format as string) || \"mp3_44100_128\";\n const { ext, mime } = formatInfo(outputFormat);\n\n switch (action) {\n // ── TEXT-TO-SPEECH ─────────────────────────────────────────────────\n case \"speak\": {\n const text = args.text as string;\n if (!text) return { success: false, error: \"text parameter is required\" };\n if (text.length > 5000) return { success: false, error: \"Text too long (max 5000 characters). Split into smaller chunks or use batch action.\" };\n\n // Resolve voice by name or ID\n const voiceInput = (args.voice_name || args.voice_id || DEFAULT_VOICE_ID) as string;\n const voiceId = await resolveVoiceId(voiceInput, apiKey, sid);\n const modelId = (args.model_id as string) || DEFAULT_TTS_MODEL;\n\n // Smart defaults: cloned/custom voices get higher similarity for accuracy\n const presetIds = new Set(Object.values(VOICE_PRESETS));\n const isCloned = !presetIds.has(voiceId) && voiceId !== DEFAULT_VOICE_ID;\n const defaultStability = isCloned ? 0.35 : 0.5;\n const defaultSimilarity = isCloned ? 0.9 : 0.75;\n const defaultStyle = isCloned ? 0.05 : 0;\n\n return generateAndUpload(sb, sid, apiKey,\n `${ELEVENLABS_BASE}/text-to-speech/${voiceId}?output_format=${outputFormat}`,\n {\n text,\n model_id: modelId,\n voice_settings: {\n stability: (args.stability as number) ?? defaultStability,\n similarity_boost: (args.similarity_boost as number) ?? defaultSimilarity,\n style: (args.style as number) ?? defaultStyle,\n use_speaker_boost: (args.speaker_boost as boolean) ?? true,\n },\n },\n `TTS: ${text.substring(0, 80)}`,\n [\"AI Generated\", \"Text-to-Speech\", \"ElevenLabs\"],\n ext, mime,\n { voice_id: voiceId, model_id: modelId, text_length: text.length, cloned_voice: isCloned },\n );\n }\n\n // ── BATCH TTS ──────────────────────────────────────────────────────\n case \"batch\": {\n const items = args.items as Array<{ text: string; voice_name?: string; voice_id?: string; model_id?: string }> | undefined;\n if (!items?.length) return { success: false, error: \"items array is required (each with text, optional voice_name/voice_id)\" };\n if (items.length > 10) return { success: false, error: \"Maximum 10 items per batch\" };\n\n const results = await Promise.allSettled(\n items.map(async (item) => {\n const voiceInput = item.voice_name || item.voice_id || DEFAULT_VOICE_ID;\n const voiceId = await resolveVoiceId(voiceInput, apiKey, sid);\n const modelId = item.model_id || DEFAULT_TTS_MODEL;\n\n // Smart defaults: cloned/custom voices get higher similarity for accuracy\n const presetIds = new Set(Object.values(VOICE_PRESETS));\n const isCloned = !presetIds.has(voiceId) && voiceId !== DEFAULT_VOICE_ID;\n const batchStability = isCloned ? 0.35 : 0.5;\n const batchSimilarity = isCloned ? 0.9 : 0.75;\n const batchStyle = isCloned ? 0.05 : 0;\n\n const resp = await fetchWithRetry(\n `${ELEVENLABS_BASE}/text-to-speech/${voiceId}?output_format=${outputFormat}`,\n {\n method: \"POST\",\n headers: { \"xi-api-key\": apiKey, \"Content-Type\": \"application/json\", Accept: \"audio/mpeg\" },\n body: JSON.stringify({\n text: item.text,\n model_id: modelId,\n voice_settings: { stability: batchStability, similarity_boost: batchSimilarity, style: batchStyle, use_speaker_boost: true },\n }),\n },\n );\n if (!resp.ok) throw new Error(`ElevenLabs error ${resp.status}`);\n\n const audioBuffer = Buffer.from(await resp.arrayBuffer());\n const upload = await uploadAudioAndRecord(sb, sid, audioBuffer,\n `TTS: ${item.text.substring(0, 80)}`, ext, mime,\n [\"AI Generated\", \"Text-to-Speech\", \"ElevenLabs\", \"Batch\"],\n );\n return {\n text: item.text.substring(0, 80),\n voice_id: voiceId,\n file_url: upload.file_url,\n file_size: upload.file_size,\n media_id: upload.media_id,\n format: ext,\n };\n }),\n );\n\n const clips: unknown[] = [];\n const errors: Array<{ index: number; text: string; error: string }> = [];\n results.forEach((r, i) => {\n if (r.status === \"fulfilled\") clips.push(r.value);\n else errors.push({ index: i, text: items[i].text.substring(0, 40), error: (r.reason as Error).message });\n });\n\n return {\n success: true,\n data: {\n generated: clips.length,\n failed: errors.length,\n total: items.length,\n clips,\n ...(errors.length > 0 ? { errors } : {}),\n },\n };\n }\n\n // ── SPEECH-TO-TEXT ──────────────────────────────────────────────────\n case \"speech_to_text\": {\n const audioBase64 = args.audio_base64 as string;\n if (!audioBase64) return { success: false, error: \"audio_base64 parameter is required\" };\n\n try {\n const formData = audioFormData(audioBase64);\n formData.append(\"model_id\", (args.model_id as string) || DEFAULT_STT_MODEL);\n if (args.language_code) formData.append(\"language_code\", args.language_code as string);\n\n const resp = await fetchWithRetry(`${ELEVENLABS_BASE}/speech-to-text`, {\n method: \"POST\",\n headers: { \"xi-api-key\": apiKey },\n body: formData,\n });\n if (!resp.ok) {\n const errText = await resp.text();\n return { success: false, error: `ElevenLabs STT error ${resp.status}: ${errText}` };\n }\n return { success: true, data: await resp.json() };\n } catch (err) {\n return { success: false, error: `STT failed: ${err}` };\n }\n }\n\n // ── SOUND EFFECTS ──────────────────────────────────────────────────\n case \"sound_effects\": {\n const text = args.text as string;\n if (!text) return { success: false, error: \"text parameter is required (describe the sound)\" };\n\n const body: Record<string, unknown> = {\n text,\n model_id: DEFAULT_SFX_MODEL,\n prompt_influence: (args.prompt_influence as number) ?? 0.3,\n loop: (args.loop as boolean) ?? false,\n };\n if (args.duration_seconds) body.duration_seconds = args.duration_seconds;\n\n return generateAndUpload(sb, sid, apiKey,\n `${ELEVENLABS_BASE}/sound-generation?output_format=${outputFormat}`,\n body,\n `SFX: ${text.substring(0, 80)}`,\n [\"AI Generated\", \"Sound Effect\", \"ElevenLabs\"],\n ext, mime,\n { prompt: text, duration_seconds: args.duration_seconds || \"auto\", loop: body.loop },\n );\n }\n\n // ── MUSIC PLAN ────────────────────────────────────────────────────\n // FREE endpoint that converts a prompt into a structured composition plan\n // with proper sections, lyrics per line, timing, and styles.\n // The plan can then be fed to music_compose for much clearer vocals.\n case \"music_plan\": {\n const prompt = args.prompt as string;\n if (!prompt) return { success: false, error: \"prompt parameter is required (describe the song)\" };\n\n const planBody: Record<string, unknown> = { prompt, model_id: DEFAULT_MUSIC_MODEL };\n if (args.music_length_ms) planBody.music_length_ms = args.music_length_ms;\n\n try {\n const resp = await fetchWithRetry(`${ELEVENLABS_BASE}/music/plan`, {\n method: \"POST\",\n headers: { \"xi-api-key\": apiKey, \"Content-Type\": \"application/json\" },\n body: JSON.stringify(planBody),\n });\n if (!resp.ok) {\n const errText = await resp.text();\n return { success: false, error: `ElevenLabs plan error ${resp.status}: ${errText}` };\n }\n const plan = await resp.json();\n return {\n success: true,\n data: {\n composition_plan: plan,\n hint: \"Pass this composition_plan to music_compose to generate the song. You can edit sections, lyrics, or styles before generating.\",\n },\n };\n } catch (err) {\n return { success: false, error: `Music plan failed: ${err}` };\n }\n }\n\n // ── MUSIC COMPOSE ──────────────────────────────────────────────────\n case \"music_compose\": {\n const prompt = args.prompt as string | undefined;\n const compositionPlan = args.composition_plan as Record<string, unknown> | undefined;\n if (!prompt && !compositionPlan) return { success: false, error: \"prompt or composition_plan is required\" };\n\n const isInstrumental = (args.force_instrumental as boolean) ?? false;\n\n // Use higher quality for music (192kbps vs default 128kbps)\n const musicFormat = outputFormat === \"mp3_44100_128\" ? \"mp3_44100_192\" : outputFormat;\n const musicFmt = formatInfo(musicFormat);\n\n // If composition_plan provided, use it (from music_plan or manually built)\n if (compositionPlan) {\n // Clone to avoid mutating the caller's object\n const plan = JSON.parse(JSON.stringify(compositionPlan));\n\n // Inject vocal clarity styles when not instrumental\n if (!isInstrumental) {\n if (!plan.positive_global_styles) {\n plan.positive_global_styles = [\"clear vocals\", \"crisp pronunciation\", \"studio quality\"];\n }\n if (!plan.negative_global_styles) {\n plan.negative_global_styles = [\"distorted vocals\", \"mumbled lyrics\", \"lo-fi vocals\"];\n }\n }\n\n const body: Record<string, unknown> = {\n composition_plan: plan,\n model_id: DEFAULT_MUSIC_MODEL,\n force_instrumental: isInstrumental,\n };\n\n return generateAndUpload(sb, sid, apiKey,\n `${ELEVENLABS_BASE}/music?output_format=${musicFormat}`,\n body,\n `Music (plan): ${JSON.stringify(plan).substring(0, 80)}`,\n [\"AI Generated\", \"Music\", \"ElevenLabs\", \"Composition Plan\"],\n musicFmt.ext, musicFmt.mime,\n { method: \"composition_plan\", instrumental: isInstrumental },\n );\n }\n\n // Simple prompt mode\n const body: Record<string, unknown> = {\n prompt: prompt!,\n model_id: DEFAULT_MUSIC_MODEL,\n force_instrumental: isInstrumental,\n };\n if (args.music_length_ms) body.music_length_ms = args.music_length_ms;\n\n return generateAndUpload(sb, sid, apiKey,\n `${ELEVENLABS_BASE}/music?output_format=${musicFormat}`,\n body,\n `Music: ${prompt!.substring(0, 80)}`,\n [\"AI Generated\", \"Music\", \"ElevenLabs\"],\n musicFmt.ext, musicFmt.mime,\n { prompt, music_length_ms: args.music_length_ms || \"auto\", instrumental: isInstrumental },\n );\n }\n\n // ── MUSIC COMPOSE DETAILED ─────────────────────────────────────────\n case \"music_compose_detailed\": {\n const prompt = args.prompt as string | undefined;\n const compositionPlan = args.composition_plan as Record<string, unknown> | undefined;\n if (!prompt && !compositionPlan) return { success: false, error: \"prompt or composition_plan required\" };\n\n const isInstrumental = (args.force_instrumental as boolean) ?? false;\n\n // Use higher quality for music (192kbps vs default 128kbps)\n const musicFormat = outputFormat === \"mp3_44100_128\" ? \"mp3_44100_192\" : outputFormat;\n const musicFmt = formatInfo(musicFormat);\n\n // Clone to avoid mutating the caller's object, then inject vocal clarity styles\n let planToUse = compositionPlan;\n if (compositionPlan && !isInstrumental) {\n const plan = JSON.parse(JSON.stringify(compositionPlan));\n if (!plan.positive_global_styles) {\n plan.positive_global_styles = [\"clear vocals\", \"crisp pronunciation\", \"studio quality\"];\n }\n if (!plan.negative_global_styles) {\n plan.negative_global_styles = [\"distorted vocals\", \"mumbled lyrics\", \"lo-fi vocals\"];\n }\n planToUse = plan;\n }\n\n const body: Record<string, unknown> = {\n model_id: DEFAULT_MUSIC_MODEL,\n force_instrumental: isInstrumental,\n with_timestamps: (args.with_timestamps as boolean) ?? false,\n };\n if (prompt) body.prompt = prompt;\n if (planToUse) body.composition_plan = planToUse;\n if (args.music_length_ms) body.music_length_ms = args.music_length_ms;\n\n return generateAndUpload(sb, sid, apiKey,\n `${ELEVENLABS_BASE}/music/detailed?output_format=${musicFormat}`,\n body,\n `Music (detailed): ${(prompt || \"composition plan\").substring(0, 80)}`,\n [\"AI Generated\", \"Music\", \"ElevenLabs\", \"Detailed\"],\n musicFmt.ext, musicFmt.mime,\n { prompt: prompt || \"(composition plan)\", with_timestamps: body.with_timestamps },\n );\n }\n\n // ── STEM SEPARATION ────────────────────────────────────────────────\n case \"stem_separation\": {\n const audioBase64 = args.audio_base64 as string;\n if (!audioBase64) return { success: false, error: \"audio_base64 parameter is required\" };\n const stemVariation = (args.stem_variation as string) || \"six_stems_v1\";\n\n const formData = audioFormData(audioBase64);\n formData.append(\"stem_variation_id\", stemVariation);\n\n return processFormData(sb, sid, apiKey,\n `${ELEVENLABS_BASE}/music/stem-separation?output_format=${outputFormat}`,\n formData,\n `Stem separation (${stemVariation})`,\n [\"AI Generated\", \"Stem Separation\", \"ElevenLabs\"],\n \"zip\", \"application/zip\",\n {\n stem_variation: stemVariation,\n stems: stemVariation === \"two_stems_v1\"\n ? [\"vocals\", \"accompaniment\"]\n : [\"vocals\", \"drums\", \"bass\", \"piano\", \"guitar\", \"other\"],\n },\n );\n }\n\n // ── VOICE CHANGER ──────────────────────────────────────────────────\n case \"voice_changer\": {\n const audioBase64 = args.audio_base64 as string;\n if (!audioBase64) return { success: false, error: \"audio_base64 parameter is required\" };\n const voiceInput = (args.voice_name || args.voice_id) as string;\n if (!voiceInput) return { success: false, error: \"voice_id or voice_name parameter is required\" };\n\n const voiceId = await resolveVoiceId(voiceInput, apiKey, sid);\n const modelId = (args.model_id as string) || DEFAULT_STS_MODEL;\n\n const formData = audioFormData(audioBase64, \"audio\");\n formData.append(\"model_id\", modelId);\n formData.append(\"remove_background_noise\", String((args.remove_background_noise as boolean) ?? false));\n if (args.voice_settings) formData.append(\"voice_settings\", JSON.stringify(args.voice_settings));\n\n return processFormData(sb, sid, apiKey,\n `${ELEVENLABS_BASE}/speech-to-speech/${voiceId}?output_format=${outputFormat}`,\n formData,\n `Voice change to ${voiceId}`,\n [\"AI Generated\", \"Voice Changer\", \"ElevenLabs\"],\n ext, mime,\n { voice_id: voiceId, model_id: modelId },\n );\n }\n\n // ── AUDIO ISOLATION ────────────────────────────────────────────────\n case \"audio_isolation\": {\n const audioBase64 = args.audio_base64 as string;\n if (!audioBase64) return { success: false, error: \"audio_base64 parameter is required\" };\n\n const formData = audioFormData(audioBase64, \"audio\");\n\n return processFormData(sb, sid, apiKey,\n `${ELEVENLABS_BASE}/audio-isolation`,\n formData,\n \"Audio isolation β€” vocals isolated\",\n [\"AI Generated\", \"Audio Isolation\", \"ElevenLabs\"],\n ext, mime,\n { description: \"Isolated vocals with background noise removed\" },\n );\n }\n\n // ── VOICE DESIGN ───────────────────────────────────────────────────\n case \"voice_design\": {\n const voiceDescription = args.voice_description as string;\n if (!voiceDescription) return { success: false, error: \"voice_description parameter is required\" };\n\n try {\n const body: Record<string, unknown> = {\n voice_description: voiceDescription,\n text: (args.preview_text as string) || \"Hello, this is a preview of the designed voice.\",\n auto_enhance_description: (args.auto_enhance as boolean) ?? true,\n model_id: DEFAULT_TTV_MODEL,\n };\n if (args.reference_audio_base64) {\n body.reference_audio = args.reference_audio_base64;\n if (args.reference_weight !== undefined) body.reference_weight = args.reference_weight;\n }\n\n const resp = await fetchWithRetry(\n `${ELEVENLABS_BASE}/text-to-voice/design?output_format=${outputFormat}`,\n {\n method: \"POST\",\n headers: { \"xi-api-key\": apiKey, \"Content-Type\": \"application/json\" },\n body: JSON.stringify(body),\n },\n );\n if (!resp.ok) {\n const errText = await resp.text();\n return { success: false, error: `ElevenLabs Voice Design error ${resp.status}: ${errText}` };\n }\n\n const data = await resp.json();\n const previews: Array<{ generated_voice_id: string; file_url: string; media_id: string }> = [];\n for (let i = 0; i < (data.previews || []).length; i++) {\n const p = data.previews[i];\n const b64 = p.audio_base_64 || p.audio_base64;\n if (!b64) continue;\n try {\n const buf = Buffer.from(b64, \"base64\");\n const upload = await uploadAudioAndRecord(sb, sid, buf,\n `Voice design preview ${i + 1}: ${voiceDescription.substring(0, 60)}`,\n \"mp3\", \"audio/mpeg\",\n [\"AI Generated\", \"Voice Design\", \"Preview\", \"ElevenLabs\"],\n );\n previews.push({ generated_voice_id: p.generated_voice_id, file_url: upload.file_url, media_id: upload.media_id });\n } catch (uploadErr) {\n console.error(`[voice] preview ${i} upload failed:`, uploadErr);\n previews.push({ generated_voice_id: p.generated_voice_id, file_url: \"(upload failed)\", media_id: \"\" });\n }\n }\n return { success: true, data: { previews, description: voiceDescription } };\n } catch (err) {\n return { success: false, error: `Voice design failed: ${err}` };\n }\n }\n\n // ── VOICE DESIGN CREATE ────────────────────────────────────────────\n case \"voice_design_create\": {\n const generatedVoiceId = args.generated_voice_id as string;\n const voiceName = args.voice_name as string;\n if (!generatedVoiceId) return { success: false, error: \"generated_voice_id is required (from voice_design)\" };\n if (!voiceName) return { success: false, error: \"voice_name is required\" };\n\n try {\n const resp = await fetchWithRetry(`${ELEVENLABS_BASE}/text-to-voice/create`, {\n method: \"POST\",\n headers: { \"xi-api-key\": apiKey, \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n generated_voice_id: generatedVoiceId,\n voice_name: voiceName,\n voice_description: (args.voice_description as string) || \"\",\n labels: (args.labels as Record<string, string>) || {},\n }),\n });\n if (!resp.ok) {\n const errText = await resp.text();\n return { success: false, error: `ElevenLabs Voice Create error ${resp.status}: ${errText}` };\n }\n return { success: true, data: await resp.json() };\n } catch (err) {\n return { success: false, error: `Voice create failed: ${err}` };\n }\n }\n\n // ── CLONE VOICE ────────────────────────────────────────────────────\n // Accepts single audio_base64 or array of audio_samples for multiple clips.\n // file_paths support: CLI pre-processor reads files and injects audio_samples.\n // ElevenLabs recommends 1-2 min clean audio minimum for instant cloning.\n case \"clone_voice\": {\n const voiceName = args.voice_name as string;\n if (!voiceName) return { success: false, error: \"voice_name is required\" };\n\n // Accept multiple samples (array) or single audio_base64\n const samples: string[] = [];\n if (Array.isArray(args.audio_samples)) {\n for (const s of args.audio_samples) {\n if (typeof s === \"string\" && s.length > 100) samples.push(s);\n }\n }\n if (typeof args.audio_base64 === \"string\" && args.audio_base64.length > 100) {\n samples.push(args.audio_base64 as string);\n }\n if (samples.length === 0) {\n return { success: false, error: \"Provide file_paths (array of local audio paths) or audio_samples (array of base64 strings). file_paths is preferred β€” the CLI encodes automatically.\" };\n }\n\n try {\n const formData = new FormData();\n formData.append(\"name\", voiceName);\n if (args.voice_description) formData.append(\"description\", args.voice_description as string);\n\n // Enable noise removal only if samples are long enough (>= 5s β‰ˆ 80KB base64 at 128kbps)\n // ElevenLabs requires >= 4.6s per sample when noise removal is on\n const shortestSample = Math.min(...samples.map(s => s.length));\n const autoNoiseRemoval = shortestSample >= 80_000; // ~5 seconds at 128kbps\n const removeNoise = (args.remove_background_noise as boolean) ?? autoNoiseRemoval;\n formData.append(\"remove_background_noise\", String(removeNoise));\n\n // Attach each sample as a separate file\n for (let i = 0; i < samples.length; i++) {\n const buffer = Buffer.from(samples[i], \"base64\");\n const blob = new Blob([buffer], { type: \"audio/mpeg\" });\n formData.append(\"files\", blob, `sample-${i}.mp3`);\n }\n\n // Optional: labels for the voice\n if (args.labels) {\n formData.append(\"labels\", JSON.stringify(args.labels));\n }\n\n const resp = await fetchWithRetry(`${ELEVENLABS_BASE}/voices/add`, {\n method: \"POST\",\n headers: { \"xi-api-key\": apiKey },\n body: formData,\n });\n if (!resp.ok) {\n const errText = await resp.text();\n return { success: false, error: `Voice clone error ${resp.status}: ${errText}` };\n }\n const data = await resp.json();\n\n // Calculate total audio size for quality feedback\n const totalBytes = samples.reduce((sum, s) => sum + Math.ceil(s.length * 3 / 4), 0);\n const totalSecs = Math.round(totalBytes / 16000); // rough estimate at 128kbps\n const qualityNote = totalSecs < 30\n ? `Tip: only ~${totalSecs}s of audio provided. For better accuracy, use 1-2 minutes of clean, continuous speech.`\n : `Good: ~${totalSecs}s of audio used.`;\n\n return {\n success: true,\n data: {\n voice_id: data.voice_id,\n name: voiceName,\n samples_used: samples.length,\n noise_removed: removeNoise,\n quality_note: qualityNote,\n message: `Voice \"${voiceName}\" cloned successfully. Use this voice_id with speak action.`,\n },\n };\n } catch (err) {\n return { success: false, error: `Voice clone failed: ${err}` };\n }\n }\n\n // ══════════════════════════════════════════════════════════════════\n // PROFESSIONAL VOICE CLONING (PVC) β€” near-perfect accuracy\n // Multi-step: create β†’ upload β†’ separate speakers β†’ verify β†’ train\n // Requires Creator plan or above on ElevenLabs.\n // ══════════════════════════════════════════════════════════════════\n\n // ── PVC CREATE ─────────────────────────────────────────────────────\n case \"pvc_create\": {\n const voiceName = args.voice_name as string;\n const language = (args.language as string) || \"en\";\n if (!voiceName) return { success: false, error: \"voice_name is required\" };\n\n try {\n const body: Record<string, unknown> = { name: voiceName, language };\n if (args.voice_description) body.description = args.voice_description;\n if (args.labels) body.labels = args.labels;\n\n const resp = await fetchWithRetry(`${ELEVENLABS_BASE}/voices/pvc`, {\n method: \"POST\",\n headers: { \"xi-api-key\": apiKey, \"Content-Type\": \"application/json\" },\n body: JSON.stringify(body),\n });\n if (!resp.ok) {\n const errText = await resp.text();\n return { success: false, error: `PVC create error ${resp.status}: ${errText}` };\n }\n const data = await resp.json();\n return {\n success: true,\n data: {\n voice_id: data.voice_id,\n name: voiceName,\n language,\n next_step: \"Upload audio samples with pvc_upload action, then use pvc_train to start training.\",\n },\n };\n } catch (err) {\n return { success: false, error: `PVC create failed: ${err}` };\n }\n }\n\n // ── PVC UPLOAD ─────────────────────────────────────────────────────\n // Upload audio samples to a PVC voice. Accepts audio_samples or file_paths.\n case \"pvc_upload\": {\n const voiceId = args.voice_id as string;\n if (!voiceId) return { success: false, error: \"voice_id is required (from pvc_create)\" };\n\n const samples: string[] = [];\n if (Array.isArray(args.audio_samples)) {\n for (const s of args.audio_samples) {\n if (typeof s === \"string\" && s.length > 100) samples.push(s);\n }\n }\n if (typeof args.audio_base64 === \"string\" && args.audio_base64.length > 100) {\n samples.push(args.audio_base64);\n }\n if (samples.length === 0) {\n return { success: false, error: \"Provide file_paths or audio_samples. The more audio, the better the clone (30+ min recommended).\" };\n }\n\n try {\n const formData = new FormData();\n for (let i = 0; i < samples.length; i++) {\n const buffer = Buffer.from(samples[i], \"base64\");\n const blob = new Blob([buffer], { type: \"audio/mpeg\" });\n formData.append(\"files\", blob, `sample-${i}.mp3`);\n }\n const removeNoise = (args.remove_background_noise as boolean) ?? false;\n formData.append(\"remove_background_noise\", String(removeNoise));\n\n const resp = await fetchWithRetry(`${ELEVENLABS_BASE}/voices/pvc/${voiceId}/samples`, {\n method: \"POST\",\n headers: { \"xi-api-key\": apiKey },\n body: formData,\n });\n if (!resp.ok) {\n const errText = await resp.text();\n return { success: false, error: `PVC upload error ${resp.status}: ${errText}` };\n }\n const sampleData = await resp.json();\n const sampleIds = Array.isArray(sampleData) ? sampleData.map((s: any) => s.sample_id) : [];\n\n return {\n success: true,\n data: {\n voice_id: voiceId,\n samples_uploaded: samples.length,\n sample_ids: sampleIds,\n noise_removed: removeNoise,\n next_step: \"If audio has multiple speakers, use pvc_separate_speakers. Otherwise use pvc_verify to start verification, then pvc_train.\",\n },\n };\n } catch (err) {\n return { success: false, error: `PVC upload failed: ${err}` };\n }\n }\n\n // ── PVC SEPARATE SPEAKERS ──────────────────────────────────────────\n case \"pvc_separate_speakers\": {\n const voiceId = args.voice_id as string;\n const sampleId = args.sample_id as string;\n if (!voiceId || !sampleId) return { success: false, error: \"voice_id and sample_id are required\" };\n\n try {\n const resp = await fetchWithRetry(\n `${ELEVENLABS_BASE}/voices/pvc/${voiceId}/samples/${sampleId}/separate-speakers`,\n { method: \"POST\", headers: { \"xi-api-key\": apiKey } },\n );\n if (!resp.ok) {\n const errText = await resp.text();\n return { success: false, error: `Speaker separation error ${resp.status}: ${errText}` };\n }\n return {\n success: true,\n data: {\n voice_id: voiceId,\n sample_id: sampleId,\n status: \"started\",\n next_step: \"Use pvc_status to check separation progress. When done, use pvc_select_speaker to pick the right speaker.\",\n },\n };\n } catch (err) {\n return { success: false, error: `Speaker separation failed: ${err}` };\n }\n }\n\n // ── PVC STATUS ─────────────────────────────────────────────────────\n // Check speaker separation status or training status\n case \"pvc_status\": {\n const voiceId = args.voice_id as string;\n if (!voiceId) return { success: false, error: \"voice_id is required\" };\n\n try {\n // If sample_id provided, check speaker separation status\n if (args.sample_id) {\n const resp = await fetchWithRetry(\n `${ELEVENLABS_BASE}/voices/pvc/${voiceId}/samples/${args.sample_id}/speakers`,\n { headers: { \"xi-api-key\": apiKey } },\n );\n if (!resp.ok) {\n const errText = await resp.text();\n return { success: false, error: `PVC status error ${resp.status}: ${errText}` };\n }\n const data = await resp.json();\n return { success: true, data };\n }\n\n // Otherwise check overall voice / training status\n const resp = await fetchWithRetry(`${ELEVENLABS_BASE}/voices/${voiceId}`, {\n headers: { \"xi-api-key\": apiKey },\n });\n if (!resp.ok) {\n const errText = await resp.text();\n return { success: false, error: `PVC status error ${resp.status}: ${errText}` };\n }\n const voice = await resp.json();\n return {\n success: true,\n data: {\n voice_id: voice.voice_id,\n name: voice.name,\n category: voice.category,\n fine_tuning: voice.fine_tuning,\n samples: voice.samples?.length || 0,\n },\n };\n } catch (err) {\n return { success: false, error: `PVC status failed: ${err}` };\n }\n }\n\n // ── PVC SELECT SPEAKER ─────────────────────────────────────────────\n case \"pvc_select_speaker\": {\n const voiceId = args.voice_id as string;\n const sampleId = args.sample_id as string;\n const speakerIds = args.speaker_ids as string[];\n if (!voiceId || !sampleId) return { success: false, error: \"voice_id and sample_id required\" };\n if (!Array.isArray(speakerIds) || speakerIds.length === 0) {\n return { success: false, error: \"speaker_ids array required (from pvc_status separation results)\" };\n }\n\n try {\n const resp = await fetchWithRetry(\n `${ELEVENLABS_BASE}/voices/pvc/${voiceId}/samples/${sampleId}`,\n {\n method: \"POST\",\n headers: { \"xi-api-key\": apiKey, \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ selected_speaker_ids: speakerIds }),\n },\n );\n if (!resp.ok) {\n const errText = await resp.text();\n return { success: false, error: `Select speaker error ${resp.status}: ${errText}` };\n }\n return {\n success: true,\n data: {\n voice_id: voiceId,\n sample_id: sampleId,\n selected_speakers: speakerIds,\n next_step: \"Use pvc_verify for verification, then pvc_train to start training.\",\n },\n };\n } catch (err) {\n return { success: false, error: `Select speaker failed: ${err}` };\n }\n }\n\n // ── PVC VERIFY ─────────────────────────────────────────────────────\n // Request manual verification (easiest path β€” ElevenLabs staff reviews)\n case \"pvc_verify\": {\n const voiceId = args.voice_id as string;\n if (!voiceId) return { success: false, error: \"voice_id is required\" };\n\n try {\n const formData = new FormData();\n // Optional: extra context about why you have permission to use this voice\n const extraText = (args.extra_text as string) || \"Voice owner has given consent for cloning.\";\n formData.append(\"extra_text\", extraText);\n\n // If verification audio provided (voice owner speaking), attach it\n if (typeof args.audio_base64 === \"string\" && args.audio_base64.length > 100) {\n const buffer = Buffer.from(args.audio_base64, \"base64\");\n const blob = new Blob([buffer], { type: \"audio/mpeg\" });\n formData.append(\"files\", blob, \"verification.mp3\");\n }\n\n const resp = await fetchWithRetry(`${ELEVENLABS_BASE}/voices/pvc/${voiceId}/verification`, {\n method: \"POST\",\n headers: { \"xi-api-key\": apiKey },\n body: formData,\n });\n if (!resp.ok) {\n const errText = await resp.text();\n return { success: false, error: `PVC verify error ${resp.status}: ${errText}` };\n }\n return {\n success: true,\n data: {\n voice_id: voiceId,\n status: \"verification_requested\",\n message: \"Manual verification submitted. ElevenLabs will review. Once approved, use pvc_train to start training.\",\n },\n };\n } catch (err) {\n return { success: false, error: `PVC verify failed: ${err}` };\n }\n }\n\n // ── PVC TRAIN ──────────────────────────────────────────────────────\n case \"pvc_train\": {\n const voiceId = args.voice_id as string;\n if (!voiceId) return { success: false, error: \"voice_id is required\" };\n\n // eleven_multilingual_v2 is most stable for PVC training\n const modelId = (args.model_id as string) || \"eleven_multilingual_v2\";\n\n try {\n const resp = await fetchWithRetry(`${ELEVENLABS_BASE}/voices/pvc/${voiceId}/train`, {\n method: \"POST\",\n headers: { \"xi-api-key\": apiKey, \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ model_id: modelId }),\n });\n if (!resp.ok) {\n const errText = await resp.text();\n return { success: false, error: `PVC train error ${resp.status}: ${errText}` };\n }\n return {\n success: true,\n data: {\n voice_id: voiceId,\n model_id: modelId,\n status: \"training_started\",\n message: \"Training started. Use pvc_status to monitor progress. Training typically takes 5-30 minutes depending on audio length.\",\n },\n };\n } catch (err) {\n return { success: false, error: `PVC train failed: ${err}` };\n }\n }\n\n // ── FORCED ALIGNMENT ───────────────────────────────────────────────\n case \"forced_alignment\": {\n const audioBase64 = args.audio_base64 as string;\n const transcript = args.transcript as string;\n if (!audioBase64) return { success: false, error: \"audio_base64 parameter is required\" };\n if (!transcript) return { success: false, error: \"transcript parameter is required\" };\n\n try {\n const formData = audioFormData(audioBase64);\n formData.append(\"text\", transcript);\n\n const resp = await fetchWithRetry(`${ELEVENLABS_BASE}/forced-alignment`, {\n method: \"POST\",\n headers: { \"xi-api-key\": apiKey },\n body: formData,\n });\n if (!resp.ok) {\n const errText = await resp.text();\n return { success: false, error: `ElevenLabs Forced Alignment error ${resp.status}: ${errText}` };\n }\n return { success: true, data: await resp.json() };\n } catch (err) {\n return { success: false, error: `Forced alignment failed: ${err}` };\n }\n }\n\n // ── SEARCH VOICES ──────────────────────────────────────────────────\n case \"search_voices\": {\n const query = (args.query as string) || \"\";\n try {\n // Use shared voices endpoint for broader library search\n const params = new URLSearchParams({ page_size: \"25\" });\n if (query) params.set(\"search\", query);\n if (args.gender) params.set(\"gender\", args.gender as string);\n if (args.language) params.set(\"language\", args.language as string);\n if (args.accent) params.set(\"accent\", args.accent as string);\n if (args.age) params.set(\"age\", args.age as string);\n if (args.use_case) params.set(\"use_case\", args.use_case as string);\n\n const resp = await fetchWithRetry(`${ELEVENLABS_BASE}/shared-voices?${params}`, {\n headers: { \"xi-api-key\": apiKey },\n });\n if (!resp.ok) {\n const errText = await resp.text();\n return { success: false, error: `Voice search error ${resp.status}: ${errText}` };\n }\n\n const data = await resp.json();\n const voices = (data.voices || []).map((v: any) => ({\n voice_id: v.voice_id,\n name: v.name,\n category: v.category,\n gender: v.gender,\n accent: v.accent,\n age: v.age,\n language: v.language,\n use_case: v.use_case,\n description: v.description,\n preview_url: v.preview_url,\n }));\n return { success: true, data: { count: voices.length, voices } };\n } catch (err) {\n return { success: false, error: `Voice search failed: ${err}` };\n }\n }\n\n // ── LIST VOICES ────────────────────────────────────────────────────\n case \"list_voices\": {\n try {\n const resp = await fetchWithRetry(`${ELEVENLABS_BASE}/voices`, {\n headers: { \"xi-api-key\": apiKey },\n });\n if (!resp.ok) {\n const errText = await resp.text();\n return { success: false, error: `List Voices error ${resp.status}: ${errText}` };\n }\n const data = await resp.json();\n const voices = (data.voices || []).map((v: any) => ({\n voice_id: v.voice_id, name: v.name, category: v.category,\n labels: v.labels, description: v.description, preview_url: v.preview_url,\n }));\n return { success: true, data: { count: voices.length, voices } };\n } catch (err) {\n return { success: false, error: `List voices failed: ${err}` };\n }\n }\n\n // ── GET VOICE ──────────────────────────────────────────────────────\n case \"get_voice\": {\n const voiceInput = (args.voice_name || args.voice_id) as string;\n if (!voiceInput) return { success: false, error: \"voice_id or voice_name is required\" };\n\n try {\n const voiceId = await resolveVoiceId(voiceInput, apiKey, sid);\n const resp = await fetchWithRetry(`${ELEVENLABS_BASE}/voices/${voiceId}`, {\n headers: { \"xi-api-key\": apiKey },\n });\n if (!resp.ok) {\n const errText = await resp.text();\n return { success: false, error: `Get Voice error ${resp.status}: ${errText}` };\n }\n const voice = await resp.json();\n return {\n success: true,\n data: {\n voice_id: voice.voice_id, name: voice.name, category: voice.category,\n labels: voice.labels, description: voice.description, preview_url: voice.preview_url,\n settings: voice.settings, fine_tuning: voice.fine_tuning,\n },\n };\n } catch (err) {\n return { success: false, error: `Get voice failed: ${err}` };\n }\n }\n\n // ── USAGE / QUOTA ──────────────────────────────────────────────────\n case \"usage\": {\n try {\n const resp = await fetchWithRetry(`${ELEVENLABS_BASE}/user/subscription`, {\n headers: { \"xi-api-key\": apiKey },\n });\n if (!resp.ok) {\n // If key lacks user_read scope, fall back to a partial status check\n if (resp.status === 401 || resp.status === 403) {\n const voicesResp = await fetchWithRetry(`${ELEVENLABS_BASE}/voices`, {\n headers: { \"xi-api-key\": apiKey },\n });\n const keyWorks = voicesResp.ok;\n const voiceCount = keyWorks ? ((await voicesResp.json()).voices?.length ?? 0) : 0;\n return {\n success: true,\n data: {\n tier: \"unknown (API key missing user_read scope)\",\n character_count: null,\n character_limit: null,\n characters_remaining: null,\n usage_percent: null,\n next_reset: null,\n key_valid: keyWorks,\n voice_count: voiceCount,\n note: \"ElevenLabs API key is missing the 'user_read' permission. Regenerate the key at elevenlabs.io with full permissions to see usage stats. All generation features (speak, music, SFX) still work.\",\n },\n };\n }\n const errText = await resp.text();\n return { success: false, error: `Usage error ${resp.status}: ${errText}` };\n }\n const sub = await resp.json();\n return {\n success: true,\n data: {\n tier: sub.tier,\n character_count: sub.character_count,\n character_limit: sub.character_limit,\n characters_remaining: (sub.character_limit || 0) - (sub.character_count || 0),\n usage_percent: sub.character_limit\n ? Math.round(((sub.character_count || 0) / sub.character_limit) * 100)\n : 0,\n next_reset: sub.next_character_count_reset_unix\n ? new Date(sub.next_character_count_reset_unix * 1000).toISOString()\n : null,\n max_voice_add_edits: sub.max_voice_add_edits,\n voice_add_edit_counter: sub.voice_add_edit_counter,\n professional_voice_limit: sub.professional_voice_limit,\n },\n };\n } catch (err) {\n return { success: false, error: `Usage check failed: ${err}` };\n }\n }\n\n // ── LIST MODELS ────────────────────────────────────────────────────\n case \"list_models\": {\n try {\n const resp = await fetchWithRetry(`${ELEVENLABS_BASE}/models`, {\n headers: { \"xi-api-key\": apiKey },\n });\n if (!resp.ok) {\n const errText = await resp.text();\n return { success: false, error: `List Models error ${resp.status}: ${errText}` };\n }\n const models = await resp.json();\n return {\n success: true,\n data: (models || []).map((m: any) => ({\n model_id: m.model_id, name: m.name, description: m.description,\n can_be_finetuned: m.can_be_finetuned,\n can_do_text_to_speech: m.can_do_text_to_speech,\n can_do_voice_conversion: m.can_do_voice_conversion,\n languages: m.languages,\n })),\n };\n } catch (err) {\n return { success: false, error: `List models failed: ${err}` };\n }\n }\n\n default:\n return {\n success: false,\n error: `Unknown voice action: ${action}. Valid: speak, batch, sound_effects, music_plan, music_compose, music_compose_detailed, speech_to_text, stem_separation, voice_changer, audio_isolation, voice_design, voice_design_create, clone_voice, forced_alignment, search_voices, list_voices, get_voice, usage, list_models, pvc_create, pvc_upload, pvc_separate_speakers, pvc_status, pvc_select_speaker, pvc_verify, pvc_train`,\n };\n }\n}\n"],"mappings":"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","ignoreList":[]}