@yina-npm/openrouterx 0.4.80 → 0.5.9

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 (1621) hide show
  1. package/LICENSE +22 -1
  2. package/README.md +72 -420
  3. package/app/.next-cli-build/BUILD_ID +1 -0
  4. package/app/.next-cli-build/app-path-routes-manifest.json +170 -0
  5. package/app/.next-cli-build/build-manifest.json +20 -0
  6. package/app/.next-cli-build/prerender-manifest.json +239 -0
  7. package/app/.next-cli-build/required-server-files.json +380 -0
  8. package/app/.next-cli-build/routes-manifest.json +1131 -0
  9. package/app/.next-cli-build/server/app/(dashboard)/dashboard/admin/keys/page.js +2 -0
  10. package/app/.next-cli-build/server/app/(dashboard)/dashboard/admin/keys/page.js.nft.json +1 -0
  11. package/app/.next-cli-build/server/app/(dashboard)/dashboard/admin/keys/page_client-reference-manifest.js +1 -0
  12. package/app/.next-cli-build/server/app/(dashboard)/dashboard/admin/users/page.js +2 -0
  13. package/app/.next-cli-build/server/app/(dashboard)/dashboard/admin/users/page.js.nft.json +1 -0
  14. package/app/.next-cli-build/server/app/(dashboard)/dashboard/admin/users/page_client-reference-manifest.js +1 -0
  15. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js +2 -0
  16. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -0
  17. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -0
  18. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +24 -0
  19. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -0
  20. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -0
  21. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js +2 -0
  22. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -0
  23. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -0
  24. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js +2 -0
  25. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -0
  26. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -0
  27. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js +2 -0
  28. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -0
  29. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -0
  30. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js +2 -0
  31. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -0
  32. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -0
  33. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +60 -0
  34. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -0
  35. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -0
  36. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +2 -0
  37. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -0
  38. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -0
  39. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +5 -0
  40. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -0
  41. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -0
  42. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js +2 -0
  43. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -0
  44. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -0
  45. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js +2 -0
  46. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -0
  47. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -0
  48. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js +2 -0
  49. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -0
  50. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -0
  51. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js +2 -0
  52. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -0
  53. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -0
  54. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +11 -0
  55. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -0
  56. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -0
  57. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js +2 -0
  58. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -0
  59. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -0
  60. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js +2 -0
  61. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -0
  62. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -0
  63. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js +5 -0
  64. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -0
  65. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -0
  66. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js +3 -0
  67. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -0
  68. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -0
  69. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js +2 -0
  70. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js.nft.json +1 -0
  71. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -0
  72. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js +2 -0
  73. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -0
  74. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -0
  75. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js +2 -0
  76. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -0
  77. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -0
  78. package/app/.next-cli-build/server/app/(dashboard)/dashboard/user/page.js +5 -0
  79. package/app/.next-cli-build/server/app/(dashboard)/dashboard/user/page.js.nft.json +1 -0
  80. package/app/.next-cli-build/server/app/(dashboard)/dashboard/user/page_client-reference-manifest.js +1 -0
  81. package/app/.next-cli-build/server/app/_global-error/page.js +32 -0
  82. package/app/.next-cli-build/server/app/_global-error/page.js.nft.json +1 -0
  83. package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -0
  84. package/app/.next-cli-build/server/app/_global-error.html +1 -0
  85. package/app/.next-cli-build/server/app/_global-error.rsc +14 -0
  86. package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +14 -0
  87. package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +5 -0
  88. package/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +5 -0
  89. package/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +5 -0
  90. package/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +5 -0
  91. package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -0
  92. package/app/.next-cli-build/server/app/_not-found/page.js +2 -0
  93. package/app/.next-cli-build/server/app/_not-found/page.js.nft.json +1 -0
  94. package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -0
  95. package/app/.next-cli-build/server/app/_not-found.html +1 -0
  96. package/app/.next-cli-build/server/app/_not-found.rsc +21 -0
  97. package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +21 -0
  98. package/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +6 -0
  99. package/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +9 -0
  100. package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +5 -0
  101. package/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +5 -0
  102. package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +4 -0
  103. package/app/.next-cli-build/server/app/api/auth/login/route.js +1 -0
  104. package/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -0
  105. package/app/.next-cli-build/server/app/api/auth/logout/route.js +1 -0
  106. package/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -0
  107. package/app/.next-cli-build/server/app/api/auth/me/route.js +1 -0
  108. package/app/.next-cli-build/server/app/api/auth/me/route.js.nft.json +1 -0
  109. package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js +1 -0
  110. package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -0
  111. package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js +1 -0
  112. package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -0
  113. package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js +1 -0
  114. package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -0
  115. package/app/.next-cli-build/server/app/api/auth/reset-password/route.js +1 -0
  116. package/app/.next-cli-build/server/app/api/auth/reset-password/route.js.nft.json +1 -0
  117. package/app/.next-cli-build/server/app/api/auth/status/route.js +1 -0
  118. package/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -0
  119. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +17 -0
  120. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -0
  121. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -0
  122. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -0
  123. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js +1 -0
  124. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -0
  125. package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js +2 -0
  126. package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -0
  127. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +2 -0
  128. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -0
  129. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/activate-account/route.js +2 -0
  130. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/activate-account/route.js.nft.json +1 -0
  131. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +1 -0
  132. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -0
  133. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js +2 -0
  134. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -0
  135. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +2 -0
  136. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -0
  137. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +2 -0
  138. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -0
  139. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +1 -0
  140. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -0
  141. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +9 -0
  142. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -0
  143. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +2 -0
  144. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -0
  145. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +10 -0
  146. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -0
  147. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +3 -0
  148. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -0
  149. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +2 -0
  150. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -0
  151. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +2 -0
  152. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -0
  153. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +2 -0
  154. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -0
  155. package/app/.next-cli-build/server/app/api/combos/[id]/route.js +1 -0
  156. package/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -0
  157. package/app/.next-cli-build/server/app/api/combos/route.js +1 -0
  158. package/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -0
  159. package/app/.next-cli-build/server/app/api/headroom/start/route.js +1 -0
  160. package/app/.next-cli-build/server/app/api/headroom/start/route.js.nft.json +1 -0
  161. package/app/.next-cli-build/server/app/api/headroom/start/route_client-reference-manifest.js +1 -0
  162. package/app/.next-cli-build/server/app/api/headroom/status/route.js +1 -0
  163. package/app/.next-cli-build/server/app/api/headroom/status/route.js.nft.json +1 -0
  164. package/app/.next-cli-build/server/app/api/headroom/status/route_client-reference-manifest.js +1 -0
  165. package/app/.next-cli-build/server/app/api/headroom/stop/route.js +1 -0
  166. package/app/.next-cli-build/server/app/api/headroom/stop/route.js.nft.json +1 -0
  167. package/app/.next-cli-build/server/app/api/headroom/stop/route_client-reference-manifest.js +1 -0
  168. package/app/.next-cli-build/server/app/api/health/route.js +1 -0
  169. package/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -0
  170. package/app/.next-cli-build/server/app/api/init/route.js +1 -0
  171. package/app/.next-cli-build/server/app/api/init/route.js.nft.json +1 -0
  172. package/app/.next-cli-build/server/app/api/keys/[id]/route.js +1 -0
  173. package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -0
  174. package/app/.next-cli-build/server/app/api/keys/route.js +1 -0
  175. package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -0
  176. package/app/.next-cli-build/server/app/api/locale/route.js +1 -0
  177. package/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -0
  178. package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js +7 -0
  179. package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -0
  180. package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js +10 -0
  181. package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -0
  182. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -0
  183. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -0
  184. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -0
  185. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -0
  186. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js +1 -0
  187. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -0
  188. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js +1 -0
  189. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -0
  190. package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js +1 -0
  191. package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -0
  192. package/app/.next-cli-build/server/app/api/models/alias/route.js +1 -0
  193. package/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -0
  194. package/app/.next-cli-build/server/app/api/models/availability/route.js +1 -0
  195. package/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -0
  196. package/app/.next-cli-build/server/app/api/models/custom/route.js +1 -0
  197. package/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -0
  198. package/app/.next-cli-build/server/app/api/models/disabled/route.js +1 -0
  199. package/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -0
  200. package/app/.next-cli-build/server/app/api/models/route.js +1 -0
  201. package/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -0
  202. package/app/.next-cli-build/server/app/api/models/test/route.js +1 -0
  203. package/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -0
  204. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -0
  205. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -0
  206. package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js +1 -0
  207. package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js.nft.json +1 -0
  208. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -0
  209. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -0
  210. package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js +4 -0
  211. package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -0
  212. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js +1 -0
  213. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -0
  214. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js +1 -0
  215. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -0
  216. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js +1 -0
  217. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -0
  218. package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js +1 -0
  219. package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js.nft.json +1 -0
  220. package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route_client-reference-manifest.js +1 -0
  221. package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js +1 -0
  222. package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -0
  223. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js +1 -0
  224. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -0
  225. package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js +1 -0
  226. package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -0
  227. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js +1 -0
  228. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -0
  229. package/app/.next-cli-build/server/app/api/pricing/route.js +1 -0
  230. package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -0
  231. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js +1 -0
  232. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -0
  233. package/app/.next-cli-build/server/app/api/provider-nodes/route.js +1 -0
  234. package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -0
  235. package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js +1 -0
  236. package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -0
  237. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +1 -0
  238. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -0
  239. package/app/.next-cli-build/server/app/api/providers/[id]/route.js +1 -0
  240. package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -0
  241. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -0
  242. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -0
  243. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -0
  244. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -0
  245. package/app/.next-cli-build/server/app/api/providers/client/route.js +1 -0
  246. package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -0
  247. package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js +1 -0
  248. package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -0
  249. package/app/.next-cli-build/server/app/api/providers/route.js +1 -0
  250. package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -0
  251. package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js +1 -0
  252. package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -0
  253. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js +1 -0
  254. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -0
  255. package/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -0
  256. package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -0
  257. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js +1 -0
  258. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -0
  259. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js +1 -0
  260. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -0
  261. package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js +43 -0
  262. package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -0
  263. package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js +40 -0
  264. package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -0
  265. package/app/.next-cli-build/server/app/api/proxy-pools/route.js +1 -0
  266. package/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -0
  267. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js +33 -0
  268. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -0
  269. package/app/.next-cli-build/server/app/api/settings/database/route.js +1 -0
  270. package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -0
  271. package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js +1 -0
  272. package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -0
  273. package/app/.next-cli-build/server/app/api/settings/require-login/route.js +1 -0
  274. package/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -0
  275. package/app/.next-cli-build/server/app/api/settings/route.js +1 -0
  276. package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -0
  277. package/app/.next-cli-build/server/app/api/shutdown/route.js +1 -0
  278. package/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -0
  279. package/app/.next-cli-build/server/app/api/tags/route.js +1 -0
  280. package/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -0
  281. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -0
  282. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js.nft.json +1 -0
  283. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +7 -0
  284. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -0
  285. package/app/.next-cli-build/server/app/api/translator/load/route.js +1 -0
  286. package/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -0
  287. package/app/.next-cli-build/server/app/api/translator/save/route.js +1 -0
  288. package/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -0
  289. package/app/.next-cli-build/server/app/api/translator/send/route.js +1 -0
  290. package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -0
  291. package/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -0
  292. package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -0
  293. package/app/.next-cli-build/server/app/api/tunnel/disable/route.js +1 -0
  294. package/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -0
  295. package/app/.next-cli-build/server/app/api/tunnel/enable/route.js +1 -0
  296. package/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -0
  297. package/app/.next-cli-build/server/app/api/tunnel/status/route.js +1 -0
  298. package/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -0
  299. package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js +1 -0
  300. package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -0
  301. package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js +1 -0
  302. package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -0
  303. package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js +1 -0
  304. package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -0
  305. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js +5 -0
  306. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -0
  307. package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js +1 -0
  308. package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js.nft.json +1 -0
  309. package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route_client-reference-manifest.js +1 -0
  310. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -0
  311. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -0
  312. package/app/.next-cli-build/server/app/api/usage/api-keys/route.js +1 -0
  313. package/app/.next-cli-build/server/app/api/usage/api-keys/route.js.nft.json +1 -0
  314. package/app/.next-cli-build/server/app/api/usage/chart/route.js +1 -0
  315. package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -0
  316. package/app/.next-cli-build/server/app/api/usage/history/route.js +1 -0
  317. package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -0
  318. package/app/.next-cli-build/server/app/api/usage/logs/route.js +1 -0
  319. package/app/.next-cli-build/server/app/api/usage/logs/route.js.nft.json +1 -0
  320. package/app/.next-cli-build/server/app/api/usage/providers/route.js +1 -0
  321. package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -0
  322. package/app/.next-cli-build/server/app/api/usage/request-details/route.js +1 -0
  323. package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -0
  324. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js +1 -0
  325. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -0
  326. package/app/.next-cli-build/server/app/api/usage/stats/route.js +1 -0
  327. package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -0
  328. package/app/.next-cli-build/server/app/api/usage/stream/route.js +7 -0
  329. package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -0
  330. package/app/.next-cli-build/server/app/api/users/[id]/route.js +1 -0
  331. package/app/.next-cli-build/server/app/api/users/[id]/route.js.nft.json +1 -0
  332. package/app/.next-cli-build/server/app/api/users/route.js +1 -0
  333. package/app/.next-cli-build/server/app/api/users/route.js.nft.json +1 -0
  334. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -0
  335. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -0
  336. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -0
  337. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -0
  338. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -0
  339. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -0
  340. package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js +1 -0
  341. package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -0
  342. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -0
  343. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -0
  344. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -0
  345. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -0
  346. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js +4 -0
  347. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -0
  348. package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js +1 -0
  349. package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -0
  350. package/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -0
  351. package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -0
  352. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js +1 -0
  353. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -0
  354. package/app/.next-cli-build/server/app/api/v1/models/info/route.js +1 -0
  355. package/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -0
  356. package/app/.next-cli-build/server/app/api/v1/models/route.js +1 -0
  357. package/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -0
  358. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -0
  359. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -0
  360. package/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -0
  361. package/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -0
  362. package/app/.next-cli-build/server/app/api/v1/route.js +1 -0
  363. package/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -0
  364. package/app/.next-cli-build/server/app/api/v1/search/route.js +1 -0
  365. package/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -0
  366. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -0
  367. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -0
  368. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -0
  369. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -0
  370. package/app/.next-cli-build/server/app/api/v1beta/models/route.js +1 -0
  371. package/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -0
  372. package/app/.next-cli-build/server/app/api/version/route.js +1 -0
  373. package/app/.next-cli-build/server/app/api/version/route.js.nft.json +1 -0
  374. package/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -0
  375. package/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -0
  376. package/app/.next-cli-build/server/app/api/version/update/route.js +1 -0
  377. package/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -0
  378. package/app/.next-cli-build/server/app/callback/page.js +2 -0
  379. package/app/.next-cli-build/server/app/callback/page.js.nft.json +1 -0
  380. package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -0
  381. package/app/.next-cli-build/server/app/callback.html +1 -0
  382. package/app/.next-cli-build/server/app/callback.rsc +25 -0
  383. package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +25 -0
  384. package/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +6 -0
  385. package/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +9 -0
  386. package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +4 -0
  387. package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +9 -0
  388. package/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +5 -0
  389. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js +2 -0
  390. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js.nft.json +1 -0
  391. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -0
  392. package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -0
  393. package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +25 -0
  394. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +25 -0
  395. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +6 -0
  396. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +9 -0
  397. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +4 -0
  398. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +9 -0
  399. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +5 -0
  400. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +5 -0
  401. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +5 -0
  402. package/app/.next-cli-build/server/app/favicon.ico/route.js +1 -0
  403. package/app/.next-cli-build/server/app/favicon.ico/route.js.nft.json +1 -0
  404. package/app/.next-cli-build/server/app/index.html +1 -0
  405. package/app/.next-cli-build/server/app/index.rsc +20 -0
  406. package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +6 -0
  407. package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +20 -0
  408. package/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +6 -0
  409. package/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +9 -0
  410. package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +4 -0
  411. package/app/.next-cli-build/server/app/landing/page.js +2 -0
  412. package/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -0
  413. package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -0
  414. package/app/.next-cli-build/server/app/landing.html +1 -0
  415. package/app/.next-cli-build/server/app/landing.rsc +25 -0
  416. package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +25 -0
  417. package/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +6 -0
  418. package/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +9 -0
  419. package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +4 -0
  420. package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +9 -0
  421. package/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +5 -0
  422. package/app/.next-cli-build/server/app/login/page.js +2 -0
  423. package/app/.next-cli-build/server/app/login/page.js.nft.json +1 -0
  424. package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -0
  425. package/app/.next-cli-build/server/app/login.html +1 -0
  426. package/app/.next-cli-build/server/app/login.rsc +26 -0
  427. package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +26 -0
  428. package/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +6 -0
  429. package/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +9 -0
  430. package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +5 -0
  431. package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +10 -0
  432. package/app/.next-cli-build/server/app/login.segments/login.segment.rsc +5 -0
  433. package/app/.next-cli-build/server/app/manifest.webmanifest/route.js +16 -0
  434. package/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -0
  435. package/app/.next-cli-build/server/app/page.js +2 -0
  436. package/app/.next-cli-build/server/app/page.js.nft.json +1 -0
  437. package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -0
  438. package/app/.next-cli-build/server/app-paths-manifest.json +170 -0
  439. package/app/.next-cli-build/server/chunks/1220.js +3 -0
  440. package/app/.next-cli-build/server/chunks/1241.js +1 -0
  441. package/app/.next-cli-build/server/chunks/1275.js +73 -0
  442. package/app/.next-cli-build/server/chunks/1350.js +2 -0
  443. package/app/.next-cli-build/server/chunks/1832.js +1 -0
  444. package/app/.next-cli-build/server/chunks/2059.js +1 -0
  445. package/app/.next-cli-build/server/chunks/2944.js +1 -0
  446. package/app/.next-cli-build/server/chunks/319.js +45 -0
  447. package/app/.next-cli-build/server/chunks/3412.js +1 -0
  448. package/app/.next-cli-build/server/chunks/3428.js +1 -0
  449. package/app/.next-cli-build/server/chunks/3535.js +1 -0
  450. package/app/.next-cli-build/server/chunks/3546.js +1 -0
  451. package/app/.next-cli-build/server/chunks/3913.js +64 -0
  452. package/app/.next-cli-build/server/chunks/412.js +7 -0
  453. package/app/.next-cli-build/server/chunks/4632.js +1 -0
  454. package/app/.next-cli-build/server/chunks/4922.js +9 -0
  455. package/app/.next-cli-build/server/chunks/5118.js +1 -0
  456. package/app/.next-cli-build/server/chunks/5296.js +1 -0
  457. package/app/.next-cli-build/server/chunks/5592.js +1 -0
  458. package/app/.next-cli-build/server/chunks/5615.js +43 -0
  459. package/app/.next-cli-build/server/chunks/5699.js +1 -0
  460. package/app/.next-cli-build/server/chunks/5816.js +1 -0
  461. package/app/.next-cli-build/server/chunks/5961.js +1 -0
  462. package/app/.next-cli-build/server/chunks/6001.js +1 -0
  463. package/app/.next-cli-build/server/chunks/602.js +1 -0
  464. package/app/.next-cli-build/server/chunks/6070.js +1 -0
  465. package/app/.next-cli-build/server/chunks/615.js +1 -0
  466. package/app/.next-cli-build/server/chunks/6151.js +1 -0
  467. package/app/.next-cli-build/server/chunks/6182.js +63 -0
  468. package/app/.next-cli-build/server/chunks/6306.js +1 -0
  469. package/app/.next-cli-build/server/chunks/6327.js +1 -0
  470. package/app/.next-cli-build/server/chunks/6482.js +11 -0
  471. package/app/.next-cli-build/server/chunks/6688.js +1 -0
  472. package/app/.next-cli-build/server/chunks/6763.js +1 -0
  473. package/app/.next-cli-build/server/chunks/6777.js +1 -0
  474. package/app/.next-cli-build/server/chunks/7244.js +1 -0
  475. package/app/.next-cli-build/server/chunks/7259.js +53 -0
  476. package/app/.next-cli-build/server/chunks/7774.js +120 -0
  477. package/app/.next-cli-build/server/chunks/7879.js +10 -0
  478. package/app/.next-cli-build/server/chunks/7937.js +170 -0
  479. package/app/.next-cli-build/server/chunks/801.js +3 -0
  480. package/app/.next-cli-build/server/chunks/8271.js +1 -0
  481. package/app/.next-cli-build/server/chunks/8895.js +58 -0
  482. package/app/.next-cli-build/server/chunks/8910.js +2 -0
  483. package/app/.next-cli-build/server/chunks/8920.js +1 -0
  484. package/app/.next-cli-build/server/chunks/9718.js +1 -0
  485. package/app/.next-cli-build/server/chunks/9787.js +31 -0
  486. package/app/.next-cli-build/server/chunks/9833.js +1 -0
  487. package/app/.next-cli-build/server/middleware-build-manifest.js +1 -0
  488. package/app/.next-cli-build/server/middleware.js +18 -0
  489. package/app/.next-cli-build/server/next-font-manifest.js +1 -0
  490. package/app/.next-cli-build/server/next-font-manifest.json +1 -0
  491. package/app/.next-cli-build/server/pages/404.html +1 -0
  492. package/app/.next-cli-build/server/pages/500.html +1 -0
  493. package/app/.next-cli-build/server/server-reference-manifest.js +1 -0
  494. package/app/.next-cli-build/server/server-reference-manifest.json +1 -0
  495. package/app/.next-cli-build/static/Z1O3mWLKLCkJm5SRaYg62/_buildManifest.js +1 -0
  496. package/app/.next-cli-build/static/chunks/1321-dbbab49aa820c76b.js +1 -0
  497. package/app/.next-cli-build/static/chunks/4072-932473fbd266d3f5.js +3 -0
  498. package/app/.next-cli-build/static/chunks/5497-215b48f00706d2c8.js +7 -0
  499. package/app/.next-cli-build/static/chunks/6069-b72e6803d5df6bb0.js +53 -0
  500. package/app/.next-cli-build/static/chunks/705-979ff3eb195b9023.js +1 -0
  501. package/app/.next-cli-build/static/chunks/8982-6d1803817450bcd4.js +11 -0
  502. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/admin/keys/page-770d25a6e4c1c16b.js +1 -0
  503. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/admin/users/page-c02ec2a52cb81f6c.js +1 -0
  504. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/basic-chat/page-00067a1ed47e8a1a.js +1 -0
  505. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/[toolId]/page-6b52a6040f91175e.js +1 -0
  506. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/page-7e1032515aa7b846.js +1 -0
  507. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/combos/page-b0ea71f0ee7d3f0d.js +1 -0
  508. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/console-log/page-3255488cfa30dbe8.js +1 -0
  509. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/endpoint/page-a803dd8339e39a59.js +1 -0
  510. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page-248f90bb1f8438b5.js +59 -0
  511. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/page-f2ad20d24fffaed1.js +1 -0
  512. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/combo/[id]/page-9b1c19519a3fcdd6.js +4 -0
  513. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/web/page-c9d255cd986ec35f.js +1 -0
  514. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/mitm/page-6783a97fcd89ff19.js +1 -0
  515. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/page-35bb7f0efeba6102.js +1 -0
  516. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/profile/page-5cfb7ca8b362af6f.js +1 -0
  517. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-1e127be17d25ddd8.js +10 -0
  518. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/new/page-7c91743514149c71.js +1 -0
  519. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/page-95bd9413da0d98a6.js +1 -0
  520. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/proxy-pools/page-022d3cf41ae7126d.js +4 -0
  521. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/page-561f95b84b06ae49.js +2 -0
  522. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/skills/page-88a024a500d543fa.js +1 -0
  523. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/translator/page-f514bcc6e633f162.js +1 -0
  524. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/usage/page-2551a48ef918b89b.js +1 -0
  525. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/user/page-2bb3871609a94258.js +4 -0
  526. package/app/.next-cli-build/static/chunks/app/(dashboard)/layout-b38e9f02aacbdcc5.js +1 -0
  527. package/app/.next-cli-build/static/chunks/app/_global-error/page-f514bcc6e633f162.js +1 -0
  528. package/app/.next-cli-build/static/chunks/app/api/auth/login/route-f514bcc6e633f162.js +1 -0
  529. package/app/.next-cli-build/static/chunks/app/api/auth/logout/route-f514bcc6e633f162.js +1 -0
  530. package/app/.next-cli-build/static/chunks/app/api/auth/me/route-f514bcc6e633f162.js +1 -0
  531. package/app/.next-cli-build/static/chunks/app/api/auth/oidc/callback/route-f514bcc6e633f162.js +1 -0
  532. package/app/.next-cli-build/static/chunks/app/api/auth/oidc/start/route-f514bcc6e633f162.js +1 -0
  533. package/app/.next-cli-build/static/chunks/app/api/auth/oidc/test/route-f514bcc6e633f162.js +1 -0
  534. package/app/.next-cli-build/static/chunks/app/api/auth/reset-password/route-f514bcc6e633f162.js +1 -0
  535. package/app/.next-cli-build/static/chunks/app/api/auth/status/route-f514bcc6e633f162.js +1 -0
  536. package/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-f514bcc6e633f162.js +1 -0
  537. package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-f514bcc6e633f162.js +1 -0
  538. package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-f514bcc6e633f162.js +1 -0
  539. package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-f514bcc6e633f162.js +1 -0
  540. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-f514bcc6e633f162.js +1 -0
  541. package/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/activate-account/route-f514bcc6e633f162.js +1 -0
  542. package/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-f514bcc6e633f162.js +1 -0
  543. package/app/.next-cli-build/static/chunks/app/api/cli-tools/copilot-settings/route-f514bcc6e633f162.js +1 -0
  544. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-f514bcc6e633f162.js +1 -0
  545. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-f514bcc6e633f162.js +1 -0
  546. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-f514bcc6e633f162.js +1 -0
  547. package/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-f514bcc6e633f162.js +1 -0
  548. package/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-f514bcc6e633f162.js +1 -0
  549. package/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-f514bcc6e633f162.js +1 -0
  550. package/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-f514bcc6e633f162.js +1 -0
  551. package/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-f514bcc6e633f162.js +1 -0
  552. package/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-f514bcc6e633f162.js +1 -0
  553. package/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-f514bcc6e633f162.js +1 -0
  554. package/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-f514bcc6e633f162.js +1 -0
  555. package/app/.next-cli-build/static/chunks/app/api/combos/route-f514bcc6e633f162.js +1 -0
  556. package/app/.next-cli-build/static/chunks/app/api/headroom/start/route-f514bcc6e633f162.js +1 -0
  557. package/app/.next-cli-build/static/chunks/app/api/headroom/status/route-f514bcc6e633f162.js +1 -0
  558. package/app/.next-cli-build/static/chunks/app/api/headroom/stop/route-f514bcc6e633f162.js +1 -0
  559. package/app/.next-cli-build/static/chunks/app/api/health/route-f514bcc6e633f162.js +1 -0
  560. package/app/.next-cli-build/static/chunks/app/api/init/route-f514bcc6e633f162.js +1 -0
  561. package/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-f514bcc6e633f162.js +1 -0
  562. package/app/.next-cli-build/static/chunks/app/api/keys/route-f514bcc6e633f162.js +1 -0
  563. package/app/.next-cli-build/static/chunks/app/api/locale/route-f514bcc6e633f162.js +1 -0
  564. package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-f514bcc6e633f162.js +1 -0
  565. package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-f514bcc6e633f162.js +1 -0
  566. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-f514bcc6e633f162.js +1 -0
  567. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-f514bcc6e633f162.js +1 -0
  568. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-f514bcc6e633f162.js +1 -0
  569. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-f514bcc6e633f162.js +1 -0
  570. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-f514bcc6e633f162.js +1 -0
  571. package/app/.next-cli-build/static/chunks/app/api/models/alias/route-f514bcc6e633f162.js +1 -0
  572. package/app/.next-cli-build/static/chunks/app/api/models/availability/route-f514bcc6e633f162.js +1 -0
  573. package/app/.next-cli-build/static/chunks/app/api/models/custom/route-f514bcc6e633f162.js +1 -0
  574. package/app/.next-cli-build/static/chunks/app/api/models/disabled/route-f514bcc6e633f162.js +1 -0
  575. package/app/.next-cli-build/static/chunks/app/api/models/route-f514bcc6e633f162.js +1 -0
  576. package/app/.next-cli-build/static/chunks/app/api/models/test/route-f514bcc6e633f162.js +1 -0
  577. package/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-f514bcc6e633f162.js +1 -0
  578. package/app/.next-cli-build/static/chunks/app/api/oauth/codex/bulk-import/route-f514bcc6e633f162.js +1 -0
  579. package/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-f514bcc6e633f162.js +1 -0
  580. package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-f514bcc6e633f162.js +1 -0
  581. package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-f514bcc6e633f162.js +1 -0
  582. package/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-f514bcc6e633f162.js +1 -0
  583. package/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-f514bcc6e633f162.js +1 -0
  584. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/api-key/route-f514bcc6e633f162.js +1 -0
  585. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-f514bcc6e633f162.js +1 -0
  586. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-f514bcc6e633f162.js +1 -0
  587. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-f514bcc6e633f162.js +1 -0
  588. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-f514bcc6e633f162.js +1 -0
  589. package/app/.next-cli-build/static/chunks/app/api/pricing/route-f514bcc6e633f162.js +1 -0
  590. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-f514bcc6e633f162.js +1 -0
  591. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/route-f514bcc6e633f162.js +1 -0
  592. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-f514bcc6e633f162.js +1 -0
  593. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-f514bcc6e633f162.js +1 -0
  594. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-f514bcc6e633f162.js +1 -0
  595. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-f514bcc6e633f162.js +1 -0
  596. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-f514bcc6e633f162.js +1 -0
  597. package/app/.next-cli-build/static/chunks/app/api/providers/client/route-f514bcc6e633f162.js +1 -0
  598. package/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-f514bcc6e633f162.js +1 -0
  599. package/app/.next-cli-build/static/chunks/app/api/providers/route-f514bcc6e633f162.js +1 -0
  600. package/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-f514bcc6e633f162.js +1 -0
  601. package/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-f514bcc6e633f162.js +1 -0
  602. package/app/.next-cli-build/static/chunks/app/api/providers/validate/route-f514bcc6e633f162.js +1 -0
  603. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/route-f514bcc6e633f162.js +1 -0
  604. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/test/route-f514bcc6e633f162.js +1 -0
  605. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-f514bcc6e633f162.js +1 -0
  606. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/deno-deploy/route-f514bcc6e633f162.js +1 -0
  607. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/route-f514bcc6e633f162.js +1 -0
  608. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/vercel-deploy/route-f514bcc6e633f162.js +1 -0
  609. package/app/.next-cli-build/static/chunks/app/api/settings/database/route-f514bcc6e633f162.js +1 -0
  610. package/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-f514bcc6e633f162.js +1 -0
  611. package/app/.next-cli-build/static/chunks/app/api/settings/require-login/route-f514bcc6e633f162.js +1 -0
  612. package/app/.next-cli-build/static/chunks/app/api/settings/route-f514bcc6e633f162.js +1 -0
  613. package/app/.next-cli-build/static/chunks/app/api/shutdown/route-f514bcc6e633f162.js +1 -0
  614. package/app/.next-cli-build/static/chunks/app/api/tags/route-f514bcc6e633f162.js +1 -0
  615. package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-f514bcc6e633f162.js +1 -0
  616. package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-f514bcc6e633f162.js +1 -0
  617. package/app/.next-cli-build/static/chunks/app/api/translator/load/route-f514bcc6e633f162.js +1 -0
  618. package/app/.next-cli-build/static/chunks/app/api/translator/save/route-f514bcc6e633f162.js +1 -0
  619. package/app/.next-cli-build/static/chunks/app/api/translator/send/route-f514bcc6e633f162.js +1 -0
  620. package/app/.next-cli-build/static/chunks/app/api/translator/translate/route-f514bcc6e633f162.js +1 -0
  621. package/app/.next-cli-build/static/chunks/app/api/tunnel/disable/route-f514bcc6e633f162.js +1 -0
  622. package/app/.next-cli-build/static/chunks/app/api/tunnel/enable/route-f514bcc6e633f162.js +1 -0
  623. package/app/.next-cli-build/static/chunks/app/api/tunnel/status/route-f514bcc6e633f162.js +1 -0
  624. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-check/route-f514bcc6e633f162.js +1 -0
  625. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-disable/route-f514bcc6e633f162.js +1 -0
  626. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-enable/route-f514bcc6e633f162.js +1 -0
  627. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-install/route-f514bcc6e633f162.js +1 -0
  628. package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/codex-reset-credits/route-f514bcc6e633f162.js +1 -0
  629. package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-f514bcc6e633f162.js +1 -0
  630. package/app/.next-cli-build/static/chunks/app/api/usage/api-keys/route-f514bcc6e633f162.js +1 -0
  631. package/app/.next-cli-build/static/chunks/app/api/usage/chart/route-f514bcc6e633f162.js +1 -0
  632. package/app/.next-cli-build/static/chunks/app/api/usage/history/route-f514bcc6e633f162.js +1 -0
  633. package/app/.next-cli-build/static/chunks/app/api/usage/logs/route-f514bcc6e633f162.js +1 -0
  634. package/app/.next-cli-build/static/chunks/app/api/usage/providers/route-f514bcc6e633f162.js +1 -0
  635. package/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-f514bcc6e633f162.js +1 -0
  636. package/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-f514bcc6e633f162.js +1 -0
  637. package/app/.next-cli-build/static/chunks/app/api/usage/stats/route-f514bcc6e633f162.js +1 -0
  638. package/app/.next-cli-build/static/chunks/app/api/usage/stream/route-f514bcc6e633f162.js +1 -0
  639. package/app/.next-cli-build/static/chunks/app/api/users/[id]/route-f514bcc6e633f162.js +1 -0
  640. package/app/.next-cli-build/static/chunks/app/api/users/route-f514bcc6e633f162.js +1 -0
  641. package/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-f514bcc6e633f162.js +1 -0
  642. package/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-f514bcc6e633f162.js +1 -0
  643. package/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-f514bcc6e633f162.js +1 -0
  644. package/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-f514bcc6e633f162.js +1 -0
  645. package/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-f514bcc6e633f162.js +1 -0
  646. package/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-f514bcc6e633f162.js +1 -0
  647. package/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-f514bcc6e633f162.js +1 -0
  648. package/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-f514bcc6e633f162.js +1 -0
  649. package/app/.next-cli-build/static/chunks/app/api/v1/messages/route-f514bcc6e633f162.js +1 -0
  650. package/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-f514bcc6e633f162.js +1 -0
  651. package/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-f514bcc6e633f162.js +1 -0
  652. package/app/.next-cli-build/static/chunks/app/api/v1/models/route-f514bcc6e633f162.js +1 -0
  653. package/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-f514bcc6e633f162.js +1 -0
  654. package/app/.next-cli-build/static/chunks/app/api/v1/responses/route-f514bcc6e633f162.js +1 -0
  655. package/app/.next-cli-build/static/chunks/app/api/v1/route-f514bcc6e633f162.js +1 -0
  656. package/app/.next-cli-build/static/chunks/app/api/v1/search/route-f514bcc6e633f162.js +1 -0
  657. package/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-f514bcc6e633f162.js +1 -0
  658. package/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-f514bcc6e633f162.js +1 -0
  659. package/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-f514bcc6e633f162.js +1 -0
  660. package/app/.next-cli-build/static/chunks/app/api/version/route-f514bcc6e633f162.js +1 -0
  661. package/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-f514bcc6e633f162.js +1 -0
  662. package/app/.next-cli-build/static/chunks/app/api/version/update/route-f514bcc6e633f162.js +1 -0
  663. package/app/.next-cli-build/static/chunks/app/dashboard/settings/pricing/page-fa3a6585ef16a942.js +1 -0
  664. package/app/.next-cli-build/static/chunks/app/layout-666059e0e271094b.js +1 -0
  665. package/app/.next-cli-build/static/chunks/app/login/page-fc66d6d071e3bcf3.js +1 -0
  666. package/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-f514bcc6e633f162.js +1 -0
  667. package/app/.next-cli-build/static/chunks/app/page-f514bcc6e633f162.js +1 -0
  668. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-f514bcc6e633f162.js +1 -0
  669. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-f514bcc6e633f162.js +1 -0
  670. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-f514bcc6e633f162.js +1 -0
  671. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-f514bcc6e633f162.js +1 -0
  672. package/app/.next-cli-build/static/chunks/webpack-786de0e184ffd859.js +1 -0
  673. package/app/.next-cli-build/static/css/d477f23f99f30ee7.css +1 -0
  674. package/app/.next-cli-build/static/css/e60401d99e3ceca2.css +1 -0
  675. package/app/.next-cli-build/static/media/19cfc7226ec3afaa-s.woff2 +0 -0
  676. package/app/.next-cli-build/static/media/21350d82a1f187e9-s.woff2 +0 -0
  677. package/app/.next-cli-build/static/media/8e9860b6e62d6359-s.woff2 +0 -0
  678. package/app/.next-cli-build/static/media/ba9851c3c22cd980-s.woff2 +0 -0
  679. package/app/.next-cli-build/static/media/c5fe6dc8356a8c31-s.woff2 +0 -0
  680. package/app/.next-cli-build/static/media/df0a9ae256c0569c-s.woff2 +0 -0
  681. package/app/.next-cli-build/static/media/e4af272ccee01ff0-s.p.woff2 +0 -0
  682. package/app/cli/.build-home/.openrouterx/db.json +43 -0
  683. package/app/cli/.build-home/.openrouterx/jwt-secret +1 -0
  684. package/app/cli/.build-home/.openrouterx/machine-id +1 -0
  685. package/app/cli/.build-home/Library/Preferences/nextjs-nodejs/config.json +7 -0
  686. package/app/custom-server.js +32 -0
  687. package/app/package.json +11 -8
  688. package/app/public/providers/codebuddy-cn.png +0 -0
  689. package/app/server.js +1 -1
  690. package/app/src/lib/updater/updater.js +2 -2
  691. package/app/src/mitm/server.js +60 -435
  692. package/cli.js +728 -415
  693. package/hooks/postinstall.js +15 -48
  694. package/hooks/sqliteRuntime.js +156 -0
  695. package/hooks/trayRuntime.js +107 -0
  696. package/package.json +18 -7
  697. package/src/cli/api/client.js +88 -10
  698. package/src/cli/menus/cliTools.js +164 -8
  699. package/src/cli/menus/providers.js +249 -12
  700. package/src/cli/menus/settings.js +138 -31
  701. package/src/cli/terminalUI.js +37 -25
  702. package/src/cli/tray/autostart.js +168 -184
  703. package/src/cli/tray/tray.js +226 -108
  704. package/src/cli/tray/tray.ps1 +79 -0
  705. package/src/cli/tray/trayWin.js +89 -0
  706. package/src/cli/utils/input.js +64 -137
  707. package/src/cli/utils/modelSelector.js +7 -4
  708. package/app/.next/BUILD_ID +0 -1
  709. package/app/.next/app-path-routes-manifest.json +0 -165
  710. package/app/.next/build-manifest.json +0 -20
  711. package/app/.next/prerender-manifest.json +0 -239
  712. package/app/.next/required-server-files.json +0 -376
  713. package/app/.next/routes-manifest.json +0 -1094
  714. package/app/.next/server/app/(dashboard)/dashboard/admin/keys/page.js +0 -2
  715. package/app/.next/server/app/(dashboard)/dashboard/admin/keys/page.js.nft.json +0 -1
  716. package/app/.next/server/app/(dashboard)/dashboard/admin/keys/page_client-reference-manifest.js +0 -1
  717. package/app/.next/server/app/(dashboard)/dashboard/admin/users/page.js +0 -2
  718. package/app/.next/server/app/(dashboard)/dashboard/admin/users/page.js.nft.json +0 -1
  719. package/app/.next/server/app/(dashboard)/dashboard/admin/users/page_client-reference-manifest.js +0 -1
  720. package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page.js +0 -2
  721. package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +0 -1
  722. package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +0 -1
  723. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +0 -24
  724. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +0 -1
  725. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +0 -1
  726. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js +0 -2
  727. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +0 -1
  728. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +0 -1
  729. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js +0 -2
  730. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js.nft.json +0 -1
  731. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +0 -1
  732. package/app/.next/server/app/(dashboard)/dashboard/console-log/page.js +0 -2
  733. package/app/.next/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +0 -1
  734. package/app/.next/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +0 -1
  735. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js +0 -2
  736. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +0 -1
  737. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +0 -1
  738. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +0 -60
  739. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +0 -1
  740. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +0 -1
  741. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +0 -2
  742. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +0 -1
  743. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +0 -1
  744. package/app/.next/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +0 -5
  745. package/app/.next/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +0 -1
  746. package/app/.next/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +0 -1
  747. package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/page.js +0 -2
  748. package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +0 -1
  749. package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +0 -1
  750. package/app/.next/server/app/(dashboard)/dashboard/mitm/page.js +0 -2
  751. package/app/.next/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +0 -1
  752. package/app/.next/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +0 -1
  753. package/app/.next/server/app/(dashboard)/dashboard/page.js +0 -2
  754. package/app/.next/server/app/(dashboard)/dashboard/page.js.nft.json +0 -1
  755. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +0 -1
  756. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js +0 -2
  757. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js.nft.json +0 -1
  758. package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +0 -1
  759. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js +0 -11
  760. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +0 -1
  761. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +0 -1
  762. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js +0 -2
  763. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +0 -1
  764. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +0 -1
  765. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js +0 -2
  766. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js.nft.json +0 -1
  767. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +0 -1
  768. package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js +0 -5
  769. package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +0 -1
  770. package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +0 -1
  771. package/app/.next/server/app/(dashboard)/dashboard/quota/page.js +0 -3
  772. package/app/.next/server/app/(dashboard)/dashboard/quota/page.js.nft.json +0 -1
  773. package/app/.next/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +0 -1
  774. package/app/.next/server/app/(dashboard)/dashboard/skills/page.js +0 -2
  775. package/app/.next/server/app/(dashboard)/dashboard/skills/page.js.nft.json +0 -1
  776. package/app/.next/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +0 -1
  777. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js +0 -2
  778. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js.nft.json +0 -1
  779. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +0 -1
  780. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js +0 -2
  781. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js.nft.json +0 -1
  782. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +0 -1
  783. package/app/.next/server/app/(dashboard)/dashboard/user/page.js +0 -5
  784. package/app/.next/server/app/(dashboard)/dashboard/user/page.js.nft.json +0 -1
  785. package/app/.next/server/app/(dashboard)/dashboard/user/page_client-reference-manifest.js +0 -1
  786. package/app/.next/server/app/_global-error/page.js +0 -32
  787. package/app/.next/server/app/_global-error/page.js.nft.json +0 -1
  788. package/app/.next/server/app/_global-error/page_client-reference-manifest.js +0 -1
  789. package/app/.next/server/app/_global-error.html +0 -1
  790. package/app/.next/server/app/_global-error.rsc +0 -14
  791. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +0 -14
  792. package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +0 -5
  793. package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +0 -5
  794. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +0 -5
  795. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +0 -5
  796. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +0 -1
  797. package/app/.next/server/app/_not-found/page.js +0 -2
  798. package/app/.next/server/app/_not-found/page.js.nft.json +0 -1
  799. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +0 -1
  800. package/app/.next/server/app/_not-found.html +0 -1
  801. package/app/.next/server/app/_not-found.rsc +0 -19
  802. package/app/.next/server/app/_not-found.segments/_full.segment.rsc +0 -19
  803. package/app/.next/server/app/_not-found.segments/_head.segment.rsc +0 -6
  804. package/app/.next/server/app/_not-found.segments/_index.segment.rsc +0 -8
  805. package/app/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +0 -5
  806. package/app/.next/server/app/_not-found.segments/_not-found.segment.rsc +0 -5
  807. package/app/.next/server/app/_not-found.segments/_tree.segment.rsc +0 -3
  808. package/app/.next/server/app/api/auth/login/route.js +0 -1
  809. package/app/.next/server/app/api/auth/login/route.js.nft.json +0 -1
  810. package/app/.next/server/app/api/auth/logout/route.js +0 -1
  811. package/app/.next/server/app/api/auth/logout/route.js.nft.json +0 -1
  812. package/app/.next/server/app/api/auth/me/route.js +0 -1
  813. package/app/.next/server/app/api/auth/me/route.js.nft.json +0 -1
  814. package/app/.next/server/app/api/auth/oidc/callback/route.js +0 -1
  815. package/app/.next/server/app/api/auth/oidc/callback/route.js.nft.json +0 -1
  816. package/app/.next/server/app/api/auth/oidc/start/route.js +0 -1
  817. package/app/.next/server/app/api/auth/oidc/start/route.js.nft.json +0 -1
  818. package/app/.next/server/app/api/auth/oidc/test/route.js +0 -1
  819. package/app/.next/server/app/api/auth/oidc/test/route.js.nft.json +0 -1
  820. package/app/.next/server/app/api/auth/reset-password/route.js +0 -1
  821. package/app/.next/server/app/api/auth/reset-password/route.js.nft.json +0 -1
  822. package/app/.next/server/app/api/auth/status/route.js +0 -1
  823. package/app/.next/server/app/api/auth/status/route.js.nft.json +0 -1
  824. package/app/.next/server/app/api/cli-tools/all-statuses/route.js +0 -17
  825. package/app/.next/server/app/api/cli-tools/all-statuses/route.js.nft.json +0 -1
  826. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js +0 -2
  827. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +0 -1
  828. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js +0 -1
  829. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +0 -1
  830. package/app/.next/server/app/api/cli-tools/claude-settings/route.js +0 -2
  831. package/app/.next/server/app/api/cli-tools/claude-settings/route.js.nft.json +0 -1
  832. package/app/.next/server/app/api/cli-tools/cline-settings/route.js +0 -2
  833. package/app/.next/server/app/api/cli-tools/cline-settings/route.js.nft.json +0 -1
  834. package/app/.next/server/app/api/cli-tools/codex-settings/activate-account/route.js +0 -2
  835. package/app/.next/server/app/api/cli-tools/codex-settings/activate-account/route.js.nft.json +0 -1
  836. package/app/.next/server/app/api/cli-tools/codex-settings/route.js +0 -1
  837. package/app/.next/server/app/api/cli-tools/codex-settings/route.js.nft.json +0 -1
  838. package/app/.next/server/app/api/cli-tools/copilot-settings/route.js +0 -2
  839. package/app/.next/server/app/api/cli-tools/copilot-settings/route.js.nft.json +0 -1
  840. package/app/.next/server/app/api/cli-tools/cowork-mcp-registry/route.js +0 -2
  841. package/app/.next/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +0 -1
  842. package/app/.next/server/app/api/cli-tools/cowork-mcp-tools/route.js +0 -2
  843. package/app/.next/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +0 -1
  844. package/app/.next/server/app/api/cli-tools/cowork-settings/route.js +0 -1
  845. package/app/.next/server/app/api/cli-tools/cowork-settings/route.js.nft.json +0 -1
  846. package/app/.next/server/app/api/cli-tools/deepseek-tui-settings/route.js +0 -9
  847. package/app/.next/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +0 -1
  848. package/app/.next/server/app/api/cli-tools/droid-settings/route.js +0 -2
  849. package/app/.next/server/app/api/cli-tools/droid-settings/route.js.nft.json +0 -1
  850. package/app/.next/server/app/api/cli-tools/hermes-settings/route.js +0 -10
  851. package/app/.next/server/app/api/cli-tools/hermes-settings/route.js.nft.json +0 -1
  852. package/app/.next/server/app/api/cli-tools/jcode-settings/route.js +0 -3
  853. package/app/.next/server/app/api/cli-tools/jcode-settings/route.js.nft.json +0 -1
  854. package/app/.next/server/app/api/cli-tools/kilo-settings/route.js +0 -2
  855. package/app/.next/server/app/api/cli-tools/kilo-settings/route.js.nft.json +0 -1
  856. package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js +0 -2
  857. package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +0 -1
  858. package/app/.next/server/app/api/cli-tools/opencode-settings/route.js +0 -2
  859. package/app/.next/server/app/api/cli-tools/opencode-settings/route.js.nft.json +0 -1
  860. package/app/.next/server/app/api/combos/[id]/route.js +0 -1
  861. package/app/.next/server/app/api/combos/[id]/route.js.nft.json +0 -1
  862. package/app/.next/server/app/api/combos/route.js +0 -1
  863. package/app/.next/server/app/api/combos/route.js.nft.json +0 -1
  864. package/app/.next/server/app/api/health/route.js +0 -1
  865. package/app/.next/server/app/api/health/route.js.nft.json +0 -1
  866. package/app/.next/server/app/api/init/route.js +0 -1
  867. package/app/.next/server/app/api/init/route.js.nft.json +0 -1
  868. package/app/.next/server/app/api/keys/[id]/route.js +0 -1
  869. package/app/.next/server/app/api/keys/[id]/route.js.nft.json +0 -1
  870. package/app/.next/server/app/api/keys/route.js +0 -1
  871. package/app/.next/server/app/api/keys/route.js.nft.json +0 -1
  872. package/app/.next/server/app/api/locale/route.js +0 -1
  873. package/app/.next/server/app/api/locale/route.js.nft.json +0 -1
  874. package/app/.next/server/app/api/mcp/[plugin]/message/route.js +0 -7
  875. package/app/.next/server/app/api/mcp/[plugin]/message/route.js.nft.json +0 -1
  876. package/app/.next/server/app/api/mcp/[plugin]/sse/route.js +0 -10
  877. package/app/.next/server/app/api/mcp/[plugin]/sse/route.js.nft.json +0 -1
  878. package/app/.next/server/app/api/media-providers/tts/deepgram/voices/route.js +0 -1
  879. package/app/.next/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +0 -1
  880. package/app/.next/server/app/api/media-providers/tts/elevenlabs/voices/route.js +0 -1
  881. package/app/.next/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +0 -1
  882. package/app/.next/server/app/api/media-providers/tts/inworld/voices/route.js +0 -1
  883. package/app/.next/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +0 -1
  884. package/app/.next/server/app/api/media-providers/tts/minimax/voices/route.js +0 -1
  885. package/app/.next/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +0 -1
  886. package/app/.next/server/app/api/media-providers/tts/voices/route.js +0 -1
  887. package/app/.next/server/app/api/media-providers/tts/voices/route.js.nft.json +0 -1
  888. package/app/.next/server/app/api/models/alias/route.js +0 -1
  889. package/app/.next/server/app/api/models/alias/route.js.nft.json +0 -1
  890. package/app/.next/server/app/api/models/availability/route.js +0 -1
  891. package/app/.next/server/app/api/models/availability/route.js.nft.json +0 -1
  892. package/app/.next/server/app/api/models/custom/route.js +0 -1
  893. package/app/.next/server/app/api/models/custom/route.js.nft.json +0 -1
  894. package/app/.next/server/app/api/models/disabled/route.js +0 -1
  895. package/app/.next/server/app/api/models/disabled/route.js.nft.json +0 -1
  896. package/app/.next/server/app/api/models/route.js +0 -1
  897. package/app/.next/server/app/api/models/route.js.nft.json +0 -1
  898. package/app/.next/server/app/api/models/test/route.js +0 -1
  899. package/app/.next/server/app/api/models/test/route.js.nft.json +0 -1
  900. package/app/.next/server/app/api/oauth/[provider]/[action]/route.js +0 -1
  901. package/app/.next/server/app/api/oauth/[provider]/[action]/route.js.nft.json +0 -1
  902. package/app/.next/server/app/api/oauth/codex/bulk-import/route.js +0 -1
  903. package/app/.next/server/app/api/oauth/codex/bulk-import/route.js.nft.json +0 -1
  904. package/app/.next/server/app/api/oauth/codex/import-token/route.js +0 -1
  905. package/app/.next/server/app/api/oauth/codex/import-token/route.js.nft.json +0 -1
  906. package/app/.next/server/app/api/oauth/cursor/auto-import/route.js +0 -4
  907. package/app/.next/server/app/api/oauth/cursor/auto-import/route.js.nft.json +0 -1
  908. package/app/.next/server/app/api/oauth/cursor/import/route.js +0 -1
  909. package/app/.next/server/app/api/oauth/cursor/import/route.js.nft.json +0 -1
  910. package/app/.next/server/app/api/oauth/gitlab/pat/route.js +0 -1
  911. package/app/.next/server/app/api/oauth/gitlab/pat/route.js.nft.json +0 -1
  912. package/app/.next/server/app/api/oauth/iflow/cookie/route.js +0 -1
  913. package/app/.next/server/app/api/oauth/iflow/cookie/route.js.nft.json +0 -1
  914. package/app/.next/server/app/api/oauth/kiro/auto-import/route.js +0 -1
  915. package/app/.next/server/app/api/oauth/kiro/auto-import/route.js.nft.json +0 -1
  916. package/app/.next/server/app/api/oauth/kiro/import/route.js +0 -1
  917. package/app/.next/server/app/api/oauth/kiro/import/route.js.nft.json +0 -1
  918. package/app/.next/server/app/api/oauth/kiro/social-authorize/route.js +0 -1
  919. package/app/.next/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +0 -1
  920. package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js +0 -1
  921. package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +0 -1
  922. package/app/.next/server/app/api/pricing/route.js +0 -1
  923. package/app/.next/server/app/api/pricing/route.js.nft.json +0 -1
  924. package/app/.next/server/app/api/provider-nodes/[id]/route.js +0 -1
  925. package/app/.next/server/app/api/provider-nodes/[id]/route.js.nft.json +0 -1
  926. package/app/.next/server/app/api/provider-nodes/route.js +0 -1
  927. package/app/.next/server/app/api/provider-nodes/route.js.nft.json +0 -1
  928. package/app/.next/server/app/api/provider-nodes/validate/route.js +0 -1
  929. package/app/.next/server/app/api/provider-nodes/validate/route.js.nft.json +0 -1
  930. package/app/.next/server/app/api/providers/[id]/models/route.js +0 -1
  931. package/app/.next/server/app/api/providers/[id]/models/route.js.nft.json +0 -1
  932. package/app/.next/server/app/api/providers/[id]/route.js +0 -1
  933. package/app/.next/server/app/api/providers/[id]/route.js.nft.json +0 -1
  934. package/app/.next/server/app/api/providers/[id]/test/route.js +0 -1
  935. package/app/.next/server/app/api/providers/[id]/test/route.js.nft.json +0 -1
  936. package/app/.next/server/app/api/providers/[id]/test-models/route.js +0 -1
  937. package/app/.next/server/app/api/providers/[id]/test-models/route.js.nft.json +0 -1
  938. package/app/.next/server/app/api/providers/client/route.js +0 -1
  939. package/app/.next/server/app/api/providers/client/route.js.nft.json +0 -1
  940. package/app/.next/server/app/api/providers/kilo/free-models/route.js +0 -1
  941. package/app/.next/server/app/api/providers/kilo/free-models/route.js.nft.json +0 -1
  942. package/app/.next/server/app/api/providers/route.js +0 -1
  943. package/app/.next/server/app/api/providers/route.js.nft.json +0 -1
  944. package/app/.next/server/app/api/providers/suggested-models/route.js +0 -1
  945. package/app/.next/server/app/api/providers/suggested-models/route.js.nft.json +0 -1
  946. package/app/.next/server/app/api/providers/test-batch/route.js +0 -1
  947. package/app/.next/server/app/api/providers/test-batch/route.js.nft.json +0 -1
  948. package/app/.next/server/app/api/providers/validate/route.js +0 -1
  949. package/app/.next/server/app/api/providers/validate/route.js.nft.json +0 -1
  950. package/app/.next/server/app/api/proxy-pools/[id]/route.js +0 -1
  951. package/app/.next/server/app/api/proxy-pools/[id]/route.js.nft.json +0 -1
  952. package/app/.next/server/app/api/proxy-pools/[id]/test/route.js +0 -1
  953. package/app/.next/server/app/api/proxy-pools/[id]/test/route.js.nft.json +0 -1
  954. package/app/.next/server/app/api/proxy-pools/cloudflare-deploy/route.js +0 -43
  955. package/app/.next/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +0 -1
  956. package/app/.next/server/app/api/proxy-pools/deno-deploy/route.js +0 -40
  957. package/app/.next/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +0 -1
  958. package/app/.next/server/app/api/proxy-pools/route.js +0 -1
  959. package/app/.next/server/app/api/proxy-pools/route.js.nft.json +0 -1
  960. package/app/.next/server/app/api/proxy-pools/vercel-deploy/route.js +0 -33
  961. package/app/.next/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +0 -1
  962. package/app/.next/server/app/api/settings/database/route.js +0 -1
  963. package/app/.next/server/app/api/settings/database/route.js.nft.json +0 -1
  964. package/app/.next/server/app/api/settings/proxy-test/route.js +0 -1
  965. package/app/.next/server/app/api/settings/proxy-test/route.js.nft.json +0 -1
  966. package/app/.next/server/app/api/settings/require-login/route.js +0 -1
  967. package/app/.next/server/app/api/settings/require-login/route.js.nft.json +0 -1
  968. package/app/.next/server/app/api/settings/route.js +0 -1
  969. package/app/.next/server/app/api/settings/route.js.nft.json +0 -1
  970. package/app/.next/server/app/api/shutdown/route.js +0 -1
  971. package/app/.next/server/app/api/shutdown/route.js.nft.json +0 -1
  972. package/app/.next/server/app/api/tags/route.js +0 -1
  973. package/app/.next/server/app/api/tags/route.js.nft.json +0 -1
  974. package/app/.next/server/app/api/translator/console-logs/route.js +0 -1
  975. package/app/.next/server/app/api/translator/console-logs/route.js.nft.json +0 -1
  976. package/app/.next/server/app/api/translator/console-logs/stream/route.js +0 -7
  977. package/app/.next/server/app/api/translator/console-logs/stream/route.js.nft.json +0 -1
  978. package/app/.next/server/app/api/translator/load/route.js +0 -1
  979. package/app/.next/server/app/api/translator/load/route.js.nft.json +0 -1
  980. package/app/.next/server/app/api/translator/save/route.js +0 -1
  981. package/app/.next/server/app/api/translator/save/route.js.nft.json +0 -1
  982. package/app/.next/server/app/api/translator/send/route.js +0 -1
  983. package/app/.next/server/app/api/translator/send/route.js.nft.json +0 -1
  984. package/app/.next/server/app/api/translator/translate/route.js +0 -1
  985. package/app/.next/server/app/api/translator/translate/route.js.nft.json +0 -1
  986. package/app/.next/server/app/api/tunnel/disable/route.js +0 -1
  987. package/app/.next/server/app/api/tunnel/disable/route.js.nft.json +0 -1
  988. package/app/.next/server/app/api/tunnel/enable/route.js +0 -1
  989. package/app/.next/server/app/api/tunnel/enable/route.js.nft.json +0 -1
  990. package/app/.next/server/app/api/tunnel/status/route.js +0 -1
  991. package/app/.next/server/app/api/tunnel/status/route.js.nft.json +0 -1
  992. package/app/.next/server/app/api/tunnel/tailscale-check/route.js +0 -1
  993. package/app/.next/server/app/api/tunnel/tailscale-check/route.js.nft.json +0 -1
  994. package/app/.next/server/app/api/tunnel/tailscale-disable/route.js +0 -1
  995. package/app/.next/server/app/api/tunnel/tailscale-disable/route.js.nft.json +0 -1
  996. package/app/.next/server/app/api/tunnel/tailscale-enable/route.js +0 -1
  997. package/app/.next/server/app/api/tunnel/tailscale-enable/route.js.nft.json +0 -1
  998. package/app/.next/server/app/api/tunnel/tailscale-install/route.js +0 -5
  999. package/app/.next/server/app/api/tunnel/tailscale-install/route.js.nft.json +0 -1
  1000. package/app/.next/server/app/api/usage/[connectionId]/route.js +0 -1
  1001. package/app/.next/server/app/api/usage/[connectionId]/route.js.nft.json +0 -1
  1002. package/app/.next/server/app/api/usage/api-keys/route.js +0 -1
  1003. package/app/.next/server/app/api/usage/api-keys/route.js.nft.json +0 -1
  1004. package/app/.next/server/app/api/usage/chart/route.js +0 -1
  1005. package/app/.next/server/app/api/usage/chart/route.js.nft.json +0 -1
  1006. package/app/.next/server/app/api/usage/history/route.js +0 -1
  1007. package/app/.next/server/app/api/usage/history/route.js.nft.json +0 -1
  1008. package/app/.next/server/app/api/usage/logs/route.js +0 -1
  1009. package/app/.next/server/app/api/usage/logs/route.js.nft.json +0 -1
  1010. package/app/.next/server/app/api/usage/providers/route.js +0 -1
  1011. package/app/.next/server/app/api/usage/providers/route.js.nft.json +0 -1
  1012. package/app/.next/server/app/api/usage/request-details/route.js +0 -1
  1013. package/app/.next/server/app/api/usage/request-details/route.js.nft.json +0 -1
  1014. package/app/.next/server/app/api/usage/request-logs/route.js +0 -1
  1015. package/app/.next/server/app/api/usage/request-logs/route.js.nft.json +0 -1
  1016. package/app/.next/server/app/api/usage/stats/route.js +0 -1
  1017. package/app/.next/server/app/api/usage/stats/route.js.nft.json +0 -1
  1018. package/app/.next/server/app/api/usage/stream/route.js +0 -7
  1019. package/app/.next/server/app/api/usage/stream/route.js.nft.json +0 -1
  1020. package/app/.next/server/app/api/users/[id]/route.js +0 -1
  1021. package/app/.next/server/app/api/users/[id]/route.js.nft.json +0 -1
  1022. package/app/.next/server/app/api/users/route.js +0 -1
  1023. package/app/.next/server/app/api/users/route.js.nft.json +0 -1
  1024. package/app/.next/server/app/api/v1/api/chat/route.js +0 -1
  1025. package/app/.next/server/app/api/v1/api/chat/route.js.nft.json +0 -1
  1026. package/app/.next/server/app/api/v1/audio/speech/route.js +0 -1
  1027. package/app/.next/server/app/api/v1/audio/speech/route.js.nft.json +0 -1
  1028. package/app/.next/server/app/api/v1/audio/transcriptions/route.js +0 -1
  1029. package/app/.next/server/app/api/v1/audio/transcriptions/route.js.nft.json +0 -1
  1030. package/app/.next/server/app/api/v1/audio/voices/route.js +0 -1
  1031. package/app/.next/server/app/api/v1/audio/voices/route.js.nft.json +0 -1
  1032. package/app/.next/server/app/api/v1/chat/completions/route.js +0 -1
  1033. package/app/.next/server/app/api/v1/chat/completions/route.js.nft.json +0 -1
  1034. package/app/.next/server/app/api/v1/embeddings/route.js +0 -1
  1035. package/app/.next/server/app/api/v1/embeddings/route.js.nft.json +0 -1
  1036. package/app/.next/server/app/api/v1/images/generations/route.js +0 -4
  1037. package/app/.next/server/app/api/v1/images/generations/route.js.nft.json +0 -1
  1038. package/app/.next/server/app/api/v1/messages/count_tokens/route.js +0 -1
  1039. package/app/.next/server/app/api/v1/messages/count_tokens/route.js.nft.json +0 -1
  1040. package/app/.next/server/app/api/v1/messages/route.js +0 -1
  1041. package/app/.next/server/app/api/v1/messages/route.js.nft.json +0 -1
  1042. package/app/.next/server/app/api/v1/models/[kind]/route.js +0 -1
  1043. package/app/.next/server/app/api/v1/models/[kind]/route.js.nft.json +0 -1
  1044. package/app/.next/server/app/api/v1/models/info/route.js +0 -1
  1045. package/app/.next/server/app/api/v1/models/info/route.js.nft.json +0 -1
  1046. package/app/.next/server/app/api/v1/models/route.js +0 -1
  1047. package/app/.next/server/app/api/v1/models/route.js.nft.json +0 -1
  1048. package/app/.next/server/app/api/v1/responses/compact/route.js +0 -1
  1049. package/app/.next/server/app/api/v1/responses/compact/route.js.nft.json +0 -1
  1050. package/app/.next/server/app/api/v1/responses/route.js +0 -1
  1051. package/app/.next/server/app/api/v1/responses/route.js.nft.json +0 -1
  1052. package/app/.next/server/app/api/v1/route.js +0 -1
  1053. package/app/.next/server/app/api/v1/route.js.nft.json +0 -1
  1054. package/app/.next/server/app/api/v1/search/route.js +0 -1
  1055. package/app/.next/server/app/api/v1/search/route.js.nft.json +0 -1
  1056. package/app/.next/server/app/api/v1/web/fetch/route.js +0 -1
  1057. package/app/.next/server/app/api/v1/web/fetch/route.js.nft.json +0 -1
  1058. package/app/.next/server/app/api/v1beta/models/[...path]/route.js +0 -1
  1059. package/app/.next/server/app/api/v1beta/models/[...path]/route.js.nft.json +0 -1
  1060. package/app/.next/server/app/api/v1beta/models/route.js +0 -1
  1061. package/app/.next/server/app/api/v1beta/models/route.js.nft.json +0 -1
  1062. package/app/.next/server/app/api/version/route.js +0 -1
  1063. package/app/.next/server/app/api/version/route.js.nft.json +0 -1
  1064. package/app/.next/server/app/api/version/shutdown/route.js +0 -1
  1065. package/app/.next/server/app/api/version/shutdown/route.js.nft.json +0 -1
  1066. package/app/.next/server/app/api/version/update/route.js +0 -1
  1067. package/app/.next/server/app/api/version/update/route.js.nft.json +0 -1
  1068. package/app/.next/server/app/callback/page.js +0 -2
  1069. package/app/.next/server/app/callback/page.js.nft.json +0 -1
  1070. package/app/.next/server/app/callback/page_client-reference-manifest.js +0 -1
  1071. package/app/.next/server/app/callback.html +0 -1
  1072. package/app/.next/server/app/callback.rsc +0 -23
  1073. package/app/.next/server/app/callback.segments/_full.segment.rsc +0 -23
  1074. package/app/.next/server/app/callback.segments/_head.segment.rsc +0 -6
  1075. package/app/.next/server/app/callback.segments/_index.segment.rsc +0 -8
  1076. package/app/.next/server/app/callback.segments/_tree.segment.rsc +0 -3
  1077. package/app/.next/server/app/callback.segments/callback/__PAGE__.segment.rsc +0 -9
  1078. package/app/.next/server/app/callback.segments/callback.segment.rsc +0 -5
  1079. package/app/.next/server/app/dashboard/settings/pricing/page.js +0 -2
  1080. package/app/.next/server/app/dashboard/settings/pricing/page.js.nft.json +0 -1
  1081. package/app/.next/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +0 -1
  1082. package/app/.next/server/app/dashboard/settings/pricing.html +0 -1
  1083. package/app/.next/server/app/dashboard/settings/pricing.rsc +0 -23
  1084. package/app/.next/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +0 -23
  1085. package/app/.next/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +0 -6
  1086. package/app/.next/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +0 -8
  1087. package/app/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +0 -3
  1088. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +0 -9
  1089. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +0 -5
  1090. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +0 -5
  1091. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +0 -5
  1092. package/app/.next/server/app/favicon.ico/route.js +0 -1
  1093. package/app/.next/server/app/favicon.ico/route.js.nft.json +0 -1
  1094. package/app/.next/server/app/index.html +0 -1
  1095. package/app/.next/server/app/index.rsc +0 -18
  1096. package/app/.next/server/app/index.segments/__PAGE__.segment.rsc +0 -6
  1097. package/app/.next/server/app/index.segments/_full.segment.rsc +0 -18
  1098. package/app/.next/server/app/index.segments/_head.segment.rsc +0 -6
  1099. package/app/.next/server/app/index.segments/_index.segment.rsc +0 -8
  1100. package/app/.next/server/app/index.segments/_tree.segment.rsc +0 -3
  1101. package/app/.next/server/app/landing/page.js +0 -2
  1102. package/app/.next/server/app/landing/page.js.nft.json +0 -1
  1103. package/app/.next/server/app/landing/page_client-reference-manifest.js +0 -1
  1104. package/app/.next/server/app/landing.html +0 -1
  1105. package/app/.next/server/app/landing.rsc +0 -23
  1106. package/app/.next/server/app/landing.segments/_full.segment.rsc +0 -23
  1107. package/app/.next/server/app/landing.segments/_head.segment.rsc +0 -6
  1108. package/app/.next/server/app/landing.segments/_index.segment.rsc +0 -8
  1109. package/app/.next/server/app/landing.segments/_tree.segment.rsc +0 -3
  1110. package/app/.next/server/app/landing.segments/landing/__PAGE__.segment.rsc +0 -9
  1111. package/app/.next/server/app/landing.segments/landing.segment.rsc +0 -5
  1112. package/app/.next/server/app/login/page.js +0 -2
  1113. package/app/.next/server/app/login/page.js.nft.json +0 -1
  1114. package/app/.next/server/app/login/page_client-reference-manifest.js +0 -1
  1115. package/app/.next/server/app/login.html +0 -1
  1116. package/app/.next/server/app/login.rsc +0 -24
  1117. package/app/.next/server/app/login.segments/_full.segment.rsc +0 -24
  1118. package/app/.next/server/app/login.segments/_head.segment.rsc +0 -6
  1119. package/app/.next/server/app/login.segments/_index.segment.rsc +0 -8
  1120. package/app/.next/server/app/login.segments/_tree.segment.rsc +0 -4
  1121. package/app/.next/server/app/login.segments/login/__PAGE__.segment.rsc +0 -10
  1122. package/app/.next/server/app/login.segments/login.segment.rsc +0 -5
  1123. package/app/.next/server/app/manifest.webmanifest/route.js +0 -16
  1124. package/app/.next/server/app/manifest.webmanifest/route.js.nft.json +0 -1
  1125. package/app/.next/server/app/page.js +0 -2
  1126. package/app/.next/server/app/page.js.nft.json +0 -1
  1127. package/app/.next/server/app/page_client-reference-manifest.js +0 -1
  1128. package/app/.next/server/app-paths-manifest.json +0 -165
  1129. package/app/.next/server/chunks/1172.js +0 -1
  1130. package/app/.next/server/chunks/1350.js +0 -2
  1131. package/app/.next/server/chunks/1476.js +0 -1
  1132. package/app/.next/server/chunks/1531.js +0 -1
  1133. package/app/.next/server/chunks/1813.js +0 -1
  1134. package/app/.next/server/chunks/2059.js +0 -1
  1135. package/app/.next/server/chunks/2409.js +0 -1
  1136. package/app/.next/server/chunks/2560.js +0 -1
  1137. package/app/.next/server/chunks/2722.js +0 -53
  1138. package/app/.next/server/chunks/2750.js +0 -31
  1139. package/app/.next/server/chunks/3104.js +0 -43
  1140. package/app/.next/server/chunks/319.js +0 -45
  1141. package/app/.next/server/chunks/3205.js +0 -1
  1142. package/app/.next/server/chunks/365.js +0 -1
  1143. package/app/.next/server/chunks/3663.js +0 -1
  1144. package/app/.next/server/chunks/3913.js +0 -64
  1145. package/app/.next/server/chunks/412.js +0 -7
  1146. package/app/.next/server/chunks/4177.js +0 -1
  1147. package/app/.next/server/chunks/4404.js +0 -1
  1148. package/app/.next/server/chunks/4565.js +0 -3
  1149. package/app/.next/server/chunks/4922.js +0 -9
  1150. package/app/.next/server/chunks/5681.js +0 -1
  1151. package/app/.next/server/chunks/6001.js +0 -1
  1152. package/app/.next/server/chunks/6108.js +0 -1
  1153. package/app/.next/server/chunks/6327.js +0 -1
  1154. package/app/.next/server/chunks/7221.js +0 -1
  1155. package/app/.next/server/chunks/7341.js +0 -1
  1156. package/app/.next/server/chunks/7540.js +0 -67
  1157. package/app/.next/server/chunks/7774.js +0 -120
  1158. package/app/.next/server/chunks/7879.js +0 -10
  1159. package/app/.next/server/chunks/7937.js +0 -186
  1160. package/app/.next/server/chunks/8220.js +0 -1
  1161. package/app/.next/server/chunks/8238.js +0 -1
  1162. package/app/.next/server/chunks/8342.js +0 -1
  1163. package/app/.next/server/chunks/8895.js +0 -55
  1164. package/app/.next/server/chunks/9203.js +0 -1
  1165. package/app/.next/server/chunks/9259.js +0 -3
  1166. package/app/.next/server/chunks/9489.js +0 -1
  1167. package/app/.next/server/chunks/9501.js +0 -63
  1168. package/app/.next/server/chunks/9660.js +0 -1
  1169. package/app/.next/server/chunks/9713.js +0 -1
  1170. package/app/.next/server/chunks/9718.js +0 -1
  1171. package/app/.next/server/chunks/9856.js +0 -1
  1172. package/app/.next/server/middleware-build-manifest.js +0 -1
  1173. package/app/.next/server/middleware.js +0 -18
  1174. package/app/.next/server/next-font-manifest.js +0 -1
  1175. package/app/.next/server/next-font-manifest.json +0 -1
  1176. package/app/.next/server/pages/404.html +0 -1
  1177. package/app/.next/server/pages/500.html +0 -1
  1178. package/app/.next/server/server-reference-manifest.js +0 -1
  1179. package/app/.next/server/server-reference-manifest.json +0 -1
  1180. package/app/.next/static/MxcY0EY8eMa4ouCwsP4Cl/_buildManifest.js +0 -1
  1181. package/app/.next/static/chunks/1321-134c6f0196307f47.js +0 -1
  1182. package/app/.next/static/chunks/4072-e3cbc885320b3535.js +0 -3
  1183. package/app/.next/static/chunks/5497-61f5cbbdfc3da704.js +0 -7
  1184. package/app/.next/static/chunks/6069-130fdae38088e4e7.js +0 -53
  1185. package/app/.next/static/chunks/app/(dashboard)/dashboard/admin/keys/page-0d5b57da4abb6962.js +0 -1
  1186. package/app/.next/static/chunks/app/(dashboard)/dashboard/admin/users/page-972703d59d2a3986.js +0 -1
  1187. package/app/.next/static/chunks/app/(dashboard)/dashboard/basic-chat/page-e1bd21507327d2bc.js +0 -1
  1188. package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/[toolId]/page-ba3be29df191769b.js +0 -1
  1189. package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-a0eaec978d93b101.js +0 -1
  1190. package/app/.next/static/chunks/app/(dashboard)/dashboard/combos/page-ca6a0263fcfc70df.js +0 -1
  1191. package/app/.next/static/chunks/app/(dashboard)/dashboard/console-log/page-57065ce85ec52703.js +0 -1
  1192. package/app/.next/static/chunks/app/(dashboard)/dashboard/endpoint/page-c8f75b084231c080.js +0 -1
  1193. package/app/.next/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page-e43ee64cc1f1547c.js +0 -59
  1194. package/app/.next/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/page-c64dd1d0b2bd9caf.js +0 -1
  1195. package/app/.next/static/chunks/app/(dashboard)/dashboard/media-providers/combo/[id]/page-9586c0b67f30a21b.js +0 -4
  1196. package/app/.next/static/chunks/app/(dashboard)/dashboard/media-providers/web/page-c7fbf29bdbdabee9.js +0 -1
  1197. package/app/.next/static/chunks/app/(dashboard)/dashboard/mitm/page-b52d2279e8eff62d.js +0 -1
  1198. package/app/.next/static/chunks/app/(dashboard)/dashboard/page-8fceba7ec6407143.js +0 -1
  1199. package/app/.next/static/chunks/app/(dashboard)/dashboard/profile/page-96d7ec789592a2ec.js +0 -1
  1200. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-a2ec9b595a5c5600.js +0 -10
  1201. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/new/page-0bf3048423ab0128.js +0 -1
  1202. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/page-979e3e3663264d2b.js +0 -1
  1203. package/app/.next/static/chunks/app/(dashboard)/dashboard/proxy-pools/page-77e1358581cbeecd.js +0 -4
  1204. package/app/.next/static/chunks/app/(dashboard)/dashboard/quota/page-51f915ba68f44424.js +0 -2
  1205. package/app/.next/static/chunks/app/(dashboard)/dashboard/skills/page-9202b5ce0650c3ab.js +0 -1
  1206. package/app/.next/static/chunks/app/(dashboard)/dashboard/translator/page-8d41d89fe12ae485.js +0 -1
  1207. package/app/.next/static/chunks/app/(dashboard)/dashboard/usage/page-18d6399108c458a6.js +0 -1
  1208. package/app/.next/static/chunks/app/(dashboard)/dashboard/user/page-12765c664b3c1f6d.js +0 -4
  1209. package/app/.next/static/chunks/app/(dashboard)/layout-2b26025389c75878.js +0 -1
  1210. package/app/.next/static/chunks/app/_global-error/page-8d41d89fe12ae485.js +0 -1
  1211. package/app/.next/static/chunks/app/api/auth/login/route-8d41d89fe12ae485.js +0 -1
  1212. package/app/.next/static/chunks/app/api/auth/logout/route-8d41d89fe12ae485.js +0 -1
  1213. package/app/.next/static/chunks/app/api/auth/me/route-8d41d89fe12ae485.js +0 -1
  1214. package/app/.next/static/chunks/app/api/auth/oidc/callback/route-8d41d89fe12ae485.js +0 -1
  1215. package/app/.next/static/chunks/app/api/auth/oidc/start/route-8d41d89fe12ae485.js +0 -1
  1216. package/app/.next/static/chunks/app/api/auth/oidc/test/route-8d41d89fe12ae485.js +0 -1
  1217. package/app/.next/static/chunks/app/api/auth/reset-password/route-8d41d89fe12ae485.js +0 -1
  1218. package/app/.next/static/chunks/app/api/auth/status/route-8d41d89fe12ae485.js +0 -1
  1219. package/app/.next/static/chunks/app/api/cli-tools/all-statuses/route-8d41d89fe12ae485.js +0 -1
  1220. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-8d41d89fe12ae485.js +0 -1
  1221. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-8d41d89fe12ae485.js +0 -1
  1222. package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-8d41d89fe12ae485.js +0 -1
  1223. package/app/.next/static/chunks/app/api/cli-tools/cline-settings/route-8d41d89fe12ae485.js +0 -1
  1224. package/app/.next/static/chunks/app/api/cli-tools/codex-settings/activate-account/route-8d41d89fe12ae485.js +0 -1
  1225. package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-8d41d89fe12ae485.js +0 -1
  1226. package/app/.next/static/chunks/app/api/cli-tools/copilot-settings/route-8d41d89fe12ae485.js +0 -1
  1227. package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-8d41d89fe12ae485.js +0 -1
  1228. package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-8d41d89fe12ae485.js +0 -1
  1229. package/app/.next/static/chunks/app/api/cli-tools/cowork-settings/route-8d41d89fe12ae485.js +0 -1
  1230. package/app/.next/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-8d41d89fe12ae485.js +0 -1
  1231. package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-8d41d89fe12ae485.js +0 -1
  1232. package/app/.next/static/chunks/app/api/cli-tools/hermes-settings/route-8d41d89fe12ae485.js +0 -1
  1233. package/app/.next/static/chunks/app/api/cli-tools/jcode-settings/route-8d41d89fe12ae485.js +0 -1
  1234. package/app/.next/static/chunks/app/api/cli-tools/kilo-settings/route-8d41d89fe12ae485.js +0 -1
  1235. package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-8d41d89fe12ae485.js +0 -1
  1236. package/app/.next/static/chunks/app/api/cli-tools/opencode-settings/route-8d41d89fe12ae485.js +0 -1
  1237. package/app/.next/static/chunks/app/api/combos/[id]/route-8d41d89fe12ae485.js +0 -1
  1238. package/app/.next/static/chunks/app/api/combos/route-8d41d89fe12ae485.js +0 -1
  1239. package/app/.next/static/chunks/app/api/health/route-8d41d89fe12ae485.js +0 -1
  1240. package/app/.next/static/chunks/app/api/init/route-8d41d89fe12ae485.js +0 -1
  1241. package/app/.next/static/chunks/app/api/keys/[id]/route-8d41d89fe12ae485.js +0 -1
  1242. package/app/.next/static/chunks/app/api/keys/route-8d41d89fe12ae485.js +0 -1
  1243. package/app/.next/static/chunks/app/api/locale/route-8d41d89fe12ae485.js +0 -1
  1244. package/app/.next/static/chunks/app/api/mcp/[plugin]/message/route-8d41d89fe12ae485.js +0 -1
  1245. package/app/.next/static/chunks/app/api/mcp/[plugin]/sse/route-8d41d89fe12ae485.js +0 -1
  1246. package/app/.next/static/chunks/app/api/media-providers/tts/deepgram/voices/route-8d41d89fe12ae485.js +0 -1
  1247. package/app/.next/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-8d41d89fe12ae485.js +0 -1
  1248. package/app/.next/static/chunks/app/api/media-providers/tts/inworld/voices/route-8d41d89fe12ae485.js +0 -1
  1249. package/app/.next/static/chunks/app/api/media-providers/tts/minimax/voices/route-8d41d89fe12ae485.js +0 -1
  1250. package/app/.next/static/chunks/app/api/media-providers/tts/voices/route-8d41d89fe12ae485.js +0 -1
  1251. package/app/.next/static/chunks/app/api/models/alias/route-8d41d89fe12ae485.js +0 -1
  1252. package/app/.next/static/chunks/app/api/models/availability/route-8d41d89fe12ae485.js +0 -1
  1253. package/app/.next/static/chunks/app/api/models/custom/route-8d41d89fe12ae485.js +0 -1
  1254. package/app/.next/static/chunks/app/api/models/disabled/route-8d41d89fe12ae485.js +0 -1
  1255. package/app/.next/static/chunks/app/api/models/route-8d41d89fe12ae485.js +0 -1
  1256. package/app/.next/static/chunks/app/api/models/test/route-8d41d89fe12ae485.js +0 -1
  1257. package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-8d41d89fe12ae485.js +0 -1
  1258. package/app/.next/static/chunks/app/api/oauth/codex/bulk-import/route-8d41d89fe12ae485.js +0 -1
  1259. package/app/.next/static/chunks/app/api/oauth/codex/import-token/route-8d41d89fe12ae485.js +0 -1
  1260. package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-8d41d89fe12ae485.js +0 -1
  1261. package/app/.next/static/chunks/app/api/oauth/cursor/import/route-8d41d89fe12ae485.js +0 -1
  1262. package/app/.next/static/chunks/app/api/oauth/gitlab/pat/route-8d41d89fe12ae485.js +0 -1
  1263. package/app/.next/static/chunks/app/api/oauth/iflow/cookie/route-8d41d89fe12ae485.js +0 -1
  1264. package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-8d41d89fe12ae485.js +0 -1
  1265. package/app/.next/static/chunks/app/api/oauth/kiro/import/route-8d41d89fe12ae485.js +0 -1
  1266. package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-8d41d89fe12ae485.js +0 -1
  1267. package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-8d41d89fe12ae485.js +0 -1
  1268. package/app/.next/static/chunks/app/api/pricing/route-8d41d89fe12ae485.js +0 -1
  1269. package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-8d41d89fe12ae485.js +0 -1
  1270. package/app/.next/static/chunks/app/api/provider-nodes/route-8d41d89fe12ae485.js +0 -1
  1271. package/app/.next/static/chunks/app/api/provider-nodes/validate/route-8d41d89fe12ae485.js +0 -1
  1272. package/app/.next/static/chunks/app/api/providers/[id]/models/route-8d41d89fe12ae485.js +0 -1
  1273. package/app/.next/static/chunks/app/api/providers/[id]/route-8d41d89fe12ae485.js +0 -1
  1274. package/app/.next/static/chunks/app/api/providers/[id]/test/route-8d41d89fe12ae485.js +0 -1
  1275. package/app/.next/static/chunks/app/api/providers/[id]/test-models/route-8d41d89fe12ae485.js +0 -1
  1276. package/app/.next/static/chunks/app/api/providers/client/route-8d41d89fe12ae485.js +0 -1
  1277. package/app/.next/static/chunks/app/api/providers/kilo/free-models/route-8d41d89fe12ae485.js +0 -1
  1278. package/app/.next/static/chunks/app/api/providers/route-8d41d89fe12ae485.js +0 -1
  1279. package/app/.next/static/chunks/app/api/providers/suggested-models/route-8d41d89fe12ae485.js +0 -1
  1280. package/app/.next/static/chunks/app/api/providers/test-batch/route-8d41d89fe12ae485.js +0 -1
  1281. package/app/.next/static/chunks/app/api/providers/validate/route-8d41d89fe12ae485.js +0 -1
  1282. package/app/.next/static/chunks/app/api/proxy-pools/[id]/route-8d41d89fe12ae485.js +0 -1
  1283. package/app/.next/static/chunks/app/api/proxy-pools/[id]/test/route-8d41d89fe12ae485.js +0 -1
  1284. package/app/.next/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-8d41d89fe12ae485.js +0 -1
  1285. package/app/.next/static/chunks/app/api/proxy-pools/deno-deploy/route-8d41d89fe12ae485.js +0 -1
  1286. package/app/.next/static/chunks/app/api/proxy-pools/route-8d41d89fe12ae485.js +0 -1
  1287. package/app/.next/static/chunks/app/api/proxy-pools/vercel-deploy/route-8d41d89fe12ae485.js +0 -1
  1288. package/app/.next/static/chunks/app/api/settings/database/route-8d41d89fe12ae485.js +0 -1
  1289. package/app/.next/static/chunks/app/api/settings/proxy-test/route-8d41d89fe12ae485.js +0 -1
  1290. package/app/.next/static/chunks/app/api/settings/require-login/route-8d41d89fe12ae485.js +0 -1
  1291. package/app/.next/static/chunks/app/api/settings/route-8d41d89fe12ae485.js +0 -1
  1292. package/app/.next/static/chunks/app/api/shutdown/route-8d41d89fe12ae485.js +0 -1
  1293. package/app/.next/static/chunks/app/api/tags/route-8d41d89fe12ae485.js +0 -1
  1294. package/app/.next/static/chunks/app/api/translator/console-logs/route-8d41d89fe12ae485.js +0 -1
  1295. package/app/.next/static/chunks/app/api/translator/console-logs/stream/route-8d41d89fe12ae485.js +0 -1
  1296. package/app/.next/static/chunks/app/api/translator/load/route-8d41d89fe12ae485.js +0 -1
  1297. package/app/.next/static/chunks/app/api/translator/save/route-8d41d89fe12ae485.js +0 -1
  1298. package/app/.next/static/chunks/app/api/translator/send/route-8d41d89fe12ae485.js +0 -1
  1299. package/app/.next/static/chunks/app/api/translator/translate/route-8d41d89fe12ae485.js +0 -1
  1300. package/app/.next/static/chunks/app/api/tunnel/disable/route-8d41d89fe12ae485.js +0 -1
  1301. package/app/.next/static/chunks/app/api/tunnel/enable/route-8d41d89fe12ae485.js +0 -1
  1302. package/app/.next/static/chunks/app/api/tunnel/status/route-8d41d89fe12ae485.js +0 -1
  1303. package/app/.next/static/chunks/app/api/tunnel/tailscale-check/route-8d41d89fe12ae485.js +0 -1
  1304. package/app/.next/static/chunks/app/api/tunnel/tailscale-disable/route-8d41d89fe12ae485.js +0 -1
  1305. package/app/.next/static/chunks/app/api/tunnel/tailscale-enable/route-8d41d89fe12ae485.js +0 -1
  1306. package/app/.next/static/chunks/app/api/tunnel/tailscale-install/route-8d41d89fe12ae485.js +0 -1
  1307. package/app/.next/static/chunks/app/api/usage/[connectionId]/route-8d41d89fe12ae485.js +0 -1
  1308. package/app/.next/static/chunks/app/api/usage/api-keys/route-8d41d89fe12ae485.js +0 -1
  1309. package/app/.next/static/chunks/app/api/usage/chart/route-8d41d89fe12ae485.js +0 -1
  1310. package/app/.next/static/chunks/app/api/usage/history/route-8d41d89fe12ae485.js +0 -1
  1311. package/app/.next/static/chunks/app/api/usage/logs/route-8d41d89fe12ae485.js +0 -1
  1312. package/app/.next/static/chunks/app/api/usage/providers/route-8d41d89fe12ae485.js +0 -1
  1313. package/app/.next/static/chunks/app/api/usage/request-details/route-8d41d89fe12ae485.js +0 -1
  1314. package/app/.next/static/chunks/app/api/usage/request-logs/route-8d41d89fe12ae485.js +0 -1
  1315. package/app/.next/static/chunks/app/api/usage/stats/route-8d41d89fe12ae485.js +0 -1
  1316. package/app/.next/static/chunks/app/api/usage/stream/route-8d41d89fe12ae485.js +0 -1
  1317. package/app/.next/static/chunks/app/api/users/[id]/route-8d41d89fe12ae485.js +0 -1
  1318. package/app/.next/static/chunks/app/api/users/route-8d41d89fe12ae485.js +0 -1
  1319. package/app/.next/static/chunks/app/api/v1/api/chat/route-8d41d89fe12ae485.js +0 -1
  1320. package/app/.next/static/chunks/app/api/v1/audio/speech/route-8d41d89fe12ae485.js +0 -1
  1321. package/app/.next/static/chunks/app/api/v1/audio/transcriptions/route-8d41d89fe12ae485.js +0 -1
  1322. package/app/.next/static/chunks/app/api/v1/audio/voices/route-8d41d89fe12ae485.js +0 -1
  1323. package/app/.next/static/chunks/app/api/v1/chat/completions/route-8d41d89fe12ae485.js +0 -1
  1324. package/app/.next/static/chunks/app/api/v1/embeddings/route-8d41d89fe12ae485.js +0 -1
  1325. package/app/.next/static/chunks/app/api/v1/images/generations/route-8d41d89fe12ae485.js +0 -1
  1326. package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-8d41d89fe12ae485.js +0 -1
  1327. package/app/.next/static/chunks/app/api/v1/messages/route-8d41d89fe12ae485.js +0 -1
  1328. package/app/.next/static/chunks/app/api/v1/models/[kind]/route-8d41d89fe12ae485.js +0 -1
  1329. package/app/.next/static/chunks/app/api/v1/models/info/route-8d41d89fe12ae485.js +0 -1
  1330. package/app/.next/static/chunks/app/api/v1/models/route-8d41d89fe12ae485.js +0 -1
  1331. package/app/.next/static/chunks/app/api/v1/responses/compact/route-8d41d89fe12ae485.js +0 -1
  1332. package/app/.next/static/chunks/app/api/v1/responses/route-8d41d89fe12ae485.js +0 -1
  1333. package/app/.next/static/chunks/app/api/v1/route-8d41d89fe12ae485.js +0 -1
  1334. package/app/.next/static/chunks/app/api/v1/search/route-8d41d89fe12ae485.js +0 -1
  1335. package/app/.next/static/chunks/app/api/v1/web/fetch/route-8d41d89fe12ae485.js +0 -1
  1336. package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-8d41d89fe12ae485.js +0 -1
  1337. package/app/.next/static/chunks/app/api/v1beta/models/route-8d41d89fe12ae485.js +0 -1
  1338. package/app/.next/static/chunks/app/api/version/route-8d41d89fe12ae485.js +0 -1
  1339. package/app/.next/static/chunks/app/api/version/shutdown/route-8d41d89fe12ae485.js +0 -1
  1340. package/app/.next/static/chunks/app/api/version/update/route-8d41d89fe12ae485.js +0 -1
  1341. package/app/.next/static/chunks/app/dashboard/settings/pricing/page-9d24273d41fadd28.js +0 -1
  1342. package/app/.next/static/chunks/app/layout-2f20e93bb64f203d.js +0 -1
  1343. package/app/.next/static/chunks/app/login/page-3192fc777d7b8d4d.js +0 -1
  1344. package/app/.next/static/chunks/app/manifest.webmanifest/route-8d41d89fe12ae485.js +0 -1
  1345. package/app/.next/static/chunks/app/page-8d41d89fe12ae485.js +0 -1
  1346. package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-8d41d89fe12ae485.js +0 -1
  1347. package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-8d41d89fe12ae485.js +0 -1
  1348. package/app/.next/static/chunks/next/dist/client/components/builtin/not-found-8d41d89fe12ae485.js +0 -1
  1349. package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-8d41d89fe12ae485.js +0 -1
  1350. package/app/.next/static/chunks/webpack-b9b0d264958323b9.js +0 -1
  1351. package/app/.next/static/css/f240ded5456043a2.css +0 -1
  1352. package/app/.next/static/css/fe3b2b4e527f4e99.css +0 -1
  1353. package/app/node_modules/@img/colour/color.cjs +0 -1596
  1354. package/app/node_modules/@img/colour/index.cjs +0 -1
  1355. package/app/node_modules/@img/colour/package.json +0 -58
  1356. package/app/node_modules/@img/sharp-darwin-arm64/LICENSE +0 -191
  1357. package/app/node_modules/@img/sharp-darwin-arm64/lib/sharp-darwin-arm64.node +0 -0
  1358. package/app/node_modules/@img/sharp-darwin-arm64/package.json +0 -40
  1359. package/app/node_modules/@img/sharp-libvips-darwin-arm64/lib/index.js +0 -1
  1360. package/app/node_modules/@img/sharp-libvips-darwin-arm64/lib/libvips-cpp.8.17.3.dylib +0 -0
  1361. package/app/node_modules/@img/sharp-libvips-darwin-arm64/package.json +0 -36
  1362. package/app/node_modules/@img/sharp-libvips-darwin-arm64/versions.json +0 -30
  1363. package/app/node_modules/better-sqlite3/build/Release/better_sqlite3.node +0 -0
  1364. package/app/node_modules/better-sqlite3/lib/database.js +0 -90
  1365. package/app/node_modules/better-sqlite3/lib/index.js +0 -3
  1366. package/app/node_modules/better-sqlite3/lib/methods/aggregate.js +0 -43
  1367. package/app/node_modules/better-sqlite3/lib/methods/backup.js +0 -67
  1368. package/app/node_modules/better-sqlite3/lib/methods/function.js +0 -31
  1369. package/app/node_modules/better-sqlite3/lib/methods/inspect.js +0 -7
  1370. package/app/node_modules/better-sqlite3/lib/methods/pragma.js +0 -12
  1371. package/app/node_modules/better-sqlite3/lib/methods/serialize.js +0 -16
  1372. package/app/node_modules/better-sqlite3/lib/methods/table.js +0 -189
  1373. package/app/node_modules/better-sqlite3/lib/methods/transaction.js +0 -78
  1374. package/app/node_modules/better-sqlite3/lib/methods/wrappers.js +0 -54
  1375. package/app/node_modules/better-sqlite3/lib/sqlite-error.js +0 -20
  1376. package/app/node_modules/better-sqlite3/lib/util.js +0 -12
  1377. package/app/node_modules/better-sqlite3/package.json +0 -59
  1378. package/app/node_modules/detect-libc/lib/detect-libc.js +0 -313
  1379. package/app/node_modules/detect-libc/lib/elf.js +0 -39
  1380. package/app/node_modules/detect-libc/lib/filesystem.js +0 -51
  1381. package/app/node_modules/detect-libc/lib/process.js +0 -24
  1382. package/app/node_modules/detect-libc/package.json +0 -44
  1383. package/app/node_modules/sharp/lib/channel.js +0 -177
  1384. package/app/node_modules/sharp/lib/colour.js +0 -195
  1385. package/app/node_modules/sharp/lib/composite.js +0 -212
  1386. package/app/node_modules/sharp/lib/constructor.js +0 -499
  1387. package/app/node_modules/sharp/lib/index.js +0 -16
  1388. package/app/node_modules/sharp/lib/input.js +0 -809
  1389. package/app/node_modules/sharp/lib/is.js +0 -143
  1390. package/app/node_modules/sharp/lib/libvips.js +0 -207
  1391. package/app/node_modules/sharp/lib/operation.js +0 -1016
  1392. package/app/node_modules/sharp/lib/output.js +0 -1666
  1393. package/app/node_modules/sharp/lib/resize.js +0 -595
  1394. package/app/node_modules/sharp/lib/sharp.js +0 -121
  1395. package/app/node_modules/sharp/lib/utility.js +0 -291
  1396. package/app/node_modules/sharp/node_modules/semver/classes/comparator.js +0 -143
  1397. package/app/node_modules/sharp/node_modules/semver/classes/range.js +0 -557
  1398. package/app/node_modules/sharp/node_modules/semver/classes/semver.js +0 -333
  1399. package/app/node_modules/sharp/node_modules/semver/functions/cmp.js +0 -54
  1400. package/app/node_modules/sharp/node_modules/semver/functions/coerce.js +0 -62
  1401. package/app/node_modules/sharp/node_modules/semver/functions/compare.js +0 -7
  1402. package/app/node_modules/sharp/node_modules/semver/functions/eq.js +0 -5
  1403. package/app/node_modules/sharp/node_modules/semver/functions/gt.js +0 -5
  1404. package/app/node_modules/sharp/node_modules/semver/functions/gte.js +0 -5
  1405. package/app/node_modules/sharp/node_modules/semver/functions/lt.js +0 -5
  1406. package/app/node_modules/sharp/node_modules/semver/functions/lte.js +0 -5
  1407. package/app/node_modules/sharp/node_modules/semver/functions/neq.js +0 -5
  1408. package/app/node_modules/sharp/node_modules/semver/functions/parse.js +0 -18
  1409. package/app/node_modules/sharp/node_modules/semver/functions/satisfies.js +0 -12
  1410. package/app/node_modules/sharp/node_modules/semver/internal/constants.js +0 -37
  1411. package/app/node_modules/sharp/node_modules/semver/internal/debug.js +0 -11
  1412. package/app/node_modules/sharp/node_modules/semver/internal/identifiers.js +0 -29
  1413. package/app/node_modules/sharp/node_modules/semver/internal/lrucache.js +0 -42
  1414. package/app/node_modules/sharp/node_modules/semver/internal/parse-options.js +0 -17
  1415. package/app/node_modules/sharp/node_modules/semver/internal/re.js +0 -223
  1416. package/app/node_modules/sharp/node_modules/semver/package.json +0 -78
  1417. package/app/node_modules/sharp/package.json +0 -202
  1418. package/app/src/mitm/antigravityIdeVersion.js +0 -50
  1419. package/app/src/mitm/cert/generate.js +0 -32
  1420. package/app/src/mitm/cert/install.js +0 -269
  1421. package/app/src/mitm/cert/rootCA.js +0 -173
  1422. package/app/src/mitm/config.js +0 -89
  1423. package/app/src/mitm/dbReader.js +0 -22
  1424. package/app/src/mitm/dns/dnsConfig.js +0 -266
  1425. package/app/src/mitm/handlers/antigravity.js +0 -33
  1426. package/app/src/mitm/handlers/base.js +0 -226
  1427. package/app/src/mitm/handlers/copilot.js +0 -35
  1428. package/app/src/mitm/handlers/cursor.js +0 -15
  1429. package/app/src/mitm/handlers/kiro.js +0 -526
  1430. package/app/src/mitm/logger.js +0 -106
  1431. package/app/src/mitm/manager.js +0 -851
  1432. package/app/src/mitm/paths.js +0 -32
  1433. package/app/src/mitm/winElevated.js +0 -81
  1434. package/app/src/shared/constants/mitmToolHosts.js +0 -12
  1435. /package/app/{.next → .next-cli-build}/package.json +0 -0
  1436. /package/app/{.next → .next-cli-build}/react-loadable-manifest.json +0 -0
  1437. /package/app/{.next → .next-cli-build}/server/app/_global-error.meta +0 -0
  1438. /package/app/{.next → .next-cli-build}/server/app/_not-found.meta +0 -0
  1439. /package/app/{.next → .next-cli-build}/server/app/api/auth/login/route_client-reference-manifest.js +0 -0
  1440. /package/app/{.next → .next-cli-build}/server/app/api/auth/logout/route_client-reference-manifest.js +0 -0
  1441. /package/app/{.next → .next-cli-build}/server/app/api/auth/me/route_client-reference-manifest.js +0 -0
  1442. /package/app/{.next → .next-cli-build}/server/app/api/auth/oidc/callback/route_client-reference-manifest.js +0 -0
  1443. /package/app/{.next → .next-cli-build}/server/app/api/auth/oidc/start/route_client-reference-manifest.js +0 -0
  1444. /package/app/{.next → .next-cli-build}/server/app/api/auth/oidc/test/route_client-reference-manifest.js +0 -0
  1445. /package/app/{.next → .next-cli-build}/server/app/api/auth/reset-password/route_client-reference-manifest.js +0 -0
  1446. /package/app/{.next → .next-cli-build}/server/app/api/auth/status/route_client-reference-manifest.js +0 -0
  1447. /package/app/{.next → .next-cli-build}/server/app/api/cli-tools/all-statuses/route_client-reference-manifest.js +0 -0
  1448. /package/app/{.next → .next-cli-build}/server/app/api/cli-tools/antigravity-mitm/alias/route_client-reference-manifest.js +0 -0
  1449. /package/app/{.next → .next-cli-build}/server/app/api/cli-tools/antigravity-mitm/route_client-reference-manifest.js +0 -0
  1450. /package/app/{.next → .next-cli-build}/server/app/api/cli-tools/claude-settings/route_client-reference-manifest.js +0 -0
  1451. /package/app/{.next → .next-cli-build}/server/app/api/cli-tools/cline-settings/route_client-reference-manifest.js +0 -0
  1452. /package/app/{.next → .next-cli-build}/server/app/api/cli-tools/codex-settings/activate-account/route_client-reference-manifest.js +0 -0
  1453. /package/app/{.next → .next-cli-build}/server/app/api/cli-tools/codex-settings/route_client-reference-manifest.js +0 -0
  1454. /package/app/{.next → .next-cli-build}/server/app/api/cli-tools/copilot-settings/route_client-reference-manifest.js +0 -0
  1455. /package/app/{.next → .next-cli-build}/server/app/api/cli-tools/cowork-mcp-registry/route_client-reference-manifest.js +0 -0
  1456. /package/app/{.next → .next-cli-build}/server/app/api/cli-tools/cowork-mcp-tools/route_client-reference-manifest.js +0 -0
  1457. /package/app/{.next → .next-cli-build}/server/app/api/cli-tools/cowork-settings/route_client-reference-manifest.js +0 -0
  1458. /package/app/{.next → .next-cli-build}/server/app/api/cli-tools/deepseek-tui-settings/route_client-reference-manifest.js +0 -0
  1459. /package/app/{.next → .next-cli-build}/server/app/api/cli-tools/droid-settings/route_client-reference-manifest.js +0 -0
  1460. /package/app/{.next → .next-cli-build}/server/app/api/cli-tools/hermes-settings/route_client-reference-manifest.js +0 -0
  1461. /package/app/{.next → .next-cli-build}/server/app/api/cli-tools/jcode-settings/route_client-reference-manifest.js +0 -0
  1462. /package/app/{.next → .next-cli-build}/server/app/api/cli-tools/kilo-settings/route_client-reference-manifest.js +0 -0
  1463. /package/app/{.next → .next-cli-build}/server/app/api/cli-tools/openclaw-settings/route_client-reference-manifest.js +0 -0
  1464. /package/app/{.next → .next-cli-build}/server/app/api/cli-tools/opencode-settings/route_client-reference-manifest.js +0 -0
  1465. /package/app/{.next → .next-cli-build}/server/app/api/combos/[id]/route_client-reference-manifest.js +0 -0
  1466. /package/app/{.next → .next-cli-build}/server/app/api/combos/route_client-reference-manifest.js +0 -0
  1467. /package/app/{.next → .next-cli-build}/server/app/api/health/route_client-reference-manifest.js +0 -0
  1468. /package/app/{.next → .next-cli-build}/server/app/api/init/route_client-reference-manifest.js +0 -0
  1469. /package/app/{.next → .next-cli-build}/server/app/api/keys/[id]/route_client-reference-manifest.js +0 -0
  1470. /package/app/{.next → .next-cli-build}/server/app/api/keys/route_client-reference-manifest.js +0 -0
  1471. /package/app/{.next → .next-cli-build}/server/app/api/locale/route_client-reference-manifest.js +0 -0
  1472. /package/app/{.next → .next-cli-build}/server/app/api/mcp/[plugin]/message/route_client-reference-manifest.js +0 -0
  1473. /package/app/{.next → .next-cli-build}/server/app/api/mcp/[plugin]/sse/route_client-reference-manifest.js +0 -0
  1474. /package/app/{.next → .next-cli-build}/server/app/api/media-providers/tts/deepgram/voices/route_client-reference-manifest.js +0 -0
  1475. /package/app/{.next → .next-cli-build}/server/app/api/media-providers/tts/elevenlabs/voices/route_client-reference-manifest.js +0 -0
  1476. /package/app/{.next → .next-cli-build}/server/app/api/media-providers/tts/inworld/voices/route_client-reference-manifest.js +0 -0
  1477. /package/app/{.next → .next-cli-build}/server/app/api/media-providers/tts/minimax/voices/route_client-reference-manifest.js +0 -0
  1478. /package/app/{.next → .next-cli-build}/server/app/api/media-providers/tts/voices/route_client-reference-manifest.js +0 -0
  1479. /package/app/{.next → .next-cli-build}/server/app/api/models/alias/route_client-reference-manifest.js +0 -0
  1480. /package/app/{.next → .next-cli-build}/server/app/api/models/availability/route_client-reference-manifest.js +0 -0
  1481. /package/app/{.next → .next-cli-build}/server/app/api/models/custom/route_client-reference-manifest.js +0 -0
  1482. /package/app/{.next → .next-cli-build}/server/app/api/models/disabled/route_client-reference-manifest.js +0 -0
  1483. /package/app/{.next → .next-cli-build}/server/app/api/models/route_client-reference-manifest.js +0 -0
  1484. /package/app/{.next → .next-cli-build}/server/app/api/models/test/route_client-reference-manifest.js +0 -0
  1485. /package/app/{.next → .next-cli-build}/server/app/api/oauth/[provider]/[action]/route_client-reference-manifest.js +0 -0
  1486. /package/app/{.next → .next-cli-build}/server/app/api/oauth/codex/bulk-import/route_client-reference-manifest.js +0 -0
  1487. /package/app/{.next → .next-cli-build}/server/app/api/oauth/codex/import-token/route_client-reference-manifest.js +0 -0
  1488. /package/app/{.next → .next-cli-build}/server/app/api/oauth/cursor/auto-import/route_client-reference-manifest.js +0 -0
  1489. /package/app/{.next → .next-cli-build}/server/app/api/oauth/cursor/import/route_client-reference-manifest.js +0 -0
  1490. /package/app/{.next → .next-cli-build}/server/app/api/oauth/gitlab/pat/route_client-reference-manifest.js +0 -0
  1491. /package/app/{.next → .next-cli-build}/server/app/api/oauth/iflow/cookie/route_client-reference-manifest.js +0 -0
  1492. /package/app/{.next → .next-cli-build}/server/app/api/oauth/kiro/auto-import/route_client-reference-manifest.js +0 -0
  1493. /package/app/{.next → .next-cli-build}/server/app/api/oauth/kiro/import/route_client-reference-manifest.js +0 -0
  1494. /package/app/{.next → .next-cli-build}/server/app/api/oauth/kiro/social-authorize/route_client-reference-manifest.js +0 -0
  1495. /package/app/{.next → .next-cli-build}/server/app/api/oauth/kiro/social-exchange/route_client-reference-manifest.js +0 -0
  1496. /package/app/{.next → .next-cli-build}/server/app/api/pricing/route_client-reference-manifest.js +0 -0
  1497. /package/app/{.next → .next-cli-build}/server/app/api/provider-nodes/[id]/route_client-reference-manifest.js +0 -0
  1498. /package/app/{.next → .next-cli-build}/server/app/api/provider-nodes/route_client-reference-manifest.js +0 -0
  1499. /package/app/{.next → .next-cli-build}/server/app/api/provider-nodes/validate/route_client-reference-manifest.js +0 -0
  1500. /package/app/{.next → .next-cli-build}/server/app/api/providers/[id]/models/route_client-reference-manifest.js +0 -0
  1501. /package/app/{.next → .next-cli-build}/server/app/api/providers/[id]/route_client-reference-manifest.js +0 -0
  1502. /package/app/{.next → .next-cli-build}/server/app/api/providers/[id]/test/route_client-reference-manifest.js +0 -0
  1503. /package/app/{.next → .next-cli-build}/server/app/api/providers/[id]/test-models/route_client-reference-manifest.js +0 -0
  1504. /package/app/{.next → .next-cli-build}/server/app/api/providers/client/route_client-reference-manifest.js +0 -0
  1505. /package/app/{.next → .next-cli-build}/server/app/api/providers/kilo/free-models/route_client-reference-manifest.js +0 -0
  1506. /package/app/{.next → .next-cli-build}/server/app/api/providers/route_client-reference-manifest.js +0 -0
  1507. /package/app/{.next → .next-cli-build}/server/app/api/providers/suggested-models/route_client-reference-manifest.js +0 -0
  1508. /package/app/{.next → .next-cli-build}/server/app/api/providers/test-batch/route_client-reference-manifest.js +0 -0
  1509. /package/app/{.next → .next-cli-build}/server/app/api/providers/validate/route_client-reference-manifest.js +0 -0
  1510. /package/app/{.next → .next-cli-build}/server/app/api/proxy-pools/[id]/route_client-reference-manifest.js +0 -0
  1511. /package/app/{.next → .next-cli-build}/server/app/api/proxy-pools/[id]/test/route_client-reference-manifest.js +0 -0
  1512. /package/app/{.next → .next-cli-build}/server/app/api/proxy-pools/cloudflare-deploy/route_client-reference-manifest.js +0 -0
  1513. /package/app/{.next → .next-cli-build}/server/app/api/proxy-pools/deno-deploy/route_client-reference-manifest.js +0 -0
  1514. /package/app/{.next → .next-cli-build}/server/app/api/proxy-pools/route_client-reference-manifest.js +0 -0
  1515. /package/app/{.next → .next-cli-build}/server/app/api/proxy-pools/vercel-deploy/route_client-reference-manifest.js +0 -0
  1516. /package/app/{.next → .next-cli-build}/server/app/api/settings/database/route_client-reference-manifest.js +0 -0
  1517. /package/app/{.next → .next-cli-build}/server/app/api/settings/proxy-test/route_client-reference-manifest.js +0 -0
  1518. /package/app/{.next → .next-cli-build}/server/app/api/settings/require-login/route_client-reference-manifest.js +0 -0
  1519. /package/app/{.next → .next-cli-build}/server/app/api/settings/route_client-reference-manifest.js +0 -0
  1520. /package/app/{.next → .next-cli-build}/server/app/api/shutdown/route_client-reference-manifest.js +0 -0
  1521. /package/app/{.next → .next-cli-build}/server/app/api/tags/route_client-reference-manifest.js +0 -0
  1522. /package/app/{.next → .next-cli-build}/server/app/api/translator/console-logs/route_client-reference-manifest.js +0 -0
  1523. /package/app/{.next → .next-cli-build}/server/app/api/translator/console-logs/stream/route_client-reference-manifest.js +0 -0
  1524. /package/app/{.next → .next-cli-build}/server/app/api/translator/load/route_client-reference-manifest.js +0 -0
  1525. /package/app/{.next → .next-cli-build}/server/app/api/translator/save/route_client-reference-manifest.js +0 -0
  1526. /package/app/{.next → .next-cli-build}/server/app/api/translator/send/route_client-reference-manifest.js +0 -0
  1527. /package/app/{.next → .next-cli-build}/server/app/api/translator/translate/route_client-reference-manifest.js +0 -0
  1528. /package/app/{.next → .next-cli-build}/server/app/api/tunnel/disable/route_client-reference-manifest.js +0 -0
  1529. /package/app/{.next → .next-cli-build}/server/app/api/tunnel/enable/route_client-reference-manifest.js +0 -0
  1530. /package/app/{.next → .next-cli-build}/server/app/api/tunnel/status/route_client-reference-manifest.js +0 -0
  1531. /package/app/{.next → .next-cli-build}/server/app/api/tunnel/tailscale-check/route_client-reference-manifest.js +0 -0
  1532. /package/app/{.next → .next-cli-build}/server/app/api/tunnel/tailscale-disable/route_client-reference-manifest.js +0 -0
  1533. /package/app/{.next → .next-cli-build}/server/app/api/tunnel/tailscale-enable/route_client-reference-manifest.js +0 -0
  1534. /package/app/{.next → .next-cli-build}/server/app/api/tunnel/tailscale-install/route_client-reference-manifest.js +0 -0
  1535. /package/app/{.next → .next-cli-build}/server/app/api/usage/[connectionId]/route_client-reference-manifest.js +0 -0
  1536. /package/app/{.next → .next-cli-build}/server/app/api/usage/api-keys/route_client-reference-manifest.js +0 -0
  1537. /package/app/{.next → .next-cli-build}/server/app/api/usage/chart/route_client-reference-manifest.js +0 -0
  1538. /package/app/{.next → .next-cli-build}/server/app/api/usage/history/route_client-reference-manifest.js +0 -0
  1539. /package/app/{.next → .next-cli-build}/server/app/api/usage/logs/route_client-reference-manifest.js +0 -0
  1540. /package/app/{.next → .next-cli-build}/server/app/api/usage/providers/route_client-reference-manifest.js +0 -0
  1541. /package/app/{.next → .next-cli-build}/server/app/api/usage/request-details/route_client-reference-manifest.js +0 -0
  1542. /package/app/{.next → .next-cli-build}/server/app/api/usage/request-logs/route_client-reference-manifest.js +0 -0
  1543. /package/app/{.next → .next-cli-build}/server/app/api/usage/stats/route_client-reference-manifest.js +0 -0
  1544. /package/app/{.next → .next-cli-build}/server/app/api/usage/stream/route_client-reference-manifest.js +0 -0
  1545. /package/app/{.next → .next-cli-build}/server/app/api/users/[id]/route_client-reference-manifest.js +0 -0
  1546. /package/app/{.next → .next-cli-build}/server/app/api/users/route_client-reference-manifest.js +0 -0
  1547. /package/app/{.next → .next-cli-build}/server/app/api/v1/api/chat/route_client-reference-manifest.js +0 -0
  1548. /package/app/{.next → .next-cli-build}/server/app/api/v1/audio/speech/route_client-reference-manifest.js +0 -0
  1549. /package/app/{.next → .next-cli-build}/server/app/api/v1/audio/transcriptions/route_client-reference-manifest.js +0 -0
  1550. /package/app/{.next → .next-cli-build}/server/app/api/v1/audio/voices/route_client-reference-manifest.js +0 -0
  1551. /package/app/{.next → .next-cli-build}/server/app/api/v1/chat/completions/route_client-reference-manifest.js +0 -0
  1552. /package/app/{.next → .next-cli-build}/server/app/api/v1/embeddings/route_client-reference-manifest.js +0 -0
  1553. /package/app/{.next → .next-cli-build}/server/app/api/v1/images/generations/route_client-reference-manifest.js +0 -0
  1554. /package/app/{.next → .next-cli-build}/server/app/api/v1/messages/count_tokens/route_client-reference-manifest.js +0 -0
  1555. /package/app/{.next → .next-cli-build}/server/app/api/v1/messages/route_client-reference-manifest.js +0 -0
  1556. /package/app/{.next → .next-cli-build}/server/app/api/v1/models/[kind]/route_client-reference-manifest.js +0 -0
  1557. /package/app/{.next → .next-cli-build}/server/app/api/v1/models/info/route_client-reference-manifest.js +0 -0
  1558. /package/app/{.next → .next-cli-build}/server/app/api/v1/models/route_client-reference-manifest.js +0 -0
  1559. /package/app/{.next → .next-cli-build}/server/app/api/v1/responses/compact/route_client-reference-manifest.js +0 -0
  1560. /package/app/{.next → .next-cli-build}/server/app/api/v1/responses/route_client-reference-manifest.js +0 -0
  1561. /package/app/{.next → .next-cli-build}/server/app/api/v1/route_client-reference-manifest.js +0 -0
  1562. /package/app/{.next → .next-cli-build}/server/app/api/v1/search/route_client-reference-manifest.js +0 -0
  1563. /package/app/{.next → .next-cli-build}/server/app/api/v1/web/fetch/route_client-reference-manifest.js +0 -0
  1564. /package/app/{.next → .next-cli-build}/server/app/api/v1beta/models/[...path]/route_client-reference-manifest.js +0 -0
  1565. /package/app/{.next → .next-cli-build}/server/app/api/v1beta/models/route_client-reference-manifest.js +0 -0
  1566. /package/app/{.next → .next-cli-build}/server/app/api/version/route_client-reference-manifest.js +0 -0
  1567. /package/app/{.next → .next-cli-build}/server/app/api/version/shutdown/route_client-reference-manifest.js +0 -0
  1568. /package/app/{.next → .next-cli-build}/server/app/api/version/update/route_client-reference-manifest.js +0 -0
  1569. /package/app/{.next → .next-cli-build}/server/app/callback.meta +0 -0
  1570. /package/app/{.next → .next-cli-build}/server/app/dashboard/settings/pricing.meta +0 -0
  1571. /package/app/{.next → .next-cli-build}/server/app/favicon.ico.body +0 -0
  1572. /package/app/{.next → .next-cli-build}/server/app/favicon.ico.meta +0 -0
  1573. /package/app/{.next → .next-cli-build}/server/app/index.meta +0 -0
  1574. /package/app/{.next → .next-cli-build}/server/app/landing.meta +0 -0
  1575. /package/app/{.next → .next-cli-build}/server/app/login.meta +0 -0
  1576. /package/app/{.next → .next-cli-build}/server/app/manifest.webmanifest/route_client-reference-manifest.js +0 -0
  1577. /package/app/{.next → .next-cli-build}/server/app/manifest.webmanifest.body +0 -0
  1578. /package/app/{.next → .next-cli-build}/server/app/manifest.webmanifest.meta +0 -0
  1579. /package/app/{.next → .next-cli-build}/server/chunks/1679.js +0 -0
  1580. /package/app/{.next → .next-cli-build}/server/chunks/1998.js +0 -0
  1581. /package/app/{.next → .next-cli-build}/server/chunks/241.js +0 -0
  1582. /package/app/{.next → .next-cli-build}/server/chunks/3593.js +0 -0
  1583. /package/app/{.next → .next-cli-build}/server/chunks/4013.js +0 -0
  1584. /package/app/{.next → .next-cli-build}/server/chunks/4739.js +0 -0
  1585. /package/app/{.next → .next-cli-build}/server/chunks/4741.js +0 -0
  1586. /package/app/{.next → .next-cli-build}/server/chunks/4989.js +0 -0
  1587. /package/app/{.next → .next-cli-build}/server/chunks/5217.js +0 -0
  1588. /package/app/{.next → .next-cli-build}/server/chunks/5258.js +0 -0
  1589. /package/app/{.next → .next-cli-build}/server/chunks/5573.js +0 -0
  1590. /package/app/{.next → .next-cli-build}/server/chunks/6457.js +0 -0
  1591. /package/app/{.next → .next-cli-build}/server/chunks/6844.js +0 -0
  1592. /package/app/{.next → .next-cli-build}/server/chunks/6936.js +0 -0
  1593. /package/app/{.next → .next-cli-build}/server/chunks/7502.js +0 -0
  1594. /package/app/{.next → .next-cli-build}/server/chunks/8473.js +0 -0
  1595. /package/app/{.next → .next-cli-build}/server/chunks/8520.js +0 -0
  1596. /package/app/{.next → .next-cli-build}/server/chunks/8971.js +0 -0
  1597. /package/app/{.next → .next-cli-build}/server/chunks/9460.js +0 -0
  1598. /package/app/{.next → .next-cli-build}/server/functions-config-manifest.json +0 -0
  1599. /package/app/{.next → .next-cli-build}/server/middleware-manifest.json +0 -0
  1600. /package/app/{.next → .next-cli-build}/server/middleware-react-loadable-manifest.js +0 -0
  1601. /package/app/{.next → .next-cli-build}/server/pages-manifest.json +0 -0
  1602. /package/app/{.next → .next-cli-build}/server/prefetch-hints.json +0 -0
  1603. /package/app/{.next → .next-cli-build}/server/webpack-runtime.js +0 -0
  1604. /package/app/{.next/static/MxcY0EY8eMa4ouCwsP4Cl → .next-cli-build/static/Z1O3mWLKLCkJm5SRaYg62}/_ssgManifest.js +0 -0
  1605. /package/app/{.next → .next-cli-build}/static/chunks/1051-a02f07646d97d6ca.js +0 -0
  1606. /package/app/{.next → .next-cli-build}/static/chunks/1a258343-5938f676ed376386.js +0 -0
  1607. /package/app/{.next → .next-cli-build}/static/chunks/3794-ba2500baa4c52d55.js +0 -0
  1608. /package/app/{.next → .next-cli-build}/static/chunks/4bd1b696-e356ca5ba0218e27.js +0 -0
  1609. /package/app/{.next → .next-cli-build}/static/chunks/5242-bb1a1a7ec3bfb62f.js +0 -0
  1610. /package/app/{.next → .next-cli-build}/static/chunks/5772-901f1092d831ec37.js +0 -0
  1611. /package/app/{.next → .next-cli-build}/static/chunks/7055-e60e20f43bfbe5f8.js +0 -0
  1612. /package/app/{.next → .next-cli-build}/static/chunks/app/_not-found/page-7927650ca4037264.js +0 -0
  1613. /package/app/{.next → .next-cli-build}/static/chunks/app/callback/page-97a750f0d51c3dbe.js +0 -0
  1614. /package/app/{.next → .next-cli-build}/static/chunks/app/landing/page-bf42a9c80c1e6776.js +0 -0
  1615. /package/app/{.next → .next-cli-build}/static/chunks/framework-711ef29bc66f648c.js +0 -0
  1616. /package/app/{.next → .next-cli-build}/static/chunks/main-app-d5f2701c08554961.js +0 -0
  1617. /package/app/{.next → .next-cli-build}/static/chunks/main-b8d198db3858ff3e.js +0 -0
  1618. /package/app/{.next → .next-cli-build}/static/chunks/next/dist/client/components/builtin/global-error-8d51a00b6c966622.js +0 -0
  1619. /package/app/{.next → .next-cli-build}/static/chunks/polyfills-42372ed130431b0a.js +0 -0
  1620. /package/app/{.next → .next-cli-build}/static/css/599369d853c61df7.css +0 -0
  1621. /package/app/{.next → .next-cli-build}/static/media/material-symbols-outlined.1060ac06.woff2 +0 -0
@@ -1,1666 +0,0 @@
1
- /*!
2
- Copyright 2013 Lovell Fuller and others.
3
- SPDX-License-Identifier: Apache-2.0
4
- */
5
-
6
- const path = require('node:path');
7
- const is = require('./is');
8
- const sharp = require('./sharp');
9
-
10
- const formats = new Map([
11
- ['heic', 'heif'],
12
- ['heif', 'heif'],
13
- ['avif', 'avif'],
14
- ['jpeg', 'jpeg'],
15
- ['jpg', 'jpeg'],
16
- ['jpe', 'jpeg'],
17
- ['tile', 'tile'],
18
- ['dz', 'tile'],
19
- ['png', 'png'],
20
- ['raw', 'raw'],
21
- ['tiff', 'tiff'],
22
- ['tif', 'tiff'],
23
- ['webp', 'webp'],
24
- ['gif', 'gif'],
25
- ['jp2', 'jp2'],
26
- ['jpx', 'jp2'],
27
- ['j2k', 'jp2'],
28
- ['j2c', 'jp2'],
29
- ['jxl', 'jxl']
30
- ]);
31
-
32
- const jp2Regex = /\.(jp[2x]|j2[kc])$/i;
33
-
34
- const errJp2Save = () => new Error('JP2 output requires libvips with support for OpenJPEG');
35
-
36
- const bitdepthFromColourCount = (colours) => 1 << 31 - Math.clz32(Math.ceil(Math.log2(colours)));
37
-
38
- /**
39
- * Write output image data to a file.
40
- *
41
- * If an explicit output format is not selected, it will be inferred from the extension,
42
- * with JPEG, PNG, WebP, AVIF, TIFF, GIF, DZI, and libvips' V format supported.
43
- * Note that raw pixel data is only supported for buffer output.
44
- *
45
- * By default all metadata will be removed, which includes EXIF-based orientation.
46
- * See {@link #withmetadata withMetadata} for control over this.
47
- *
48
- * The caller is responsible for ensuring directory structures and permissions exist.
49
- *
50
- * A `Promise` is returned when `callback` is not provided.
51
- *
52
- * @example
53
- * sharp(input)
54
- * .toFile('output.png', (err, info) => { ... });
55
- *
56
- * @example
57
- * sharp(input)
58
- * .toFile('output.png')
59
- * .then(info => { ... })
60
- * .catch(err => { ... });
61
- *
62
- * @param {string} fileOut - the path to write the image data to.
63
- * @param {Function} [callback] - called on completion with two arguments `(err, info)`.
64
- * `info` contains the output image `format`, `size` (bytes), `width`, `height`,
65
- * `channels` and `premultiplied` (indicating if premultiplication was used).
66
- * When using a crop strategy also contains `cropOffsetLeft` and `cropOffsetTop`.
67
- * When using the attention crop strategy also contains `attentionX` and `attentionY`, the focal point of the cropped region.
68
- * Animated output will also contain `pageHeight` and `pages`.
69
- * May also contain `textAutofitDpi` (dpi the font was rendered at) if image was created from text.
70
- * @returns {Promise<Object>} - when no callback is provided
71
- * @throws {Error} Invalid parameters
72
- */
73
- function toFile (fileOut, callback) {
74
- let err;
75
- if (!is.string(fileOut)) {
76
- err = new Error('Missing output file path');
77
- } else if (is.string(this.options.input.file) && path.resolve(this.options.input.file) === path.resolve(fileOut)) {
78
- err = new Error('Cannot use same file for input and output');
79
- } else if (jp2Regex.test(path.extname(fileOut)) && !this.constructor.format.jp2k.output.file) {
80
- err = errJp2Save();
81
- }
82
- if (err) {
83
- if (is.fn(callback)) {
84
- callback(err);
85
- } else {
86
- return Promise.reject(err);
87
- }
88
- } else {
89
- this.options.fileOut = fileOut;
90
- const stack = Error();
91
- return this._pipeline(callback, stack);
92
- }
93
- return this;
94
- }
95
-
96
- /**
97
- * Write output to a Buffer.
98
- * JPEG, PNG, WebP, AVIF, TIFF, GIF and raw pixel data output are supported.
99
- *
100
- * Use {@link #toformat toFormat} or one of the format-specific functions such as {@link #jpeg jpeg}, {@link #png png} etc. to set the output format.
101
- *
102
- * If no explicit format is set, the output format will match the input image, except SVG input which becomes PNG output.
103
- *
104
- * By default all metadata will be removed, which includes EXIF-based orientation.
105
- * See {@link #withmetadata withMetadata} for control over this.
106
- *
107
- * `callback`, if present, gets three arguments `(err, data, info)` where:
108
- * - `err` is an error, if any.
109
- * - `data` is the output image data.
110
- * - `info` contains the output image `format`, `size` (bytes), `width`, `height`,
111
- * `channels` and `premultiplied` (indicating if premultiplication was used).
112
- * When using a crop strategy also contains `cropOffsetLeft` and `cropOffsetTop`.
113
- * Animated output will also contain `pageHeight` and `pages`.
114
- * May also contain `textAutofitDpi` (dpi the font was rendered at) if image was created from text.
115
- *
116
- * A `Promise` is returned when `callback` is not provided.
117
- *
118
- * @example
119
- * sharp(input)
120
- * .toBuffer((err, data, info) => { ... });
121
- *
122
- * @example
123
- * sharp(input)
124
- * .toBuffer()
125
- * .then(data => { ... })
126
- * .catch(err => { ... });
127
- *
128
- * @example
129
- * sharp(input)
130
- * .png()
131
- * .toBuffer({ resolveWithObject: true })
132
- * .then(({ data, info }) => { ... })
133
- * .catch(err => { ... });
134
- *
135
- * @example
136
- * const { data, info } = await sharp('my-image.jpg')
137
- * // output the raw pixels
138
- * .raw()
139
- * .toBuffer({ resolveWithObject: true });
140
- *
141
- * // create a more type safe way to work with the raw pixel data
142
- * // this will not copy the data, instead it will change `data`s underlying ArrayBuffer
143
- * // so `data` and `pixelArray` point to the same memory location
144
- * const pixelArray = new Uint8ClampedArray(data.buffer);
145
- *
146
- * // When you are done changing the pixelArray, sharp takes the `pixelArray` as an input
147
- * const { width, height, channels } = info;
148
- * await sharp(pixelArray, { raw: { width, height, channels } })
149
- * .toFile('my-changed-image.jpg');
150
- *
151
- * @param {Object} [options]
152
- * @param {boolean} [options.resolveWithObject] Resolve the Promise with an Object containing `data` and `info` properties instead of resolving only with `data`.
153
- * @param {Function} [callback]
154
- * @returns {Promise<Buffer>} - when no callback is provided
155
- */
156
- function toBuffer (options, callback) {
157
- if (is.object(options)) {
158
- this._setBooleanOption('resolveWithObject', options.resolveWithObject);
159
- } else if (this.options.resolveWithObject) {
160
- this.options.resolveWithObject = false;
161
- }
162
- this.options.fileOut = '';
163
- const stack = Error();
164
- return this._pipeline(is.fn(options) ? options : callback, stack);
165
- }
166
-
167
- /**
168
- * Keep all EXIF metadata from the input image in the output image.
169
- *
170
- * EXIF metadata is unsupported for TIFF output.
171
- *
172
- * @since 0.33.0
173
- *
174
- * @example
175
- * const outputWithExif = await sharp(inputWithExif)
176
- * .keepExif()
177
- * .toBuffer();
178
- *
179
- * @returns {Sharp}
180
- */
181
- function keepExif () {
182
- this.options.keepMetadata |= 0b00001;
183
- return this;
184
- }
185
-
186
- /**
187
- * Set EXIF metadata in the output image, ignoring any EXIF in the input image.
188
- *
189
- * @since 0.33.0
190
- *
191
- * @example
192
- * const dataWithExif = await sharp(input)
193
- * .withExif({
194
- * IFD0: {
195
- * Copyright: 'The National Gallery'
196
- * },
197
- * IFD3: {
198
- * GPSLatitudeRef: 'N',
199
- * GPSLatitude: '51/1 30/1 3230/100',
200
- * GPSLongitudeRef: 'W',
201
- * GPSLongitude: '0/1 7/1 4366/100'
202
- * }
203
- * })
204
- * .toBuffer();
205
- *
206
- * @param {Object<string, Object<string, string>>} exif Object keyed by IFD0, IFD1 etc. of key/value string pairs to write as EXIF data.
207
- * @returns {Sharp}
208
- * @throws {Error} Invalid parameters
209
- */
210
- function withExif (exif) {
211
- if (is.object(exif)) {
212
- for (const [ifd, entries] of Object.entries(exif)) {
213
- if (is.object(entries)) {
214
- for (const [k, v] of Object.entries(entries)) {
215
- if (is.string(v)) {
216
- this.options.withExif[`exif-${ifd.toLowerCase()}-${k}`] = v;
217
- } else {
218
- throw is.invalidParameterError(`${ifd}.${k}`, 'string', v);
219
- }
220
- }
221
- } else {
222
- throw is.invalidParameterError(ifd, 'object', entries);
223
- }
224
- }
225
- } else {
226
- throw is.invalidParameterError('exif', 'object', exif);
227
- }
228
- this.options.withExifMerge = false;
229
- return this.keepExif();
230
- }
231
-
232
- /**
233
- * Update EXIF metadata from the input image in the output image.
234
- *
235
- * @since 0.33.0
236
- *
237
- * @example
238
- * const dataWithMergedExif = await sharp(inputWithExif)
239
- * .withExifMerge({
240
- * IFD0: {
241
- * Copyright: 'The National Gallery'
242
- * }
243
- * })
244
- * .toBuffer();
245
- *
246
- * @param {Object<string, Object<string, string>>} exif Object keyed by IFD0, IFD1 etc. of key/value string pairs to write as EXIF data.
247
- * @returns {Sharp}
248
- * @throws {Error} Invalid parameters
249
- */
250
- function withExifMerge (exif) {
251
- this.withExif(exif);
252
- this.options.withExifMerge = true;
253
- return this;
254
- }
255
-
256
- /**
257
- * Keep ICC profile from the input image in the output image.
258
- *
259
- * When input and output colour spaces differ, use with {@link /api-colour/#tocolourspace toColourspace} and optionally {@link /api-colour/#pipelinecolourspace pipelineColourspace}.
260
- *
261
- * @since 0.33.0
262
- *
263
- * @example
264
- * const outputWithIccProfile = await sharp(inputWithIccProfile)
265
- * .keepIccProfile()
266
- * .toBuffer();
267
- *
268
- * @example
269
- * const cmykOutputWithIccProfile = await sharp(cmykInputWithIccProfile)
270
- * .pipelineColourspace('cmyk')
271
- * .toColourspace('cmyk')
272
- * .keepIccProfile()
273
- * .toBuffer();
274
- *
275
- * @returns {Sharp}
276
- */
277
- function keepIccProfile () {
278
- this.options.keepMetadata |= 0b01000;
279
- return this;
280
- }
281
-
282
- /**
283
- * Transform using an ICC profile and attach to the output image.
284
- *
285
- * This can either be an absolute filesystem path or
286
- * built-in profile name (`srgb`, `p3`, `cmyk`).
287
- *
288
- * @since 0.33.0
289
- *
290
- * @example
291
- * const outputWithP3 = await sharp(input)
292
- * .withIccProfile('p3')
293
- * .toBuffer();
294
- *
295
- * @param {string} icc - Absolute filesystem path to output ICC profile or built-in profile name (srgb, p3, cmyk).
296
- * @param {Object} [options]
297
- * @param {number} [options.attach=true] Should the ICC profile be included in the output image metadata?
298
- * @returns {Sharp}
299
- * @throws {Error} Invalid parameters
300
- */
301
- function withIccProfile (icc, options) {
302
- if (is.string(icc)) {
303
- this.options.withIccProfile = icc;
304
- } else {
305
- throw is.invalidParameterError('icc', 'string', icc);
306
- }
307
- this.keepIccProfile();
308
- if (is.object(options)) {
309
- if (is.defined(options.attach)) {
310
- if (is.bool(options.attach)) {
311
- if (!options.attach) {
312
- this.options.keepMetadata &= ~0b01000;
313
- }
314
- } else {
315
- throw is.invalidParameterError('attach', 'boolean', options.attach);
316
- }
317
- }
318
- }
319
- return this;
320
- }
321
-
322
- /**
323
- * Keep XMP metadata from the input image in the output image.
324
- *
325
- * @since 0.34.3
326
- *
327
- * @example
328
- * const outputWithXmp = await sharp(inputWithXmp)
329
- * .keepXmp()
330
- * .toBuffer();
331
- *
332
- * @returns {Sharp}
333
- */
334
- function keepXmp () {
335
- this.options.keepMetadata |= 0b00010;
336
- return this;
337
- }
338
-
339
- /**
340
- * Set XMP metadata in the output image.
341
- *
342
- * Supported by PNG, JPEG, WebP, and TIFF output.
343
- *
344
- * @since 0.34.3
345
- *
346
- * @example
347
- * const xmpString = `
348
- * <?xml version="1.0"?>
349
- * <x:xmpmeta xmlns:x="adobe:ns:meta/">
350
- * <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
351
- * <rdf:Description rdf:about="" xmlns:dc="http://purl.org/dc/elements/1.1/">
352
- * <dc:creator><rdf:Seq><rdf:li>John Doe</rdf:li></rdf:Seq></dc:creator>
353
- * </rdf:Description>
354
- * </rdf:RDF>
355
- * </x:xmpmeta>`;
356
- *
357
- * const data = await sharp(input)
358
- * .withXmp(xmpString)
359
- * .toBuffer();
360
- *
361
- * @param {string} xmp String containing XMP metadata to be embedded in the output image.
362
- * @returns {Sharp}
363
- * @throws {Error} Invalid parameters
364
- */
365
- function withXmp (xmp) {
366
- if (is.string(xmp) && xmp.length > 0) {
367
- this.options.withXmp = xmp;
368
- this.options.keepMetadata |= 0b00010;
369
- } else {
370
- throw is.invalidParameterError('xmp', 'non-empty string', xmp);
371
- }
372
- return this;
373
- }
374
-
375
- /**
376
- * Keep all metadata (EXIF, ICC, XMP, IPTC) from the input image in the output image.
377
- *
378
- * The default behaviour, when `keepMetadata` is not used, is to convert to the device-independent
379
- * sRGB colour space and strip all metadata, including the removal of any ICC profile.
380
- *
381
- * @since 0.33.0
382
- *
383
- * @example
384
- * const outputWithMetadata = await sharp(inputWithMetadata)
385
- * .keepMetadata()
386
- * .toBuffer();
387
- *
388
- * @returns {Sharp}
389
- */
390
- function keepMetadata () {
391
- this.options.keepMetadata = 0b11111;
392
- return this;
393
- }
394
-
395
- /**
396
- * Keep most metadata (EXIF, XMP, IPTC) from the input image in the output image.
397
- *
398
- * This will also convert to and add a web-friendly sRGB ICC profile if appropriate.
399
- *
400
- * Allows orientation and density to be set or updated.
401
- *
402
- * @example
403
- * const outputSrgbWithMetadata = await sharp(inputRgbWithMetadata)
404
- * .withMetadata()
405
- * .toBuffer();
406
- *
407
- * @example
408
- * // Set output metadata to 96 DPI
409
- * const data = await sharp(input)
410
- * .withMetadata({ density: 96 })
411
- * .toBuffer();
412
- *
413
- * @param {Object} [options]
414
- * @param {number} [options.orientation] Used to update the EXIF `Orientation` tag, integer between 1 and 8.
415
- * @param {number} [options.density] Number of pixels per inch (DPI).
416
- * @returns {Sharp}
417
- * @throws {Error} Invalid parameters
418
- */
419
- function withMetadata (options) {
420
- this.keepMetadata();
421
- this.withIccProfile('srgb');
422
- if (is.object(options)) {
423
- if (is.defined(options.orientation)) {
424
- if (is.integer(options.orientation) && is.inRange(options.orientation, 1, 8)) {
425
- this.options.withMetadataOrientation = options.orientation;
426
- } else {
427
- throw is.invalidParameterError('orientation', 'integer between 1 and 8', options.orientation);
428
- }
429
- }
430
- if (is.defined(options.density)) {
431
- if (is.number(options.density) && options.density > 0) {
432
- this.options.withMetadataDensity = options.density;
433
- } else {
434
- throw is.invalidParameterError('density', 'positive number', options.density);
435
- }
436
- }
437
- if (is.defined(options.icc)) {
438
- this.withIccProfile(options.icc);
439
- }
440
- if (is.defined(options.exif)) {
441
- this.withExifMerge(options.exif);
442
- }
443
- }
444
- return this;
445
- }
446
-
447
- /**
448
- * Force output to a given format.
449
- *
450
- * @example
451
- * // Convert any input to PNG output
452
- * const data = await sharp(input)
453
- * .toFormat('png')
454
- * .toBuffer();
455
- *
456
- * @param {(string|Object)} format - as a string or an Object with an 'id' attribute
457
- * @param {Object} options - output options
458
- * @returns {Sharp}
459
- * @throws {Error} unsupported format or options
460
- */
461
- function toFormat (format, options) {
462
- const actualFormat = formats.get((is.object(format) && is.string(format.id) ? format.id : format).toLowerCase());
463
- if (!actualFormat) {
464
- throw is.invalidParameterError('format', `one of: ${[...formats.keys()].join(', ')}`, format);
465
- }
466
- return this[actualFormat](options);
467
- }
468
-
469
- /**
470
- * Use these JPEG options for output image.
471
- *
472
- * @example
473
- * // Convert any input to very high quality JPEG output
474
- * const data = await sharp(input)
475
- * .jpeg({
476
- * quality: 100,
477
- * chromaSubsampling: '4:4:4'
478
- * })
479
- * .toBuffer();
480
- *
481
- * @example
482
- * // Use mozjpeg to reduce output JPEG file size (slower)
483
- * const data = await sharp(input)
484
- * .jpeg({ mozjpeg: true })
485
- * .toBuffer();
486
- *
487
- * @param {Object} [options] - output options
488
- * @param {number} [options.quality=80] - quality, integer 1-100
489
- * @param {boolean} [options.progressive=false] - use progressive (interlace) scan
490
- * @param {string} [options.chromaSubsampling='4:2:0'] - set to '4:4:4' to prevent chroma subsampling otherwise defaults to '4:2:0' chroma subsampling
491
- * @param {boolean} [options.optimiseCoding=true] - optimise Huffman coding tables
492
- * @param {boolean} [options.optimizeCoding=true] - alternative spelling of optimiseCoding
493
- * @param {boolean} [options.mozjpeg=false] - use mozjpeg defaults, equivalent to `{ trellisQuantisation: true, overshootDeringing: true, optimiseScans: true, quantisationTable: 3 }`
494
- * @param {boolean} [options.trellisQuantisation=false] - apply trellis quantisation
495
- * @param {boolean} [options.overshootDeringing=false] - apply overshoot deringing
496
- * @param {boolean} [options.optimiseScans=false] - optimise progressive scans, forces progressive
497
- * @param {boolean} [options.optimizeScans=false] - alternative spelling of optimiseScans
498
- * @param {number} [options.quantisationTable=0] - quantization table to use, integer 0-8
499
- * @param {number} [options.quantizationTable=0] - alternative spelling of quantisationTable
500
- * @param {boolean} [options.force=true] - force JPEG output, otherwise attempt to use input format
501
- * @returns {Sharp}
502
- * @throws {Error} Invalid options
503
- */
504
- function jpeg (options) {
505
- if (is.object(options)) {
506
- if (is.defined(options.quality)) {
507
- if (is.integer(options.quality) && is.inRange(options.quality, 1, 100)) {
508
- this.options.jpegQuality = options.quality;
509
- } else {
510
- throw is.invalidParameterError('quality', 'integer between 1 and 100', options.quality);
511
- }
512
- }
513
- if (is.defined(options.progressive)) {
514
- this._setBooleanOption('jpegProgressive', options.progressive);
515
- }
516
- if (is.defined(options.chromaSubsampling)) {
517
- if (is.string(options.chromaSubsampling) && is.inArray(options.chromaSubsampling, ['4:2:0', '4:4:4'])) {
518
- this.options.jpegChromaSubsampling = options.chromaSubsampling;
519
- } else {
520
- throw is.invalidParameterError('chromaSubsampling', 'one of: 4:2:0, 4:4:4', options.chromaSubsampling);
521
- }
522
- }
523
- const optimiseCoding = is.bool(options.optimizeCoding) ? options.optimizeCoding : options.optimiseCoding;
524
- if (is.defined(optimiseCoding)) {
525
- this._setBooleanOption('jpegOptimiseCoding', optimiseCoding);
526
- }
527
- if (is.defined(options.mozjpeg)) {
528
- if (is.bool(options.mozjpeg)) {
529
- if (options.mozjpeg) {
530
- this.options.jpegTrellisQuantisation = true;
531
- this.options.jpegOvershootDeringing = true;
532
- this.options.jpegOptimiseScans = true;
533
- this.options.jpegProgressive = true;
534
- this.options.jpegQuantisationTable = 3;
535
- }
536
- } else {
537
- throw is.invalidParameterError('mozjpeg', 'boolean', options.mozjpeg);
538
- }
539
- }
540
- const trellisQuantisation = is.bool(options.trellisQuantization) ? options.trellisQuantization : options.trellisQuantisation;
541
- if (is.defined(trellisQuantisation)) {
542
- this._setBooleanOption('jpegTrellisQuantisation', trellisQuantisation);
543
- }
544
- if (is.defined(options.overshootDeringing)) {
545
- this._setBooleanOption('jpegOvershootDeringing', options.overshootDeringing);
546
- }
547
- const optimiseScans = is.bool(options.optimizeScans) ? options.optimizeScans : options.optimiseScans;
548
- if (is.defined(optimiseScans)) {
549
- this._setBooleanOption('jpegOptimiseScans', optimiseScans);
550
- if (optimiseScans) {
551
- this.options.jpegProgressive = true;
552
- }
553
- }
554
- const quantisationTable = is.number(options.quantizationTable) ? options.quantizationTable : options.quantisationTable;
555
- if (is.defined(quantisationTable)) {
556
- if (is.integer(quantisationTable) && is.inRange(quantisationTable, 0, 8)) {
557
- this.options.jpegQuantisationTable = quantisationTable;
558
- } else {
559
- throw is.invalidParameterError('quantisationTable', 'integer between 0 and 8', quantisationTable);
560
- }
561
- }
562
- }
563
- return this._updateFormatOut('jpeg', options);
564
- }
565
-
566
- /**
567
- * Use these PNG options for output image.
568
- *
569
- * By default, PNG output is full colour at 8 bits per pixel.
570
- *
571
- * Indexed PNG input at 1, 2 or 4 bits per pixel is converted to 8 bits per pixel.
572
- * Set `palette` to `true` for slower, indexed PNG output.
573
- *
574
- * For 16 bits per pixel output, convert to `rgb16` via
575
- * {@link /api-colour/#tocolourspace toColourspace}.
576
- *
577
- * @example
578
- * // Convert any input to full colour PNG output
579
- * const data = await sharp(input)
580
- * .png()
581
- * .toBuffer();
582
- *
583
- * @example
584
- * // Convert any input to indexed PNG output (slower)
585
- * const data = await sharp(input)
586
- * .png({ palette: true })
587
- * .toBuffer();
588
- *
589
- * @example
590
- * // Output 16 bits per pixel RGB(A)
591
- * const data = await sharp(input)
592
- * .toColourspace('rgb16')
593
- * .png()
594
- * .toBuffer();
595
- *
596
- * @param {Object} [options]
597
- * @param {boolean} [options.progressive=false] - use progressive (interlace) scan
598
- * @param {number} [options.compressionLevel=6] - zlib compression level, 0 (fastest, largest) to 9 (slowest, smallest)
599
- * @param {boolean} [options.adaptiveFiltering=false] - use adaptive row filtering
600
- * @param {boolean} [options.palette=false] - quantise to a palette-based image with alpha transparency support
601
- * @param {number} [options.quality=100] - use the lowest number of colours needed to achieve given quality, sets `palette` to `true`
602
- * @param {number} [options.effort=7] - CPU effort, between 1 (fastest) and 10 (slowest), sets `palette` to `true`
603
- * @param {number} [options.colours=256] - maximum number of palette entries, sets `palette` to `true`
604
- * @param {number} [options.colors=256] - alternative spelling of `options.colours`, sets `palette` to `true`
605
- * @param {number} [options.dither=1.0] - level of Floyd-Steinberg error diffusion, sets `palette` to `true`
606
- * @param {boolean} [options.force=true] - force PNG output, otherwise attempt to use input format
607
- * @returns {Sharp}
608
- * @throws {Error} Invalid options
609
- */
610
- function png (options) {
611
- if (is.object(options)) {
612
- if (is.defined(options.progressive)) {
613
- this._setBooleanOption('pngProgressive', options.progressive);
614
- }
615
- if (is.defined(options.compressionLevel)) {
616
- if (is.integer(options.compressionLevel) && is.inRange(options.compressionLevel, 0, 9)) {
617
- this.options.pngCompressionLevel = options.compressionLevel;
618
- } else {
619
- throw is.invalidParameterError('compressionLevel', 'integer between 0 and 9', options.compressionLevel);
620
- }
621
- }
622
- if (is.defined(options.adaptiveFiltering)) {
623
- this._setBooleanOption('pngAdaptiveFiltering', options.adaptiveFiltering);
624
- }
625
- const colours = options.colours || options.colors;
626
- if (is.defined(colours)) {
627
- if (is.integer(colours) && is.inRange(colours, 2, 256)) {
628
- this.options.pngBitdepth = bitdepthFromColourCount(colours);
629
- } else {
630
- throw is.invalidParameterError('colours', 'integer between 2 and 256', colours);
631
- }
632
- }
633
- if (is.defined(options.palette)) {
634
- this._setBooleanOption('pngPalette', options.palette);
635
- } else if ([options.quality, options.effort, options.colours, options.colors, options.dither].some(is.defined)) {
636
- this._setBooleanOption('pngPalette', true);
637
- }
638
- if (this.options.pngPalette) {
639
- if (is.defined(options.quality)) {
640
- if (is.integer(options.quality) && is.inRange(options.quality, 0, 100)) {
641
- this.options.pngQuality = options.quality;
642
- } else {
643
- throw is.invalidParameterError('quality', 'integer between 0 and 100', options.quality);
644
- }
645
- }
646
- if (is.defined(options.effort)) {
647
- if (is.integer(options.effort) && is.inRange(options.effort, 1, 10)) {
648
- this.options.pngEffort = options.effort;
649
- } else {
650
- throw is.invalidParameterError('effort', 'integer between 1 and 10', options.effort);
651
- }
652
- }
653
- if (is.defined(options.dither)) {
654
- if (is.number(options.dither) && is.inRange(options.dither, 0, 1)) {
655
- this.options.pngDither = options.dither;
656
- } else {
657
- throw is.invalidParameterError('dither', 'number between 0.0 and 1.0', options.dither);
658
- }
659
- }
660
- }
661
- }
662
- return this._updateFormatOut('png', options);
663
- }
664
-
665
- /**
666
- * Use these WebP options for output image.
667
- *
668
- * @example
669
- * // Convert any input to lossless WebP output
670
- * const data = await sharp(input)
671
- * .webp({ lossless: true })
672
- * .toBuffer();
673
- *
674
- * @example
675
- * // Optimise the file size of an animated WebP
676
- * const outputWebp = await sharp(inputWebp, { animated: true })
677
- * .webp({ effort: 6 })
678
- * .toBuffer();
679
- *
680
- * @param {Object} [options] - output options
681
- * @param {number} [options.quality=80] - quality, integer 1-100
682
- * @param {number} [options.alphaQuality=100] - quality of alpha layer, integer 0-100
683
- * @param {boolean} [options.lossless=false] - use lossless compression mode
684
- * @param {boolean} [options.nearLossless=false] - use near_lossless compression mode
685
- * @param {boolean} [options.smartSubsample=false] - use high quality chroma subsampling
686
- * @param {boolean} [options.smartDeblock=false] - auto-adjust the deblocking filter, can improve low contrast edges (slow)
687
- * @param {string} [options.preset='default'] - named preset for preprocessing/filtering, one of: default, photo, picture, drawing, icon, text
688
- * @param {number} [options.effort=4] - CPU effort, between 0 (fastest) and 6 (slowest)
689
- * @param {number} [options.loop=0] - number of animation iterations, use 0 for infinite animation
690
- * @param {number|number[]} [options.delay] - delay(s) between animation frames (in milliseconds)
691
- * @param {boolean} [options.minSize=false] - prevent use of animation key frames to minimise file size (slow)
692
- * @param {boolean} [options.mixed=false] - allow mixture of lossy and lossless animation frames (slow)
693
- * @param {boolean} [options.force=true] - force WebP output, otherwise attempt to use input format
694
- * @returns {Sharp}
695
- * @throws {Error} Invalid options
696
- */
697
- function webp (options) {
698
- if (is.object(options)) {
699
- if (is.defined(options.quality)) {
700
- if (is.integer(options.quality) && is.inRange(options.quality, 1, 100)) {
701
- this.options.webpQuality = options.quality;
702
- } else {
703
- throw is.invalidParameterError('quality', 'integer between 1 and 100', options.quality);
704
- }
705
- }
706
- if (is.defined(options.alphaQuality)) {
707
- if (is.integer(options.alphaQuality) && is.inRange(options.alphaQuality, 0, 100)) {
708
- this.options.webpAlphaQuality = options.alphaQuality;
709
- } else {
710
- throw is.invalidParameterError('alphaQuality', 'integer between 0 and 100', options.alphaQuality);
711
- }
712
- }
713
- if (is.defined(options.lossless)) {
714
- this._setBooleanOption('webpLossless', options.lossless);
715
- }
716
- if (is.defined(options.nearLossless)) {
717
- this._setBooleanOption('webpNearLossless', options.nearLossless);
718
- }
719
- if (is.defined(options.smartSubsample)) {
720
- this._setBooleanOption('webpSmartSubsample', options.smartSubsample);
721
- }
722
- if (is.defined(options.smartDeblock)) {
723
- this._setBooleanOption('webpSmartDeblock', options.smartDeblock);
724
- }
725
- if (is.defined(options.preset)) {
726
- if (is.string(options.preset) && is.inArray(options.preset, ['default', 'photo', 'picture', 'drawing', 'icon', 'text'])) {
727
- this.options.webpPreset = options.preset;
728
- } else {
729
- throw is.invalidParameterError('preset', 'one of: default, photo, picture, drawing, icon, text', options.preset);
730
- }
731
- }
732
- if (is.defined(options.effort)) {
733
- if (is.integer(options.effort) && is.inRange(options.effort, 0, 6)) {
734
- this.options.webpEffort = options.effort;
735
- } else {
736
- throw is.invalidParameterError('effort', 'integer between 0 and 6', options.effort);
737
- }
738
- }
739
- if (is.defined(options.minSize)) {
740
- this._setBooleanOption('webpMinSize', options.minSize);
741
- }
742
- if (is.defined(options.mixed)) {
743
- this._setBooleanOption('webpMixed', options.mixed);
744
- }
745
- }
746
- trySetAnimationOptions(options, this.options);
747
- return this._updateFormatOut('webp', options);
748
- }
749
-
750
- /**
751
- * Use these GIF options for the output image.
752
- *
753
- * The first entry in the palette is reserved for transparency.
754
- *
755
- * The palette of the input image will be re-used if possible.
756
- *
757
- * @since 0.30.0
758
- *
759
- * @example
760
- * // Convert PNG to GIF
761
- * await sharp(pngBuffer)
762
- * .gif()
763
- * .toBuffer();
764
- *
765
- * @example
766
- * // Convert animated WebP to animated GIF
767
- * await sharp('animated.webp', { animated: true })
768
- * .toFile('animated.gif');
769
- *
770
- * @example
771
- * // Create a 128x128, cropped, non-dithered, animated thumbnail of an animated GIF
772
- * const out = await sharp('in.gif', { animated: true })
773
- * .resize({ width: 128, height: 128 })
774
- * .gif({ dither: 0 })
775
- * .toBuffer();
776
- *
777
- * @example
778
- * // Lossy file size reduction of animated GIF
779
- * await sharp('in.gif', { animated: true })
780
- * .gif({ interFrameMaxError: 8 })
781
- * .toFile('optim.gif');
782
- *
783
- * @param {Object} [options] - output options
784
- * @param {boolean} [options.reuse=true] - re-use existing palette, otherwise generate new (slow)
785
- * @param {boolean} [options.progressive=false] - use progressive (interlace) scan
786
- * @param {number} [options.colours=256] - maximum number of palette entries, including transparency, between 2 and 256
787
- * @param {number} [options.colors=256] - alternative spelling of `options.colours`
788
- * @param {number} [options.effort=7] - CPU effort, between 1 (fastest) and 10 (slowest)
789
- * @param {number} [options.dither=1.0] - level of Floyd-Steinberg error diffusion, between 0 (least) and 1 (most)
790
- * @param {number} [options.interFrameMaxError=0] - maximum inter-frame error for transparency, between 0 (lossless) and 32
791
- * @param {number} [options.interPaletteMaxError=3] - maximum inter-palette error for palette reuse, between 0 and 256
792
- * @param {boolean} [options.keepDuplicateFrames=false] - keep duplicate frames in the output instead of combining them
793
- * @param {number} [options.loop=0] - number of animation iterations, use 0 for infinite animation
794
- * @param {number|number[]} [options.delay] - delay(s) between animation frames (in milliseconds)
795
- * @param {boolean} [options.force=true] - force GIF output, otherwise attempt to use input format
796
- * @returns {Sharp}
797
- * @throws {Error} Invalid options
798
- */
799
- function gif (options) {
800
- if (is.object(options)) {
801
- if (is.defined(options.reuse)) {
802
- this._setBooleanOption('gifReuse', options.reuse);
803
- }
804
- if (is.defined(options.progressive)) {
805
- this._setBooleanOption('gifProgressive', options.progressive);
806
- }
807
- const colours = options.colours || options.colors;
808
- if (is.defined(colours)) {
809
- if (is.integer(colours) && is.inRange(colours, 2, 256)) {
810
- this.options.gifBitdepth = bitdepthFromColourCount(colours);
811
- } else {
812
- throw is.invalidParameterError('colours', 'integer between 2 and 256', colours);
813
- }
814
- }
815
- if (is.defined(options.effort)) {
816
- if (is.number(options.effort) && is.inRange(options.effort, 1, 10)) {
817
- this.options.gifEffort = options.effort;
818
- } else {
819
- throw is.invalidParameterError('effort', 'integer between 1 and 10', options.effort);
820
- }
821
- }
822
- if (is.defined(options.dither)) {
823
- if (is.number(options.dither) && is.inRange(options.dither, 0, 1)) {
824
- this.options.gifDither = options.dither;
825
- } else {
826
- throw is.invalidParameterError('dither', 'number between 0.0 and 1.0', options.dither);
827
- }
828
- }
829
- if (is.defined(options.interFrameMaxError)) {
830
- if (is.number(options.interFrameMaxError) && is.inRange(options.interFrameMaxError, 0, 32)) {
831
- this.options.gifInterFrameMaxError = options.interFrameMaxError;
832
- } else {
833
- throw is.invalidParameterError('interFrameMaxError', 'number between 0.0 and 32.0', options.interFrameMaxError);
834
- }
835
- }
836
- if (is.defined(options.interPaletteMaxError)) {
837
- if (is.number(options.interPaletteMaxError) && is.inRange(options.interPaletteMaxError, 0, 256)) {
838
- this.options.gifInterPaletteMaxError = options.interPaletteMaxError;
839
- } else {
840
- throw is.invalidParameterError('interPaletteMaxError', 'number between 0.0 and 256.0', options.interPaletteMaxError);
841
- }
842
- }
843
- if (is.defined(options.keepDuplicateFrames)) {
844
- if (is.bool(options.keepDuplicateFrames)) {
845
- this._setBooleanOption('gifKeepDuplicateFrames', options.keepDuplicateFrames);
846
- } else {
847
- throw is.invalidParameterError('keepDuplicateFrames', 'boolean', options.keepDuplicateFrames);
848
- }
849
- }
850
- }
851
- trySetAnimationOptions(options, this.options);
852
- return this._updateFormatOut('gif', options);
853
- }
854
-
855
- /**
856
- * Use these JP2 options for output image.
857
- *
858
- * Requires libvips compiled with support for OpenJPEG.
859
- * The prebuilt binaries do not include this - see
860
- * {@link /install#custom-libvips installing a custom libvips}.
861
- *
862
- * @example
863
- * // Convert any input to lossless JP2 output
864
- * const data = await sharp(input)
865
- * .jp2({ lossless: true })
866
- * .toBuffer();
867
- *
868
- * @example
869
- * // Convert any input to very high quality JP2 output
870
- * const data = await sharp(input)
871
- * .jp2({
872
- * quality: 100,
873
- * chromaSubsampling: '4:4:4'
874
- * })
875
- * .toBuffer();
876
- *
877
- * @since 0.29.1
878
- *
879
- * @param {Object} [options] - output options
880
- * @param {number} [options.quality=80] - quality, integer 1-100
881
- * @param {boolean} [options.lossless=false] - use lossless compression mode
882
- * @param {number} [options.tileWidth=512] - horizontal tile size
883
- * @param {number} [options.tileHeight=512] - vertical tile size
884
- * @param {string} [options.chromaSubsampling='4:4:4'] - set to '4:2:0' to use chroma subsampling
885
- * @returns {Sharp}
886
- * @throws {Error} Invalid options
887
- */
888
- function jp2 (options) {
889
- /* node:coverage ignore next 41 */
890
- if (!this.constructor.format.jp2k.output.buffer) {
891
- throw errJp2Save();
892
- }
893
- if (is.object(options)) {
894
- if (is.defined(options.quality)) {
895
- if (is.integer(options.quality) && is.inRange(options.quality, 1, 100)) {
896
- this.options.jp2Quality = options.quality;
897
- } else {
898
- throw is.invalidParameterError('quality', 'integer between 1 and 100', options.quality);
899
- }
900
- }
901
- if (is.defined(options.lossless)) {
902
- if (is.bool(options.lossless)) {
903
- this.options.jp2Lossless = options.lossless;
904
- } else {
905
- throw is.invalidParameterError('lossless', 'boolean', options.lossless);
906
- }
907
- }
908
- if (is.defined(options.tileWidth)) {
909
- if (is.integer(options.tileWidth) && is.inRange(options.tileWidth, 1, 32768)) {
910
- this.options.jp2TileWidth = options.tileWidth;
911
- } else {
912
- throw is.invalidParameterError('tileWidth', 'integer between 1 and 32768', options.tileWidth);
913
- }
914
- }
915
- if (is.defined(options.tileHeight)) {
916
- if (is.integer(options.tileHeight) && is.inRange(options.tileHeight, 1, 32768)) {
917
- this.options.jp2TileHeight = options.tileHeight;
918
- } else {
919
- throw is.invalidParameterError('tileHeight', 'integer between 1 and 32768', options.tileHeight);
920
- }
921
- }
922
- if (is.defined(options.chromaSubsampling)) {
923
- if (is.string(options.chromaSubsampling) && is.inArray(options.chromaSubsampling, ['4:2:0', '4:4:4'])) {
924
- this.options.jp2ChromaSubsampling = options.chromaSubsampling;
925
- } else {
926
- throw is.invalidParameterError('chromaSubsampling', 'one of: 4:2:0, 4:4:4', options.chromaSubsampling);
927
- }
928
- }
929
- }
930
- return this._updateFormatOut('jp2', options);
931
- }
932
-
933
- /**
934
- * Set animation options if available.
935
- * @private
936
- *
937
- * @param {Object} [source] - output options
938
- * @param {number} [source.loop=0] - number of animation iterations, use 0 for infinite animation
939
- * @param {number[]} [source.delay] - list of delays between animation frames (in milliseconds)
940
- * @param {Object} [target] - target object for valid options
941
- * @throws {Error} Invalid options
942
- */
943
- function trySetAnimationOptions (source, target) {
944
- if (is.object(source) && is.defined(source.loop)) {
945
- if (is.integer(source.loop) && is.inRange(source.loop, 0, 65535)) {
946
- target.loop = source.loop;
947
- } else {
948
- throw is.invalidParameterError('loop', 'integer between 0 and 65535', source.loop);
949
- }
950
- }
951
- if (is.object(source) && is.defined(source.delay)) {
952
- // We allow singular values as well
953
- if (is.integer(source.delay) && is.inRange(source.delay, 0, 65535)) {
954
- target.delay = [source.delay];
955
- } else if (
956
- Array.isArray(source.delay) &&
957
- source.delay.every(is.integer) &&
958
- source.delay.every(v => is.inRange(v, 0, 65535))) {
959
- target.delay = source.delay;
960
- } else {
961
- throw is.invalidParameterError('delay', 'integer or an array of integers between 0 and 65535', source.delay);
962
- }
963
- }
964
- }
965
-
966
- /**
967
- * Use these TIFF options for output image.
968
- *
969
- * The `density` can be set in pixels/inch via {@link #withmetadata withMetadata}
970
- * instead of providing `xres` and `yres` in pixels/mm.
971
- *
972
- * @example
973
- * // Convert SVG input to LZW-compressed, 1 bit per pixel TIFF output
974
- * sharp('input.svg')
975
- * .tiff({
976
- * compression: 'lzw',
977
- * bitdepth: 1
978
- * })
979
- * .toFile('1-bpp-output.tiff')
980
- * .then(info => { ... });
981
- *
982
- * @param {Object} [options] - output options
983
- * @param {number} [options.quality=80] - quality, integer 1-100
984
- * @param {boolean} [options.force=true] - force TIFF output, otherwise attempt to use input format
985
- * @param {string} [options.compression='jpeg'] - compression options: none, jpeg, deflate, packbits, ccittfax4, lzw, webp, zstd, jp2k
986
- * @param {boolean} [options.bigtiff=false] - use BigTIFF variant (has no effect when compression is none)
987
- * @param {string} [options.predictor='horizontal'] - compression predictor options: none, horizontal, float
988
- * @param {boolean} [options.pyramid=false] - write an image pyramid
989
- * @param {boolean} [options.tile=false] - write a tiled tiff
990
- * @param {number} [options.tileWidth=256] - horizontal tile size
991
- * @param {number} [options.tileHeight=256] - vertical tile size
992
- * @param {number} [options.xres=1.0] - horizontal resolution in pixels/mm
993
- * @param {number} [options.yres=1.0] - vertical resolution in pixels/mm
994
- * @param {string} [options.resolutionUnit='inch'] - resolution unit options: inch, cm
995
- * @param {number} [options.bitdepth=8] - reduce bitdepth to 1, 2 or 4 bit
996
- * @param {boolean} [options.miniswhite=false] - write 1-bit images as miniswhite
997
- * @returns {Sharp}
998
- * @throws {Error} Invalid options
999
- */
1000
- function tiff (options) {
1001
- if (is.object(options)) {
1002
- if (is.defined(options.quality)) {
1003
- if (is.integer(options.quality) && is.inRange(options.quality, 1, 100)) {
1004
- this.options.tiffQuality = options.quality;
1005
- } else {
1006
- throw is.invalidParameterError('quality', 'integer between 1 and 100', options.quality);
1007
- }
1008
- }
1009
- if (is.defined(options.bitdepth)) {
1010
- if (is.integer(options.bitdepth) && is.inArray(options.bitdepth, [1, 2, 4, 8])) {
1011
- this.options.tiffBitdepth = options.bitdepth;
1012
- } else {
1013
- throw is.invalidParameterError('bitdepth', '1, 2, 4 or 8', options.bitdepth);
1014
- }
1015
- }
1016
- // tiling
1017
- if (is.defined(options.tile)) {
1018
- this._setBooleanOption('tiffTile', options.tile);
1019
- }
1020
- if (is.defined(options.tileWidth)) {
1021
- if (is.integer(options.tileWidth) && options.tileWidth > 0) {
1022
- this.options.tiffTileWidth = options.tileWidth;
1023
- } else {
1024
- throw is.invalidParameterError('tileWidth', 'integer greater than zero', options.tileWidth);
1025
- }
1026
- }
1027
- if (is.defined(options.tileHeight)) {
1028
- if (is.integer(options.tileHeight) && options.tileHeight > 0) {
1029
- this.options.tiffTileHeight = options.tileHeight;
1030
- } else {
1031
- throw is.invalidParameterError('tileHeight', 'integer greater than zero', options.tileHeight);
1032
- }
1033
- }
1034
- // miniswhite
1035
- if (is.defined(options.miniswhite)) {
1036
- this._setBooleanOption('tiffMiniswhite', options.miniswhite);
1037
- }
1038
- // pyramid
1039
- if (is.defined(options.pyramid)) {
1040
- this._setBooleanOption('tiffPyramid', options.pyramid);
1041
- }
1042
- // resolution
1043
- if (is.defined(options.xres)) {
1044
- if (is.number(options.xres) && options.xres > 0) {
1045
- this.options.tiffXres = options.xres;
1046
- } else {
1047
- throw is.invalidParameterError('xres', 'number greater than zero', options.xres);
1048
- }
1049
- }
1050
- if (is.defined(options.yres)) {
1051
- if (is.number(options.yres) && options.yres > 0) {
1052
- this.options.tiffYres = options.yres;
1053
- } else {
1054
- throw is.invalidParameterError('yres', 'number greater than zero', options.yres);
1055
- }
1056
- }
1057
- // compression
1058
- if (is.defined(options.compression)) {
1059
- if (is.string(options.compression) && is.inArray(options.compression, ['none', 'jpeg', 'deflate', 'packbits', 'ccittfax4', 'lzw', 'webp', 'zstd', 'jp2k'])) {
1060
- this.options.tiffCompression = options.compression;
1061
- } else {
1062
- throw is.invalidParameterError('compression', 'one of: none, jpeg, deflate, packbits, ccittfax4, lzw, webp, zstd, jp2k', options.compression);
1063
- }
1064
- }
1065
- // bigtiff
1066
- if (is.defined(options.bigtiff)) {
1067
- this._setBooleanOption('tiffBigtiff', options.bigtiff);
1068
- }
1069
- // predictor
1070
- if (is.defined(options.predictor)) {
1071
- if (is.string(options.predictor) && is.inArray(options.predictor, ['none', 'horizontal', 'float'])) {
1072
- this.options.tiffPredictor = options.predictor;
1073
- } else {
1074
- throw is.invalidParameterError('predictor', 'one of: none, horizontal, float', options.predictor);
1075
- }
1076
- }
1077
- // resolutionUnit
1078
- if (is.defined(options.resolutionUnit)) {
1079
- if (is.string(options.resolutionUnit) && is.inArray(options.resolutionUnit, ['inch', 'cm'])) {
1080
- this.options.tiffResolutionUnit = options.resolutionUnit;
1081
- } else {
1082
- throw is.invalidParameterError('resolutionUnit', 'one of: inch, cm', options.resolutionUnit);
1083
- }
1084
- }
1085
- }
1086
- return this._updateFormatOut('tiff', options);
1087
- }
1088
-
1089
- /**
1090
- * Use these AVIF options for output image.
1091
- *
1092
- * AVIF image sequences are not supported.
1093
- * Prebuilt binaries support a bitdepth of 8 only.
1094
- *
1095
- * This feature is experimental on the Windows ARM64 platform
1096
- * and requires a CPU with ARM64v8.4 or later.
1097
- *
1098
- * @example
1099
- * const data = await sharp(input)
1100
- * .avif({ effort: 2 })
1101
- * .toBuffer();
1102
- *
1103
- * @example
1104
- * const data = await sharp(input)
1105
- * .avif({ lossless: true })
1106
- * .toBuffer();
1107
- *
1108
- * @since 0.27.0
1109
- *
1110
- * @param {Object} [options] - output options
1111
- * @param {number} [options.quality=50] - quality, integer 1-100
1112
- * @param {boolean} [options.lossless=false] - use lossless compression
1113
- * @param {number} [options.effort=4] - CPU effort, between 0 (fastest) and 9 (slowest)
1114
- * @param {string} [options.chromaSubsampling='4:4:4'] - set to '4:2:0' to use chroma subsampling
1115
- * @param {number} [options.bitdepth=8] - set bitdepth to 8, 10 or 12 bit
1116
- * @returns {Sharp}
1117
- * @throws {Error} Invalid options
1118
- */
1119
- function avif (options) {
1120
- return this.heif({ ...options, compression: 'av1' });
1121
- }
1122
-
1123
- /**
1124
- * Use these HEIF options for output image.
1125
- *
1126
- * Support for patent-encumbered HEIC images using `hevc` compression requires the use of a
1127
- * globally-installed libvips compiled with support for libheif, libde265 and x265.
1128
- *
1129
- * @example
1130
- * const data = await sharp(input)
1131
- * .heif({ compression: 'hevc' })
1132
- * .toBuffer();
1133
- *
1134
- * @since 0.23.0
1135
- *
1136
- * @param {Object} options - output options
1137
- * @param {string} options.compression - compression format: av1, hevc
1138
- * @param {number} [options.quality=50] - quality, integer 1-100
1139
- * @param {boolean} [options.lossless=false] - use lossless compression
1140
- * @param {number} [options.effort=4] - CPU effort, between 0 (fastest) and 9 (slowest)
1141
- * @param {string} [options.chromaSubsampling='4:4:4'] - set to '4:2:0' to use chroma subsampling
1142
- * @param {number} [options.bitdepth=8] - set bitdepth to 8, 10 or 12 bit
1143
- * @returns {Sharp}
1144
- * @throws {Error} Invalid options
1145
- */
1146
- function heif (options) {
1147
- if (is.object(options)) {
1148
- if (is.string(options.compression) && is.inArray(options.compression, ['av1', 'hevc'])) {
1149
- this.options.heifCompression = options.compression;
1150
- } else {
1151
- throw is.invalidParameterError('compression', 'one of: av1, hevc', options.compression);
1152
- }
1153
- if (is.defined(options.quality)) {
1154
- if (is.integer(options.quality) && is.inRange(options.quality, 1, 100)) {
1155
- this.options.heifQuality = options.quality;
1156
- } else {
1157
- throw is.invalidParameterError('quality', 'integer between 1 and 100', options.quality);
1158
- }
1159
- }
1160
- if (is.defined(options.lossless)) {
1161
- if (is.bool(options.lossless)) {
1162
- this.options.heifLossless = options.lossless;
1163
- } else {
1164
- throw is.invalidParameterError('lossless', 'boolean', options.lossless);
1165
- }
1166
- }
1167
- if (is.defined(options.effort)) {
1168
- if (is.integer(options.effort) && is.inRange(options.effort, 0, 9)) {
1169
- this.options.heifEffort = options.effort;
1170
- } else {
1171
- throw is.invalidParameterError('effort', 'integer between 0 and 9', options.effort);
1172
- }
1173
- }
1174
- if (is.defined(options.chromaSubsampling)) {
1175
- if (is.string(options.chromaSubsampling) && is.inArray(options.chromaSubsampling, ['4:2:0', '4:4:4'])) {
1176
- this.options.heifChromaSubsampling = options.chromaSubsampling;
1177
- } else {
1178
- throw is.invalidParameterError('chromaSubsampling', 'one of: 4:2:0, 4:4:4', options.chromaSubsampling);
1179
- }
1180
- }
1181
- if (is.defined(options.bitdepth)) {
1182
- if (is.integer(options.bitdepth) && is.inArray(options.bitdepth, [8, 10, 12])) {
1183
- if (options.bitdepth !== 8 && this.constructor.versions.heif) {
1184
- throw is.invalidParameterError('bitdepth when using prebuilt binaries', 8, options.bitdepth);
1185
- }
1186
- this.options.heifBitdepth = options.bitdepth;
1187
- } else {
1188
- throw is.invalidParameterError('bitdepth', '8, 10 or 12', options.bitdepth);
1189
- }
1190
- }
1191
- } else {
1192
- throw is.invalidParameterError('options', 'Object', options);
1193
- }
1194
- return this._updateFormatOut('heif', options);
1195
- }
1196
-
1197
- /**
1198
- * Use these JPEG-XL (JXL) options for output image.
1199
- *
1200
- * This feature is experimental, please do not use in production systems.
1201
- *
1202
- * Requires libvips compiled with support for libjxl.
1203
- * The prebuilt binaries do not include this - see
1204
- * {@link /install/#custom-libvips installing a custom libvips}.
1205
- *
1206
- * @since 0.31.3
1207
- *
1208
- * @param {Object} [options] - output options
1209
- * @param {number} [options.distance=1.0] - maximum encoding error, between 0 (highest quality) and 15 (lowest quality)
1210
- * @param {number} [options.quality] - calculate `distance` based on JPEG-like quality, between 1 and 100, overrides distance if specified
1211
- * @param {number} [options.decodingTier=0] - target decode speed tier, between 0 (highest quality) and 4 (lowest quality)
1212
- * @param {boolean} [options.lossless=false] - use lossless compression
1213
- * @param {number} [options.effort=7] - CPU effort, between 1 (fastest) and 9 (slowest)
1214
- * @param {number} [options.loop=0] - number of animation iterations, use 0 for infinite animation
1215
- * @param {number|number[]} [options.delay] - delay(s) between animation frames (in milliseconds)
1216
- * @returns {Sharp}
1217
- * @throws {Error} Invalid options
1218
- */
1219
- function jxl (options) {
1220
- if (is.object(options)) {
1221
- if (is.defined(options.quality)) {
1222
- if (is.integer(options.quality) && is.inRange(options.quality, 1, 100)) {
1223
- // https://github.com/libjxl/libjxl/blob/0aeea7f180bafd6893c1db8072dcb67d2aa5b03d/tools/cjxl_main.cc#L640-L644
1224
- this.options.jxlDistance = options.quality >= 30
1225
- ? 0.1 + (100 - options.quality) * 0.09
1226
- : 53 / 3000 * options.quality * options.quality - 23 / 20 * options.quality + 25;
1227
- } else {
1228
- throw is.invalidParameterError('quality', 'integer between 1 and 100', options.quality);
1229
- }
1230
- } else if (is.defined(options.distance)) {
1231
- if (is.number(options.distance) && is.inRange(options.distance, 0, 15)) {
1232
- this.options.jxlDistance = options.distance;
1233
- } else {
1234
- throw is.invalidParameterError('distance', 'number between 0.0 and 15.0', options.distance);
1235
- }
1236
- }
1237
- if (is.defined(options.decodingTier)) {
1238
- if (is.integer(options.decodingTier) && is.inRange(options.decodingTier, 0, 4)) {
1239
- this.options.jxlDecodingTier = options.decodingTier;
1240
- } else {
1241
- throw is.invalidParameterError('decodingTier', 'integer between 0 and 4', options.decodingTier);
1242
- }
1243
- }
1244
- if (is.defined(options.lossless)) {
1245
- if (is.bool(options.lossless)) {
1246
- this.options.jxlLossless = options.lossless;
1247
- } else {
1248
- throw is.invalidParameterError('lossless', 'boolean', options.lossless);
1249
- }
1250
- }
1251
- if (is.defined(options.effort)) {
1252
- if (is.integer(options.effort) && is.inRange(options.effort, 1, 9)) {
1253
- this.options.jxlEffort = options.effort;
1254
- } else {
1255
- throw is.invalidParameterError('effort', 'integer between 1 and 9', options.effort);
1256
- }
1257
- }
1258
- }
1259
- trySetAnimationOptions(options, this.options);
1260
- return this._updateFormatOut('jxl', options);
1261
- }
1262
-
1263
- /**
1264
- * Force output to be raw, uncompressed pixel data.
1265
- * Pixel ordering is left-to-right, top-to-bottom, without padding.
1266
- * Channel ordering will be RGB or RGBA for non-greyscale colourspaces.
1267
- *
1268
- * @example
1269
- * // Extract raw, unsigned 8-bit RGB pixel data from JPEG input
1270
- * const { data, info } = await sharp('input.jpg')
1271
- * .raw()
1272
- * .toBuffer({ resolveWithObject: true });
1273
- *
1274
- * @example
1275
- * // Extract alpha channel as raw, unsigned 16-bit pixel data from PNG input
1276
- * const data = await sharp('input.png')
1277
- * .ensureAlpha()
1278
- * .extractChannel(3)
1279
- * .toColourspace('b-w')
1280
- * .raw({ depth: 'ushort' })
1281
- * .toBuffer();
1282
- *
1283
- * @param {Object} [options] - output options
1284
- * @param {string} [options.depth='uchar'] - bit depth, one of: char, uchar (default), short, ushort, int, uint, float, complex, double, dpcomplex
1285
- * @returns {Sharp}
1286
- * @throws {Error} Invalid options
1287
- */
1288
- function raw (options) {
1289
- if (is.object(options)) {
1290
- if (is.defined(options.depth)) {
1291
- if (is.string(options.depth) && is.inArray(options.depth,
1292
- ['char', 'uchar', 'short', 'ushort', 'int', 'uint', 'float', 'complex', 'double', 'dpcomplex']
1293
- )) {
1294
- this.options.rawDepth = options.depth;
1295
- } else {
1296
- throw is.invalidParameterError('depth', 'one of: char, uchar, short, ushort, int, uint, float, complex, double, dpcomplex', options.depth);
1297
- }
1298
- }
1299
- }
1300
- return this._updateFormatOut('raw');
1301
- }
1302
-
1303
- /**
1304
- * Use tile-based deep zoom (image pyramid) output.
1305
- *
1306
- * Set the format and options for tile images via the `toFormat`, `jpeg`, `png` or `webp` functions.
1307
- * Use a `.zip` or `.szi` file extension with `toFile` to write to a compressed archive file format.
1308
- *
1309
- * The container will be set to `zip` when the output is a Buffer or Stream, otherwise it will default to `fs`.
1310
- *
1311
- * @example
1312
- * sharp('input.tiff')
1313
- * .png()
1314
- * .tile({
1315
- * size: 512
1316
- * })
1317
- * .toFile('output.dz', function(err, info) {
1318
- * // output.dzi is the Deep Zoom XML definition
1319
- * // output_files contains 512x512 tiles grouped by zoom level
1320
- * });
1321
- *
1322
- * @example
1323
- * const zipFileWithTiles = await sharp(input)
1324
- * .tile({ basename: "tiles" })
1325
- * .toBuffer();
1326
- *
1327
- * @example
1328
- * const iiififier = sharp().tile({ layout: "iiif" });
1329
- * readableStream
1330
- * .pipe(iiififier)
1331
- * .pipe(writeableStream);
1332
- *
1333
- * @param {Object} [options]
1334
- * @param {number} [options.size=256] tile size in pixels, a value between 1 and 8192.
1335
- * @param {number} [options.overlap=0] tile overlap in pixels, a value between 0 and 8192.
1336
- * @param {number} [options.angle=0] tile angle of rotation, must be a multiple of 90.
1337
- * @param {string|Object} [options.background={r: 255, g: 255, b: 255, alpha: 1}] - background colour, parsed by the [color](https://www.npmjs.org/package/color) module, defaults to white without transparency.
1338
- * @param {string} [options.depth] how deep to make the pyramid, possible values are `onepixel`, `onetile` or `one`, default based on layout.
1339
- * @param {number} [options.skipBlanks=-1] Threshold to skip tile generation. Range is 0-255 for 8-bit images, 0-65535 for 16-bit images. Default is 5 for `google` layout, -1 (no skip) otherwise.
1340
- * @param {string} [options.container='fs'] tile container, with value `fs` (filesystem) or `zip` (compressed file).
1341
- * @param {string} [options.layout='dz'] filesystem layout, possible values are `dz`, `iiif`, `iiif3`, `zoomify` or `google`.
1342
- * @param {boolean} [options.centre=false] centre image in tile.
1343
- * @param {boolean} [options.center=false] alternative spelling of centre.
1344
- * @param {string} [options.id='https://example.com/iiif'] when `layout` is `iiif`/`iiif3`, sets the `@id`/`id` attribute of `info.json`
1345
- * @param {string} [options.basename] the name of the directory within the zip file when container is `zip`.
1346
- * @returns {Sharp}
1347
- * @throws {Error} Invalid parameters
1348
- */
1349
- function tile (options) {
1350
- if (is.object(options)) {
1351
- // Size of square tiles, in pixels
1352
- if (is.defined(options.size)) {
1353
- if (is.integer(options.size) && is.inRange(options.size, 1, 8192)) {
1354
- this.options.tileSize = options.size;
1355
- } else {
1356
- throw is.invalidParameterError('size', 'integer between 1 and 8192', options.size);
1357
- }
1358
- }
1359
- // Overlap of tiles, in pixels
1360
- if (is.defined(options.overlap)) {
1361
- if (is.integer(options.overlap) && is.inRange(options.overlap, 0, 8192)) {
1362
- if (options.overlap > this.options.tileSize) {
1363
- throw is.invalidParameterError('overlap', `<= size (${this.options.tileSize})`, options.overlap);
1364
- }
1365
- this.options.tileOverlap = options.overlap;
1366
- } else {
1367
- throw is.invalidParameterError('overlap', 'integer between 0 and 8192', options.overlap);
1368
- }
1369
- }
1370
- // Container
1371
- if (is.defined(options.container)) {
1372
- if (is.string(options.container) && is.inArray(options.container, ['fs', 'zip'])) {
1373
- this.options.tileContainer = options.container;
1374
- } else {
1375
- throw is.invalidParameterError('container', 'one of: fs, zip', options.container);
1376
- }
1377
- }
1378
- // Layout
1379
- if (is.defined(options.layout)) {
1380
- if (is.string(options.layout) && is.inArray(options.layout, ['dz', 'google', 'iiif', 'iiif3', 'zoomify'])) {
1381
- this.options.tileLayout = options.layout;
1382
- } else {
1383
- throw is.invalidParameterError('layout', 'one of: dz, google, iiif, iiif3, zoomify', options.layout);
1384
- }
1385
- }
1386
- // Angle of rotation,
1387
- if (is.defined(options.angle)) {
1388
- if (is.integer(options.angle) && !(options.angle % 90)) {
1389
- this.options.tileAngle = options.angle;
1390
- } else {
1391
- throw is.invalidParameterError('angle', 'positive/negative multiple of 90', options.angle);
1392
- }
1393
- }
1394
- // Background colour
1395
- this._setBackgroundColourOption('tileBackground', options.background);
1396
- // Depth of tiles
1397
- if (is.defined(options.depth)) {
1398
- if (is.string(options.depth) && is.inArray(options.depth, ['onepixel', 'onetile', 'one'])) {
1399
- this.options.tileDepth = options.depth;
1400
- } else {
1401
- throw is.invalidParameterError('depth', 'one of: onepixel, onetile, one', options.depth);
1402
- }
1403
- }
1404
- // Threshold to skip blank tiles
1405
- if (is.defined(options.skipBlanks)) {
1406
- if (is.integer(options.skipBlanks) && is.inRange(options.skipBlanks, -1, 65535)) {
1407
- this.options.tileSkipBlanks = options.skipBlanks;
1408
- } else {
1409
- throw is.invalidParameterError('skipBlanks', 'integer between -1 and 255/65535', options.skipBlanks);
1410
- }
1411
- } else if (is.defined(options.layout) && options.layout === 'google') {
1412
- this.options.tileSkipBlanks = 5;
1413
- }
1414
- // Center image in tile
1415
- const centre = is.bool(options.center) ? options.center : options.centre;
1416
- if (is.defined(centre)) {
1417
- this._setBooleanOption('tileCentre', centre);
1418
- }
1419
- // @id attribute for IIIF layout
1420
- if (is.defined(options.id)) {
1421
- if (is.string(options.id)) {
1422
- this.options.tileId = options.id;
1423
- } else {
1424
- throw is.invalidParameterError('id', 'string', options.id);
1425
- }
1426
- }
1427
- // Basename for zip container
1428
- if (is.defined(options.basename)) {
1429
- if (is.string(options.basename)) {
1430
- this.options.tileBasename = options.basename;
1431
- } else {
1432
- throw is.invalidParameterError('basename', 'string', options.basename);
1433
- }
1434
- }
1435
- }
1436
- // Format
1437
- if (is.inArray(this.options.formatOut, ['jpeg', 'png', 'webp'])) {
1438
- this.options.tileFormat = this.options.formatOut;
1439
- } else if (this.options.formatOut !== 'input') {
1440
- throw is.invalidParameterError('format', 'one of: jpeg, png, webp', this.options.formatOut);
1441
- }
1442
- return this._updateFormatOut('dz');
1443
- }
1444
-
1445
- /**
1446
- * Set a timeout for processing, in seconds.
1447
- * Use a value of zero to continue processing indefinitely, the default behaviour.
1448
- *
1449
- * The clock starts when libvips opens an input image for processing.
1450
- * Time spent waiting for a libuv thread to become available is not included.
1451
- *
1452
- * @example
1453
- * // Ensure processing takes no longer than 3 seconds
1454
- * try {
1455
- * const data = await sharp(input)
1456
- * .blur(1000)
1457
- * .timeout({ seconds: 3 })
1458
- * .toBuffer();
1459
- * } catch (err) {
1460
- * if (err.message.includes('timeout')) { ... }
1461
- * }
1462
- *
1463
- * @since 0.29.2
1464
- *
1465
- * @param {Object} options
1466
- * @param {number} options.seconds - Number of seconds after which processing will be stopped
1467
- * @returns {Sharp}
1468
- */
1469
- function timeout (options) {
1470
- if (!is.plainObject(options)) {
1471
- throw is.invalidParameterError('options', 'object', options);
1472
- }
1473
- if (is.integer(options.seconds) && is.inRange(options.seconds, 0, 3600)) {
1474
- this.options.timeoutSeconds = options.seconds;
1475
- } else {
1476
- throw is.invalidParameterError('seconds', 'integer between 0 and 3600', options.seconds);
1477
- }
1478
- return this;
1479
- }
1480
-
1481
- /**
1482
- * Update the output format unless options.force is false,
1483
- * in which case revert to input format.
1484
- * @private
1485
- * @param {string} formatOut
1486
- * @param {Object} [options]
1487
- * @param {boolean} [options.force=true] - force output format, otherwise attempt to use input format
1488
- * @returns {Sharp}
1489
- */
1490
- function _updateFormatOut (formatOut, options) {
1491
- if (!(is.object(options) && options.force === false)) {
1492
- this.options.formatOut = formatOut;
1493
- }
1494
- return this;
1495
- }
1496
-
1497
- /**
1498
- * Update a boolean attribute of the this.options Object.
1499
- * @private
1500
- * @param {string} key
1501
- * @param {boolean} val
1502
- * @throws {Error} Invalid key
1503
- */
1504
- function _setBooleanOption (key, val) {
1505
- if (is.bool(val)) {
1506
- this.options[key] = val;
1507
- } else {
1508
- throw is.invalidParameterError(key, 'boolean', val);
1509
- }
1510
- }
1511
-
1512
- /**
1513
- * Called by a WriteableStream to notify us it is ready for data.
1514
- * @private
1515
- */
1516
- function _read () {
1517
- if (!this.options.streamOut) {
1518
- this.options.streamOut = true;
1519
- const stack = Error();
1520
- this._pipeline(undefined, stack);
1521
- }
1522
- }
1523
-
1524
- /**
1525
- * Invoke the C++ image processing pipeline
1526
- * Supports callback, stream and promise variants
1527
- * @private
1528
- */
1529
- function _pipeline (callback, stack) {
1530
- if (typeof callback === 'function') {
1531
- // output=file/buffer
1532
- if (this._isStreamInput()) {
1533
- // output=file/buffer, input=stream
1534
- this.on('finish', () => {
1535
- this._flattenBufferIn();
1536
- sharp.pipeline(this.options, (err, data, info) => {
1537
- if (err) {
1538
- callback(is.nativeError(err, stack));
1539
- } else {
1540
- callback(null, data, info);
1541
- }
1542
- });
1543
- });
1544
- } else {
1545
- // output=file/buffer, input=file/buffer
1546
- sharp.pipeline(this.options, (err, data, info) => {
1547
- if (err) {
1548
- callback(is.nativeError(err, stack));
1549
- } else {
1550
- callback(null, data, info);
1551
- }
1552
- });
1553
- }
1554
- return this;
1555
- } else if (this.options.streamOut) {
1556
- // output=stream
1557
- if (this._isStreamInput()) {
1558
- // output=stream, input=stream
1559
- this.once('finish', () => {
1560
- this._flattenBufferIn();
1561
- sharp.pipeline(this.options, (err, data, info) => {
1562
- if (err) {
1563
- this.emit('error', is.nativeError(err, stack));
1564
- } else {
1565
- this.emit('info', info);
1566
- this.push(data);
1567
- }
1568
- this.push(null);
1569
- this.on('end', () => this.emit('close'));
1570
- });
1571
- });
1572
- if (this.streamInFinished) {
1573
- this.emit('finish');
1574
- }
1575
- } else {
1576
- // output=stream, input=file/buffer
1577
- sharp.pipeline(this.options, (err, data, info) => {
1578
- if (err) {
1579
- this.emit('error', is.nativeError(err, stack));
1580
- } else {
1581
- this.emit('info', info);
1582
- this.push(data);
1583
- }
1584
- this.push(null);
1585
- this.on('end', () => this.emit('close'));
1586
- });
1587
- }
1588
- return this;
1589
- } else {
1590
- // output=promise
1591
- if (this._isStreamInput()) {
1592
- // output=promise, input=stream
1593
- return new Promise((resolve, reject) => {
1594
- this.once('finish', () => {
1595
- this._flattenBufferIn();
1596
- sharp.pipeline(this.options, (err, data, info) => {
1597
- if (err) {
1598
- reject(is.nativeError(err, stack));
1599
- } else {
1600
- if (this.options.resolveWithObject) {
1601
- resolve({ data, info });
1602
- } else {
1603
- resolve(data);
1604
- }
1605
- }
1606
- });
1607
- });
1608
- });
1609
- } else {
1610
- // output=promise, input=file/buffer
1611
- return new Promise((resolve, reject) => {
1612
- sharp.pipeline(this.options, (err, data, info) => {
1613
- if (err) {
1614
- reject(is.nativeError(err, stack));
1615
- } else {
1616
- if (this.options.resolveWithObject) {
1617
- resolve({ data, info });
1618
- } else {
1619
- resolve(data);
1620
- }
1621
- }
1622
- });
1623
- });
1624
- }
1625
- }
1626
- }
1627
-
1628
- /**
1629
- * Decorate the Sharp prototype with output-related functions.
1630
- * @module Sharp
1631
- * @private
1632
- */
1633
- module.exports = (Sharp) => {
1634
- Object.assign(Sharp.prototype, {
1635
- // Public
1636
- toFile,
1637
- toBuffer,
1638
- keepExif,
1639
- withExif,
1640
- withExifMerge,
1641
- keepIccProfile,
1642
- withIccProfile,
1643
- keepXmp,
1644
- withXmp,
1645
- keepMetadata,
1646
- withMetadata,
1647
- toFormat,
1648
- jpeg,
1649
- jp2,
1650
- png,
1651
- webp,
1652
- tiff,
1653
- avif,
1654
- heif,
1655
- jxl,
1656
- gif,
1657
- raw,
1658
- tile,
1659
- timeout,
1660
- // Private
1661
- _updateFormatOut,
1662
- _setBooleanOption,
1663
- _read,
1664
- _pipeline
1665
- });
1666
- };