9router-proxy 0.6.17 → 0.6.19

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 (542) hide show
  1. package/app/.next-cli-build/BUILD_ID +1 -1
  2. package/app/.next-cli-build/app-path-routes-manifest.json +10 -10
  3. package/app/.next-cli-build/build-manifest.json +3 -3
  4. package/app/.next-cli-build/prerender-manifest.json +4 -4
  5. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js +1 -1
  6. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
  7. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  8. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +1 -1
  9. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  10. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  11. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js +1 -1
  12. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  13. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  14. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js +1 -1
  15. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  16. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  17. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js +1 -1
  18. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
  19. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  20. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js +1 -1
  21. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  22. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  23. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +1 -1
  24. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
  25. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  26. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +1 -1
  27. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
  28. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  29. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +1 -1
  30. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
  31. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  32. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js +1 -1
  33. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
  34. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  35. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js +1 -1
  36. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
  37. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  38. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js +1 -1
  39. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  40. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  41. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js +1 -1
  42. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  43. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  44. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +2 -2
  45. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  46. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  47. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js +1 -1
  48. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  49. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  50. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js +1 -1
  51. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  52. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  53. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js +1 -1
  54. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
  55. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  56. package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js +1 -1
  57. package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js.nft.json +1 -1
  58. package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
  59. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js +1 -1
  60. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  61. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  62. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js +1 -1
  63. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js.nft.json +1 -1
  64. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  65. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js +1 -1
  66. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js.nft.json +1 -1
  67. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  68. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js +1 -1
  69. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  70. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  71. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js +1 -1
  72. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  73. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  74. package/app/.next-cli-build/server/app/_global-error/page.js.nft.json +1 -1
  75. package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  76. package/app/.next-cli-build/server/app/_global-error.html +1 -1
  77. package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  78. package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  79. package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  80. package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  81. package/app/.next-cli-build/server/app/_not-found/page.js +1 -1
  82. package/app/.next-cli-build/server/app/_not-found/page.js.nft.json +1 -1
  83. package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  84. package/app/.next-cli-build/server/app/_not-found.html +1 -1
  85. package/app/.next-cli-build/server/app/_not-found.rsc +3 -3
  86. package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +3 -3
  87. package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +3 -3
  88. package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  89. package/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
  90. package/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
  91. package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
  92. package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
  93. package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
  94. package/app/.next-cli-build/server/app/api/auth/reset-password/route.js.nft.json +1 -1
  95. package/app/.next-cli-build/server/app/api/auth/saml/acs/route.js.nft.json +1 -1
  96. package/app/.next-cli-build/server/app/api/auth/saml/metadata/route.js.nft.json +1 -1
  97. package/app/.next-cli-build/server/app/api/auth/saml/start/route.js.nft.json +1 -1
  98. package/app/.next-cli-build/server/app/api/auth/saml/test/route.js.nft.json +1 -1
  99. package/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
  100. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +5 -5
  101. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  102. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
  103. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  104. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  105. package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js +2 -2
  106. package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
  107. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +1 -1
  108. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
  109. package/app/.next-cli-build/server/app/api/cli-tools/codewhale-settings/route.js +2 -2
  110. package/app/.next-cli-build/server/app/api/cli-tools/codewhale-settings/route.js.nft.json +1 -1
  111. package/app/.next-cli-build/server/app/api/cli-tools/codex-profiles/route.js.nft.json +1 -1
  112. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  113. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js +2 -2
  114. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
  115. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +1 -1
  116. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
  117. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +2 -2
  118. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
  119. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +1 -1
  120. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  121. package/app/.next-cli-build/server/app/api/cli-tools/crush-settings/route.js +2 -2
  122. package/app/.next-cli-build/server/app/api/cli-tools/crush-settings/route.js.nft.json +1 -1
  123. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +2 -2
  124. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
  125. package/app/.next-cli-build/server/app/api/cli-tools/devin-settings/route.js +2 -2
  126. package/app/.next-cli-build/server/app/api/cli-tools/devin-settings/route.js.nft.json +1 -1
  127. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +1 -1
  128. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
  129. package/app/.next-cli-build/server/app/api/cli-tools/forge-settings/route.js +2 -2
  130. package/app/.next-cli-build/server/app/api/cli-tools/forge-settings/route.js.nft.json +1 -1
  131. package/app/.next-cli-build/server/app/api/cli-tools/grok-build-settings/route.js +2 -2
  132. package/app/.next-cli-build/server/app/api/cli-tools/grok-build-settings/route.js.nft.json +1 -1
  133. package/app/.next-cli-build/server/app/api/cli-tools/hermes-profiles/route.js.nft.json +1 -1
  134. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +2 -2
  135. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
  136. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +2 -2
  137. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
  138. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +2 -2
  139. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
  140. package/app/.next-cli-build/server/app/api/cli-tools/omp-settings/route.js +2 -2
  141. package/app/.next-cli-build/server/app/api/cli-tools/omp-settings/route.js.nft.json +1 -1
  142. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
  143. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
  144. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +2 -2
  145. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
  146. package/app/.next-cli-build/server/app/api/cli-tools/pi-settings/route.js +2 -2
  147. package/app/.next-cli-build/server/app/api/cli-tools/pi-settings/route.js.nft.json +1 -1
  148. package/app/.next-cli-build/server/app/api/cli-tools/smelt-settings/route.js +1 -1
  149. package/app/.next-cli-build/server/app/api/cli-tools/smelt-settings/route.js.nft.json +1 -1
  150. package/app/.next-cli-build/server/app/api/combos/[id]/route.js +1 -1
  151. package/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
  152. package/app/.next-cli-build/server/app/api/combos/presets/route.js +1 -1
  153. package/app/.next-cli-build/server/app/api/combos/presets/route.js.nft.json +1 -1
  154. package/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
  155. package/app/.next-cli-build/server/app/api/headroom/extras/route.js.nft.json +1 -1
  156. package/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js.nft.json +1 -1
  157. package/app/.next-cli-build/server/app/api/headroom/restart/route.js.nft.json +1 -1
  158. package/app/.next-cli-build/server/app/api/headroom/start/route.js.nft.json +1 -1
  159. package/app/.next-cli-build/server/app/api/headroom/status/route.js.nft.json +1 -1
  160. package/app/.next-cli-build/server/app/api/headroom/stop/route.js.nft.json +1 -1
  161. package/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -1
  162. package/app/.next-cli-build/server/app/api/init/route.js.nft.json +1 -1
  163. package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
  164. package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
  165. package/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
  166. package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
  167. package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
  168. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  169. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
  170. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  171. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  172. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  173. package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js +1 -1
  174. package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
  175. package/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
  176. package/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
  177. package/app/.next-cli-build/server/app/api/models/catalog-sync/route.js +1 -1
  178. package/app/.next-cli-build/server/app/api/models/catalog-sync/route.js.nft.json +1 -1
  179. package/app/.next-cli-build/server/app/api/models/custom/route.js +1 -1
  180. package/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
  181. package/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
  182. package/app/.next-cli-build/server/app/api/models/route.js +1 -1
  183. package/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
  184. package/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
  185. package/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
  186. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  187. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  188. package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js +1 -1
  189. package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js.nft.json +1 -1
  190. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -1
  191. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  192. package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  193. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js +1 -1
  194. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  195. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  196. package/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/route.js.nft.json +1 -1
  197. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  198. package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js +1 -1
  199. package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js.nft.json +1 -1
  200. package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
  201. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js +1 -1
  202. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  203. package/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js.nft.json +1 -1
  204. package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
  205. package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
  206. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  207. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  208. package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/api-key/route.js.nft.json +1 -1
  209. package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/auto-import/route.js.nft.json +1 -1
  210. package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/login/start/route.js.nft.json +1 -1
  211. package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/login/status/route.js.nft.json +1 -1
  212. package/app/.next-cli-build/server/app/api/oauth/zed/auto-import/route.js.nft.json +1 -1
  213. package/app/.next-cli-build/server/app/api/oauth/zed/import/route.js.nft.json +1 -1
  214. package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
  215. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js +1 -1
  216. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  217. package/app/.next-cli-build/server/app/api/provider-nodes/route.js +1 -1
  218. package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
  219. package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
  220. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +1 -1
  221. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  222. package/app/.next-cli-build/server/app/api/providers/[id]/overrides/route.js +1 -1
  223. package/app/.next-cli-build/server/app/api/providers/[id]/overrides/route.js.nft.json +1 -1
  224. package/app/.next-cli-build/server/app/api/providers/[id]/route.js +1 -1
  225. package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
  226. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -1
  227. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  228. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
  229. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  230. package/app/.next-cli-build/server/app/api/providers/client/route.js +1 -1
  231. package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
  232. package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
  233. package/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  234. package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
  235. package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js +1 -1
  236. package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
  237. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js +1 -1
  238. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  239. package/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
  240. package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
  241. package/app/.next-cli-build/server/app/api/providers/web-login/route.js +1 -1
  242. package/app/.next-cli-build/server/app/api/providers/web-login/route.js.nft.json +1 -1
  243. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
  244. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
  245. package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
  246. package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
  247. package/app/.next-cli-build/server/app/api/proxy-pools/netlify-deploy/route.js.nft.json +1 -1
  248. package/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
  249. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
  250. package/app/.next-cli-build/server/app/api/pxpipe/health/route.js.nft.json +1 -1
  251. package/app/.next-cli-build/server/app/api/pxpipe/install/route.js.nft.json +1 -1
  252. package/app/.next-cli-build/server/app/api/pxpipe/logs/route.js.nft.json +1 -1
  253. package/app/.next-cli-build/server/app/api/pxpipe/restart/route.js.nft.json +1 -1
  254. package/app/.next-cli-build/server/app/api/pxpipe/start/route.js.nft.json +1 -1
  255. package/app/.next-cli-build/server/app/api/pxpipe/stats/route.js.nft.json +1 -1
  256. package/app/.next-cli-build/server/app/api/pxpipe/status/route.js.nft.json +1 -1
  257. package/app/.next-cli-build/server/app/api/pxpipe/stop/route.js.nft.json +1 -1
  258. package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
  259. package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
  260. package/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
  261. package/app/.next-cli-build/server/app/api/settings/route.js +1 -1
  262. package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
  263. package/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -1
  264. package/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
  265. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  266. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js.nft.json +1 -1
  267. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +2 -2
  268. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
  269. package/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -1
  270. package/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
  271. package/app/.next-cli-build/server/app/api/translator/send/route.js +1 -1
  272. package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
  273. package/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -1
  274. package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
  275. package/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  276. package/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  277. package/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
  278. package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  279. package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  280. package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  281. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js +3 -3
  282. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  283. package/app/.next-cli-build/server/app/api/usage/[connectionId]/claude-reset/route.js +1 -1
  284. package/app/.next-cli-build/server/app/api/usage/[connectionId]/claude-reset/route.js.nft.json +1 -1
  285. package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js +1 -1
  286. package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js.nft.json +1 -1
  287. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -1
  288. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  289. package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
  290. package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
  291. package/app/.next-cli-build/server/app/api/usage/logs/route.js.nft.json +1 -1
  292. package/app/.next-cli-build/server/app/api/usage/providers/route.js +1 -1
  293. package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
  294. package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
  295. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  296. package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
  297. package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
  298. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
  299. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  300. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
  301. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  302. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
  303. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  304. package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js +1 -1
  305. package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
  306. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
  307. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  308. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
  309. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  310. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js +2 -2
  311. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  312. package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
  313. package/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
  314. package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
  315. package/app/.next-cli-build/server/app/api/v1/models/[...model]/route.js +1 -1
  316. package/app/.next-cli-build/server/app/api/v1/models/[...model]/route.js.nft.json +1 -1
  317. package/app/.next-cli-build/server/app/api/v1/models/info/route.js +1 -1
  318. package/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -1
  319. package/app/.next-cli-build/server/app/api/v1/models/route.js +1 -1
  320. package/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
  321. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
  322. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  323. package/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
  324. package/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
  325. package/app/.next-cli-build/server/app/api/v1/route.js +1 -1
  326. package/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
  327. package/app/.next-cli-build/server/app/api/v1/search/route.js +1 -1
  328. package/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
  329. package/app/.next-cli-build/server/app/api/v1/systemone/route.js +1 -1
  330. package/app/.next-cli-build/server/app/api/v1/systemone/route.js.nft.json +1 -1
  331. package/app/.next-cli-build/server/app/api/v1/videos/[id]/route.js +1 -1
  332. package/app/.next-cli-build/server/app/api/v1/videos/[id]/route.js.nft.json +1 -1
  333. package/app/.next-cli-build/server/app/api/v1/videos/edits/route.js +1 -1
  334. package/app/.next-cli-build/server/app/api/v1/videos/edits/route.js.nft.json +1 -1
  335. package/app/.next-cli-build/server/app/api/v1/videos/extensions/route.js +1 -1
  336. package/app/.next-cli-build/server/app/api/v1/videos/extensions/route.js.nft.json +1 -1
  337. package/app/.next-cli-build/server/app/api/v1/videos/generations/route.js +1 -1
  338. package/app/.next-cli-build/server/app/api/v1/videos/generations/route.js.nft.json +1 -1
  339. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
  340. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  341. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
  342. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  343. package/app/.next-cli-build/server/app/api/v1beta/models/route.js +1 -1
  344. package/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
  345. package/app/.next-cli-build/server/app/api/version/route.js +1 -1
  346. package/app/.next-cli-build/server/app/api/version/route.js.nft.json +1 -1
  347. package/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
  348. package/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
  349. package/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
  350. package/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
  351. package/app/.next-cli-build/server/app/callback/page.js +1 -1
  352. package/app/.next-cli-build/server/app/callback/page.js.nft.json +1 -1
  353. package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  354. package/app/.next-cli-build/server/app/callback.html +1 -1
  355. package/app/.next-cli-build/server/app/callback.rsc +3 -3
  356. package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +3 -3
  357. package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
  358. package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +3 -3
  359. package/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
  360. package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +3 -3
  361. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +3 -3
  362. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +3 -3
  363. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
  364. package/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
  365. package/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +3 -3
  366. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +3 -3
  367. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +3 -3
  368. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
  369. package/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
  370. package/app/.next-cli-build/server/app/dashboard/combos.rsc +3 -3
  371. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +3 -3
  372. package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +3 -3
  373. package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
  374. package/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  375. package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +3 -3
  376. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +3 -3
  377. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +3 -3
  378. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
  379. package/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
  380. package/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +3 -3
  381. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +3 -3
  382. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +3 -3
  383. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +1 -1
  384. package/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
  385. package/app/.next-cli-build/server/app/dashboard/mitm.rsc +3 -3
  386. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +3 -3
  387. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +3 -3
  388. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +1 -1
  389. package/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  390. package/app/.next-cli-build/server/app/dashboard/profile.rsc +3 -3
  391. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +3 -3
  392. package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +3 -3
  393. package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
  394. package/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
  395. package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +3 -3
  396. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +3 -3
  397. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +3 -3
  398. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
  399. package/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
  400. package/app/.next-cli-build/server/app/dashboard/providers.rsc +3 -3
  401. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +3 -3
  402. package/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +3 -3
  403. package/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
  404. package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
  405. package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +3 -3
  406. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +3 -3
  407. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +3 -3
  408. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
  409. package/app/.next-cli-build/server/app/dashboard/pxpipe.html +1 -1
  410. package/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +3 -3
  411. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +3 -3
  412. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +3 -3
  413. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +1 -1
  414. package/app/.next-cli-build/server/app/dashboard/quota.html +1 -1
  415. package/app/.next-cli-build/server/app/dashboard/quota.rsc +3 -3
  416. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  417. package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +3 -3
  418. package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
  419. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js +1 -1
  420. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
  421. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  422. package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  423. package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +3 -3
  424. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +3 -3
  425. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
  426. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +3 -3
  427. package/app/.next-cli-build/server/app/dashboard/skills.html +1 -1
  428. package/app/.next-cli-build/server/app/dashboard/skills.rsc +3 -3
  429. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +3 -3
  430. package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +3 -3
  431. package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +1 -1
  432. package/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
  433. package/app/.next-cli-build/server/app/dashboard/token-saver.rsc +3 -3
  434. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +3 -3
  435. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +3 -3
  436. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +1 -1
  437. package/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
  438. package/app/.next-cli-build/server/app/dashboard/translator.rsc +3 -3
  439. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +3 -3
  440. package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +3 -3
  441. package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
  442. package/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  443. package/app/.next-cli-build/server/app/dashboard/usage.rsc +3 -3
  444. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +3 -3
  445. package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +3 -3
  446. package/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
  447. package/app/.next-cli-build/server/app/dashboard.html +1 -1
  448. package/app/.next-cli-build/server/app/dashboard.rsc +3 -3
  449. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +3 -3
  450. package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +3 -3
  451. package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +1 -1
  452. package/app/.next-cli-build/server/app/favicon.ico/route.js.nft.json +1 -1
  453. package/app/.next-cli-build/server/app/index.html +1 -1
  454. package/app/.next-cli-build/server/app/index.rsc +3 -3
  455. package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +3 -3
  456. package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +3 -3
  457. package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
  458. package/app/.next-cli-build/server/app/landing/page.js +1 -1
  459. package/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -1
  460. package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  461. package/app/.next-cli-build/server/app/landing.html +1 -1
  462. package/app/.next-cli-build/server/app/landing.rsc +4 -4
  463. package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +4 -4
  464. package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
  465. package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +4 -4
  466. package/app/.next-cli-build/server/app/login/page.js +1 -1
  467. package/app/.next-cli-build/server/app/login/page.js.nft.json +1 -1
  468. package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  469. package/app/.next-cli-build/server/app/login.html +1 -1
  470. package/app/.next-cli-build/server/app/login.rsc +3 -3
  471. package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +3 -3
  472. package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
  473. package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +3 -3
  474. package/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  475. package/app/.next-cli-build/server/app/page.js +1 -1
  476. package/app/.next-cli-build/server/app/page.js.nft.json +1 -1
  477. package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  478. package/app/.next-cli-build/server/app-paths-manifest.json +10 -10
  479. package/app/.next-cli-build/server/chunks/1329.js +1 -1
  480. package/app/.next-cli-build/server/chunks/1350.js +1 -1
  481. package/app/.next-cli-build/server/chunks/1356.js +1 -1
  482. package/app/.next-cli-build/server/chunks/1679.js +1 -1
  483. package/app/.next-cli-build/server/chunks/1757.js +1 -1
  484. package/app/.next-cli-build/server/chunks/21.js +1 -1
  485. package/app/.next-cli-build/server/chunks/2220.js +1 -1
  486. package/app/.next-cli-build/server/chunks/24.js +1 -1
  487. package/app/.next-cli-build/server/chunks/341.js +1 -0
  488. package/app/.next-cli-build/server/chunks/3726.js +1 -1
  489. package/app/.next-cli-build/server/chunks/3943.js +1 -1
  490. package/app/.next-cli-build/server/chunks/412.js +2 -2
  491. package/app/.next-cli-build/server/chunks/4123.js +1 -1
  492. package/app/.next-cli-build/server/chunks/4279.js +1 -1
  493. package/app/.next-cli-build/server/chunks/4956.js +1 -1
  494. package/app/.next-cli-build/server/chunks/4957.js +1 -1
  495. package/app/.next-cli-build/server/chunks/5026.js +1 -1
  496. package/app/.next-cli-build/server/chunks/5330.js +15 -48
  497. package/app/.next-cli-build/server/chunks/5615.js +2 -2
  498. package/app/.next-cli-build/server/chunks/5840.js +1 -0
  499. package/app/.next-cli-build/server/chunks/6070.js +1 -1
  500. package/app/.next-cli-build/server/chunks/615.js +1 -1
  501. package/app/.next-cli-build/server/chunks/6638.js +1 -1
  502. package/app/.next-cli-build/server/chunks/6983.js +1 -0
  503. package/app/.next-cli-build/server/chunks/7187.js +1 -1
  504. package/app/.next-cli-build/server/chunks/7220.js +1 -1
  505. package/app/.next-cli-build/server/chunks/7247.js +1 -1
  506. package/app/.next-cli-build/server/chunks/7716.js +1 -1
  507. package/app/.next-cli-build/server/chunks/{7782.js → 7732.js} +1 -1
  508. package/app/.next-cli-build/server/chunks/794.js +1 -1
  509. package/app/.next-cli-build/server/chunks/8238.js +1 -1
  510. package/app/.next-cli-build/server/chunks/8251.js +1 -1
  511. package/app/.next-cli-build/server/chunks/8402.js +1 -1
  512. package/app/.next-cli-build/server/chunks/8895.js +6 -6
  513. package/app/.next-cli-build/server/chunks/9489.js +1 -1
  514. package/app/.next-cli-build/server/instrumentation.js +1 -1
  515. package/app/.next-cli-build/server/instrumentation.js.nft.json +1 -1
  516. package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  517. package/app/.next-cli-build/server/middleware.js.nft.json +1 -1
  518. package/app/.next-cli-build/server/pages/404.html +1 -1
  519. package/app/.next-cli-build/server/pages/500.html +1 -1
  520. package/app/.next-cli-build/server/preview-props.json +3 -3
  521. package/app/.next-cli-build/server/server-reference-manifest.js +1 -1
  522. package/app/.next-cli-build/server/server-reference-manifest.json +1 -1
  523. package/app/.next-cli-build/static/chunks/1321-d42a1c66e9cf1a99.js +1 -0
  524. package/app/.next-cli-build/static/chunks/{5497-ff26fb5a567cddba.js → 5497-11663c3e80a3cf5a.js} +2 -2
  525. package/app/.next-cli-build/static/chunks/9057-7d59411792d52341.js +1 -0
  526. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/{page-8a571e8e9beccc96.js → page-d61866af0fa7b54f.js} +16 -16
  527. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/{page-bb1d9c5a0be9fd68.js → page-44c9bfdcf25db09b.js} +5 -5
  528. package/app/.next-cli-build/static/chunks/app/landing/page-b86316c1776a570d.js +1 -0
  529. package/app/.next-cli-build/static/chunks/webpack-6463d5fe66fbfc78.js +1 -0
  530. package/app/node_modules/baseline-browser-mapping/dist/index.cjs +1 -1
  531. package/app/node_modules/baseline-browser-mapping/package.json +1 -1
  532. package/app/package.json +1 -1
  533. package/package.json +1 -1
  534. package/app/.next-cli-build/server/chunks/4577.js +0 -1
  535. package/app/.next-cli-build/server/chunks/9318.js +0 -1
  536. package/app/.next-cli-build/server/chunks/9745.js +0 -1
  537. package/app/.next-cli-build/static/chunks/1321-49da642292269cb3.js +0 -1
  538. package/app/.next-cli-build/static/chunks/app/landing/page-2915d691a511d8ec.js +0 -1
  539. package/app/.next-cli-build/static/chunks/webpack-9dc40b48930dad72.js +0 -1
  540. package/app/open-sse/executors/gemini-web/browserLease.js +0 -59
  541. /package/app/.next-cli-build/static/{ZNl8Hs1z--QA5Uwm8j-64 → MoWT_XpUp-bKSt7-wK19U}/_buildManifest.js +0 -0
  542. /package/app/.next-cli-build/static/{ZNl8Hs1z--QA5Uwm8j-64 → MoWT_XpUp-bKSt7-wK19U}/_ssgManifest.js +0 -0
@@ -224,62 +224,29 @@ ${b}`);return d.push("[Instruction]\nContinue the conversation above and reply a
224
224
  `)),b.enqueue(c.encode(f.$U)),b.close()}catch(a){b.enqueue(c.encode(`data: ${JSON.stringify({error:{message:a.message||"muse-web stream failed"}})}
225
225
 
226
226
  `)),b.enqueue(c.encode(f.$U)),b.close()}finally{e?.removeEventListener("abort",u),await d.close().catch(()=>{})}}},{highWaterMark:16384});return{response:new Response(g,{status:200,headers:{...f.uB}}),url:"https://muse.ai",headers:{},transformedBody:b}}let i=await U({page:t,base:a,signal:e});return await g(),{response:new Response(JSON.stringify(function(a,b,c="stop"){return{id:`chatcmpl-muw-${Date.now()}`,object:"chat.completion",created:Math.floor(Date.now()/1e3),model:b,choices:[{index:0,message:{role:"assistant",content:a},finish_reason:c,logprobs:null}],usage:{prompt_tokens:0,completion_tokens:0,total_tokens:0}}}(i,k)),{status:200,headers:{"Content-Type":"application/json"}}),url:"https://muse.ai",headers:{},transformedBody:b}}catch(c){e?.removeEventListener("abort",u),await t?.close().catch(()=>{});let a=c instanceof Error?c.message:"Unknown error";if((0,g.BE)(a))return{response:M(503,"Muse Web needs a Chrome/Chromium binary. Install Google Chrome, set NINEROUTER_BROWSER_BIN or CHROME_PATH to an existing Chrome, or run `npx playwright-core install chromium`."),url:"https://muse.ai",headers:{},transformedBody:b};if(c instanceof Error&&("TimeoutError"===c.name||a.includes("waitForSelector")||a.includes("actionability")))return{response:M(400,a),url:"https://muse.ai",headers:{},transformedBody:b};return{response:M(c instanceof n?401:c instanceof p?429:c instanceof q?504:c instanceof o?502:c?.name==="AbortError"||/aborted/i.test(c?.message||"")?499:500,a),url:"https://muse.ai",headers:{},transformedBody:b}}}async generateMedia({prompt:a,kind:b="image",size:c,duration:d,n:e=1,images:f,credentials:g,signal:h,log:i}){var j;let k,l;if(!a)throw new o("prompt is required for media generation");let m=(j=!!f?.length,k=[],c&&k.push(`aspect ratio ${c}`),d&&k.push(`${d} seconds long`),l=k.length?` (${k.join(", ")})`:"",`${"image"===b?"Generate an image":j?"Animate the attached image into a video":"Generate a video"}${l}: ${a}`),n="video"===b?6e5:24e4,p=[];for(let a=0;a<Math.max(1,e);a++){let{page:a}=await this._openThreadPage(g,{signal:h,log:i});try{let c=await P(a);f?.length&&await T(a,f),await R(a,m);let d=await Z({page:a,base:c,kind:b,timeoutMs:n,signal:h,log:i}),e=await $(a,d,b);p.push({b64:e.b64,mime:e.mime,...d.w?{width:d.w}:{},...d.h?{height:d.h}:{}})}finally{await a.close().catch(()=>{})}}return p}}},23013:(a,b,c)=>{c.d(b,{Ay:()=>C});var d=c(74957),e=c(12643),f=c(41004),g=c(39609),h=c(49426),i=c(78959),j=c(92536);let k=e.xq["perplexity-web"].baseUrl,l="2.18",m={"pplx-auto":["concise","pplx_pro"],"pplx-sonar":["copilot","experimental"],"pplx-gpt":["copilot","gpt54"],"pplx-gemini":["copilot","gemini31pro_high"],"pplx-sonnet":["copilot","claude46sonnet"],"pplx-opus":["copilot","claude46opus"],"pplx-nemotron":["copilot","nv_nemotron_3_super"]},n={"pplx-gpt":"gpt54_thinking","pplx-sonnet":"claude46sonnetthinking","pplx-opus":"claude46opusthinking"},o=/\[\d+\]/g,p=/<grok:[^>]*>.*?<\/grok:[^>]*>/gs,q=/<grok:[^>]*\/>/g,r=/<[?]xml[^?]*[?]>/g,s=/<\/?response\b[^>]*>/gi,t=/ {2,}/g,u=/\n{3,}/g,v=new Map;function w(a){let b=a.map(a=>`${a.role}:${a.content}`).join("\n"),c=0x811c9dc5;for(let a=0;a<b.length;a++)c^=b.charCodeAt(a),c=0x1000193*c>>>0;return c.toString(16).padStart(8,"0")}function x(a,b,c,d){if(!d)return;let e=w([...a,{role:"user",content:b},{role:"assistant",content:c}]);if(v.set(e,{backendUuid:d,ts:Date.now()}),v.size>200){let a=null,b=1/0;for(let[c,d]of v)d.ts<b&&(b=d.ts,a=c);a&&v.delete(a)}}function y(a,b=!0){let c=a;return c=(c=(c=(c=(c=c.replace(r,"")).replace(o,"")).replace(p,"")).replace(q,"")).replace(s,""),b&&(c=(c=(c=c.replace(t," ")).replace(u,"\n\n")).trim()),c}async function*z(a,b){let c=a.getReader(),d=new TextDecoder,e="",f=[];function g(){if(0===f.length)return null;let a=f.join("\n");f=[];let b=a.trim();if(!b||"[DONE]"===b)return"done";try{return JSON.parse(b)}catch{return null}}try{for(;;){if(b?.aborted)return;let{value:a,done:h}=await c.read();if(h)break;for(e+=d.decode(a,{stream:!0});;){let a=e.indexOf("\n");if(a<0)break;let b=e.slice(0,a);e=e.slice(a+1);let c=b.endsWith("\r")?b.slice(0,-1):b;if(""===c){let a=g();if("done"===a)return;a&&(yield a);continue}if(c.startsWith("data:")&&f.push(c.slice(5).trimStart()),"event: end_of_stream"===c)return}}(e+=d.decode()).trim().startsWith("data:")&&f.push(e.trim().slice(5).trimStart());let a=g();a&&"done"!==a&&(yield a)}finally{c.releaseLock()}}async function*A(a,b){let c="",d=null,e=0,f=new Set;for await(let g of z(a,b)){if(g.error_code||g.error_message)return void(yield{error:g.error_message||`Perplexity error: ${g.error_code}`,done:!0});g.backend_uuid&&(d=g.backend_uuid);let a=g.blocks??[];for(let b of a){let a=b.intended_usage??"";if("pro_search_steps"===a&&b.plan_block?.steps){for(let a of b.plan_block.steps)if("SEARCH_WEB"===a.step_type)for(let b of a.search_web_content?.queries??[]){let a=b.query??"";a&&!f.has(a)&&(f.add(a),yield{thinking:`Searching: ${a}`,backendUuid:d??void 0})}else if("READ_RESULTS"===a.step_type)for(let b of(a.read_results_content?.urls??[]).slice(0,3))b&&!f.has(b)&&(f.add(b),yield{thinking:`Reading: ${b}`,backendUuid:d??void 0})}if("plan"===a&&b.plan_block?.goals)for(let a of b.plan_block.goals){let b=a.description??"";b&&!f.has(b)&&(f.add(b),yield{thinking:b,backendUuid:d??void 0})}if(!a.includes("markdown"))continue;let g=b.markdown_block;if(!g)continue;let h=g.chunks??[];if(0!==h.length)if("DONE"===g.progress)c=h.join("");else{let a=c+h.join("");if(a.length>e){let b=a.slice(e);c=a,e=a.length,yield{delta:b,answer:c,backendUuid:d??void 0}}}}if(0===a.length&&g.text){let a=g.text.trim();if(a.length>e){let b=a.slice(e);c=a,e=a.length,yield{delta:b,answer:c,backendUuid:d??void 0}}}if(g.final||"COMPLETED"===g.status)break}yield{delta:"",answer:c,backendUuid:d??void 0,done:!0}}async function B(a,b,c,d,e,f,g){let h="",i=null,j=[];for await(let b of A(a,g)){if(b.backendUuid&&(i=b.backendUuid),b.error)return new Response(JSON.stringify({error:{message:b.error,type:"upstream_error",code:"PPLX_ERROR"}}),{status:502,headers:{"Content-Type":"application/json"}});if(b.thinking){j.push(b.thinking);continue}if(b.done){h=b.answer||h;break}b.answer&&(h=b.answer)}x(e,f,h=y(h),i);let k=j.length>0?j.join("\n"):void 0,l={role:"assistant",content:h};k&&(l.reasoning_content=k);let m=Math.ceil(f.length/4),n=Math.ceil(h.length/4);return new Response(JSON.stringify({id:c,object:"chat.completion",created:d,model:b,system_fingerprint:null,choices:[{index:0,message:l,finish_reason:"stop",logprobs:null}],usage:{prompt_tokens:m,completion_tokens:n,total_tokens:m+n}}),{status:200,headers:{"Content-Type":"application/json"}})}class C extends d.H{constructor(){super("perplexity-web",e.xq["perplexity-web"])}async execute({model:a,body:b,stream:c,credentials:d,signal:e,log:o,proxyOptions:p=null}){var q,r,s,t,u;let z,C,D,E,F,G=b?.messages;if(!G||!Array.isArray(G)||0===G.length)return{response:new Response(JSON.stringify({error:{message:"Missing or empty messages array",type:"invalid_request"}}),{status:400,headers:{"Content-Type":"application/json"}}),url:k,headers:{},transformedBody:b};(b?.thinking===!0||b?.reasoning_effort!=null&&"none"!==b.reasoning_effort)&&n[a]?(z="copilot",C=n[a],o?.info?.("PPLX-WEB",`Thinking mode → ${a} using ${C}`)):m[a]?[z,C]=m[a]:(z="copilot",C=a,o?.info?.("PPLX-WEB",`Unmapped model ${a}, using as raw preference`));let H=function(a){let b="",c=[];for(let d of a){let a=String(d.role||"user");"developer"===a&&(a="system");let e="";"string"==typeof d.content?e=d.content:Array.isArray(d.content)&&(e=d.content.filter(a=>"text"===a.type).map(a=>String(a.text||"")).join(" ")),e.trim()&&("system"===a?b+=e+"\n":("user"===a||"assistant"===a)&&c.push({role:a,content:e}))}let d="";return c.length>0&&"user"===c[c.length-1].role&&(d=c.pop().content),{systemMsg:b,history:c,currentMsg:d}}(G),I=function(a){if(0===a.length)return null;let b=w(a),c=v.get(b);return c?Date.now()-c.ts>36e5?(v.delete(b),null):c.backendUuid:null}(H.history);I&&o?.info?.("PPLX-WEB",`Session continue: ${I.slice(0,12)}...`);let J=function(a,b,c){if(b)return a.currentMsg;let d={},e=[];a.systemMsg.trim()&&e.push(a.systemMsg.trim());let f=function(a){if(!Array.isArray(a)||0===a.length)return"";let b=a.map(a=>{let b=a?.function||a||{},c=b.name||"unnamed",d=(b.description||"").split("\n")[0].slice(0,200);return`- ${c}: ${d}`});return`Available tools (reference only, cannot invoke):
227
- ${b.join("\n")}`}(c);f&&e.push(f),e.push("You have built-in web search. Answer questions directly using search results."),d.instructions=e,a.history.length>0&&(d.history=a.history),a.currentMsg?d.query=a.currentMsg:0===a.history.length&&(d.query="");let g=JSON.stringify(d);return g.length>96e3?g.slice(-96e3):g}(H,I,b?.tools);if(!J.trim())return{response:new Response(JSON.stringify({error:{message:"Empty query after processing",type:"invalid_request"}}),{status:400,headers:{"Content-Type":"application/json"}}),url:k,headers:{},transformedBody:b};let K=(q=z,r=C,F="u">typeof Intl?Intl.DateTimeFormat().resolvedOptions().timeZone:"UTC",{query_str:J,params:{query_str:J,search_focus:"internet",mode:q,model_preference:r,sources:["web"],attachments:[],frontend_uuid:crypto.randomUUID(),frontend_context_uuid:crypto.randomUUID(),version:l,language:"en-US",timezone:F,search_recency_filter:null,is_incognito:!0,use_schematized_api:!0,last_backend_uuid:I}}),L={"Content-Type":"application/json",Accept:"text/event-stream",Origin:"https://www.perplexity.ai",Referer:"https://www.perplexity.ai/","User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36","X-App-ApiClient":"default","X-App-ApiVersion":l};d.accessToken?L.Authorization=`Bearer ${d.accessToken}`:d.apiKey&&(L.Cookie=`__Secure-next-auth.session-token=${d.apiKey}`),o?.info?.("PPLX-WEB",`Query to ${a} (pref=${C}, mode=${z}), len=${J.length}`);let M={method:"POST",headers:L,body:JSON.stringify(K)},N=(0,h.n)(e,this.config?.timeoutMs||f.Z1);M.signal=N.signal;try{D=await (0,g.proxyAwareFetch)(k,M,p)}catch(a){return o?.error?.("PPLX-WEB",`Fetch failed: ${a.message||String(a)}`),{response:new Response(JSON.stringify({error:{message:`Perplexity connection failed: ${a.message||String(a)}`,type:"upstream_error"}}),{status:502,headers:{"Content-Type":"application/json"}}),url:k,headers:L,transformedBody:K}}finally{N.clear()}if(!D.ok){let a=D.status,b=`Perplexity returned HTTP ${a}`;return 401===a||403===a?b="Perplexity auth failed — session cookie may be expired. Re-paste your __Secure-next-auth.session-token.":429===a&&(b="Perplexity rate limited. Wait a moment and retry."),o?.warn?.("PPLX-WEB",b),{response:new Response(JSON.stringify({error:{message:b,type:"upstream_error",code:`HTTP_${a}`}}),{status:a,headers:{"Content-Type":"application/json"}}),url:k,headers:L,transformedBody:K}}if(!D.body)return{response:new Response(JSON.stringify({error:{message:"Perplexity returned empty response body",type:"upstream_error"}}),{status:502,headers:{"Content-Type":"application/json"}}),url:k,headers:L,transformedBody:K};let O=`chatcmpl-pplx-${crypto.randomUUID().slice(0,12)}`,P=Math.floor(Date.now()/1e3);if(c){let b;E=new Response((s=D.body,t=H.history,u=H.currentMsg,b=new TextEncoder,new ReadableStream({async start(c){try{c.enqueue(b.encode((0,j.N)({id:O,object:"chat.completion.chunk",created:P,model:a,system_fingerprint:null,choices:[{index:0,delta:{role:"assistant"},finish_reason:null,logprobs:null}]})));let d="",f=null;for await(let g of A(s,e)){if(g.backendUuid&&(f=g.backendUuid),g.error){c.enqueue(b.encode((0,j.N)({id:O,object:"chat.completion.chunk",created:P,model:a,system_fingerprint:null,choices:[{index:0,delta:{content:`[Error: ${g.error}]`},finish_reason:null,logprobs:null}]})));break}if(g.thinking){c.enqueue(b.encode((0,j.N)({id:O,object:"chat.completion.chunk",created:P,model:a,system_fingerprint:null,choices:[{index:0,delta:{reasoning_content:g.thinking+"\n"},finish_reason:null,logprobs:null}]})));continue}if(g.done){d=g.answer||d;break}let e=g.delta||"";e&&(e=y(e,!1))&&c.enqueue(b.encode((0,j.N)({id:O,object:"chat.completion.chunk",created:P,model:a,system_fingerprint:null,choices:[{index:0,delta:{content:e},finish_reason:null,logprobs:null}]}))),g.answer&&(d=g.answer)}c.enqueue(b.encode((0,j.N)({id:O,object:"chat.completion.chunk",created:P,model:a,system_fingerprint:null,choices:[{index:0,delta:{},finish_reason:"stop",logprobs:null}]}))),c.enqueue(b.encode(i.$U)),x(t,u,y(d),f)}catch(d){c.enqueue(b.encode((0,j.N)({id:O,object:"chat.completion.chunk",created:P,model:a,system_fingerprint:null,choices:[{index:0,delta:{content:`[Stream error: ${d.message||String(d)}]`},finish_reason:"stop",logprobs:null}]}))),c.enqueue(b.encode(i.$U))}finally{c.close()}}})),{status:200,headers:{...i.uB}})}else E=await B(D.body,a,O,P,H.history,H.currentMsg,e);return{response:E,url:k,headers:L,transformedBody:K}}}},25360:(a,b,c)=>{c.d(b,{N:()=>g});var d=c(14229);let e={"Content-Type":"text/event-stream","Cache-Control":"no-cache","X-Accel-Buffering":"no"};async function f(a,b,c){let e=await a.text();try{let f=JSON.parse(e),g=f?.choices?.[0]?.message?.content||"",{content:h,toolCalls:i,finishReason:j}=(0,d.mU)(g,b,c);return i?(f.choices[0].message={role:"assistant",content:null,tool_calls:i},f.choices[0].finish_reason=j):f.choices[0].message.content=h,new Response(JSON.stringify(f),{status:a.status,headers:{"Content-Type":"application/json"}})}catch{return new Response(e,{status:a.status,headers:{"Content-Type":"application/json"}})}}async function g(a,b,c,d){var g,h,i,j;let k,l,m,n,o;if(!a.ok)return a;let p=await f(a,b,d.idSeed??"cgpt");return c?new Response((g=await p.json(),h=d.cid,i=d.created,j=d.model,k=new TextEncoder,m=(l=g?.choices?.[0]??{}).message??{},n=l.finish_reason??"stop",o=(a,b)=>{var c;return k.encode((c={id:h,object:"chat.completion.chunk",created:i,model:j,system_fingerprint:null,choices:[{index:0,delta:a,finish_reason:b,logprobs:null}]},`data: ${JSON.stringify(c)}
227
+ ${b.join("\n")}`}(c);f&&e.push(f),e.push("You have built-in web search. Answer questions directly using search results."),d.instructions=e,a.history.length>0&&(d.history=a.history),a.currentMsg?d.query=a.currentMsg:0===a.history.length&&(d.query="");let g=JSON.stringify(d);return g.length>96e3?g.slice(-96e3):g}(H,I,b?.tools);if(!J.trim())return{response:new Response(JSON.stringify({error:{message:"Empty query after processing",type:"invalid_request"}}),{status:400,headers:{"Content-Type":"application/json"}}),url:k,headers:{},transformedBody:b};let K=(q=z,r=C,F="u">typeof Intl?Intl.DateTimeFormat().resolvedOptions().timeZone:"UTC",{query_str:J,params:{query_str:J,search_focus:"internet",mode:q,model_preference:r,sources:["web"],attachments:[],frontend_uuid:crypto.randomUUID(),frontend_context_uuid:crypto.randomUUID(),version:l,language:"en-US",timezone:F,search_recency_filter:null,is_incognito:!0,use_schematized_api:!0,last_backend_uuid:I}}),L={"Content-Type":"application/json",Accept:"text/event-stream",Origin:"https://www.perplexity.ai",Referer:"https://www.perplexity.ai/","User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36","X-App-ApiClient":"default","X-App-ApiVersion":l};d.accessToken?L.Authorization=`Bearer ${d.accessToken}`:d.apiKey&&(L.Cookie=`__Secure-next-auth.session-token=${d.apiKey}`),o?.info?.("PPLX-WEB",`Query to ${a} (pref=${C}, mode=${z}), len=${J.length}`);let M={method:"POST",headers:L,body:JSON.stringify(K)},N=(0,h.n)(e,this.config?.timeoutMs||f.Z1);M.signal=N.signal;try{D=await (0,g.proxyAwareFetch)(k,M,p)}catch(a){return o?.error?.("PPLX-WEB",`Fetch failed: ${a.message||String(a)}`),{response:new Response(JSON.stringify({error:{message:`Perplexity connection failed: ${a.message||String(a)}`,type:"upstream_error"}}),{status:502,headers:{"Content-Type":"application/json"}}),url:k,headers:L,transformedBody:K}}finally{N.clear()}if(!D.ok){let a=D.status,b=`Perplexity returned HTTP ${a}`;return 401===a||403===a?b="Perplexity auth failed — session cookie may be expired. Re-paste your __Secure-next-auth.session-token.":429===a&&(b="Perplexity rate limited. Wait a moment and retry."),o?.warn?.("PPLX-WEB",b),{response:new Response(JSON.stringify({error:{message:b,type:"upstream_error",code:`HTTP_${a}`}}),{status:a,headers:{"Content-Type":"application/json"}}),url:k,headers:L,transformedBody:K}}if(!D.body)return{response:new Response(JSON.stringify({error:{message:"Perplexity returned empty response body",type:"upstream_error"}}),{status:502,headers:{"Content-Type":"application/json"}}),url:k,headers:L,transformedBody:K};let O=`chatcmpl-pplx-${crypto.randomUUID().slice(0,12)}`,P=Math.floor(Date.now()/1e3);if(c){let b;E=new Response((s=D.body,t=H.history,u=H.currentMsg,b=new TextEncoder,new ReadableStream({async start(c){try{c.enqueue(b.encode((0,j.N)({id:O,object:"chat.completion.chunk",created:P,model:a,system_fingerprint:null,choices:[{index:0,delta:{role:"assistant"},finish_reason:null,logprobs:null}]})));let d="",f=null;for await(let g of A(s,e)){if(g.backendUuid&&(f=g.backendUuid),g.error){c.enqueue(b.encode((0,j.N)({id:O,object:"chat.completion.chunk",created:P,model:a,system_fingerprint:null,choices:[{index:0,delta:{content:`[Error: ${g.error}]`},finish_reason:null,logprobs:null}]})));break}if(g.thinking){c.enqueue(b.encode((0,j.N)({id:O,object:"chat.completion.chunk",created:P,model:a,system_fingerprint:null,choices:[{index:0,delta:{reasoning_content:g.thinking+"\n"},finish_reason:null,logprobs:null}]})));continue}if(g.done){d=g.answer||d;break}let e=g.delta||"";e&&(e=y(e,!1))&&c.enqueue(b.encode((0,j.N)({id:O,object:"chat.completion.chunk",created:P,model:a,system_fingerprint:null,choices:[{index:0,delta:{content:e},finish_reason:null,logprobs:null}]}))),g.answer&&(d=g.answer)}c.enqueue(b.encode((0,j.N)({id:O,object:"chat.completion.chunk",created:P,model:a,system_fingerprint:null,choices:[{index:0,delta:{},finish_reason:"stop",logprobs:null}]}))),c.enqueue(b.encode(i.$U)),x(t,u,y(d),f)}catch(d){c.enqueue(b.encode((0,j.N)({id:O,object:"chat.completion.chunk",created:P,model:a,system_fingerprint:null,choices:[{index:0,delta:{content:`[Stream error: ${d.message||String(d)}]`},finish_reason:"stop",logprobs:null}]}))),c.enqueue(b.encode(i.$U))}finally{c.close()}}})),{status:200,headers:{...i.uB}})}else E=await B(D.body,a,O,P,H.history,H.currentMsg,e);return{response:E,url:k,headers:L,transformedBody:K}}}},26878:(a,b,c)=>{c.d(b,{F:()=>f});var d=c(96179),e=c(12643);class f extends d.L{constructor(){super("xiaomi-tokenplan")}buildUrl(a,b,c=0,d=null){let f=(0,e.Yg)(d);return d?.runtimeTransport?.format==="claude"?`${f.replace(/\/v1\/?$/,"")}/anthropic/v1/messages`:`${f}/chat/completions`}}},27617:(a,b,c)=>{c.d(b,{Ay:()=>t});var d=c(77598),e=c.n(d),f=c(96179),g=c(41004),h=c(93943),i=c(6879);function j(a,b){return new Promise((c,d)=>{if(b?.aborted)return void d(k(b));let e=()=>{clearTimeout(f),d(k(b))},f=setTimeout(()=>{b?.removeEventListener?.("abort",e),c()},a);b?.addEventListener?.("abort",e,{once:!0})})}function k(a){let b=Error("CodeArts session-slot wait aborted");return b.name="AbortError",b.cause=a?.reason,b}async function l({attempt:a,model:b="",signal:c=null,log:d=null,budgetMs:e=45e3,nap:f=j}={}){let g=Date.now()+e;for(let h=0;;h++){let{retryInMs:i=null,result:j}=await a(h);if(null==i)return j;let k=g-Date.now();if(k<=i)return d?.warn?.("QUEUE",`CODEARTS | ${b} still refused after ${Math.round(e/1e3)}s of waiting`),j;d?.warn?.("QUEUE",`CODEARTS | ${b} refused, resend in ${i/1e3}s (${Math.round(k/1e3)}s left)`),await f(i,c)}}var m=c(71547);let n=["max_tokens","max_completion_tokens","max_output_tokens"],o={"x-ot-client-type":"CLI","x-ot-client-version":"26.9.3","x-ot-function":"agent-tui","x-language":"zh-cn"};function p(){return e().randomUUID().replace(/-/g,"")}let q=Symbol.for("codearts.sessionId");async function r(a,b){let c=a?.response,d=c?.status;if(d!==g.gx.BAD_REQUEST&&d!==g.gx.RATE_LIMITED)return{result:a};let e=await c.text().catch(()=>""),f=function(a,b){let{response:c}=a;return{...a,response:new Response(b,{status:c.status,statusText:c.statusText,headers:c.headers})}}(a,e);if("string"==typeof e&&e.includes("TM.00001041")){let a;return{retryInMs:(a=Math.min(8e3,2e3*2**b))+Math.floor(a/4*Math.random()),result:f}}if(d===g.gx.RATE_LIMITED&&"queued"===String(c?.headers?.get?.("queue-status")||"").toLowerCase()){let a;return{retryInMs:Math.max(1e3,1e3*(Number.isFinite(a=Number(c?.headers?.get?.("retry-after")))&&a>0?a:5)),result:f}}return{result:f}}class s extends f.L{constructor(a="codearts"){super(a)}async execute(a){var b;let c=(b=a?.providerSessionId)?`ses_${e().createHash("sha256").update(String(b)).digest("hex").slice(0,26)}`:null,d=c&&a?{...a,credentials:{...a.credentials||{},[q]:c}}:a;return l({attempt:async a=>r(await super.execute(d),a),model:a?.model,signal:a?.signal,log:a?.log})}transformRequest(a,b,c,d){let e,f,g=super.transformRequest(a,b,c,d);if(!g||"object"!=typeof g)return g;if(f=(e=String(g.model||a||"")).indexOf("/"),g.model=f>=0?e.slice(f+1):e,void 0===g.tool_stream&&(g.tool_stream=!0),n.some(a=>null!=g[a])||(g.max_tokens=32e3),void 0===g.user_prompt){let a=function(a){let b=Array.isArray(a?.messages)?a.messages:[];for(let a=b.length-1;a>=0;a--){var c;let d=b[a];if(d?.role!=="user")continue;let e=("string"==typeof(c=d.content)?c:Array.isArray(c)?c.map(a=>a?.type==="text"&&"string"==typeof a.text?a.text:"").join(""):"").replace(/[\r\n\t]/g," ");if(e.trim())return e.slice(0,500)}return""}(b);a&&(g.user_prompt=a)}return g}buildHeaders(a,b=!0,c,d,e){let f=a?.providerSpecificData||{},g=f.securityToken||a?.accessToken||"",h=a?.[q]||"ses_silent",j={"Content-Type":"application/json",...o,"x-ot-session-id":h,"x-ot-parent-session-id":"","x-ot-trace-id":p(),"x-ot-span-id":p(),"x-snap-traceid":p(),"user-session-id":h,"User-Agent":m.Qi,...b?{Accept:"text/event-stream"}:{}};return(0,i.Ae)({accessKeyId:f.accessKeyId,secretAccessKey:f.secretAccessKey,securityToken:g,method:"POST",url:c,body:null==e?null:JSON.stringify(e),headers:j})}async refreshCredentials(a,b,c=null){let d=await (0,h.MF)(this.provider,a,()=>(0,m.J9)(a,{log:b,proxyOptions:c||a?.proxyOptions||null}));return d?.providerSpecificData&&(d.providerSpecificData={...a?.providerSpecificData||{},...d.providerSpecificData}),d}}let t=s},32447:(a,b,c)=>{c.d(b,{BL:()=>g});var d=c(96179),e=c(52007);let f=["anthropic_version","anthropic_beta","client_metadata","mcp_servers","stop_sequences","thinking","top_k"];class g extends d.L{constructor(){super("kimchi")}transformRequest(a,b,c,d){let g,h=super.transformRequest(a,b,c,d);if(!h||"object"!=typeof h)return h;for(let a of(!function(a){var b;if(!a?.system||!Array.isArray(a.messages))return;let c=("string"==typeof(b=a.system)?b:Array.isArray(b)?b.map(a=>"string"==typeof a?a:"string"==typeof a?.text?a.text:"").filter(Boolean).join("\n"):"").trim();if(!c)return;let d=a.messages.find(a=>a?.role==="system");d?"string"==typeof d.content?d.content=`${c}
228
228
 
229
- `))},new ReadableStream({start(a){a.enqueue(o({role:"assistant"},null)),Array.isArray(m.tool_calls)&&m.tool_calls.length>0?(m.tool_calls.forEach((b,c)=>{a.enqueue(o({tool_calls:[{index:c,...b}]},null))}),a.enqueue(o({},n))):a.enqueue(o({content:m.content??""},n)),a.enqueue(k.encode("data: [DONE]\n\n")),a.close()}})),{status:200,headers:e}):p}},26878:(a,b,c)=>{c.d(b,{F:()=>f});var d=c(96179),e=c(12643);class f extends d.L{constructor(){super("xiaomi-tokenplan")}buildUrl(a,b,c=0,d=null){let f=(0,e.Yg)(d);return d?.runtimeTransport?.format==="claude"?`${f.replace(/\/v1\/?$/,"")}/anthropic/v1/messages`:`${f}/chat/completions`}}},27617:(a,b,c)=>{c.d(b,{Ay:()=>t});var d=c(77598),e=c.n(d),f=c(96179),g=c(41004),h=c(93943),i=c(6879);function j(a,b){return new Promise((c,d)=>{if(b?.aborted)return void d(k(b));let e=()=>{clearTimeout(f),d(k(b))},f=setTimeout(()=>{b?.removeEventListener?.("abort",e),c()},a);b?.addEventListener?.("abort",e,{once:!0})})}function k(a){let b=Error("CodeArts session-slot wait aborted");return b.name="AbortError",b.cause=a?.reason,b}async function l({attempt:a,model:b="",signal:c=null,log:d=null,budgetMs:e=45e3,nap:f=j}={}){let g=Date.now()+e;for(let h=0;;h++){let{retryInMs:i=null,result:j}=await a(h);if(null==i)return j;let k=g-Date.now();if(k<=i)return d?.warn?.("QUEUE",`CODEARTS | ${b} still refused after ${Math.round(e/1e3)}s of waiting`),j;d?.warn?.("QUEUE",`CODEARTS | ${b} refused, resend in ${i/1e3}s (${Math.round(k/1e3)}s left)`),await f(i,c)}}var m=c(71547);let n=["max_tokens","max_completion_tokens","max_output_tokens"],o={"x-ot-client-type":"CLI","x-ot-client-version":"26.9.3","x-ot-function":"agent-tui","x-language":"zh-cn"};function p(){return e().randomUUID().replace(/-/g,"")}let q=Symbol.for("codearts.sessionId");async function r(a,b){let c=a?.response,d=c?.status;if(d!==g.gx.BAD_REQUEST&&d!==g.gx.RATE_LIMITED)return{result:a};let e=await c.text().catch(()=>""),f=function(a,b){let{response:c}=a;return{...a,response:new Response(b,{status:c.status,statusText:c.statusText,headers:c.headers})}}(a,e);if("string"==typeof e&&e.includes("TM.00001041")){let a;return{retryInMs:(a=Math.min(8e3,2e3*2**b))+Math.floor(a/4*Math.random()),result:f}}if(d===g.gx.RATE_LIMITED&&"queued"===String(c?.headers?.get?.("queue-status")||"").toLowerCase()){let a;return{retryInMs:Math.max(1e3,1e3*(Number.isFinite(a=Number(c?.headers?.get?.("retry-after")))&&a>0?a:5)),result:f}}return{result:f}}class s extends f.L{constructor(a="codearts"){super(a)}async execute(a){var b;let c=(b=a?.providerSessionId)?`ses_${e().createHash("sha256").update(String(b)).digest("hex").slice(0,26)}`:null,d=c&&a?{...a,credentials:{...a.credentials||{},[q]:c}}:a;return l({attempt:async a=>r(await super.execute(d),a),model:a?.model,signal:a?.signal,log:a?.log})}transformRequest(a,b,c,d){let e,f,g=super.transformRequest(a,b,c,d);if(!g||"object"!=typeof g)return g;if(f=(e=String(g.model||a||"")).indexOf("/"),g.model=f>=0?e.slice(f+1):e,void 0===g.tool_stream&&(g.tool_stream=!0),n.some(a=>null!=g[a])||(g.max_tokens=32e3),void 0===g.user_prompt){let a=function(a){let b=Array.isArray(a?.messages)?a.messages:[];for(let a=b.length-1;a>=0;a--){var c;let d=b[a];if(d?.role!=="user")continue;let e=("string"==typeof(c=d.content)?c:Array.isArray(c)?c.map(a=>a?.type==="text"&&"string"==typeof a.text?a.text:"").join(""):"").replace(/[\r\n\t]/g," ");if(e.trim())return e.slice(0,500)}return""}(b);a&&(g.user_prompt=a)}return g}buildHeaders(a,b=!0,c,d,e){let f=a?.providerSpecificData||{},g=f.securityToken||a?.accessToken||"",h=a?.[q]||"ses_silent",j={"Content-Type":"application/json",...o,"x-ot-session-id":h,"x-ot-parent-session-id":"","x-ot-trace-id":p(),"x-ot-span-id":p(),"x-snap-traceid":p(),"user-session-id":h,"User-Agent":m.Qi,...b?{Accept:"text/event-stream"}:{}};return(0,i.Ae)({accessKeyId:f.accessKeyId,secretAccessKey:f.secretAccessKey,securityToken:g,method:"POST",url:c,body:null==e?null:JSON.stringify(e),headers:j})}async refreshCredentials(a,b,c=null){let d=await (0,h.MF)(this.provider,a,()=>(0,m.J9)(a,{log:b,proxyOptions:c||a?.proxyOptions||null}));return d?.providerSpecificData&&(d.providerSpecificData={...a?.providerSpecificData||{},...d.providerSpecificData}),d}}let t=s},29166:(a,b,c)=>{c.d(b,{dQ:()=>S});var d=c(74957),e=c(78959),f=c(4052),g=c(20742),h=c(82543),i=c(10079);c(14229);var j=c(25360);let k="unsupported_control_for_provider",l=new Set(["none","minimal"]),m={"gemini-3.1-pro":{id:"gemini-3.1-pro",isDefault:!0},"gemini-3.7-flash":{id:"gemini-3.7-flash",isDefault:!1,toggleSelector:'[data-test-id="bard-mode-menu-button"], button[aria-haspopup="menu"][aria-label*="model" i]',activeIndicatorSelector:'[data-test-id="bard-mode-menu-button"] .mode-title, [data-test-id="bard-mode-menu-button"]',expectedIndicatorPattern:/\bflash\b(?!.*\blite\b)/i},"gemini-3.1-flash-lite":{id:"gemini-3.1-flash-lite",isDefault:!1,toggleSelector:'[data-test-id="bard-mode-menu-button"], button[aria-haspopup="menu"][aria-label*="model" i]',activeIndicatorSelector:'[data-test-id="bard-mode-menu-button"] .mode-title, [data-test-id="bard-mode-menu-button"]',expectedIndicatorPattern:/flash.*\blite\b/i}},n={id:"extended-thinking",isDefault:!1,toggleSelector:'[data-test-id="deep-think-toggle"], button[aria-label*="extended thinking" i], button[aria-label*="deep think" i]',activeIndicatorSelector:'[data-test-id="deep-think-toggle"][aria-pressed="true"], [data-test-id="deep-think-toggle"].is-active',expectedIndicatorPattern:/thinking|deep think/i};async function o(a){try{if("function"==typeof a.textContent){let b=await a.textContent();if("string"==typeof b)return b}if("function"==typeof a.innerText)return await a.innerText()}catch{}return null}async function p(a,b,c=5e3){if(b.isDefault)return{confirmed:!0,descriptor:b};let{toggleSelector:d,activeIndicatorSelector:e,expectedIndicatorPattern:f}=b;if(!d||!e||!f)return{confirmed:!1,reason:"control_not_found",descriptor:b};let g=await a.waitForSelector(d,{timeout:c}).catch(()=>null);if(!g)return{confirmed:!1,reason:"control_not_found",descriptor:b};await g.click();let h=await a.waitForSelector(e,{timeout:c}).catch(()=>null);if(!h)return{confirmed:!1,reason:"indicator_not_found",descriptor:b};let i=await o(h);return i&&f.test(i)?{confirmed:!0,descriptor:b}:{confirmed:!1,reason:"indicator_mismatch",descriptor:b}}async function q(a,b,c){let d=m[b]??null;return d?p(a,d,c):{confirmed:!1,reason:"unknown_model"}}async function r(a,b){return p(a,n,b)}let s={unknown_model:"it is not one of the advertised, selectable gweb models",control_not_found:"the Gemini UI control used to switch modes was not found",indicator_not_found:"the active-mode indicator used to confirm the switch was not found",indicator_mismatch:"the active-mode indicator did not confirm the switch after attempting it"};function t(a,b){let c=b&&s[b]||"the switch could not be verified";return`Model provider "gemini-web" could not verify that "${a}" is actually active in the Gemini web UI (${c}). Rather than silently answering under a model/mode label that may not be accurate, the request was rejected with "unsupported_control_for_provider".`}let u=`(() => {
230
- const msgs = [...document.querySelectorAll(${JSON.stringify("model-response, message-content")})];
231
- const last = msgs.length ? (msgs[msgs.length - 1].innerText || '').trim() : '';
232
- return {
233
- count: msgs.length,
234
- lastText: last,
235
- generating: !!document.querySelector('[data-test-id="thinking-overlay-content"], button[aria-label*="Stop" i]'),
236
- };
237
- })()`,v=a=>new Promise(b=>setTimeout(b,a));async function w(a){try{return await a.evaluate(u)||{count:0,lastText:"",generating:!1}}catch{return{count:0,lastText:"",generating:!1}}}async function x({page:a,baseCount:b=0,baseText:c="",timeoutMs:d=6e4,firstTokenMs:e=3e4,signal:f,onDelta:g}){let h=Date.now(),i="",j=null,k=0,l=!1;for(;;){if(f?.aborted)throw Error("Request aborted");let m=Date.now()-h;if(m>d)throw Error("Gemini reply timed out");if(!l&&m>e)throw Error("no first token from Gemini");await v(400);let n=await w(a),o=n.lastText||"";if((n.count>b||o&&o!==c)&&o){if(l=!0,o!==j?(j=o,k=0):k++,!n.generating&&o!==i){let a=o.startsWith(i)?o.slice(i.length):o;a&&(i=o,g?.(a))}if(k>=20)return i||o;if(!n.generating&&k>=5&&o===i)return i}}}let y=a=>new Promise(b=>setTimeout(b,a)),z=`(() => {
238
- const msgs = [...document.querySelectorAll('model-response, message-content')];
239
- const last = msgs.length ? msgs[msgs.length - 1] : null;
240
- const imgs = last
241
- ? [...last.querySelectorAll('img')].map((i) => ({
242
- src: i.currentSrc || i.src || '',
243
- w: i.naturalWidth || 0,
244
- h: i.naturalHeight || 0,
245
- }))
246
- : [];
247
- return {
248
- count: msgs.length,
249
- generating: !!document.querySelector('[data-test-id="thinking-overlay-content"], button[aria-label*="Stop" i]'),
250
- images: imgs.filter((i) => i.src && !i.src.includes('gstatic') && i.w > 0),
251
- };
252
- })()`;async function A(a){try{return await a.evaluate(z)||{count:0,generating:!1,images:[]}}catch{return{count:0,generating:!1,images:[]}}}async function B(a,b){let c=await a.evaluate(async a=>{if(a.startsWith("data:")){let b=await fetch(a);return{ok:!0,mime:(await b.blob()).type||"image/png",b64:a.slice(a.indexOf(",")+1)}}try{let b=await new Promise((b,c)=>{let d=new Image;d.onload=()=>b(d),d.onerror=()=>c(Error("img load failed")),d.src=a}),c=document.createElement("canvas");c.width=b.naturalWidth,c.height=b.naturalHeight,c.getContext("2d").drawImage(b,0,0);let d=c.toDataURL("image/png");return{ok:!0,mime:"image/png",b64:d.slice(d.indexOf(",")+1)}}catch{}try{let b=await fetch(a);if(!b.ok)return{ok:!1,err:`status ${b.status}`};let c=await b.blob(),d=new Uint8Array(await c.arrayBuffer()),e="";for(let a=0;a<d.length;a+=32768)e+=String.fromCharCode(...d.subarray(a,a+32768));return{ok:!0,mime:c.type||"image/png",b64:btoa(e)}}catch(a){return{ok:!1,err:String(a)}}},b);if(!c?.ok)throw Error(`failed to download generated image: ${c?.err}`);return{b64:c.b64,mime:c.mime}}async function C(a,{timeoutMs:b=12e4,signal:c}){let d=Date.now(),e=!1;for(;;){if(c?.aborted)throw Error("Request aborted");if(Date.now()-d>b)throw Error("Gemini image generation timed out");await y(1e3);let f=await A(a);if((f.count>0||f.generating)&&(e=!0),!e&&Date.now()-d>3e4)throw Error("no first sign of activity from Gemini");let g=f.images.filter(a=>a.w>=100);if(g.length>0&&!f.generating){let b=g[g.length-1];return{...await B(a,b.src),width:b.w,height:b.h}}}}let D="https://gemini.google.com/app",E="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36";async function F(a){let{chromium:b}=await (0,g.A)("playwright-core"),c=(0,f.Mt)();return(0,f.KI)(b,{...a,...c?{executablePath:c}:{}})}function G(a,b,c="stop"){return{id:`chatcmpl-${Date.now()}`,object:"chat.completion",created:Math.floor(Date.now()/1e3),model:b,choices:[{index:0,message:{role:"assistant",content:a},finish_reason:c,logprobs:null}],usage:{prompt_tokens:0,completion_tokens:0,total_tokens:0}}}function H(a,b,c=null){return{id:`chatcmpl-${Date.now()}`,object:"chat.completion.chunk",created:Math.floor(Date.now()/1e3),model:b,choices:[{index:0,delta:a?{content:a}:{},finish_reason:c}]}}async function I(a,b,c,d,e,f){let g=new Response(JSON.stringify(G(a,d)),{status:200,headers:{"Content-Type":"application/json"}});return(0,j.N)(g,b,c,{cid:e,created:f,model:d,idSeed:"gwe"})}let J=/something went wrong|try again later|unusual traffic|verify you are human/i,K=/used all of your requests|quota will reset|quota exceeded|reached your limit/i;async function L(a,b=()=>null){if(await a.locator(".ql-editor, [contenteditable='true']").count()>0)return null;let c=b();if(c)return c;let d=await a.evaluate(()=>document.body?.innerText?.slice(0,2e3)??"").catch(()=>"");if(J.test(d))return'Gemini refused the request ("Something went wrong") — the Google account cannot open Gemini. Sign in again, or enable Gemini Apps Activity for the account';let e=a.url();if(/chat with gemini/i.test(d)||!/\/app(\/|$|\?)/.test(e)){for(let c=0;c<12;c++){let c=b();if(c)return c;await a.waitForTimeout(400)}return"Gemini did not open a chat session — open dashboard/providers/gemini-web, click Login via Browser and sign in to Google again (the account may also need Gemini Apps Activity enabled)"}return null}async function M(a){let b,c=(b=null,a.on("response",a=>{!b&&/\/BardChatUi\/data\/batchexecute/.test(a.url())&&a.text().then(a=>{K.test(a)&&(b='Gemini says this account is out of quota: "You\'ve used all of your requests for this feature" — wait for the reset, or add another account')}).catch(()=>{})}),()=>b);return await a.goto(D,{waitUntil:"domcontentloaded",timeout:2e4}),c}async function N(a,b=()=>null,c=1e4){let d=Date.now()+c;for(;Date.now()<d;){if(await a.locator(".ql-editor, [contenteditable='true']").count()>0)return a.waitForSelector(".ql-editor, [contenteditable='true']",{timeout:5e3});let c=await L(a,b);if(c)throw Error(c);await a.waitForTimeout(400)}let e=b();if(e)throw Error(e);let f=a.url();throw Error(`Gemini composer did not appear within ${Math.round(c/1e3)}s (final URL: ${f})`)}function O(a){if("string"!=typeof a)return"";let b=a.trim();return b.length>0?b:""}function P(a,b){if(!a||"object"!=typeof a||Array.isArray(a))return"";for(let c of b){let b=O(a[c]);if(b)return b}return""}function Q(a){let b=O(a?.apiKey)||O(a?.cookie);if(b)return(0,h.L)(b);let c=a?.providerSpecificData,d=P(c,["cookie"]);if(d)return(0,h.L)(d);let e=P(c,["__Secure-1PSID"]),f=P(c,["__Secure-1PSIDTS"]);return[e?(0,h.L)(e,"__Secure-1PSID"):"",f?(0,h.L)(f,"__Secure-1PSIDTS"):""].filter(Boolean).join("; ")}function R(a,b,c={}){return new Response(JSON.stringify({error:b}),{status:a,headers:{"Content-Type":"application/json",...c}})}class S extends d.H{constructor(){super("gemini-web",{id:"gemini-web",baseUrl:D})}async testConnection(a){try{let b=Q(a);if(!b)return!1;return b.split(";").map(a=>a.trim()).filter(Boolean).map(a=>{let b=a.indexOf("=");if(-1===b)return null;let c=a.substring(0,b).trim(),d=a.substring(b+1).trim();return!c||!d||["path","domain","expires","max-age","secure","httponly","samesite"].includes(c.toLowerCase())?null:{name:c,value:d}}).filter(Boolean).some(a=>a.value.length>0)}catch{return!1}}async execute({model:a,body:b,stream:d,credentials:g,signal:h,log:j}){var m;let n,o=b||{},p=o.tools,s=o.functions;if(null!=p&&(!Array.isArray(p)||p.length>0))return{response:R(400,"Gemini Web does not support OpenAI function tools"),url:D,headers:{},transformedBody:b};if(null!=s&&(!Array.isArray(s)||s.length>0))return{response:R(400,"Gemini Web does not support legacy function tools"),url:D,headers:{},transformedBody:b};let u=null!==(n="string"==typeof(m=o.reasoning_effort)&&m.trim().length>0?m.trim().toLowerCase():null)&&!l.has(n),v=Q(g);if(!v)return{response:R(401,"Missing Gemini cookies"),url:D,headers:{},transformedBody:b};let y=o.messages||[],z=function(a){let b=a.filter(a=>"string"==typeof a.content&&a.content.trim().length>0),c=b.filter(a=>"user"===a.role),d=c[c.length-1],e=d?.content??"",f=d?b.lastIndexOf(d):-1,g=b.filter((a,b)=>b<f&&("user"===a.role||"assistant"===a.role)),h=b.filter(a=>"system"===a.role).map(a=>a.content).join("\n\n");if(0===g.length&&!h)return e;if(0===g.length)return`System:
253
- ${h}
254
-
255
- ${e}`;let i=g.map(a=>`${"assistant"===a.role?"Assistant":"User"}: ${a.content}`),j=[];return h&&j.push(`System:
256
- ${h}`),j.push(`Previous conversation:
257
- ${i.join("\n\n")}`),j.push(`Current user message:
258
- ${e}`),j.join("\n\n")}(y),A=y.some(a=>"user"===a.role&&"string"==typeof a.content&&a.content.trim().length>0);if(!z||!A)return{response:R(400,"No user message found"),url:D,headers:{},transformedBody:b};let B=a||"gemini-2.5-pro",C=null,J=null,K=null;try{if(h?.aborted)throw h.reason instanceof Error?h.reason:Error("Request aborted");let{acquireGeminiBrowser:f}=await c.e(9745).then(c.bind(c,69745));C=await f(F);let g={context:null};K=()=>{g.context?.close().catch(()=>{})},h?.addEventListener("abort",K,{once:!0}),g.context=J=await C.newContext({userAgent:E}),await J.addCookies((0,i.EU)(v,".google.com"));let l=await J.newPage(),m=await M(l);if(h?.aborted)throw h.reason instanceof Error?h.reason:Error("Request aborted");if(await N(l,m),a){let a=await q(l,B);if(!a.confirmed)return j?.warn?.("GEMINI-WEB",`Rejected request: could not confirm Gemini UI mode for "${B}" (${a.reason})`),{response:R(400,{message:t(B,a.reason),type:"invalid_request_error",code:k}),url:D,headers:{},transformedBody:b}}if(u){let a=await r(l);if(!a.confirmed)return j?.warn?.("GEMINI-WEB",`Rejected request: could not confirm Extended Thinking is available (${a.reason})`),{response:R(400,{message:t("Extended Thinking",a.reason),type:"invalid_request_error",code:k}),url:D,headers:{},transformedBody:b}}let n=await N(l,m);await n.click(),await l.keyboard.insertText(z),await l.waitForTimeout(300),await l.keyboard.press("Enter");let o=await w(l);if(hasTools){let a=await x({page:l,baseCount:o.count,baseText:o.lastText,signal:h}),c=`chatcmpl-gwe-${crypto.randomUUID().slice(0,12)}`,e=Math.floor(Date.now()/1e3);return{response:await I(a,p,!!d,B,c,e),url:D,headers:{},transformedBody:b}}if(d){let a=new TextEncoder,d=J,f=C;J=null,C=null;let g=new ReadableStream({async start(b){try{await x({page:l,baseCount:o.count,baseText:o.lastText,signal:h,onDelta:c=>{b.enqueue(a.encode(`data: ${JSON.stringify(H(c,B))}
259
-
260
- `))}}),b.enqueue(a.encode(`data: ${JSON.stringify(H("",B,"stop"))}
229
+ ${d.content}`:Array.isArray(d.content)&&d.content.unshift({type:"text",text:c}):a.messages.unshift({role:"system",content:c})}(h),f))void 0!==h[a]&&delete h[a];if(delete h.system,g=(0,e.gK)(a),(g?.provider==="anthropic"||g?.upstreamProvider==="anthropic"||/(^|[-_/])(?:claude|anthropic)(?:[-_/]|$)/i.test(String(a||"")))&&(delete h.reasoning_effort,delete h.reasoning,delete h.thinking),Array.isArray(h?.messages))for(let a of h.messages)a&&"object"==typeof a&&(delete a.cache_control,Array.isArray(a.content)&&(a.content=a.content.map(a=>{if(!a||"object"!=typeof a)return a;let{cache_control:b,signature:c,...d}=a;return d})));Array.isArray(h?.tools)&&(h.tools=h.tools.map(a=>{if(!a||"object"!=typeof a)return a;let{cache_control:b,...c}=a;return c}));if(Array.isArray(h?.messages))for(let a of h.messages)a&&"assistant"===a.role&&"string"==typeof a.reasoning_content&&a.reasoning_content.length>8&&delete a.reasoning_content;return h}}},36732:(a,b,c)=>{c.d(b,{Rb:()=>h});var d=c(96179),e=c(12132);let f=new Set(["mimo-v2.6-pro","mimo-v2.6-flash","mimo-v2.6-pro-ultraspeed"]),g="__mimoAccountCookie";class h extends d.L{constructor(){super("xiaomi-mimo")}static isAccountRoute(a,b){let c,d,e=(d=(c=String(a||"")).indexOf("/"))>=0?c.slice(d+1):c;return!!f.has(e)&&!!(b?.[g]||b?.providerSpecificData?.mimoPassToken)}isAccountRoute(a,b){return h.isAccountRoute(a,b)}buildUrl(a,b,c=0,d=null){return this.isAccountRoute(a,d)?`${(0,e.resolveMimoServerBase)(d?.providerSpecificData)}/api/route/chat/completions`:super.buildUrl(a,b,c,d)}buildHeaders(a,b=!0,c,d){return this.isAccountRoute(d,a)&&a?.[g]?{"Content-Type":"application/json",Accept:b?"text/event-stream":"application/json","User-Agent":e.MIMO_API_UA,Cookie:a[g]}:super.buildHeaders(a,b,c,d)}transformRequest(a,b,c,d){let e=super.transformRequest(a,b,c,d);if(this.isAccountRoute(a,d)){let a=e.reasoning_effort||b?.reasoning_effort||b?.output_config?.effort;if(a){delete e.reasoning_effort;let b="xhigh"===String(a).toLowerCase()?"high":String(a).toLowerCase();e.output_config={...e.output_config||{},effort:b}}null==e.temperature&&(e.temperature=1),null==e.top_p&&(e.top_p=.95)}return e}async execute(a){let{model:b,credentials:c,proxyOptions:d=null}=a;if(!this.isAccountRoute(b,c))return super.execute(a);let f=await (0,e.getMimoAccountCookie)(c?.providerSpecificData,d);if(!f)return super.execute(a);c[g]=f;let h=await super.execute(a);if(401===h.response.status){(0,e.invalidateMimoAccountCookieCache)();let b=await (0,e.getMimoAccountCookie)(c?.providerSpecificData,d).catch(()=>null);if(b)return c[g]=b,super.execute(a)}return h}}},48868:(a,b,c)=>{c.d(b,{RF:()=>bl});var d=c(74957),e=c(77598),f=c(73024),g=c(76760),h=c(80479);let i={"image/gif":"gif","image/jpeg":"jpg","image/jpg":"jpg","image/png":"png","image/webp":"webp"};class j extends Error{constructor(a){super(a),this.name="ChatGptWebAttachmentError",this.status=400}}function k(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function l(a){return"string"==typeof a&&a.trim()?a.trim():void 0}function m(a,b){return((a??"").split(/[\\/]/).pop()?.replace(/[\u0000-\u001f\u007f]/g,"").trim()||b).slice(0,180)}function n(a){let b=/^data:([^;,]+);base64,/i.exec(a);return b?.[1]?.trim().toLowerCase()}async function o(a){if(a.length>10)throw new j("ChatGPT Web accepts at most 10 attachments per request");let b=[],c=0;for(let d of a){let a="image"===d.kind?0x1400000:0x3200000;if(!d.ref.toLowerCase().startsWith("data:"))throw new j("ChatGPT Web attachments must be data URLs");let e=function(a){let b=a.indexOf(",");if(b<0)throw new j("Attachment data URL is malformed");let c=a.slice(5,b);if(!/(?:^|;)base64(?:;|$)/i.test(c))throw new j("Attachment data URL must be base64 encoded");let d=(c.split(";")[0]||"application/octet-stream").toLowerCase(),e=a.slice(b+1);if(e.length>0x6400000)throw new j("Attachment is too large");let f=e.replace(/\s/g,"");if(!f||f.length%4!=0||!/^[A-Za-z0-9+/]+={0,2}$/.test(f))throw new j("Attachment contains invalid base64 data");let g=Buffer.from(f,"base64");if(!g.length||g.toString("base64").replace(/=+$/,"")!==f.replace(/=+$/,""))throw new j("Attachment contains invalid base64 data");return{bytes:g,mimeType:d}}(d.ref);if(!e.bytes.length)throw new j("Attachment is empty");if(e.bytes.length>a)throw new j("Attachment is too large");if((c+=e.bytes.length)>0x3200000)throw new j("Combined ChatGPT Web attachments are too large");if("image"===d.kind){let a=function(a,b){let c=a.length>=8&&0x89504e47===a.readUInt32BE(0)?"png":a.length>=3&&255===a[0]&&216===a[1]?"jpeg":a.length>=3&&"GIF"===a.toString("ascii",0,3)?"gif":a.length>=12&&"RIFF"===a.toString("ascii",0,4)&&"WEBP"===a.toString("ascii",8,12)?"webp":null,d=(a.length<24||0x89504e47!==a.readUInt32BE(0)?null:{width:a.readUInt32BE(16),height:a.readUInt32BE(20)})??function(a){if(a.length<4||255!==a[0]||216!==a[1])return null;let b=2;for(;b+9<a.length;){if(255!==a[b]){b+=1;continue}let c=a[b+1];if(c>=192&&c<=195||c>=197&&c<=199||c>=201&&c<=203||c>=205&&c<=207)return{height:a.readUInt16BE(b+5),width:a.readUInt16BE(b+7)};if(216===c||1===c||c>=208&&c<=215){b+=2;continue}b+=2+a.readUInt16BE(b+2)}return null}(a)??(a.length<10||"GIF"!==a.toString("ascii",0,3)?null:{width:a.readUInt16LE(6),height:a.readUInt16LE(8)})??function(a){if(a.length<30||"RIFF"!==a.toString("ascii",0,4)||"WEBP"!==a.toString("ascii",8,12))return null;let b=a.toString("ascii",12,16);if("VP8X"===b)return a.length<30?null:{width:1+((a[24]|a[25]<<8|a[26]<<16)&0xffffff),height:1+((a[27]|a[28]<<8|a[29]<<16)&0xffffff)};if("VP8 "===b)return a.length<30?null:{width:16383&a.readUInt16LE(26),height:16383&a.readUInt16LE(28)};if("VP8L"===b){if(a.length<25)return null;let b=a.readUInt32LE(21);return{width:(16383&b)+1,height:(b>>14&16383)+1}}return null}(a),e="jpeg"===c?"image/jpeg":c?`image/${c}`:void 0;if(!e||!d)throw new j("Image attachment is undecodable or unsupported");if(b.startsWith("image/")&&b!==e&&("image/jpg"!==b||"image/jpeg"!==e))throw new j("Image attachment type does not match its data");if(Math.max(d.width,d.height)>11264||d.width*d.height>4e7)throw new j("Image attachment dimensions are too large");return{mimeType:e,width:d.width,height:d.height}}(e.bytes,d.mimeType??e.mimeType);b.push({kind:"image",name:d.name,mimeType:a.mimeType,size:e.bytes.length,data:e.bytes,width:a.width,height:a.height});continue}b.push({kind:"file",name:d.name,mimeType:d.mimeType??e.mimeType,size:e.bytes.length,data:e.bytes})}return b}function p(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function q(a){return structuredClone(a)}let r=new Set(["add","append","patch","replace"]),s=new Set(["__proto__","constructor","prototype"]);function t(a){if(Array.isArray(a)){for(let b of a)t(b);return}if(p(a))for(let[b,c]of Object.entries(a)){if(s.has(b))throw Error(`Unsafe object key in ChatGPT Web delta: ${b}`);t(c)}}function u(a){let b=[],c=a.replace(/\r\n?/g,"\n").split("\n"),d="message",e=[],f=!1,g=()=>{if(!f){d="message",e=[];return}let a=e.join("\n"),c="[DONE]"===a?{parsed:!1}:function(a){try{return{parsed:!0,value:JSON.parse(a)}}catch{return{parsed:!1}}}(a);b.push({event:d,data:a,...c.parsed?{json:c.value}:{},done:"[DONE]"===a}),d="message",e=[],f=!1};for(let a of c){if(""===a){g();continue}if(a.startsWith(":"))continue;let b=a.indexOf(":"),c=b>=0?a.slice(0,b):a,h=b>=0?a.slice(b+1):"";h.startsWith(" ")&&(h=h.slice(1)),"event"===c?d=h||"message":"data"===c&&(e.push(h),f=!0)}return g(),b}function v(a,b,c){if(c&&"-"===a)return b;if(!/^(?:0|[1-9]\d*)$/.test(a))throw Error(`Invalid ChatGPT Web array index: ${a}`);let d=Number(a);if(!Number.isSafeInteger(d)||d<0||d>(c?b:b-1))throw Error(`ChatGPT Web array index is out of bounds: ${a}`);return d}function w(a,b){if(t(b),null==a)return q(b);if("string"==typeof a&&"string"==typeof b)return a+b;if(Array.isArray(a)){let c=q(a);return Array.isArray(b)?c.push(...q(b)):c.push(q(b)),c}if(p(a)&&p(b))return{...q(a),...q(b)};throw Error(`Cannot append ChatGPT Web delta values (${typeof a}, ${typeof b})`)}function x(a){if("string"!=typeof a||!r.has(a))throw Error(`Unsupported delta operation: ${String(a)}`);return a}class y{constructor(){this.document=null,this.lastPath=null,this.lastOperation=null,this.streamDone=!1}snapshot(){return q(this.document)}ingest(a){let b=u(a),c=!1;for(let a of b){if("delta_encoding"===a.event){if("v1"!==a.json)throw Error(`Unsupported ChatGPT Web delta encoding: ${String(a.json)}`);this.document=null,this.lastPath=null,this.lastOperation=null,this.streamDone=!1;continue}"delta"===a.event&&(this.applyDelta(a.json),c=!0),a.done&&(this.streamDone=!0)}return{events:b,changed:c,done:this.streamDone}}applyDelta(a){if(!p(a))throw Error("ChatGPT Web delta payload must be an object");let b=void 0===a.p?this.lastPath:a.p,c=void 0===a.o?this.lastOperation:x(a.o);if("string"!=typeof b||null===c)throw Error("ChatGPT Web delta requires a current or inherited path and operation");this.lastPath=b,this.lastOperation=c,this.applyAt(b,c,a.v)}applyAt(a,b,c){t(c);let d=function(a){if(""===a)return[];if(!a.startsWith("/"))throw Error(`Invalid ChatGPT Web JSON Pointer: ${a}`);return a.slice(1).split("/").map(a=>{let b=a.replace(/~1/g,"/").replace(/~0/g,"~");if(s.has(b))throw Error(`Unsafe JSON Pointer segment: ${b}`);return b})}(a);if(0===d.length)return void this.applyAtRoot(b,c);let e=this.document;for(let b of d.slice(0,-1))if(Array.isArray(e))e=e[v(b,e.length,!1)];else if(p(e)&&Object.hasOwn(e,b))e=e[b];else throw Error(`ChatGPT Web delta path does not exist: ${a}`);let f=d[d.length-1];if(Array.isArray(e))return void this.applyToArray(e,f,b,c);if(!p(e))throw Error(`ChatGPT Web delta path is not mutable: ${a}`);this.applyToObject(e,f,b,c)}applyAtRoot(a,b){if("add"===a||"replace"===a){this.document=q(b);return}if("append"===a){this.document=w(this.document,b);return}if(!Array.isArray(b))throw Error("ChatGPT Web patch value must be an array");for(let a of b){if(!p(a)||"string"!=typeof a.p)throw Error("ChatGPT Web patch entry requires an explicit path and operation");this.applyAt(a.p,x(a.o),a.v)}}applyToArray(a,b,c,d){if("patch"===c)throw Error("Nested ChatGPT Web patch is unsupported");if("add"===c)return void a.splice(v(b,a.length,!0),0,q(d));let e=v(b,a.length,!1);a[e]="append"===c?w(a[e],d):q(d)}applyToObject(a,b,c,d){if("patch"===c)throw Error("Nested ChatGPT Web patch is unsupported");if("add"!==c&&!Object.hasOwn(a,b))throw Error(`ChatGPT Web delta target does not exist: ${b}`);a[b]="append"===c?w(a[b],d):q(d)}}let z="https://chatgpt.com",A=/^\/(?:cdn|unauth-mweb|auth-mweb)\/(?:assets|scripts)\/[A-Za-z0-9._-]+\.js$/,B=/(?:^|\.)oaiusercontent\.com$/i,C="__ninerouterChatGptFirstPartyV1",D="__ninerouterChatGptAbortV1",E="__ninerouterChatGptRequestV1",F=new Map,G=new WeakMap,H=null;function I(a){return a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function J(a,b){let c=a.lastIndexOf("export{");if(c<0)return null;let d=a.slice(c+7).match(RegExp(`(?:^|,)${I(b)} as ([A-Za-z_$][\\w$]*)`));return d?.[1]??null}function K(a){let b=new URL(a);if(b.origin!==z||!A.test(b.pathname))throw Error("ChatGPT Web exposed an invalid first-party asset URL");return b.toString()}async function L(a){let b=new AbortController,c=setTimeout(()=>b.abort(),2e4);c.unref?.();try{let c=await fetch(a,{signal:b.signal});if(!c.ok)throw Error("ChatGPT Web first-party asset could not be loaded");let d=Number(c.headers.get("content-length")??"0");if(Number.isFinite(d)&&d>0x1800000)throw Error("ChatGPT Web first-party asset exceeded the size limit");let e=new Uint8Array(await c.arrayBuffer());if(e.byteLength>0x1800000)throw Error("ChatGPT Web first-party asset exceeded the size limit");return new TextDecoder().decode(e)}finally{clearTimeout(c)}}function M(a,b){return a instanceof Error?a:Error(b)}async function N(a){let b=await a.evaluate(()=>({modulePreloadUrls:Array.from(document.querySelectorAll('link[rel="modulepreload"][href]'),a=>a.href),resourceUrls:performance.getEntriesByType("resource").map(a=>a.name)}));return Array.from(new Set([...b.resourceUrls,...b.modulePreloadUrls])).filter(a=>{try{let b=new URL(a);return b.origin===z&&A.test(b.pathname)}catch{return!1}})}async function O(a,b){let c,d;try{c=K(a)}catch(a){return b.lastError=M(a,"Invalid ChatGPT asset URL"),null}if(b.visited.has(c))return null;b.visited.add(c);let e=F.get(c);if(e)try{return{assetUrl:c,contract:await e}}catch{F.delete(c)}try{d=await L(c)}catch(a){return b.lastError=M(a,"ChatGPT asset discovery failed"),null}try{let a=function(a){let b=a.match(/function ([A-Za-z_$][\w$]*)\(e=!1,t=`none`(?:,n=[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*)?)?\)\{return [A-Za-z_$][\w$]*\(`finalized`,e,t(?:,n)?\)\}/)?.[1],c=a.match(/Promise\.all\(\[([A-Za-z_$][\w$]*)\.getEnforcementToken\(t,\{forceSync:!0\}\),([A-Za-z_$][\w$]*)\.getEnforcementToken\(t\)\]\)/),d=a.match(/([A-Za-z_$][\w$]*)\.safePost\(`\/sentinel\/chat-requirements\/prepare`/)?.[1],e=a.match(/function ([A-Za-z_$][\w$]*)\(e,t,n,r,i,a\)\{let o=\{\};return e\?\.token\?o\[`OpenAI-Sentinel-Chat-Requirements-Token`\]/)?.[1],f=c?.[1],g=c?.[2];if(!b||!f||!g||!d||!e)throw Error("ChatGPT Web first-party module contract was not found");let h={finalizeRequirements:J(a,b),proofManager:J(a,f),turnstileManager:J(a,g),requestClient:J(a,d),buildSentinelHeaders:J(a,e)};if(Object.values(h).some(a=>null===a))throw Error("ChatGPT Web first-party module contract exports were not found");return h}(d);return F.set(c,Promise.resolve(a)),H=c,{assetUrl:c,contract:a}}catch(f){for(let[a,e]of Object.entries(function(a){let b={},c=a.match(/function ([A-Za-z_$][\w$]*)\(e=!1,t=`none`(?:,n=[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*)?)?\)\{return [A-Za-z_$][\w$]*\(`finalized`,e,t(?:,n)?\)\}/)?.[1]??a.match(/finalizeChatRequirements\s*:\s*\(\)\s*=>\s*([A-Za-z_$][\w$]*)/)?.[1];c&&(b.finalizeRequirements=J(a,c)??c);let d=a.match(/Promise\.all\(\[([A-Za-z_$][\w$]*)\.getEnforcementToken\(t,\{forceSync:!0\}\),([A-Za-z_$][\w$]*)\.getEnforcementToken\(t\)\]\)/),e=d?.[1]??a.match(/([A-Za-z_$][\w$]*)\.getEnforcementToken\([^)]*forceSync\s*:\s*!0/)?.[1],f=d?.[2];e&&(b.proofManager=J(a,e)??e),f&&(b.turnstileManager=J(a,f)??f);let g=a.match(/([A-Za-z_$][\w$]*)\.safePost\(`\/sentinel\/chat-requirements\/prepare`/)?.[1]??a.match(/([A-Za-z_$][\w$]*)\.(?:safePost|post)\([`"]\/sentinel\/chat-requirements\/prepare[`"]/)?.[1];g&&(b.requestClient=J(a,g)??g);let h=a.match(/function ([A-Za-z_$][\w$]*)\(e,t,n,r,i,a\)\{let o=\{\};return e\?\.token\?o\[`OpenAI-Sentinel-Chat-Requirements-Token`\]/)?.[1]??a.match(/([A-Za-z_$][\w$]*)\s*=\s*[^;]{0,1200}OpenAI-Sentinel-Chat-Requirements-Token/)?.[1];h&&(b.buildSentinelHeaders=J(a,h)??h);let i=a.match(/(?:^|\}\),)([A-Za-z0-9_$]+):\(function\(e,t,n\)\{n\.d\(t,\{([^}]+)\}\);[\s\S]{0,1800}?async function ([A-Za-z_$][\w$]*)\(e\)\{let t=[A-Za-z_$][\w$]*\(\),n=[A-Za-z_$][\w$]*\(await e\(t\)\)/);if(i){let[,a,c,d]=i,e=c.match(RegExp(`(?:^|,)\\s*([A-Za-z_$][\\w$]*):\\(\\)=>${I(d)}(?:,|$)`))?.[1];e&&(b.resolveIntegrity=e,b.resolveIntegrityModule=a)}return b}(d)))b.partial[a]||(b.partial[a]=e,b.symbolAssetUrls[a]=c);if(b.partial.requestClient&&(b.partial.resolveIntegrity&&b.partial.resolveIntegrityModule||b.partial.finalizeRequirements&&b.partial.proofManager&&b.partial.buildSentinelHeaders)){let a={finalizeRequirements:b.partial.finalizeRequirements??"",proofManager:b.partial.proofManager??"",turnstileManager:b.partial.turnstileManager??b.partial.proofManager??"",requestClient:b.partial.requestClient,buildSentinelHeaders:b.partial.buildSentinelHeaders??"",...b.partial.resolveIntegrity?{resolveIntegrity:b.partial.resolveIntegrity,resolveIntegrityModule:b.partial.resolveIntegrityModule}:{}},d=b.symbolAssetUrls.finalizeRequirements??c;return H=d,{assetUrl:d,contract:a}}let a=Object.keys(b.partial);b.lastError=a.length?Error(`ChatGPT module discovery incomplete: found ${a.join(", ")}`):M(f,"ChatGPT module discovery failed");let e=function(a,b){let c=[],d=new Set,e=/["']\.\/([A-Za-z0-9_-]+\.js)["']/g;for(let f=e.exec(a);f;f=e.exec(a)){let a;try{a=K(new URL(`./${f[1]}`,b).toString())}catch{continue}d.has(a)||(d.add(a),c.push(a))}return c}(d,c);return b.queue.push(...e.filter(a=>!b.visited.has(a))),null}}async function P(a){for(;a.index<a.queue.length&&a.visited.size<512;){let b=a.queue[a.index];a.index+=1;let c=await O(b,a);if(c)return c}return null}async function Q(a){let b={queue:[...H?[H]:[]],visited:new Set,index:0,lastError:null,partial:{},symbolAssetUrls:{}},c=Date.now()+15e3;for(;Date.now()<=c&&b.visited.size<512;){b.queue.push(...await N(a));let d=await P(b);if(d)return d;Date.now()<c&&await new Promise(a=>setTimeout(a,250))}throw Error("ChatGPT Web first-party request module was not loaded")}async function R(a){let b,c,d,e,f,g;if(await a.evaluate(a=>{let b=globalThis;return"object"==typeof b[a]&&null!==b[a]},C))return;let{assetUrl:h,contract:i}=await Q(a),j=(b=JSON.stringify(K(h)),c=JSON.stringify(i),d=JSON.stringify(C),i.resolveIntegrity&&i.resolveIntegrityModule?`import * as upstream from ${b};const names = ${c};const modules = upstream.__webpack_modules__;const factory = modules?.[names.resolveIntegrityModule];if (typeof factory !== "function") throw new Error("ChatGPT integrity module factory is unavailable");const exports = {};const requireShim = id => {if (id === "TI" || id === "DD") return { a: () => crypto.randomUUID() };const real = modules[id];if (typeof real === "function") {const nested = {};real({}, nested, requireShim);return nested;}throw new Error("Unsupported ChatGPT integrity dependency: " + id);};requireShim.d = (target, definitions) => {for (const [name, getter] of Object.entries(definitions)) {Object.defineProperty(target, name, { enumerable: true, get: getter });}};factory({}, exports, requireShim);const resolveIntegrity = exports[names.resolveIntegrity];if (typeof resolveIntegrity !== "function") throw new Error("ChatGPT integrity resolver is unavailable");const sessionPromise = fetch("/api/auth/session", { credentials: "include" }).then(async response => {if (!response.ok) throw new Error("ChatGPT browser session is unavailable");return response.json();});const requestClient = {safePost: async (path, options = {}) => {const headers = new Headers(options.additionalHeaders || {});const session = await sessionPromise;if (typeof session?.accessToken === "string" && session.accessToken) {headers.set("Authorization", "Bearer " + session.accessToken);}headers.set("Accept", "application/json");if (!headers.has("Content-Type")) headers.set("Content-Type", "application/json");const body = typeof options.requestBody === "string" ? options.requestBody : JSON.stringify(options.requestBody ?? {});const response = await fetch("/backend-api" + path, {method: "POST", credentials: "include", headers, body, signal: options.signal});if (options.skipJsonTransform) return response;if (!response.ok) throw new Error("ChatGPT request failed with status " + response.status);return response.json();}};window[${d}] = { requestClient, resolveIntegrity };`:`import * as upstream from ${b};const names = ${c};window[${d}] = {finalizeRequirements: upstream[names.finalizeRequirements],proofManager: upstream[names.proofManager],turnstileManager: upstream[names.turnstileManager],requestClient: upstream[names.requestClient],buildSentinelHeaders: upstream[names.buildSentinelHeaders],resolveIntegrity: names.resolveIntegrity ? upstream[names.resolveIntegrity] : undefined};`),k=(e=[],f=a=>{let b=a.url();(b===h||b.startsWith("blob:"))&&e.push({kind:"requestfailed",detail:`${b} failed: ${a.failure()?.errorText??"unknown error"}`})},g=a=>{e.push({kind:"pageerror",detail:a instanceof Error?a.message:String(a)})},a.on("requestfailed",f),a.on("pageerror",g),{signals:e,dispose:()=>{a.off("requestfailed",f),a.off("pageerror",g)}});try{await a.evaluate(({bridgeKey:a,moduleSource:b})=>new Promise((c,d)=>{let e=globalThis;if("object"==typeof e[a]&&null!==e[a])return void c();let f="",g=new AbortController;document.addEventListener("securitypolicyviolation",a=>{f||(f=`${a.violatedDirective} blocked ${a.blockedURI}`)},{signal:g.signal});let h=URL.createObjectURL(new Blob([b],{type:"text/javascript"})),i=document.createElement("script");i.type="module",i.src=h,i.onload=()=>{URL.revokeObjectURL(h),g.abort(),"object"==typeof e[a]&&null!==e[a]?c():d(Error("ChatGPT Web first-party bridge did not initialize"))},i.onerror=()=>{URL.revokeObjectURL(h),g.abort(),d(Error(f?`csp: ${f}`:"no in-page reason"))},document.head.appendChild(i)}),{bridgeKey:C,moduleSource:j})}catch(c){let a=c instanceof Error?c.message:String(c),b=[...k.signals];throw a.startsWith("csp: ")?b.unshift({kind:"csp",detail:a.slice(5)}):a&&"no in-page reason"!==a&&b.push({kind:"pageerror",detail:a}),Error(function(a){let b="ChatGPT Web first-party bridge module failed to load";if(0===a.length)return`${b} (no CSP violation, failed request or page error was captured)`;let c=a.find(a=>"csp"===a.kind)??a.find(a=>"requestfailed"===a.kind)??a[0];return`${b}: ${c.kind}: ${c.detail}`}(b))}finally{k.dispose()}}async function S(a,b,c){return a.evaluate(async({abortKey:a,attachments:b,bridgeKey:c,requestId:d})=>{let e=globalThis,f=e[c];if("function"!=typeof f?.requestClient?.safePost)throw Error("ChatGPT Web first-party request client is unavailable");let g=e[a]??={},h=new AbortController;g[d]=h;let i=[];for(let a of b){let b="image"===a.kind?"multimodal":"my_files",c=await f.requestClient.safePost("/files",{requestBody:{file_name:a.name,file_size:a.size,use_case:b,timezone_offset_min:new Date().getTimezoneOffset(),reset_rate_limits:!1,supports_direct_azure_multipart:!0,mime_type:a.mimeType,entry_surface:"chat_composer",selection_method:"file_picker",client_resolved_mime_type:a.mimeType,mime_resolution_source:"filename_extension",store_in_library:!1},signal:h.signal}),d=c;if(c instanceof Response){if(!c.ok){let a=c.status;throw await c.body?.cancel().catch(()=>{}),Error(`ChatGPT Web file registration failed with status ${a}`)}d=await c.json()}if(!d||"object"!=typeof d||"string"!=typeof d.file_id||"string"!=typeof d.upload_url)throw Error("ChatGPT Web file registration returned an invalid response");i.push({fileId:d.file_id,uploadUrl:d.upload_url})}return i},{abortKey:D,attachments:c.map(({kind:a,mimeType:b,name:c,size:d})=>({kind:a,mimeType:b,name:c,size:d})),bridgeKey:C,requestId:b})}async function T(a,b){for(let c of a){let a=await fetch(function(a){let b=new URL(a);if("https:"!==b.protocol||!B.test(b.hostname))throw Error("ChatGPT Web returned an invalid upload destination");return b.toString()}(c.uploadUrl),{method:"PUT",headers:{Accept:"application/json, text/plain, */*","Content-Type":c.attachment.mimeType,"x-ms-blob-type":"BlockBlob","x-ms-version":"2020-04-08"},body:new Uint8Array(c.attachment.data),signal:b??void 0});if(!a.ok)throw Error(`ChatGPT Web attachment upload failed with status ${a.status}`)}}async function U(a,b,c){await a.evaluate(async({abortKey:a,bridgeKey:b,registered:c,requestId:d})=>{let e=globalThis,f=e[b];if("function"!=typeof f?.requestClient?.safePost)throw Error("ChatGPT Web first-party request client is unavailable");let g=e[a],h=g?.[d];if(!h)throw Error("ChatGPT Web request cancellation scope is unavailable");for(let a of c){let b="image"===a.kind?"multimodal":"my_files",c=await f.requestClient.safePost("/files/process_upload_stream",{requestBody:{file_id:a.fileId,use_case:b,index_for_retrieval:"image"!==a.kind,file_name:a.name,entry_surface:"chat_composer",metadata:{store_in_library:!1,is_temporary_chat:!0,library_eligibility_reason:"eligible",is_project_thread:!1}},signal:h.signal,skipJsonTransform:!0});if(c instanceof Response){let a=c.status,b=c.ok;if(await c.text(),!b)throw Error(`ChatGPT Web file processing failed with status ${a}`)}}},{abortKey:D,bridgeKey:C,registered:c,requestId:b})}async function V(a,b,c,d){let e=function(a){if("free"===a.kind)return{model:"auto",reason:a.thinkEnabled};let b="GPT-5.6 Sol"===a.modelLabel?"gpt-5-6":"gpt-5-5";return 4===a.effortIndex?{model:`${b}-pro`,reason:!1}:{model:b,reason:a.effortIndex>0}}(b.selection);await a.evaluate(({mode:a,prompt:b,registered:c,requestId:d,requestKey:e,pluginHints:f})=>{let g=globalThis,h=c.filter(a=>"image"===a.kind),i=c.map(a=>({id:a.fileId,size:a.size,name:a.name,mime_type:a.mimeType,..."image"===a.kind?{width:a.width,height:a.height}:{non_library_my_files_injest_upload:!0},source:"local",is_big_paste:!1})),j=[...a.reason?["reason"]:[],...Array.isArray(f)?f:[]],k={...j.length?{system_hints:j}:{},...i.length?{attachments:i}:{},serialization_metadata:{custom_symbol_offsets:[]}},l=h.length?{content_type:"multimodal_text",parts:[...h.map(a=>({content_type:"image_asset_pointer",asset_pointer:`sediment://${a.fileId}`,size_bytes:a.size,width:a.width,height:a.height})),b]}:{content_type:"text",parts:[b]};(g[e]??={})[d]={body:{action:"next",messages:[{id:crypto.randomUUID(),author:{role:"user"},create_time:Date.now()/1e3,content:l,metadata:k}],parent_message_id:"client-created-root",model:a.model,timezone_offset_min:new Date().getTimezoneOffset(),timezone:Intl.DateTimeFormat().resolvedOptions().timeZone,history_and_training_disabled:!0,conversation_mode:{kind:"primary_assistant"},system_hints:j,supports_buffering:!0,supported_encodings:["v1"]}}},{mode:e,prompt:b.prompt,registered:d,requestId:c,requestKey:E,pluginHints:Array.isArray(b.pluginHints)?b.pluginHints:[]})}async function W(a,b){await a.evaluate(async({abortKey:a,bridgeKey:b,requestId:c,requestKey:d})=>{let e=globalThis,f=e[b],g=[f?.finalizeRequirements,f?.proofManager?.getEnforcementToken,f?.turnstileManager?.getEnforcementToken,f?.buildSentinelHeaders].every(a=>"function"==typeof a),h="function"==typeof f?.resolveIntegrity&&"function"==typeof f?.requestClient?.safePost;if(!g&&!h)throw Error("ChatGPT Web first-party challenge bridge is incomplete");let i=e[a]?.[c],j=e[d]?.[c];if(!i||!j)throw Error("ChatGPT Web request scope is unavailable");if(h){let a=await f.resolveIntegrity(async a=>f.requestClient.safePost("/sentinel/chat-requirements/prepare",{requestBody:{p:a},signal:i.signal}));j.additionalHeaders=a?.headers??{}}else{let a=await f.finalizeRequirements(!1,"none");if(i.signal.aborted)throw new DOMException("Aborted","AbortError");let[b,c]=await Promise.all([f.proofManager.getEnforcementToken(a,{forceSync:!0}),f.turnstileManager.getEnforcementToken(a)]);j.additionalHeaders=f.buildSentinelHeaders(a,c,b,null,null,null)}},{abortKey:D,bridgeKey:C,requestId:b,requestKey:E})}async function X(a,b){await a.evaluate(async({abortKey:a,bridgeKey:b,requestId:c,requestKey:d})=>{let e=globalThis,f=e[b]?.requestClient,g=e[a]?.[c],h=e[d]?.[c];if("function"!=typeof f?.safePost||!g||!h)throw Error("ChatGPT Web conversation request scope is unavailable");let i=await f.safePost("/f/conversation",{requestBody:h.body,additionalHeaders:h.additionalHeaders,signal:g.signal,skipJsonTransform:!0});if(!(i instanceof Response))throw Error("ChatGPT Web conversation returned an invalid response");if(!i.ok){let a=i.status,b="";try{let a=await i.json(),c=a.detail&&"object"==typeof a.detail?a.detail:a.error&&"object"==typeof a.error?a.error:a,d=c.code??c.message??c.type;"string"==typeof d&&(b=d.slice(0,160))}catch{await i.body?.cancel().catch(()=>{})}throw Error(`ChatGPT Web conversation failed with status ${a}${b?` (${b})`:""}`)}h.response=i},{abortKey:D,bridgeKey:C,requestId:b,requestKey:E})}async function Y(a,b){return a.evaluate(async({requestId:a,requestKey:b,responseLimit:c})=>{let d=globalThis,e=d[b]?.[a],f=e?.response;if(!(f instanceof Response))throw Error("ChatGPT Web conversation response is unavailable");let g=f.body?.getReader();if(!g)throw Error("ChatGPT Web conversation returned an empty stream");let h=new TextDecoder,i=[],j=0;try{for(;;){let{done:a,value:b}=await g.read();if(a)break;if(b){if((j+=b.byteLength)>c)throw await g.cancel().catch(()=>{}),Error("ChatGPT Web conversation response exceeded the size limit");i.push(h.decode(b,{stream:!0}))}}i.push(h.decode())}finally{try{g.releaseLock()}catch{}}return i.join("")},{requestId:b,requestKey:E,responseLimit:0x1000000})}async function Z(a,b,c,d){let e=d.map(({attachment:a,fileId:b})=>({fileId:b,kind:a.kind,mimeType:a.mimeType,name:a.name,size:a.size,width:a.width,height:a.height}));return await U(a,c,e),await V(a,b,c,e),await W(a,c),await X(a,c),Y(a,c)}async function $(a,b){await a.evaluate(({abortKey:a,requestId:b,requestKey:c})=>{let d=globalThis,e=d[a],f=d[c];delete e?.[b],delete f?.[b]},{abortKey:D,requestId:b,requestKey:E}).catch(()=>{})}async function _(a,b){await a.evaluate(({abortKey:a,requestId:b})=>{let c=globalThis[a];c?.[b]?.abort()},{abortKey:D,requestId:b}).catch(()=>{})}async function aa(a,b){let c=G.get(a)??Promise.resolve(),d=()=>{},e=new Promise(a=>{d=a}),f=c.catch(()=>{}).then(()=>e);G.set(a,f),await c.catch(()=>{});try{return await b()}finally{d(),G.get(a)===f&&G.delete(a)}}async function ab(a,b,c={}){let d=c.requestId??crypto.randomUUID();return aa(a,async()=>{if(c.signal?.aborted)throw new DOMException("Aborted","AbortError");let e=()=>{_(a,d)};c.signal?.addEventListener("abort",e,{once:!0});try{await R(a);let e=(await S(a,d,b.attachments)).map((a,c)=>({...a,attachment:b.attachments[c]}));return await T(e,c.signal),await Z(a,b,d,e)}finally{c.signal?.removeEventListener("abort",e),await $(a,d)}})}let ac="https://chatgpt.com";function ad(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function ae(a){if("string"!=typeof a||!a.trim())throw Error("ChatGPT Web browser turn requires a non-empty prompt");return a}function af(a){let b;try{b=new URL(a)}catch{throw Error("ChatGPT Web browser session requires a valid URL")}if(b.origin!==ac)throw Error("ChatGPT Web browser session requires the first-party chatgpt.com origin")}function ag(a,b,c){if(!ad(a)||!ad(a.message))return null;let d=a.message,e=ad(d.author)?d.author:null,f=ad(d.content)?d.content:null,g=Array.isArray(f?.parts)?f.parts:[];return e?.role==="assistant"&&f?.content_type==="text"&&g.every(a=>"string"==typeof a)&&"finished_successfully"===d.status&&!0===d.end_turn?{conversationId:b,turnExchangeId:c,text:g.join(""),status:d.status,endTurn:!0}:null}class ah{constructor(a,b={}){this.page=a,this.pageUrl=b.pageUrl??"https://chatgpt.com/?temporary-chat=true",this.selection=b.selection,this.closePageOnCleanup=!0===b.closePageOnCleanup,this.executePageRequest=b.executePageRequest??ab}url(){return this.pageUrl}async start(){af(this.pageUrl);let a=async()=>{this.closePageOnCleanup&&await this.page.close().catch(()=>{})};try{let b=!1;try{b=new URL(this.page.url()).origin===ac}catch{b=!1}return b||await this.page.goto(this.pageUrl,{waitUntil:"domcontentloaded",timeout:3e4}),af(this.page.url()),a}catch(b){throw await a(),b}}async submitPrompt(a){if(!this.selection)throw Error("ChatGPT Web direct request requires a model selection");return af(this.page.url()),this.executePageRequest(this.page,{prompt:ae(a.prompt),attachments:a.attachments,selection:this.selection,pluginHints:a.pluginHints??[]},{signal:a.signal})}}async function ai(a,b){let c;if(b.signal?.aborted)throw Error("ChatGPT Web browser turn aborted");let d=ae(b.prompt);af(a.url());let e=b.timeoutMs??18e4;if(!Number.isFinite(e)||e<=0)throw Error("ChatGPT Web browser turn requires a positive timeout");let f=null,g=new Promise((a,b)=>{c=setTimeout(()=>b(Error("ChatGPT Web browser turn timed out")),e),c.unref?.()});try{let c=(async()=>(f=await a.start(),function(a){if("string"!=typeof a||!a.trim())throw Error("ChatGPT Web direct conversation returned an empty stream");let b=new y,c="",d="",e=null;for(let f of u(a))ad(f.json)&&("string"==typeof f.json.conversation_id&&(c=f.json.conversation_id),"string"==typeof f.json.turn_exchange_id&&(d=f.json.turn_exchange_id)),"delta_encoding"===f.event&&(e=ag(b.snapshot(),c,d)??e,b=new y),b.ingest(function(a){let b="message"===a.event?"":`event: ${a.event}
230
+ `;return`${b}data: ${a.data}
261
231
 
262
- `)),b.enqueue(a.encode(e.$U)),b.close()}catch(c){b.enqueue(a.encode(`data: ${JSON.stringify({error:{message:c.message||"gemini-web stream failed"}})}
232
+ `}(f)),e=ag(b.snapshot(),c,d)??e;let f=ag(b.snapshot(),c,d)??e;return f?{...f,conversationId:c,turnExchangeId:d}:function(a,b,c){let d=ag(a,b,c);if(d)return d;if(!ad(a)||!ad(a.message)){let b=ad(a)?Object.keys(a).sort().join(","):"non-object";throw Error(`ChatGPT Web assistant document is incomplete (root=${b})`)}let e=a.message,f=ad(e.author)?e.author:null,g=ad(e.content)?e.content:null,h=Array.isArray(g?.parts)?g.parts:[],i=JSON.stringify({messageKeys:Object.keys(e).sort(),role:f?.role??null,contentType:g?.content_type??null,partCount:h.length,partTypes:h.map(a=>typeof a),status:e.status??null,endTurn:e.end_turn??null});throw Error(`ChatGPT Web assistant document is incomplete (${i})`)}(b.snapshot(),c,d)}(await a.submitPrompt({prompt:d,attachments:b.attachments??[],pluginHints:b.pluginHints??[],signal:b.signal}))))();return c.catch(()=>{}),await Promise.race([c,g])}finally{clearTimeout(c),await f?.()}}var aj=c(14229);let ak={"Content-Type":"text/event-stream","Cache-Control":"no-cache","X-Accel-Buffering":"no"};async function al(a,b,c){let d=await a.text();try{let e=JSON.parse(d),f=e?.choices?.[0]?.message?.content||"",{content:g,toolCalls:h,finishReason:i}=(0,aj.mU)(f,b,c);return h?(e.choices[0].message={role:"assistant",content:null,tool_calls:h},e.choices[0].finish_reason=i):e.choices[0].message.content=g,new Response(JSON.stringify(e),{status:a.status,headers:{"Content-Type":"application/json"}})}catch{return new Response(d,{status:a.status,headers:{"Content-Type":"application/json"}})}}async function am(a,b,c,d){var e,f,g,h;let i,j,k,l,m;if(!a.ok)return a;let n=await al(a,b,d.idSeed??"cgpt");return c?new Response((e=await n.json(),f=d.cid,g=d.created,h=d.model,i=new TextEncoder,k=(j=e?.choices?.[0]??{}).message??{},l=j.finish_reason??"stop",m=(a,b)=>{var c;return i.encode((c={id:f,object:"chat.completion.chunk",created:g,model:h,system_fingerprint:null,choices:[{index:0,delta:a,finish_reason:b,logprobs:null}]},`data: ${JSON.stringify(c)}
263
233
 
264
- `)),b.enqueue(a.encode(e.$U)),b.close()}finally{await l.close().catch(()=>{}),await d.close().catch(()=>{});let{releaseGeminiBrowser:a}=await c.e(9745).then(c.bind(c,69745));await a(f)}}},{highWaterMark:16384});return{response:new Response(g,{status:200,headers:{...e.uB}}),url:D,headers:{},transformedBody:b}}let s=await x({page:l,baseCount:o.count,baseText:o.lastText,signal:h});return{response:new Response(JSON.stringify(G(s,B)),{status:200,headers:{"Content-Type":"application/json"}}),url:D,headers:{},transformedBody:b}}catch(c){let a=c instanceof Error?c.message:"Unknown error";if((0,f.BE)(a))return{response:R(503,"Gemini Web needs a Chrome/Chromium binary. Install Google Chrome, set NINEROUTER_BROWSER_BIN or CHROME_PATH to an existing Chrome, or run `npx playwright-core install chromium`."),url:D,headers:{},transformedBody:b};if(c instanceof Error&&("TimeoutError"===c.name||a.includes("waitForSelector")||a.includes("Timeout")||a.includes("actionability")||a.includes("interception")))return{response:R(400,a),url:D,headers:{},transformedBody:b};return{response:R(500,a),url:D,headers:{},transformedBody:b}}finally{K&&h?.removeEventListener("abort",K);try{await J?.close()}catch{}if(C){let{releaseGeminiBrowser:a}=await c.e(9745).then(c.bind(c,69745));await a(C)}}}async generateMedia({prompt:a,n:b=1,size:d,credentials:e,signal:f,log:g}){if(!a)throw Error("prompt is required for image generation");let h=Q(e);if(!h)throw Error("Missing Gemini cookies");let j=[];for(let e=0;e<Math.max(1,b);e++){let b=null,e=null;try{let{acquireGeminiBrowser:g}=await c.e(9745).then(c.bind(c,69745));b=await g(F),e=await b.newContext({userAgent:E}),await e.addCookies((0,i.EU)(h,".google.com"));let k=await e.newPage(),l=await M(k),m=await N(k,l);await m.click(),await k.keyboard.insertText(function(a,b){let c=b?` (aspect ratio ${b})`:"";return`Generate an image${c}: ${a}`}(a,d)),await k.waitForTimeout(300),await k.keyboard.press("Enter");let n=await C(k,{signal:f});j.push(n)}finally{try{await e?.close()}catch{}if(b){let{releaseGeminiBrowser:a}=await c.e(9745).then(c.bind(c,69745));await a(b)}}}return j}}},32447:(a,b,c)=>{c.d(b,{BL:()=>g});var d=c(96179),e=c(52007);let f=["anthropic_version","anthropic_beta","client_metadata","mcp_servers","stop_sequences","thinking","top_k"];class g extends d.L{constructor(){super("kimchi")}transformRequest(a,b,c,d){let g,h=super.transformRequest(a,b,c,d);if(!h||"object"!=typeof h)return h;for(let a of(!function(a){var b;if(!a?.system||!Array.isArray(a.messages))return;let c=("string"==typeof(b=a.system)?b:Array.isArray(b)?b.map(a=>"string"==typeof a?a:"string"==typeof a?.text?a.text:"").filter(Boolean).join("\n"):"").trim();if(!c)return;let d=a.messages.find(a=>a?.role==="system");d?"string"==typeof d.content?d.content=`${c}
234
+ `))},new ReadableStream({start(a){a.enqueue(m({role:"assistant"},null)),Array.isArray(k.tool_calls)&&k.tool_calls.length>0?(k.tool_calls.forEach((b,c)=>{a.enqueue(m({tool_calls:[{index:c,...b}]},null))}),a.enqueue(m({},l))):a.enqueue(m({content:k.content??""},l)),a.enqueue(i.encode("data: [DONE]\n\n")),a.close()}})),{status:200,headers:ak}):n}let an="https://chatgpt.com/?temporary-chat=true",ao=["chatgpt.com","openai.com"];function ap(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function aq(a){let b=a.toLowerCase().replace(/^\./,"");return ao.some(a=>b===a||b.endsWith(`.${a}`))}function ar(a){if(!ap(a)||!Array.isArray(a.cookies)||!Array.isArray(a.origins))throw Error("ChatGPT Web browser storage state is invalid");for(let b of a.cookies){if(!ap(b)||"string"!=typeof b.name||!b.name||"string"!=typeof b.value||"string"!=typeof b.domain||"string"!=typeof b.path||!b.path.startsWith("/")||"number"!=typeof b.expires||!Number.isFinite(b.expires)||"boolean"!=typeof b.httpOnly||"boolean"!=typeof b.secure||!["Strict","Lax","None"].includes(String(b.sameSite)))throw Error("ChatGPT Web browser storage state contains an invalid cookie");if(!aq(b.domain))throw Error("ChatGPT Web browser storage state contains a foreign cookie domain")}for(let b of a.origins)!function(a){let b;if(!ap(a)||"string"!=typeof a.origin||!Array.isArray(a.localStorage))throw Error("ChatGPT Web browser storage state contains an invalid origin");try{b=new URL(a.origin)}catch{throw Error("ChatGPT Web browser storage state contains an invalid origin")}if("https:"!==b.protocol||!aq(b.hostname))throw Error("ChatGPT Web browser storage state contains a foreign origin");for(let b of a.localStorage)if(!ap(b)||"string"!=typeof b.name||"string"!=typeof b.value)throw Error("ChatGPT Web browser storage state contains invalid local storage")}(b);let b=structuredClone(a);for(let a of b.cookies)a.name.startsWith("__Host-")&&(a.domain=a.domain.replace(/^\./,""),a.path="/",a.secure=!0);return b}function as(a){if(null==a)return"";if("string"==typeof a)return a;if(!Array.isArray(a))throw Error("ChatGPT Web clean-room adapter supports text content only");let b=[];for(let c of a){if(ap(c)&&("text"===c.type||"input_text"===c.type)&&"string"==typeof c.text){b.push(c.text);continue}if(!("string"==typeof c?c.toLowerCase().startsWith("data:image/"):!!k(c)&&["file","image","image_url","input_file","input_image"].includes(l(c.type)?.toLowerCase()??"")))throw Error("ChatGPT Web clean-room adapter received unsupported content")}return b.join("")}function at(a){return"string"==typeof a.reasoning_effort?a.reasoning_effort.toLowerCase():ap(a.reasoning)&&"string"==typeof a.reasoning.effort?a.reasoning.effort.toLowerCase():null}function au(a){if(null===a||"medium"===a)return 1;if(["none","off","minimal","low"].includes(a))return 0;if("high"===a)return 2;if("xhigh"===a||"max"===a)return 3;throw Error(`ChatGPT Web clean-room adapter does not support reasoning effort ${a}`)}function av(a){let b=a.providerSpecificData,c=b?.storageState??a.apiKey;if("string"==typeof c){let a=c.trim();if(a.startsWith("{"))try{return ar(JSON.parse(a))}catch{throw Error("ChatGPT Web browser storage state JSON is invalid")}let b=a.trim().replace(/^Cookie:\s*/i,"");if(!b)throw Error("ChatGPT Web Cookie header is empty");if(!b.includes("="))return ar({cookies:[{name:"__Secure-next-auth.session-token",value:b,domain:".chatgpt.com",path:"/",expires:-1,httpOnly:!0,secure:!0,sameSite:"Lax"}],origins:[]});let d=b.split(/;\s*/).map(a=>{let b=a.indexOf("=");if(b<=0)throw Error("ChatGPT Web Cookie header contains an invalid cookie");return[a.slice(0,b).trim(),a.slice(b+1)]});if(!d.some(([a])=>/^__Secure-next-auth\.session-token(?:\.\d+)?$/.test(a))){if(b.includes(";")||b.includes("="))throw Error("ChatGPT Web Cookie header is missing __Secure-next-auth.session-token");d.splice(0,d.length,["__Secure-next-auth.session-token",b])}return ar({cookies:d.map(([a,b])=>({name:a,value:b,domain:".chatgpt.com",path:"/",expires:-1,httpOnly:a.startsWith("__Secure-")||a.startsWith("__Host-"),secure:!0,sameSite:"Lax"})),origins:[]})}return ar(c)}function aw(a){return"string"==typeof a&&a.trim()?a.trim():void 0}function ax(a){let b=process.env;return[a,b.CHATGPT_WEB_CHROME_PATH,b.CHROME_PATH,"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome","/usr/bin/google-chrome","/usr/bin/google-chrome-stable","/usr/bin/chromium","/usr/bin/chromium-browser",...b.PROGRAMFILES?[(0,g.join)(b.PROGRAMFILES,"Google","Chrome","Application","chrome.exe")]:[],...b["PROGRAMFILES(X86)"]?[(0,g.join)(b["PROGRAMFILES(X86)"],"Google","Chrome","Application","chrome.exe")]:[],...b.LOCALAPPDATA?[(0,g.join)(b.LOCALAPPDATA,"Google","Chrome","Application","chrome.exe")]:[]].find(a=>!!(a?.trim()&&(0,f.existsSync)(a.trim())))}async function ay(a){let b=(0,h.gZ)(a.proxyOptions),c=function({connectionId:a,storageState:b,proxy:c}){return(0,e.createHash)("sha256").update(a).update("\0").update(JSON.stringify(b)).update("\0").update(c?c.server:"").update("\0").update(c?.bypass||"").digest("hex")}({connectionId:a.connectionId,storageState:a.storageState,proxy:b}),d=await (0,h.qG)(`chatgpt-web-cleanroom:${c}`,{cookieDomain:"chatgpt.com",storageState:a.storageState,userAgent:a.userAgent,locale:a.locale,timezone:a.timezone,warmupUrl:an,headless:!0,executablePath:a.chromeExecutablePath,...b?{proxy:b}:{}}),f=d.warmupPage&&!d.warmupPage.isClosed()?d.warmupPage:await (0,h.we)(d);return d.warmupPage!==f&&(d.warmupPage=f),new ah(f,{pageUrl:an,selection:a.selection,closePageOnCleanup:!1})}function az(a,b,c,d={}){let f=d.id??`chatcmpl-${(0,e.randomUUID)()}`,g=d.created??Math.floor(Date.now()/1e3);return c?new Response([{id:f,object:"chat.completion.chunk",created:g,model:a,choices:[{index:0,delta:{role:"assistant"},finish_reason:null}]},{id:f,object:"chat.completion.chunk",created:g,model:a,choices:[{index:0,delta:{content:b.text},finish_reason:null}]},{id:f,object:"chat.completion.chunk",created:g,model:a,choices:[{index:0,delta:{},finish_reason:"stop"}]}].map(a=>`data: ${JSON.stringify(a)}
265
235
 
266
- ${d.content}`:Array.isArray(d.content)&&d.content.unshift({type:"text",text:c}):a.messages.unshift({role:"system",content:c})}(h),f))void 0!==h[a]&&delete h[a];if(delete h.system,g=(0,e.gK)(a),(g?.provider==="anthropic"||g?.upstreamProvider==="anthropic"||/(^|[-_/])(?:claude|anthropic)(?:[-_/]|$)/i.test(String(a||"")))&&(delete h.reasoning_effort,delete h.reasoning,delete h.thinking),Array.isArray(h?.messages))for(let a of h.messages)a&&"object"==typeof a&&(delete a.cache_control,Array.isArray(a.content)&&(a.content=a.content.map(a=>{if(!a||"object"!=typeof a)return a;let{cache_control:b,signature:c,...d}=a;return d})));Array.isArray(h?.tools)&&(h.tools=h.tools.map(a=>{if(!a||"object"!=typeof a)return a;let{cache_control:b,...c}=a;return c}));if(Array.isArray(h?.messages))for(let a of h.messages)a&&"assistant"===a.role&&"string"==typeof a.reasoning_content&&a.reasoning_content.length>8&&delete a.reasoning_content;return h}}},36732:(a,b,c)=>{c.d(b,{Rb:()=>h});var d=c(96179),e=c(12132);let f=new Set(["mimo-v2.6-pro","mimo-v2.6-flash","mimo-v2.6-pro-ultraspeed"]),g="__mimoAccountCookie";class h extends d.L{constructor(){super("xiaomi-mimo")}static isAccountRoute(a,b){let c,d,e=(d=(c=String(a||"")).indexOf("/"))>=0?c.slice(d+1):c;return!!f.has(e)&&!!(b?.[g]||b?.providerSpecificData?.mimoPassToken)}isAccountRoute(a,b){return h.isAccountRoute(a,b)}buildUrl(a,b,c=0,d=null){return this.isAccountRoute(a,d)?`${(0,e.resolveMimoServerBase)(d?.providerSpecificData)}/api/route/chat/completions`:super.buildUrl(a,b,c,d)}buildHeaders(a,b=!0,c,d){return this.isAccountRoute(d,a)&&a?.[g]?{"Content-Type":"application/json",Accept:b?"text/event-stream":"application/json","User-Agent":e.MIMO_API_UA,Cookie:a[g]}:super.buildHeaders(a,b,c,d)}transformRequest(a,b,c,d){let e=super.transformRequest(a,b,c,d);if(this.isAccountRoute(a,d)){let a=e.reasoning_effort||b?.reasoning_effort||b?.output_config?.effort;if(a){delete e.reasoning_effort;let b="xhigh"===String(a).toLowerCase()?"high":String(a).toLowerCase();e.output_config={...e.output_config||{},effort:b}}null==e.temperature&&(e.temperature=1),null==e.top_p&&(e.top_p=.95)}return e}async execute(a){let{model:b,credentials:c,proxyOptions:d=null}=a;if(!this.isAccountRoute(b,c))return super.execute(a);let f=await (0,e.getMimoAccountCookie)(c?.providerSpecificData,d);if(!f)return super.execute(a);c[g]=f;let h=await super.execute(a);if(401===h.response.status){(0,e.invalidateMimoAccountCookieCache)();let b=await (0,e.getMimoAccountCookie)(c?.providerSpecificData,d).catch(()=>null);if(b)return c[g]=b,super.execute(a)}return h}}},49059:(a,b,c)=>{c.d(b,{v:()=>e});var d=c(96179);class e extends d.L{constructor(){super("codebuddy-cn")}transformRequest(a,b,c,d){let e=super.transformRequest(a,b,c,d);e.stream=!0;let f="You are a helpful AI assistant that helps with software engineering tasks.",g=/you are claude code|claude.?code.+official.+cli|anthropic.+official.+cli|anxthxropic.+official.+cli|you are (?:cursor|windsurf|cline|aider|continue|copilot|cody)|you are an? (?:ai )?(?:coding |code )?agent|cc_entrypoint\s*=\s*(?:cli|vscode|jetbrains|gui)|claude.?code.+issues|give feedback.+claude.?code|you are .{0,30}(?:powerful )?ai agent|orchestration capabilities|OhMyOpenCode|<agent-identity>|<Role>|<Behavior_Instructions>/i;Array.isArray(e.messages)&&(e.messages=e.messages.map(a=>{let b;if(!a||"system"!==a.role)return a;let c="string"==typeof(b=a.content)?b:Array.isArray(b)?b.map(a=>a&&"string"==typeof a.text?a.text:"").join("\n"):"";return c&&(c.length>2e3||g.test(c))?"string"==typeof a.content?{...a,content:f}:{...a,content:[{type:"text",text:f}]}:a}));let h=e.reasoning_effort;return"none"===h||"off"===h?delete e.reasoning_effort:h&&(e.reasoning_summary="auto"),e.tool_choice&&"object"==typeof e.tool_choice&&(e.tool_choice="required"),e}parseError(a,b){if(b)try{let a=JSON.parse(b),c=a?.msg||a?.message||a?.error?.message||"";if(a?.code===6004||/超出频率限制|frequency limit|限额/i.test(c)){let a=null,b=c.match(/(\d{4}-\d{2}-\d{2})\s+(\d{2}:\d{2}:\d{2})(?:\s*UTC\+?([0-9:]+))?/i);if(b){let c=b[1],d=b[2],e=b[3]?b[3].includes(":")?b[3].startsWith("+")?b[3]:`+${b[3]}`:`+${b[3].padStart(2,"0")}:00`:"+08:00",f=new Date(`${c}T${d}${e}`);isNaN(f.getTime())||(a=f.getTime())}return{status:429,message:c||"CodeBuddy frequency limit (6004)",resetsAtMs:a}}}catch{}return super.parseError(a,b)}}},49227:(a,b,c)=>{c.d(b,{hG:()=>D});var d=c(77598),e=c.n(d),f=c(74957),g=c(12643),h=c(93943),i=c(37981),j=c(57247),k=c(90737),l=c(41004),m=c(80662),n=c(19713);let o=null;async function p(a="endpoint-proxy-salt"){let b=function(){if(o)return o;try{o=(0,n.machineIdSync)()}catch{o=e().randomUUID()}return o}();return e().createHash("sha256").update(b+a).digest("hex").substring(0,16)}let q=/^(rs|fc|resp|msg)_/,r=new Set(["web_search","x_search","web_search_preview","file_search","image_generation","code_interpreter","mcp","local_shell"]),s=new Set(["model","input","instructions","tools","tool_choice","stream","store","reasoning","include","temperature","top_p","max_output_tokens","parallel_tool_calls","text","metadata","prompt_cache_key"]),t=["low","medium","high","xhigh"],u=/^(?:rs|msg|fc)_[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,v={type:"object",properties:{input:{type:"string"}},required:["input"]},w=new Map,x=new WeakMap;function y(a){let b="string"==typeof a?a.trim().toLowerCase():"";return"max"===b?"xhigh":t.includes(b)?b:"high"}function z(a){return"string"==typeof a?a:void 0===a?"":JSON.stringify(a)}function A(a){return"string"==typeof a&&u.test(a)}function B(a){if(!a||"object"!=typeof a||Array.isArray(a))return a;let{internal_chat_message_metadata_passthrough:b,...c}=a;if("reasoning"===a.type)return A(a.id)&&"string"==typeof a.encrypted_content?c:null;if("custom_tool_call"===a.type){let b=a.call_id||a.id,c="string"==typeof a.name?a.name.trim():"";return b&&c?{type:"function_call",call_id:b,name:c,arguments:JSON.stringify({input:z(a.input??a.arguments)})}:null}if("custom_tool_call_output"===a.type||"function_call_output"===a.type){let b=a.call_id||a.id;return b?{type:"function_call_output",call_id:b,output:z(a.output)}:null}if("function_call"===a.type){let b=a.call_id||a.id,c="string"==typeof a.name?a.name.trim():"";return b&&c?{type:"function_call",...A(a.id)?{id:a.id}:{},call_id:b,name:c,arguments:"string"==typeof a.arguments?a.arguments:JSON.stringify(a.arguments??{}),..."string"==typeof a.status?{status:a.status}:{}}:null}return c}let C=null;class D extends f.H{constructor(){super("grok-cli",g.xq["grok-cli"])}buildUrl(){return this.config.baseUrl}async refreshCredentials(a,b,c=null){return a?.refreshToken?(0,h.Vq)("grok-cli",a,b,c):null}needsRefresh(a){return(0,h.fp)("grok-cli",a)}buildHeaders(a,b=!0,c=null,d=null,f=null,g={}){let h=super.buildHeaders(a,b);for(let[a,b]of Object.entries(this.config.headers||{}))null!=b&&void 0===h[a]&&(h[a]=b);h["x-grok-client-identifier"]=this.config.clientIdentifier||h["x-grok-client-identifier"]||k.rK,h["x-grok-client-version"]=this.config.clientVersion||h["x-grok-client-version"]||k.uG;let i=g?.sessionId||a?.connectionId||e().randomUUID(),j=g?.reqId||e().randomUUID();h["x-grok-session-id"]=i,h["x-grok-conv-id"]=i,h["x-grok-req-id"]=j,h["x-grok-turn-idx"]=String(g?.turnIdx||1),g?.agentId&&(h["x-grok-agent-id"]=g.agentId),g?.model&&(h["x-grok-model-override"]=g.model);let l=a?.providerSpecificData||{},m=l.email||a?.email,n=l.userId||a?.userId||a?.providerUserId;return m&&(h["x-email"]=m),n&&(h["x-userid"]=n),h}parseError(a,b){if(402===a.status&&b)try{let a=JSON.parse(b),c=a?.code||"",d=a?.error||a?.message||b;return{status:402,message:"string"==typeof d?d:b,code:"string"==typeof c?c:void 0}}catch{}return super.parseError(a,b)}transformRequest(a,b,c,d,f={}){let g;g={prompt_cache_key:b?.prompt_cache_key,session_id:b?.session_id,conversation_id:b?.conversation_id,metadata:b?.metadata},f.sessionId=(0,m.oV)({headers:d?.rawHeaders,body:g,connectionId:d?.connectionId||d?.id,workspaceId:d?.providerSpecificData?.workspaceId,scope:"grok-cli"}),f.reqId=e().randomUUID(),f.agentId=d?.providerSpecificData?.deviceId||d?.providerSpecificData?.agentId||f.agentId||null;let h=(0,i.me)(b.input);h&&(b.input=h),(!b.input||Array.isArray(b.input)&&0===b.input.length)&&(Array.isArray(b.messages)&&b.messages.length>0?(b.input=b.messages.map(a=>({type:"message",role:a.role||"user",content:"string"==typeof a.content?a.content:JSON.stringify(a.content??"")})),delete b.messages):b.input=[{type:"message",role:"user",content:"..."}]),function(a){if(!Array.isArray(a?.input))return;let b=a.input.map(B).filter(Boolean),c=new Set(b.filter(a=>a?.type==="function_call"&&a.call_id).map(a=>a.call_id));a.input=b.filter(a=>a?.type!=="function_call_output"||c.has(a.call_id))}(b),Array.isArray(b.input)&&(b.input=b.input.filter(a=>{if("string"==typeof a&&q.test(a))return!1;if(a&&"object"==typeof a&&!Array.isArray(a)){if("item_reference"===a.type)return!1;"string"==typeof a.id&&q.test(a.id)&&!A(a.id)&&delete a.id}return!0})),function(a){if(!Array.isArray(a.tools)||0===a.tools.length){delete a.tools,delete a.tool_choice;return}let b=new Set,c=new Set;if(a.tools=a.tools.filter(a=>{if(!a||"object"!=typeof a||Array.isArray(a))return!1;let d="string"==typeof a.type?a.type:"";if("function"!==d){if(r.has(d))return c.add(d),!0;if(!d&&a.function);else if(d&&"string"!=typeof a.name)return!1}if(!("function"===d||""===d||a.function||"string"==typeof a.name)||r.has(d))return r.has(d);let e=a.function&&"object"==typeof a.function&&!Array.isArray(a.function)?a.function:null,f=("string"==typeof a.name?a.name:"string"==typeof e?.name?e.name:"").trim();if(!f)return!1;let g="string"==typeof a.description?a.description:"string"==typeof e?.description?e.description:"",h="custom"===d?v:a.parameters&&"object"==typeof a.parameters&&!Array.isArray(a.parameters)?a.parameters:e?.parameters&&"object"==typeof e.parameters&&!Array.isArray(e.parameters)?e.parameters:{type:"object",properties:{}};for(let b of Object.keys(a))delete a[b];return a.type="function",a.name=f.slice(0,128),g&&(a.description=g),a.parameters=h,b.add(a.name),!0}),0===a.tools.length){delete a.tools,delete a.tool_choice;return}if(a.tool_choice&&"object"==typeof a.tool_choice&&!Array.isArray(a.tool_choice)){let d="string"==typeof a.tool_choice.type?a.tool_choice.type:"";if("function"===d||"custom"===d){let c=a.tool_choice.name??a.tool_choice.function?.name,d="string"==typeof c?c.trim().slice(0,128):"";d&&b.has(d)?a.tool_choice={type:"function",name:d}:delete a.tool_choice}else c.has(d)||delete a.tool_choice}}(b),f.turnIdx=function(a,b,c=null){let d=function(a){if(!Array.isArray(a))return 1;let b=0;for(let c of a){if(!c||"object"!=typeof c||Array.isArray(c))continue;let a="string"==typeof c.type?c.type:"";"user"!==c.role||a&&"message"!==a||(b+=1)}return Math.max(1,b)}(b);if(!a)return d;if(c&&x.has(c))return x.get(c);let e=Date.now(),f=w.get(a),g=f&&e-f.lastUsed<=l.v1.sessionTtlMs?f.turn:0;f&&w.delete(a);let h=g>0?Math.max(d,g+ +!!c):d;for(;w.size>=5e3;)w.delete(w.keys().next().value);return w.set(a,{turn:h,lastUsed:e}),c&&x.set(c,h),h}(f.sessionId,b.input,b),b.stream=!0,b.store=!1;let n=function(a){if(!a||"string"!=typeof a)return null;for(let b of t)if(a.endsWith(`-${b}`))return b;return null}(b.model||a),o=b.model||a;n&&(o=o.replace(RegExp(`-${n}$`),"")),(o=(0,j.kt)("gcli",o)||o)===(b.model||a)&&(o=(0,j.kt)("grok-cli",o)||o),b.model=o,f.model=o;let p=(0,k.Au)(o);if(b.reasoning&&"object"==typeof b.reasoning?(p?b.reasoning.effort=y(b.reasoning.effort||b.reasoning_effort||n):delete b.reasoning.effort,b.reasoning.summary||(b.reasoning.summary="concise")):(b.reasoning={summary:"concise"},p&&(b.reasoning.effort=y(b.reasoning_effort||n))),delete b.reasoning_effort,b.reasoning&&"none"!==b.reasoning.effort){let a=Array.isArray(b.include)?b.include:[];a.includes("reasoning.encrypted_content")||a.push("reasoning.encrypted_content"),b.include=a}for(let a of(delete b.messages,delete b.max_tokens,delete b.max_completion_tokens,delete b.n,delete b.seed,delete b.logprobs,delete b.top_logprobs,delete b.frequency_penalty,delete b.presence_penalty,delete b.logit_bias,delete b.user,delete b.stream_options,delete b.prompt_cache_retention,delete b.safety_identifier,delete b.previous_response_id,Object.keys(b)))s.has(a)||delete b[a];return b}async execute(a){let b={agentId:a.credentials?.providerSpecificData?.deviceId||await (!C&&(C=(async()=>{try{let a=await p("grok-cli-agent");return[a.slice(0,8),a.slice(8,12),"5"+a.slice(13,16),"a"+a.slice(17,20),a.slice(0,12).padEnd(12,"0")].join("-")}catch{return e().randomUUID()}})()),C)};return super.execute({...a,hookCtx:b})}}},51349:(a,b,c)=>{c.d(b,{m:()=>e});var d=c(96179);class e extends d.L{constructor(){super("codebuddy-intl")}transformRequest(a,b,c,d){let e=super.transformRequest(a,b,c,d);e.stream=!0;let f=e.reasoning_effort;"none"===f||"off"===f?delete e.reasoning_effort:f&&(e.reasoning_summary="auto");let g=Array.isArray(e.messages)?e.messages:[];for(let a of(e.messages=[{role:"system",content:"You are CodeBuddy Code."}],g))!a||"object"!=typeof a||["system","developer"].includes(a.role)||("user"===a.role&&"string"==typeof a.content?e.messages.push({...a,content:[{type:"text",text:a.content}]}):e.messages.push({...a}));return e}parseError(a,b){if(b)try{let a=JSON.parse(b),c=a?.msg||a?.message||a?.error?.message||"";if(a?.code===6004||/超出频率限制|frequency limit|限额/i.test(c)){let a=null,b=c.match(/(\d{4}-\d{2}-\d{2})\s+(\d{2}:\d{2}:\d{2})(?:\s*UTC\+?([0-9:]+))?/i);if(b){let c=b[1],d=b[2],e=b[3]?b[3].includes(":")?b[3].startsWith("+")?b[3]:`+${b[3]}`:`+${b[3].padStart(2,"0")}:00`:"+08:00",f=new Date(`${c}T${d}${e}`);isNaN(f.getTime())||(a=f.getTime())}return{status:429,message:c||"CodeBuddy frequency limit (6004)",resetsAtMs:a}}}catch{}return super.parseError(a,b)}}},53307:(a,b,c)=>{c.d(b,{sh:()=>u});var d=c(74957);let e="https://uncensored.com",f="https://clerk.uncensored.com",g="5.127.1",h="https://internal.chatuncensored.ai/v2/image-gen",i={"1:1":{imageWidth:"1024",imageHeight:"1024"},"16:9":{imageWidth:"1024",imageHeight:"576"},"9:16":{imageWidth:"576",imageHeight:"1024"},"4:3":{imageWidth:"1024",imageHeight:"768"},"3:4":{imageWidth:"768",imageHeight:"1024"},"3:2":{imageWidth:"1152",imageHeight:"768"},"2:3":{imageWidth:"768",imageHeight:"1152"},"4:5":{imageWidth:"896",imageHeight:"1120"},"5:4":{imageWidth:"1120",imageHeight:"896"},"21:9":{imageWidth:"1344",imageHeight:"576"}},j={"seedream-v4.5":{name:"Seedream v4.5",aspects:["1:1","16:9","9:16","4:3","3:4"]},"seedream-v5":{name:"Seedream v5",aspects:["1:1","16:9","9:16","4:3","3:4","3:2","2:3"]},"seedream-v5-flash":{name:"Seedream v5 Flash",aspects:["1:1","16:9","9:16","4:3","3:4","3:2","2:3","4:5","5:4","21:9"],resolutions:["1k","1.5k","2k"]},"nano-banana-pro-ultra":{name:"Nano Banana Pro Ultra",aspects:["1:1","3:2","2:3","3:4","4:3","4:5","5:4","9:16","16:9","21:9"],resolutions:["4k","8k"]},"nano-banana-pro":{name:"Nano Banana Pro",aspects:["1:1","2:3","3:2","3:4","4:3","4:5","5:4","9:16","16:9","21:9"],resolutions:["1k","2k","4k"]},"nano-banana":{name:"Nano Banana",aspects:["1:1","9:16","16:9","3:4","4:3","3:2","2:3","5:4","4:5","21:9"]},"nano-banana-2":{name:"Nano Banana 2",aspects:["1:1","3:2","2:3","3:4","4:3","4:5","5:4","9:16","16:9","21:9"],resolutions:["1k","2k","4k"]},"gpt-image":{name:"GPT Image 1.5",aspects:["1:1","2:3","3:2"],qualities:["medium","high"]},"gpt-image-2":{name:"GPT Image 2",aspects:["1:1","3:2","2:3","3:4","4:3","4:5","5:4","9:16","16:9","21:9"]},"gpt-image-2.5-flare":{name:"GPT Image 2.5 Flare",aspects:["1:1","3:2","2:3","3:4","4:3","4:5","5:4","9:16","16:9","21:9","2:1","1:2","3:1","1:3","9:21"]},"gpt-image-2.5-sunburst":{name:"GPT Image 2.5 Sunburst",aspects:["1:1","3:2","2:3","3:4","4:3","4:5","5:4","9:16","16:9","21:9","2:1","1:2","3:1","1:3","9:21"]},"wan-2.6":{name:"Wan 2.6",aspects:["1:1","4:3","3:4","3:2","2:3"]},"wan-2.6-image":{name:"Wan 2.6",upstream:"wan-2.6",aspects:["1:1","4:3","3:4","3:2","2:3"]},"wan-2.7-text-to-image":{name:"Wan 2.7",aspects:["1:1","16:9","9:16","4:3","3:4","3:2","2:3"]},"wan-2.7-text-to-image-pro":{name:"Wan 2.7 Pro",aspects:["1:1","16:9","9:16","4:3","3:4","3:2","2:3"]},"prefect-pony-xl":{name:"Prefect Pony XL",aspects:["1:1","16:9","9:16","4:3","3:4","3:2","2:3"]},"1.0":{name:"Flux.1",aspects:[]},"1.1":{name:"Flux.1.1",aspects:[]},"1.2":{name:"Wan 2.6 (Flux tier)",aspects:[]},"2.0":{name:"Flux.2",aspects:[]},"flux-2-max":{name:"Flux 2 Max",aspects:[]},SDXL:{name:"SDXL uncensored",aspects:[]},realism:{name:"Realism",aspects:[]},"realism-2":{name:"Realism 2",aspects:[]},"z-image-turbo":{name:"Z Image Turbo",aspects:[]}},k={default:{name:"Standard",t2v:!0,i2v:!0,aspects:["auto","16:9","9:16","1:1"],resolutions:["480p","720p"],seconds:[5,8]},turbo:{name:"Turbo",t2v:!0,i2v:!0,aspects:["auto","16:9","9:16","1:1"],resolutions:["480p","720p"],seconds:[5,8]},"wan-2.2-uncensored-v2":{name:"Wan Ultra Uncensored v2",t2v:!0,i2v:!0,aspects:["auto","16:9","9:16","1:1"],resolutions:["480p","720p"],seconds:[5,8]},"wan-2.2-uncensored":{name:"Wan Ultra Uncensored",t2v:!0,i2v:!0,aspects:["auto","16:9","9:16","1:1"],resolutions:["480p","720p"],seconds:[5,8]},"wan-2.6":{name:"Wan v2.6",t2v:!0,i2v:!0,aspects:["auto","16:9","9:16","1:1"],seconds:[5,8]},"wan-2.6-ultra":{name:"Wan 2.6 Ultra Uncensored",t2v:!0,i2v:!0},"wan-2.7":{name:"Wan 2.7",t2v:!0,i2v:!0},"wan-2.7-pro":{name:"Wan 2.7 Pro",t2v:!0,i2v:!0},"wan-2.7-uncensored":{name:"Wan 2.7 Uncensored",t2v:!0,i2v:!0},"wan-2.7-uncensored-v2":{name:"Wan 2.7 Uncensored v2",t2v:!0,i2v:!0},"wan-3.0":{name:"Wan 3.0",t2v:!0,i2v:!0,audio:!0},"wan-3.0-uncensored":{name:"Wan 3.0 Uncensored",t2v:!0,i2v:!0,audio:!0},"wan-3.0-uncensored-pro":{name:"Wan 3.0 Uncensored Pro",t2v:!0,i2v:!0,audio:!0},"sora-2":{name:"Sora 2",t2v:!0,i2v:!0,seconds:[4,8,12]},"sora-2-pro":{name:"Sora 2 Pro",t2v:!0,i2v:!0,seconds:[4,8,12]},"grok-imagine-video":{name:"Grok Imagine Video",t2v:!0,i2v:!0},"bytedance-seedance-2.0":{name:"Seedance 2.0",t2v:!0,i2v:!0},"seedance-2.0-fast":{name:"Seedance 2.0 Fast",t2v:!0,i2v:!0},"seedance-2.0-uncensored":{name:"Seedance 2.0 Uncensored",t2v:!0,i2v:!0,audio:!0},"seedance-2.0-fast-uncensored":{name:"Seedance 2.0 Fast Uncensored",t2v:!0,i2v:!0,audio:!0},"seedance-2.0-mini-uncensored":{name:"Seedance 2.0 Mini Uncensored",t2v:!0,i2v:!0,audio:!0},"seedance-2.0-mini-turbo":{name:"Seedance 2.0 Mini Turbo Uncensored",t2v:!0,i2v:!0,audio:!0},"seedance-v1.5-pro-uncensored":{name:"Seedance v1.5 Pro Uncensored",t2v:!0,i2v:!0,audio:!0},"seedance-2.5-uncensored":{name:"Seedance 2.5 Uncensored",t2v:!0,i2v:!0,audio:!0},"seedance-2.5":{name:"Seedance 2.5",t2v:!0,i2v:!0,audio:!0},"vidu-q3-uncensored":{name:"Vidu Q3 Uncensored",t2v:!0,i2v:!0},"av-gen-v2":{name:"AV-Gen v2 with audio",t2v:!0,i2v:!0,audio:!0},"cosmos-predict":{name:"Cosmos Predict 2.5",t2v:!0,i2v:!0},"minimax-h3":{name:"MiniMax H3",t2v:!0,i2v:!0},"happyhorse-1.0":{name:"Happy Horse 1.0",t2v:!0,i2v:!0},"wan/v2.2-a14b":{name:"Wan v2.2-a14b",t2v:!0,i2v:!0}};function l(a){let b=new Map;for(let c of String(a||"").split(";")){let a=c.indexOf("=");if(a<0)continue;let d=c.slice(0,a).trim();d&&b.set(d,c.slice(a+1).trim())}return b}function m(a){try{let b=a.split(".")[1].replace(/-/g,"+").replace(/_/g,"/");return JSON.parse(Buffer.from(b+"=".repeat((4-b.length%4)%4),"base64").toString("utf8"))}catch{return null}}function n(a){return[...a.entries()].map(([a,b])=>`${a}=${b}`).join("; ")}function o(a,b){for(let c of"function"==typeof a.headers.getSetCookie?a.headers.getSetCookie():[]){let a=String(c).split(";")[0],d=a.indexOf("=");if(d>0&&a.slice(0,d).trim()===b)return a.slice(d+1).trim()}return""}async function p(a,b,c){let d=m(a)?.sid;if("string"==typeof d&&d)return{sid:d,rotatedClient:""};let e=await fetch(`${f}/v1/client?_clerk_js_version=${g}`,{headers:b,signal:c});if(!e.ok)return{sid:"",rotatedClient:""};let h=o(e,"__client"),i=await e.json().catch(()=>null),j=i?.response??i?.client??i,k=Array.isArray(j?.sessions)?j.sessions:[],l=k.find(a=>a?.status==="active")??k[0];return{sid:"string"==typeof l?.id?l.id:"",rotatedClient:h}}async function q(a,b){let c=l(a),d=c.get("__client");if(!d)throw Object.assign(Error("UC credential missing the __client cookie — paste the full uncensored.com Cookie header from a logged-in session"),{status:401});let h={Cookie:n(c),Origin:e,Referer:`${e}/`,Accept:"application/json"},i=await p(d,h,b),j=i.sid;if(!j)throw Object.assign(Error("UC Clerk session not found — the __client cookie has no active session. Log in again via Login via Browser"),{status:401});let k=await fetch(`${f}/v1/client/sessions/${encodeURIComponent(j)}/tokens?_clerk_js_version=${g}`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Origin:e,Referer:`${e}/`,Cookie:n(c)},body:"",signal:b});if(!k.ok){let a=(await k.text().catch(()=>"")).slice(0,200);throw Object.assign(Error(`UC Clerk token mint failed (HTTP ${k.status}) ${a}`),{status:k.status})}let q=o(k,"__client")||i.rotatedClient,r=await k.json().catch(()=>null),s=r?.jwt;if("string"!=typeof s||!s)throw Object.assign(Error("UC Clerk token mint returned no jwt"),{status:502});let t=m(s)?.uid;return{jwt:s,uid:"string"==typeof t?t:"",rotatedClient:q}}async function r(a,{signal:b,log:c,intervalMs:d=5e3,timeoutMs:f=3e5}){let g=Date.now()+f;for(;Date.now()<g;){if(b?.aborted)throw Error("aborted");await new Promise(a=>setTimeout(a,d));let f=0;try{f=(await fetch(a,{method:"HEAD",headers:{Referer:`${e}/`},signal:b})).status}catch{f=0}if(200===f)return;f>=400&&f<500&&429!==f&&c?.warn?.("UC-WEB",`result poll got HTTP ${f} — continuing until timeout`)}throw Error("UC result did not become available in time")}async function s(a,{signal:b}){let c=await fetch(a,{headers:{Referer:`${e}/`},signal:b});if(!c.ok)throw Error(`UC result download failed (HTTP ${c.status})`);return{b64:Buffer.from(await c.arrayBuffer()).toString("base64"),mime:(c.headers.get("content-type")||"").split(";")[0]||"application/octet-stream"}}async function t(a,b,c){let d=/^data:[^;]*;base64,(.*)$/.exec(String(a));if(d)return Buffer.from(d[1],"base64");if(/^https?:\/\//i.test(String(a))){let c=await fetch(a,{signal:b,headers:{Accept:"image/*","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/155.0.0.0 Safari/537.36"}});if(!c.ok)throw Error(`input image download failed (HTTP ${c.status})`);return Buffer.from(await c.arrayBuffer())}try{return Buffer.from(String(a),"base64")}catch{return c?.error?.("UC-WEB","could not decode input image"),null}}class u extends d.H{constructor(){super("uc-web",{id:"uc-web",baseUrl:"https://internal.chatuncensored.ai"})}async execute(){return{response:new Response(JSON.stringify({error:{message:"uc-web is a media provider — use /v1/images/generations or /v1/videos/generations",type:"invalid_request"}}),{status:400,headers:{"Content-Type":"application/json"}}),url:h,headers:{},transformedBody:{}}}async generateMedia({prompt:a,kind:b="image",size:c,model:d,duration:f,resolution:g,images:m,credentials:o,signal:p,log:u}){if("image"!==b&&"video"!==b)throw Error("uc-web supports image and video generation only");if(!a?.trim())throw Error("prompt is required");let v=String(o?.apiKey||""),{jwt:w,uid:x,rotatedClient:y}=await q(v,p),z=function(a,b){if(!b)return"";let c=l(a);return c.get("__client")===b?"":(c.set("__client",b),n(c))}(v,y);z&&o&&(o.apiKey=z);let A={Authorization:`Bearer ${w}`,Origin:e,Referer:`${e}/`,"Content-Type":"application/json"};if("image"===b){let b=d||"seedream-v4.5";if(!j[b])throw Object.assign(Error(`Unknown UC image model "${b}" — see the provider's model list`),{status:400});let e=j[b],f={prompt:a,mode:"dev",model_version:e.upstream||b,m_n_user:!0,moderationMode:"SUPER_LIGHT",country:"US",vdiscount:!1,...function(a,b){let c=String(a||"").trim(),d=Array.isArray(b)&&b.length?b:null,e=i[c]&&(!d||d.includes(c))?{aspect_ratio:c,...i[c]}:null;if(e)return e;if(c.includes("x")){let[a,b]=c.split("x").map(Number);if(Number.isFinite(a)&&Number.isFinite(b)&&a>0&&b>0){let c=null,e=1/0;for(let[f,g]of Object.entries(i)){if(d&&!d.includes(f))continue;let h=Math.abs(Number(g.imageWidth)/Number(g.imageHeight)-a/b);h<e&&(e=h,c=f)}if(c)return{aspect_ratio:c,...i[c]}}}let f=d?.[0]||"1:1";return{aspect_ratio:f,...i[f]}}(c,e.aspects)};if(e.resolutions?.length){let a=String(g||"").toLowerCase();f.resolution=e.resolutions.includes(a)?a:e.resolutions[0]}let k=await fetch(h,{method:"POST",headers:A,body:JSON.stringify(f),signal:p});if(!k.ok){let a=(await k.text().catch(()=>"")).slice(0,200);throw Object.assign(Error(`UC image request failed (HTTP ${k.status}) ${a}`),{status:k.status})}let l=await k.json().catch(()=>null),m="string"==typeof l?.url?l.url:"";if(!m)throw Error("UC image response carried no result url");return await r(m,{signal:p,log:u}),[await s(m,{signal:p})]}let B=d||"default";if(!k[B])throw Object.assign(Error(`Unknown UC video model "${B}" — see the provider's model list`),{status:400});let C=k[B],D=Array.isArray(m)?m[0]:m;if(D&&!1===C.i2v)throw Error(`UC video model "${B}" does not accept an input image`);if(!D&&!1===C.t2v)throw Error(`UC video model "${B}" requires an input image`);let E=Number(f)>0?Number(f):C.seconds?.[0]??5,F=C.resolutions?.length?C.resolutions.includes(String(g||""))?String(g):C.resolutions[0]:"480p",G={prompt:a,media_blob_name:null,num_frames:Math.round(16*E)+1,frames_per_second:16,num_inference_steps:30,guide_scale:5,shift:5,aspect_ratio:C.aspects?.includes("auto")?"auto":"9:16",pro_mode:"wan-3.0-uncensored-pro"===B,turbo:"turbo"===B,resolution:F,sora_resolution:F,end_frame_blob_name:null,model:B,seconds:E,video_to_video_duration:E,vdiscount:!1};if(D){if(!x)throw Object.assign(Error("Could not derive the account uid — re-paste the full Cookie header"),{status:401});let a=await t(D,p,u);if(!a)throw Error("UC image-to-video could not decode the input image");let b=await fetch("https://internal-6.pubyar.com/generate-signed-url",{method:"POST",headers:A,body:JSON.stringify({content_type:"image/png",user_identifier:x}),signal:p});if(!b.ok){let a=(await b.text().catch(()=>"")).slice(0,200);throw Object.assign(Error(`UC signed-url request failed (HTTP ${b.status}) ${a}`),{status:b.status})}let c=await b.json().catch(()=>null);if(!c?.signed_url||!c?.blob_name)throw Error("UC signed-url response missing signed_url or blob_name");let d=await fetch(c.signed_url,{method:"PUT",headers:{"Content-Type":"image/png"},body:new Uint8Array(a),signal:p});if(!d.ok)throw Object.assign(Error(`UC input-image upload failed (HTTP ${d.status})`),{status:d.status});G.media_blob_name=c.blob_name}let H=await fetch("https://internal.chatuncensored.ai/image_to_video",{method:"POST",headers:A,body:JSON.stringify(G),signal:p});if(!H.ok){let a=(await H.text().catch(()=>"")).slice(0,200);throw Object.assign(Error(`UC video request failed (HTTP ${H.status}) ${a}`),{status:H.status})}let I=await H.json().catch(()=>null),J="string"==typeof I?.url?I.url:"";if(!J)throw Error("UC video response carried no result url");let K=Number.isFinite(Number(I?.timeout_seconds))&&Number(I.timeout_seconds)>0?1e3*Number(I.timeout_seconds):3e5;return await r(J,{signal:p,log:u,timeoutMs:K}),[await s(J,{signal:p})]}}},55330:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{getExecutor:()=>S});var e=c(39536),f=c(98625),g=c(19696),h=c(95128),i=c(11655),j=c(61433),k=c(77333),l=c(76467),m=c(32447),n=c(19932),o=c(19946),p=c(73870),q=c(4493),r=c(13120),s=c(17373),t=c(77919),u=c(49227),v=c(23013),w=c(59192),x=c(29166),y=c(20690),z=c(88331),A=c(53307),B=c(70298),C=c(9708),D=c(90926),E=c(26878),F=c(36732),G=c(49059),H=c(51349),I=c(85308),J=c(27617),K=c(71880),L=c(98665),M=c(93509),N=c(96179),O=c(83243),P=c(95089),Q=c(74161);c(74957);var R=a([o]);o=(R.then?(await R)():R)[0];let T={antigravity:new e.c,azure:new f.P,"gemini-cli":new h.V,github:new i.x,iflow:new j.r,qoder:new k.DH,"qoder-cn":new k.DH("qoder-cn"),kiro:new l.B,kimchi:new m.BL,codex:new n.T,cursor:new o.ou,cu:new o.ou,vertex:new p.w("vertex"),"vertex-partner":new p.w("vertex-partner"),opencode:new q.j9,"opencode-go":new r.H,"opencode-zen":new s.mO,"grok-web":new t.$,"grok-cli":new u.hG,gcli:new u.hG,gb:new u.hG,"perplexity-web":new v.Ay,"deepseek-web":new w.id,"gemini-web":new x.dQ,"muse-web":new y._5,"veoaifree-web":new z.Q,"veo-free":new z.Q,"uc-web":new A.sh,"chatgpt-web":new B.RF,"ollama-local":new C.D,commandcode:new D.Ak,"xiaomi-tokenplan":new E.F,"xiaomi-mimo":new F.Rb,codearts:new J.Ay,deveco:new K.y,"codebuddy-cn":new G.v,"codebuddy-intl":new H.m,trae:new I.A,"trae-enterprise":new I.A("trae-enterprise"),zed:new L.A,windsurf:new M.Ay,"minimax-code":new O.M("minimax-code"),"minimax-code-global":new O.M("minimax-code-global"),"devin-cli":new P.c,zcode:new Q.B,bedrock:new g.UD,br:new g.UD,"bedrock-xai":new g.UD("bedrock-xai"),brx:new g.UD("bedrock-xai")},U=new Map;function S(a){return T[a]?T[a]:(U.has(a)||U.set(a,new N.L(a)),U.get(a))}d()}catch(a){d(a)}})},59192:(a,b,c)=>{c.d(b,{id:()=>am});var d=c(74957),e=c(78959),f=c(92536),g=c(73024),h=c(76760),i=c.n(h),j=c(75919);let k=[1n,32898n,0x800000000000808an,0x8000000080008000n,32907n,2147483649n,0x8000000080008081n,0x8000000000008009n,138n,136n,2147516425n,2147483658n,2147516555n,0x800000000000008bn,0x8000000000008089n,0x8000000000008003n,0x8000000000008002n,0x8000000000000080n,32778n,0x800000008000000an,0x8000000080008081n,0x8000000000008080n,2147483649n,0x8000000080008008n];Uint32Array.from(k,a=>Number(4294967295n&a)),Uint32Array.from(k,a=>Number(a>>32n&4294967295n)),Uint8Array.from({length:25},(a,b)=>{let c=Math.floor(b/5);return 2*(c+(b%5*2+3*c)%5*5)}),Uint8Array.from({length:25},(a,b)=>{let c=b%5;return 2*(b-c+(c+1)%5)}),Uint8Array.from({length:25},(a,b)=>{let c=b%5;return 2*(b-c+(c+2)%5)});let l=/^[a-f0-9]{64}$/i,m=0;function n(){let a=Error("DeepSeek PoW computation aborted");return a.name="AbortError",a}async function o(a,b,c,d,e,f={}){return function(a,b={}){let{signal:c}=b;if(c?.aborted)return Promise.reject(n());if(m>=2)return Promise.reject(Error("DeepSeek PoW worker capacity reached (2)"));let d=function(a){if(void 0===a)return 1e4;if(!Number.isSafeInteger(a)||a<1||a>3e4)throw Error("DeepSeek PoW timeout must be an integer from 1 to 30000ms");return a}(b.timeoutMs);return m+=1,new Promise((b,e)=>{let f;try{f=new j.Worker(function(){let a=i().join(process.cwd(),"open-sse/lib/deepseek-pow-worker.mjs");if(!(0,g.existsSync)(a))throw Error(`DeepSeek PoW worker script not found at ${a}`);return a}(),{workerData:a})}catch(a){m=Math.max(0,m-1),e(a instanceof Error?a:Error(String(a)));return}let h=!1,k=(a,b)=>{h||(h=!0,clearTimeout(o),c?.removeEventListener("abort",l),m=Math.max(0,m-1),b&&f.terminate(),a())},l=()=>{k(()=>e(n()),!0)},o=setTimeout(()=>{k(()=>e(Error(`DeepSeek PoW computation exceeded ${d}ms`)),!0)},d);c?.addEventListener("abort",l,{once:!0}),f.once("message",a=>{!Number.isSafeInteger(a)||a<-1?k(()=>e(Error("DeepSeek PoW worker returned an invalid answer")),!0):k(()=>b(a),!1)}),f.once("error",a=>{k(()=>e(a),!0)}),f.once("exit",a=>{0!==a?k(()=>e(Error(`DeepSeek PoW worker exited with code ${a}`)),!1):k(()=>e(Error("DeepSeek PoW worker exited without an answer")),!1)})})}(function(a,b,c,d,e){if("DeepSeekHashV1"!==a)throw Error(`Unsupported DeepSeek PoW algorithm: ${a}`);if(!l.test(b))throw Error("DeepSeek PoW challenge must be a 64-character SHA3-256 hex digest");if("string"!=typeof c||0===c.length||c.length>1024)throw Error("DeepSeek PoW salt must contain 1-1024 characters");if(!Number.isSafeInteger(d)||d<1||d>25e4)throw Error("DeepSeek PoW difficulty must be an integer from 1 to 250000");if(!Number.isSafeInteger(e)||e<0)throw Error("DeepSeek PoW expiry must be a non-negative safe integer");return{challenge:b.toLowerCase(),prefix:`${c}_${e}_`,difficulty:d}}(a,b,c,d,e),f)}var p=c(14229),q=c(70452);let r=new((c.n(q))())({strict:!1,allErrors:!1,validateFormats:!1}),s=new WeakMap;function t(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:null}function u(a,b,c){let d=Array.isArray(a)?a.find(a=>a?.function?.name===b)??null:null;if(!d)return!1;let e=d.function?.parameters;if(void 0===e)return!0;if(("object"!=typeof e||null===e)&&"boolean"!=typeof e)return!1;let f=s.get(a);f||(f=new Map,s.set(a,f));let g=f.get(b);if(void 0===g){try{g=r.compile(e)}catch{g=null}f.set(b,g)}return!!g&&!0===g(c)}function v(a,b,c){if(!b.toolCalls)return b;let d=(0,p.OA)(c),e=[];for(let f of b.toolCalls){let b=(0,p.n)(f.function.arguments);if(!b)return{content:a,toolCalls:null};let g=b._nonce;if(void 0!==g&&g!==d)return{content:a,toolCalls:null};let{_nonce:h,...i}=b;if(!u(c,f.function.name,i))return{content:a,toolCalls:null};e.push({...f,function:{...f.function,arguments:JSON.stringify(i)}})}return{content:b.content,toolCalls:e}}function w(a){return"string"==typeof a&&!!a.trim()&&(!!/<\/?(?:|||\|\|?)DSML(?:|||\|\|?)\s*(?:calls|invoke|parameter)\b/i.test(a)||/<\/?(?:tool|tool_call)(?::|\s|>)/i.test(a))}function x(a){return Array.isArray(a)?a.filter(a=>a?.type==="text").map(a=>a?.text??"").join("\n"):null==a?"":String(a)}let y=/<(\/?)(?:tool_call|tool)(:[A-Za-z0-9_.+-]+)?((?:\s[^>]*)?)\/?>/g;function z(a,b){let c=RegExp(`\\b${b}\\s*=\\s*("|')`).exec(a);if(!c)return null;let d=c[1],e=c.index+c[0].length,f="";for(;e<a.length;){let b=a[e];if("\\"===b){f+=a[e+1]??"",e+=2;continue}if(b===d)break;f+=b,e+=1}return f}function A(a,b){let c=RegExp(`<${b}\\b[^>]*>([\\s\\S]*?)<\\/${b}>`,"i").exec(a);return c?c[1].trim():null}let B=/<parameter\b([^>]*?)\/?>(?:((?:(?!<parameter\b)[\s\S])*?)<\/parameter>)?/gi;function C(a){return"string"==typeof a&&a.length>0?a:null}let D="[||]",E=`${D}{2}DSML${D}{2}`,F=RegExp(`</?${E}\\s*(?:calls|invoke|parameter)\\b[^>]*>|<${E}\\s*/\\s*(?:calls|invoke|parameter)\\s*>`,"gi");function G(a,b,c){let d=[],e=RegExp(`(?:</?${E}\\s*${b}\\b([^>]*)>|<${E}\\s*/\\s*${b}\\s*>)`,"gi"),f=null;for(;null!==(f=e.exec(a));)d.push({start:c+f.index,end:c+e.lastIndex,attrs:f[1]??""});return d}function H(a,b,c,d,e){let f=z(a.attrs,"name");if(!f)return null;let g=b?b.start:d,h=G(c.slice(a.end,g),"parameter",a.end),i={},j=a.end;for(let a=0;a<h.length;a+=1){let b=h[a],d=z(b.attrs,"name");if(!d)continue;let e=h[a+1],f=c.slice(b.end,e?e.start:g).trim();i[d]=""!==f?f:z(b.attrs,"content")??"",j=e?e.end:g}if(!Object.values(i).some(a=>""!==a))return null;let k=(0,p.Ub)(f,e)??f;return{start:a.start,end:b?b.end:j,name:k,args:i}}let I=/<[||]{1,2}DSML[||]{1,2}\s+(calls|invoke|parameter)([^>]*)>/gi,J=/<\/[||]{1,2}DSML[||]{1,2}\s+(calls|invoke|parameter)\s*>/gi,K=/<(?:(?:\|DSML\|)|(?:||DSML||))invoke\b([^>]*)>([\s\S]*?)<\/(?:(?:\|DSML\|)|(?:||DSML||))invoke\s*>/gi,L=/<(?:(?:\|DSML\|)|(?:||DSML||))parameter\b([^>]*)>([\s\S]*?)(?:<\/(?:(?:\|DSML\|)|(?:||DSML||))parameter\s*>|<(?:(?:\|DSML\|)|(?:||DSML||))parameter\s*>)/gi,M=/<(?:(?:\|DSML\|)|(?:||DSML||))(?:calls|call|invoke|parameter)\b[^>]*>[^]*?<\/(?:(?:\|DSML\|)|(?:||DSML||))(?:calls|call|invoke|parameter)\s*>/i,N=/(?:<\|tool_call_begin\|>|<|tool▁call▁begin|>)[\s\n]*([^<\s]+)[\s\n]*(?:<\|tool_call_argument_begin\|>|<|tool▁call▁argument▁begin|>)([\s\S]*?)(?:<\|tool_call_argument_end\|>|<|tool▁call▁argument▁end|>)[\s\n]*(?:<\|tool_call_end\|>|<|tool▁call▁end|>)/g;function O(a){try{return JSON.parse(a)}catch{return null}}function P(a,b,c){let d=Array.isArray(c)?c.find(a=>a?.function?.name===b):void 0,e=d?.function?.parameters?.properties;if(!e||"object"!=typeof e)return a;for(let[b,c]of Object.entries(a))e[b]?.type==="string"&&"string"!=typeof c&&(a[b]=JSON.stringify(c));return a}function Q(a,b="call",c){var d,e,f;if("string"!=typeof a||0===a.length)return{content:a??"",toolCalls:null};a=a.replace(/\s*This response is AI-generated, for reference only\.\s*$/i,"");let g=(0,p.x2)(c),h=(d=a,RegExp(`</?${E}\\s*(?:calls|invoke|parameter)\\b`,"i").test(d))?function(a,b){let c=[],d=[],e=RegExp(`<${E}\\s*calls\\s*>([\\s\\S]*?)(?:</${E}\\s*calls\\s*>|<${E}\\s*/\\s*calls\\s*>)`,"gi"),f=RegExp(`(?:</${E}\\s*calls\\s*>|<${E}\\s*/\\s*calls\\s*>)\\s*$`,"i"),g=[],h=null;for(;null!==(h=e.exec(a));){let i={start:h.index,end:e.lastIndex};g.push(i);let j=h[1],k=h.index+h[0].indexOf(j),l=f.exec(h[0]);d.push({start:h.index,end:k}),d.push({start:h.index+(l?l.index:h[0].length),end:h.index+h[0].length});let m=G(j,"invoke",k);for(let d=0;d<m.length;d+=1){if(!z(m[d].attrs,"name"))continue;let e=H(m[d],m[d+1],a,k+j.length,b);e&&c.push(e),m[d+1]&&(d+=1)}}let i=G(a,"invoke",0).filter(a=>!g.some(b=>a.start>=b.start&&a.end<=b.end));for(let d=0;d<i.length;d+=1){if(!z(i[d].attrs,"name"))continue;let e=H(i[d],i[d+1],a,a.length,b);e&&c.push(e),i[d+1]&&(d+=1)}return{calls:c.sort((a,b)=>a.start-b.start),strip:d}}(a,g):null,i=h&&h.calls.length>0?h:null;if(!i){let d=/<tool\b|<tool:/.test(a),g=a=>(a.toolCalls?.length??0)>0||!d,h=function(a,b,c){if(!/<(?:(?:||DSML||)|(?:\|DSML\|))/.test(a))return{content:a,toolCalls:null,recognized:!1};let d=(0,p.x2)(c),e=(0,p.OA)(c),f=[],g=[],h=/<(?<dsml>||DSML|||\|DSML\|)\s*invoke\s+name=["']([^"']+)["']\s*>([\s\S]*?)<\/\k<dsml>\s*invoke\s*>/g,i=null,j=!1,k=!1;for(;null!==(i=h.exec(a));){let a;j=!0;let l=(0,p.Ub)(i[2],d);if(!e||!l){k=!0;continue}let m=function(a){let b={},c=/<(?:||DSML|||\|DSML\|)\s*parameter\s+name=["']([^"']+)["'][^>]*>([\s\S]*?)(?:<\/?(?:||DSML|||\|DSML\|)\s*parameter\s*>|(?=<(?:||DSML|||\|DSML\|)\s*parameter\s+name=|<\/(?:||DSML|||\|DSML\|)\s*invoke\s*>))/g,d=null;for(;null!==(d=c.exec(a));){let a=d[2].trim();b[d[1]]=O(a)??a}if(Object.keys(b).length>0)return b;let e=O(a.trim()||"{}");return e&&"object"==typeof e&&!Array.isArray(e)&&Object.assign(b,e),b}(i[3]),n=t(m.arguments);if((m._nonce??n?._nonce)!==e){k=!0;continue}if(n){let{_nonce:b,...c}=n;a=c}else{let{_nonce:b,name:c,...d}=m;a=d}if(!u(c,l,a)){k=!0;continue}f.push({id:`${b}_${f.length}`,type:"function",function:{name:l,arguments:JSON.stringify(a)}}),g.push({start:i.index,end:h.lastIndex})}if(k||0===f.length)return{content:a,toolCalls:null,recognized:j};let l=/<\/?(?:||DSML|||\|DSML\|)\s*calls\s*>/g,m=null;for(;null!==(m=l.exec(a));)g.push({start:m.index,end:l.lastIndex});return{content:(0,p.LW)(a,g),toolCalls:f,recognized:!0}}(a,b,c);if(h.recognized&&g(h))return v(a,h,c);let i=function(a,b,c){let d=(0,p.x2)(c),e=[],f=[];N.lastIndex=0;let g=null;for(;null!==(g=N.exec(a));){let a=(0,p.Ub)(g[1],d),h=O(g[2].trim());if(!a||!h||"object"!=typeof h||Array.isArray(h))continue;let i=P(h,a,c);e.push({id:`${b}_${e.length}`,type:"function",function:{name:a,arguments:JSON.stringify(i)}}),f.push({start:g.index,end:g.index+g[0].length})}!function(a,b,c,d,e,f){K.lastIndex=0;let g=null;for(;null!==(g=K.exec(a));){let a=z(g[1]||"","name"),h=a?(0,p.Ub)(a,c):null;if(!h)continue;let{args:i,found:j}=function(a){let b={},c=!1;L.lastIndex=0;let d=null;for(;null!==(d=L.exec(a));){let a=z(d[1]||"","name");if(!a)continue;let e=d[2].trim();b[a]=O(e)??e,c=!0}return{args:b,found:c}}(g[2]);if(!j&&g[2].trim())continue;let k=P(i,h,d);e.push({id:`${b}_${e.length}`,type:"function",function:{name:h,arguments:JSON.stringify(k)}}),f.push({start:g.index,end:g.index+g[0].length})}}(a,b,d,c,e,f),e.length>0&&function(a,b){let c=/<(?:(?:\|DSML\|)|(?:||DSML||))calls\s*>[\s\S]*?<\/(?:(?:\|DSML\|)|(?:||DSML||))calls\s*>/gi,d=null;for(;null!==(d=c.exec(a));){let a=d.index,c=a+d[0].length;b.some(b=>b.start>=a&&b.end<=c)&&b.push({start:a,end:c})}}(a,f);let h=M.test(a)||/<(?:(?:\|tool_call_)|(?:|tool▁call▁))/.test(a);return 0===e.length?{content:a,toolCalls:null,recognized:h}:{content:(0,p.LW)(a,f),toolCalls:e,recognized:h}}(a,b,c);if(i.recognized&&g(i))return v(a,i,c);e=(f=e=a).includes("DSML")?f.replace(I,(a,b,c)=>{let d=b.toLowerCase();if("calls"===d)return"";let e=z(c,"name"),f=null!==e?` name="${e}"`:"";return"invoke"===d?`<tool${f}>`:`<parameter${f}>`}).replace(J,(a,b)=>{let c=b.toLowerCase();return"calls"===c?"":"invoke"===c?"</tool>":"</parameter>"}):f,(/[||]{1,2}DSML[||]{1,2}/i.test(e)||/<parameter\b/i.test(e)||/<\/(?:parameter|invoke|arguments|calls|tool_calls|function_calls)>/i.test(e)||e.includes("This response is AI-generated, for reference only."))&&(e=(e=e.replace(/\s*This response is AI-generated, for reference only\.\s*$/i,"")).replace(/<\/?(?:[||]{1,2})DSML(?:[||]{1,2})\s*(?:calls|tool_calls|function_calls)>/gi,"").replace(/<(\/?)(?:(?:[||]{1,2})DSML(?:[||]{1,2})\s*)?invoke\b/gi,"<$1tool").replace(/<(\/?)(?:(?:[||]{1,2})DSML(?:[||]{1,2})\s*)?parameter\b/gi,"<$1parameter").replace(/(}\s*)<\/(?:parameter|invoke|calls|tool_calls|function_calls)>/gi,"$1"),/<parameter\b/i.test(e)&&!/<tool\b/i.test(e)&&(e=e.replace(/((?:<parameter\b[\s\S]*?<\/parameter>\s*)+)/gi,"<tool>$1</tool>"))),a=e}let j=function(a){let b=[],c=null;for(y.lastIndex=0;null!==(c=y.exec(a));)b.push({start:c.index,end:y.lastIndex,closing:"/"===c[1],suffix:c[2]?c[2].slice(1):"",attrs:c[3]||""});return b}(a);if(0===j.length&&!i)return v(a,(0,p.uQ)(a,b,c),c);let k=function(a){let b=new Map;if(!Array.isArray(a))return b;for(let c of a){let a=c?.function;if(!a?.name)continue;let d=a.parameters,e=d?.properties;e&&"object"==typeof e&&!Array.isArray(e)?b.set(a.name,new Set(Object.keys(e))):b.set(a.name,new Set)}return b}(c),l=function(a,b){let c=[],d=[];for(let b of a){if(!b.closing){d.push(b);continue}let a=d.pop();a&&c.push({open:a,close:b,innerStart:a.end,innerEnd:b.start})}for(let a of d){let d={start:b,end:b,closing:!0,suffix:"",attrs:""};c.push({open:a,close:d,innerStart:a.end,innerEnd:b})}return c}(j,a.length),m=[],n=(0,p.OA)(c);for(let b of l.filter(a=>!l.some(b=>b!==a&&b.open.start>=a.innerStart&&b.close.end<=a.innerEnd)).sort((a,b)=>a.open.start-b.open.start)){let c=b.open.suffix||z(b.open.attrs,"name")||z(b.open.attrs,"id")||"",d=a.slice(b.innerStart,b.innerEnd).replace(F,""),e=function(a,b,c,d){let e,f=b.trim(),g=A(f,"name"),h=A(f,"arguments")??A(f,"parameters"),i=h?null:function(a){let b={},c=!1,d=null;for(B.lastIndex=0;null!==(d=B.exec(a));){let a=d[1]||"",e=d[2],f=z(a,"name");if(!f)continue;let g=z(a,"content")??("string"==typeof e?e.trim():"");b[f]=g,c=!0}return c?b:null}(f),j=!!g||!!h||!!i,k=j?null:(0,p.n)(f);if(!k&&!j){let a=function(a){let b=a.indexOf("{");if(-1===b)return null;let c=0,d="",e=!1;for(let f=b;f<a.length;f+=1){let g=a[f];if(e){e=!1;continue}if(d){"\\"===g?e=!0:g===d&&(d="");continue}if('"'===g||"'"===g){d=g;continue}if("{"===g){c+=1;continue}if("}"===g&&0==(c-=1))return a.slice(b,f+1)}return null}(f);a&&(k=(0,p.n)(a))}let l=k?C(k.name)??C(k.type):null,m=g?(0,p.Ub)(g,c):null,n=l?(0,p.Ub)(l,c):null,o=a?(0,p.Ub)(a,c):null,q=null,r=!1,s=(a,b)=>{!q&&a&&(q=a,r=b)};if(s(m,!1),s(n,!1),s(o,!0),s(g,!1),s(l,!1),s(a,!0),!q&&!a&&k){let a=C(k.command),b=a?(0,p.Ub)(a,c):null;b&&(q=b,r=!1)}if(!q&&i&&d&&d.size>0){let a=Object.keys(i);if(a.length>0){let b=[];for(let[c,e]of d)e.size>0&&a.every(a=>e.has(a))&&b.push(c);1===b.length&&(q=b[0],r=!1)}}if(!q)return null;if(h)e=(0,p.n)(h)??h;else if(i)e=i;else if(k)if(void 0!==k.arguments)e=k.arguments;else if(void 0!==k.params)e=k.params;else if(r)e=k;else{let{name:a,type:b,id:c,command:d,arguments:f,params:g,...h}=k;e=h}else e={};return{name:q,arguments:(0,p.r3)(e)}}(c,d,g,k);if(e){if(n){let a=(0,p.n)(d);if(a&&"string"==typeof a.name&&void 0!==a._nonce&&a._nonce!==n)continue}m.push({start:b.open.start,end:b.close.end,call:e})}}let o=[];if(i)for(let a of(o=i.strip,i.calls))m.push({start:a.start,end:a.end,call:{name:a.name,arguments:(0,p.r3)(a.args)}});if(0===m.length)return{content:a,toolCalls:null};m.sort((a,b)=>a.start-b.start);let q=[],r=[];for(let a of m)q.push({id:`${b}_${q.length}`,type:"function",function:{name:a.call.name,arguments:a.call.arguments}}),r.push({start:a.start,end:a.end});let s=[...r,...o,...j.filter(a=>!r.some(b=>a.start>=b.start&&a.end<=b.end)).map(a=>({start:a.start,end:a.end}))],w=(0,p.LW)(a,s);return q.length>0&&(w=w.replace(/<parameter\b[^>]*>[\s\S]*?(?:<\/parameter>|$)/gi,"").replace(/<\/?(?:parameter|invoke|tool|calls|tool_calls|function_calls)\b[^>]*>/gi,"").replace(/\n{3,}/g,"\n\n").trim()),function(a,b,c){if(!b.toolCalls)return b;let d=(0,p.OA)(c),e=[];for(let f of b.toolCalls){let b=(0,p.n)(f.function.arguments);if(!b)return{content:a,toolCalls:null};if(!("_nonce"in b)){e.push(f);continue}if(b._nonce!==d)return{content:a,toolCalls:null};let{_nonce:g,...h}=b;if(!u(c,f.function.name,h))return{content:a,toolCalls:null};e.push({...f,function:{...f.function,arguments:JSON.stringify(h)}})}return{content:b.content,toolCalls:e}}(a,{content:w,toolCalls:q},c)}function R(a,{min:b=-Number.MAX_SAFE_INTEGER,max:c=Number.MAX_SAFE_INTEGER}={}){return Number.isSafeInteger(a)&&a>=b&&a<=c}async function S(a){let b=await fetch("https://chat.deepseek.com/api/v0/chat/create_pow_challenge",{method:"POST",headers:{...a.headers,"Content-Type":"application/json",Authorization:`Bearer ${a.accessToken}`},body:JSON.stringify({target_path:a.targetPath}),signal:a.signal??void 0});if(!b.ok)throw Error(`create_pow_challenge HTTP ${b.status}`);let c=await b.json(),d={...c?.data?.biz_data?.challenge??c?.biz_data?.challenge,target_path:a.targetPath};if(!d||"string"!=typeof d.algorithm||"string"!=typeof d.challenge||"string"!=typeof d.salt||"string"!=typeof d.signature||!R(d.difficulty,{min:1})||!R(d.expire_at,{min:0})||"string"!=typeof d.target_path)throw Error("Invalid DeepSeek PoW challenge");return d}var T=c(98915);function U(a){let b=a.toLowerCase();return b.includes("think")||b.includes("r1")||b.includes("reason")}function V(a){let b=a.toLowerCase();return b.includes("search")||b.includes("fold")}function W(a,b){let c=a.replace(/^FINISHED\s*/,"").replace(/^(WEB_SEARCH|SEARCHING|SEARCH)\s*/i,"");return V(b)?b.toLowerCase().includes("search-silent")?c.replace(/\[citation:(\d+)\]/g,""):c.replace(/\[citation:(\d+)\]/g,"[$1]"):c}function X(a,b){return 0===a.length||b.toLowerCase().includes("search-silent")?"":a.filter(a=>a.cite_index).sort((a,b)=>(a.cite_index||0)-(b.cite_index||0)).map(a=>`[${a.cite_index}]: [${a.title}](${a.url})`).join("\n")}let Y="https://chat.deepseek.com",Z=`${Y}/api`,$=`${Z}/v0/chat/completion`,_={Accept:"*/*","Accept-Encoding":"gzip, deflate, br, zstd","Accept-Language":"en-US,en;q=0.9",Origin:Y,Referer:`${Y}/`,"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36","X-Client-Bundle-Id":"com.deepseek.chat","X-Client-Locale":"en-US","X-Client-Platform":"web","X-Client-Version":"2.0.0"},aa=new Map,ab=new Map;function ac(a){if(a.size>=100){let b=a.keys().next().value;b&&a.delete(b)}}function ad(a){let b=a?.apiKey||a?.accessToken;return"string"!=typeof b||0===b.length?null:(0,T.Xm)(b)}function ae(a,b,c){return new Response(JSON.stringify({error:{message:b,type:"upstream_error",code:c??`HTTP_${a}`}}),{status:a,headers:{"Content-Type":"application/json"}})}function af(){let a=Date.now(),b=()=>"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,a=>{let b=16*Math.random()|0;return("x"===a?b:3&b|8).toString(16)});return`intercom-HWWAFSESTIME=${a}; HWWAFSESID=${Array.from({length:18},()=>Math.floor(16*Math.random()).toString(16)).join("")}; Hm_lvt_${b()}=${Math.floor(a/1e3)}; _frid=${b()}`}async function ag(a,b){let c=await o(a.algorithm,a.challenge,a.salt,a.difficulty,a.expire_at,{signal:b});if(c<0)throw Error("PoW solver failed");return Buffer.from(JSON.stringify({algorithm:a.algorithm,challenge:a.challenge,salt:a.salt,answer:c,signature:a.signature,target_path:a.target_path})).toString("base64")}async function ah(a,b){let c=new TextDecoder,d=a.getReader(),e="",f="",g="",h="",i=!1,j=b||"deepseek-web",k=U(j),l=[],m=a=>{let b=W(a,j);if(!b)return;let c=h;!c&&k?c="thinking":!c&&V(j)&&(c="content"),"thinking"===c?g+=b:f+=b},n=(a,b=!1)=>{let c;if(b&&("THINK"===(c=String(a?.type||"").toUpperCase())?h="thinking":("ANSWER"===c||"RESPONSE"===c)&&(h="content")),"string"==typeof a?.content&&0!==a.content.length){if(!b){let b=String(a?.type||"").toUpperCase();"THINK"===b?h="thinking":("ANSWER"===b||"RESPONSE"===b)&&(h="content")}m(a.content)}};for(;;){let{done:a,value:b}=await d.read();if(a)break;let f=(e+=c.decode(b,{stream:!0})).split("\n");for(let a of(e=f.pop()||"",f)){if(!a.startsWith("data: ")&&!a.startsWith("data:"))continue;let b=a.replace(/^data:\s*/,"").trim();try{let a=JSON.parse(b),c=a?.p,d=a?.v;if("response/status"===c&&"FINISHED"===d&&(i=!0),d&&"object"==typeof d&&d.response&&(!0===d.response.thinking_enabled?h="thinking":!1===d.response.thinking_enabled&&(h="content"),Array.isArray(d.response.fragments)))for(let a of d.response.fragments)n(a,!1);if("response/fragments"===c)if(Array.isArray(d))for(let a of d)n(a,!0);else d&&"object"==typeof d&&n(d,!0);if("response"===c&&Array.isArray(d))for(let a of d)a?.p==="response"&&a?.v?.thinking_enabled===!0&&(h="thinking");if("response/search_status"===c)continue;if("response/search_results"===c&&Array.isArray(d)){if(a?.o!=="BATCH")l.length=0,l.push(...d);else for(let a of d){let b=String(a?.p||"").match(/^(\d+)\/cite_index$/);if(b){let c=parseInt(b[1],10);l[c]&&(l[c].cite_index=a.v)}}continue}if("string"==typeof d)m(d);else if(Array.isArray(d)&&"response"===c){for(let a of d)if(Array.isArray(a?.v)){let b=a.v.map(a=>a?.content||"").join("");b&&m(b)}}}catch{}}}let o=X(l,j);if(o&&(f+=`
236
+ `).join("")+"data: [DONE]\n\n",{headers:{"Content-Type":"text/event-stream; charset=utf-8"}}):Response.json({id:f,object:"chat.completion",created:g,model:a,choices:[{index:0,message:{role:"assistant",content:b.text},finish_reason:"stop"}]})}async function aA(a){let b=function(a,b){if(!ap(b))throw Error("ChatGPT Web clean-room adapter requires an object body");let{prompt:c,hasTools:d,requestedTools:e}=function(a){let b,c;if(!Array.isArray(a.messages)||0===a.messages.length)throw Error("ChatGPT Web clean-room adapter requires messages");let d=a.messages[0],e=1===a.messages.length&&ap(d)&&"user"===d.role&&!(Array.isArray(a.tools)&&a.tools.length>0),f=!1;if(e)b=as(d.content);else{let d=(0,aj.S$)(a,a.messages);f=d.hasTools,c=d.requestedTools,b=(function(a){let b=new Map,c=[],d=[],e=!1;for(let f of a){if(!ap(f)||"string"!=typeof f.role)throw Error("ChatGPT Web clean-room adapter received an invalid message");let a=as(f.content).trim();if("system"===f.role||"developer"===f.role){a&&c.push(a);continue}if("user"===f.role){a&&d.push(`User:
237
+ ${a}`);continue}if("assistant"===f.role){let c=[];for(let d of(a&&c.push(a),Array.isArray(f.tool_calls)?f.tool_calls:[])){let a="string"==typeof d?.function?.name?d.function.name:"",f=d?.function?.arguments,g="string"==typeof f&&f?f:JSON.stringify(f??{});d?.id&&b.set(d.id,a),c.push(`<tool>{"name": ${JSON.stringify(a)}, "arguments": ${g}}</tool>`),e=!0}c.length&&d.push(`Assistant:
238
+ ${c.join("\n")}`);continue}if("tool"===f.role){let c=f.tool_call_id&&b.get(f.tool_call_id)||f.name||"tool";d.push(`Tool result (${c}): ${a||"(no output)"}`),e=!0;continue}throw Error(`ChatGPT Web clean-room adapter does not support the "${f.role}" role`)}return e&&d.push("Continue the task using the tool results above. Do NOT repeat tool calls that already succeeded; perform the next step or give the final answer."),[...c,...d]})(d.effectiveMessages).join("\n\n")}if(!b.trim())throw Error("ChatGPT Web clean-room adapter requires non-empty text");if(new TextEncoder().encode(b).byteLength>4194304)throw Error("ChatGPT Web clean-room adapter prompt is too large");return{prompt:b,hasTools:f,requestedTools:c}}(b),f=function(a){let b=[...function(a){let b=[];for(let[c,d]of(a||[]).entries())if(Array.isArray(d?.content))for(let[a,e]of d.content.entries()){let d;if(!k(e))continue;let f=l(e.type)?.toLowerCase();if("image_url"===f&&k(e.image_url)?d=l(e.image_url.url):"input_image"===f?d=l(e.image_url??e.url):"image"===f&&"string"==typeof e.source&&(d=l(e.source)),!d)continue;let g=l(e.filename??e.name),h=b.length+1,j=n(d);b.push({kind:"image",ref:d,name:m(g,`image-${h}.${function(a){let b=n(a);if(b&&i[b])return i[b];try{let b=/\.([a-zA-Z0-9]{2,5})$/.exec(new URL(a).pathname);if(b&&["gif","jpeg","jpg","png","webp"].includes(b[1].toLowerCase()))return b[1].toLowerCase().replace("jpeg","jpg")}catch{}return"png"}(d)}`),...j?{mimeType:j}:{},messageIndex:c,partIndex:a})}return b}(a),...function(a){let b=[];for(let c of a||[])if(Array.isArray(c?.content))for(let a of c.content){if(!k(a))continue;let c=l(a.type)?.toLowerCase();("file"===c||"input_file"===c)&&b.push(function(a){let b=k(a.file)?a.file:a,c=l(b.file_data??a.file_data),d=l(b.mime_type??a.mime_type)?.toLowerCase(),e=c;if(!e)throw new j("ChatGPT Web file input requires base64 file_data");return e.toLowerCase().startsWith("data:")||(e=`data:${d??"application/octet-stream"};base64,${e}`),{kind:"file",ref:e,name:m(l(b.filename??a.filename),"attachment.bin"),...d?{mimeType:d}:{}}}(a))}return b}(a)];if(b.length>10)throw new j("ChatGPT Web accepts at most 10 attachments per request");return b}(b.messages);return{prompt:c,selection:function(a,b){let c=a.trim().toLowerCase().replace(/^chatgpt-web\//,"").replace(/^cgpt-web\//,"").replace(/\./g,"-");if("gpt-5-6-luna-free"===c)return{kind:"free",thinkEnabled:!1};if("gpt-5-6-luna-free-thinking"===c)return{kind:"free",thinkEnabled:!0};if("gpt-5-6-pro"===c)return{kind:"picker",modelLabel:"GPT-5.6 Sol",effortIndex:4};if("gpt-5-6-instant"===c||"gpt-5-6"===c)return{kind:"picker",modelLabel:"GPT-5.6 Sol",effortIndex:0};if(["gpt-5-6-thinking","gpt-5-6-sol"].includes(c))return{kind:"picker",modelLabel:"GPT-5.6 Sol",effortIndex:au(at(b))};if("gpt-5-5-pro"===c)return{kind:"picker",modelLabel:"GPT-5.5",effortIndex:4};if("gpt-5-5-instant"===c)return{kind:"picker",modelLabel:"GPT-5.5",effortIndex:0};if(["gpt-5-5","gpt-5-5-thinking"].includes(c))return{kind:"picker",modelLabel:"GPT-5.5",effortIndex:au(at(b))};throw Error(`ChatGPT Web clean-room adapter received an unsupported model: ${a}`)}(a,b),attachments:f,hasTools:d,requestedTools:e}}(a.model,a.body),c=await o(b.attachments),d=av(a.credentials),f=aw(a.credentials.connectionId);if(!f)throw Error("ChatGPT Web clean-room adapter requires a connection ID");let g=a.credentials.providerSpecificData,h=await ay({connectionId:f,storageState:d,selection:b.selection,userAgent:aw(g?.customUserAgent),locale:aw(g?.locale),timezone:aw(g?.timezone),chromeExecutablePath:ax(aw(g?.chromeExecutablePath)),proxyOptions:a.proxyOptions||null}),p=await ai(h,{prompt:b.prompt,attachments:c,pluginHints:function(a){if(null==a)return[];let b=Array.isArray(a)?a:"string"==typeof a?a.split(/[,\n]/):[],c=new Set,d=[];for(let a of b){let b="string"==typeof a?a.trim():"";!/^plugin:[A-Za-z0-9_-]+$/.test(b)||c.has(b)||(c.add(b),d.push(b))}return d}(g?.pluginHints),signal:a.signal});return b.hasTools?am(az(a.model,p,!1),b.requestedTools,a.stream,{idSeed:"cgpt",cid:`chatcmpl-${(0,e.randomUUID)()}`,created:Math.floor(Date.now()/1e3),model:a.model}):az(a.model,p,a.stream)}let aB=/(content policy|violat(?:es|ed|ion)|can't create|cannot create|i can't generate|i cannot generate|not able to create|unable to create|safety)/i,aC=a=>new Promise(b=>setTimeout(b,a));class aD extends Error{constructor(a,b){super(a),this.name="ChatGptWebImageError",b&&(this.status=b)}}async function aE(a){return a.evaluate(async a=>{let b=globalThis[a],c=[b?.finalizeRequirements,b?.proofManager?.getEnforcementToken,b?.turnstileManager?.getEnforcementToken,b?.buildSentinelHeaders].every(a=>"function"==typeof a),d="function"==typeof b?.resolveIntegrity&&"function"==typeof b?.requestClient?.safePost;if(!c&&!d)throw Error("ChatGPT Web first-party challenge bridge is incomplete");if(d){let a=await b.resolveIntegrity(async a=>b.requestClient.safePost("/sentinel/chat-requirements/prepare",{requestBody:{p:a}}));return{...a?.headers??{}}}let e=await b.finalizeRequirements(!1,"none"),[f,g]=await Promise.all([b.proofManager.getEnforcementToken(e,{forceSync:!0}),b.turnstileManager.getEnforcementToken(e)]);return b.buildSentinelHeaders(e,g,f,null,null,null)},C)}async function aF(a){return a.evaluate(async()=>{let a=await fetch("/api/auth/session",{credentials:"include"});if(!a.ok)throw Error("ChatGPT Web browser session is unavailable");let b=await a.json();if("string"!=typeof b?.accessToken||!b.accessToken)throw Error("ChatGPT Web browser session has no access token");return b.accessToken})}async function aG(a,b,{sizeHint:c,signal:d}){let e=await aE(a),f=await aF(a);return a.evaluate(async({accessToken:a,headers:b,prompt:c,sizeHint:d,maxBytes:e})=>{let f={...b,Authorization:`Bearer ${a}`},g=async(a,b)=>{let c=a.body?.getReader();if(!c)return"";let d=new TextDecoder,e=[],f=0;try{for(;;){let{done:a,value:g}=await c.read();if(a)break;if(g){if((f+=g.byteLength)>b)throw await c.cancel().catch(()=>{}),Error(`response exceeded ${b} bytes`);e.push(d.decode(g,{stream:!0}))}}e.push(d.decode())}finally{try{c.releaseLock()}catch{}}return e.join("")},h=async(a,b,c)=>{let d=new AbortController,e=setTimeout(()=>d.abort(),c);try{return await fetch(a,{...b,signal:d.signal})}finally{clearTimeout(e)}},i=await h("/backend-api/f/conversation/prepare",{method:"POST",credentials:"include",headers:{...f,"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({action:"next",fork_from_shared_post:!1,parent_message_id:crypto.randomUUID(),model:"auto",client_prepare_state:"success",timezone_offset_min:new Date().getTimezoneOffset(),timezone:Intl.DateTimeFormat().resolvedOptions().timeZone,conversation_mode:{kind:"primary_assistant"},system_hints:["picture_v2"],partial_query:{id:crypto.randomUUID(),author:{role:"user"},content:{content_type:"text",parts:[c]}},supports_buffering:!0,supported_encodings:["v1"],client_contextual_info:{app_name:"chatgpt.com"}})},6e4);if(!i.ok)throw Error(`prepare failed with status ${i.status}`);let j=(await i.json()).conduit_token||"",k=d?`${c} (aspect ratio ${d})`:c,l=new AbortController,m=setTimeout(()=>l.abort(),9e4),n="";try{let a=await fetch("/backend-api/f/conversation",{method:"POST",credentials:"include",signal:l.signal,headers:{...f,"Content-Type":"application/json",Accept:"text/event-stream","X-Conduit-Token":j,"X-Oai-Turn-Trace-Id":crypto.randomUUID()},body:JSON.stringify({action:"next",messages:[{id:crypto.randomUUID(),author:{role:"user"},create_time:Date.now()/1e3,content:{content_type:"text",parts:[k]},metadata:{developer_mode_connector_ids:[],selected_github_repos:[],selected_all_github_repos:!1,system_hints:["picture_v2"],serialization_metadata:{custom_symbol_offsets:[]}}}],parent_message_id:crypto.randomUUID(),model:"auto",client_prepare_state:"sent",timezone_offset_min:new Date().getTimezoneOffset(),timezone:Intl.DateTimeFormat().resolvedOptions().timeZone,conversation_mode:{kind:"primary_assistant"},enable_message_followups:!0,system_hints:["picture_v2"],supports_buffering:!0,supported_encodings:["v1"],client_contextual_info:{is_dark_mode:!1,time_since_loaded:1200,page_height:1072,page_width:1724,pixel_ratio:1.2,screen_height:1440,screen_width:2560,app_name:"chatgpt.com"},paragen_cot_summary_display_override:"allow",force_parallel_switch:"auto"})});if(!a.ok){let b=a.status;throw await a.body?.cancel().catch(()=>{}),Error(`conversation failed with status ${b}`)}try{n=await g(a,e)}catch(a){if(!l.signal.aborted&&!/exceeded/.test(String(a?.message||"")))throw a}}finally{clearTimeout(m),l.abort()}let o=(n.match(/"conversation_id"\s*:\s*"([0-9a-f-]{36})"/)||[])[1]||"",p=[],q=[],r=(a,b)=>{b&&!a.includes(b)&&a.push(b)};for(let a of n.matchAll(/file-service:\/\/([A-Za-z0-9_-]+)/g))r(p,a[1]);for(let a of n.matchAll(/\bfile_00000000[a-f0-9]{24}\b/g))r(p,a[0]);for(let a of n.matchAll(/sediment:\/\/([A-Za-z0-9_-]+)/g))r(q,a[1]);return{conversationId:o,fileIds:p,sedimentIds:q}},{accessToken:f,headers:e,prompt:b,sizeHint:c,maxBytes:0x1000000})}async function aH(a,b,c,d,{signal:e,log:f}){let g=Date.now(),h=[...d.fileIds],i=[...d.sedimentIds];for(await aC(8e3);;){if(e?.aborted)throw Error("Request aborted");if(Date.now()-g>24e4)throw new aD("ChatGPT image generation timed out",504);let d=await a.evaluate(async({accessToken:a,conversationId:b,maxBytes:c})=>{let d,e=async(a,b,c)=>{let d=new AbortController,e=setTimeout(()=>d.abort(),c);try{return await fetch(a,{...b,signal:d.signal})}finally{clearTimeout(e)}},f=await e(`/backend-api/conversation/${b}`,{credentials:"include",headers:{Authorization:`Bearer ${a}`,Accept:"application/json"}},3e4);if(!f.ok)return{status:f.status};if(Number(f.headers.get("content-length")??"0")>c)return{status:413};let g=await f.text();if(g.length>c)return{status:413};try{d=JSON.parse(g)}catch{return{status:502}}let h=[],i=[],j=(a,b)=>{b&&!a.includes(b)&&a.push(b)},k=a=>{if(Array.isArray(a))return a.some(k);if(a&&"object"==typeof a){if("image_asset_pointer"===String(a.content_type||""))return!0;let b=String(a.asset_pointer||"");return!!(b.startsWith("file-service://")||b.startsWith("sediment://"))||Object.values(a).some(k)}return!1},l=a=>{if("string"==typeof a){for(let b of a.matchAll(/file-service:\/\/([A-Za-z0-9_-]+)/g))j(h,b[1]);for(let b of a.matchAll(/\bfile_00000000[a-f0-9]{24}\b/g))j(h,b[0]);for(let b of a.matchAll(/sediment:\/\/([A-Za-z0-9_-]+)/g))j(i,b[1]);return}Array.isArray(a)?a.forEach(l):a&&"object"==typeof a&&Object.values(a).forEach(l)},m="";for(let a of Object.values(d.mapping||{})){let b=(a||{}).message||{},c=String(b.author?.role||"").toLowerCase();if("tool"!==c&&"assistant"!==c)continue;let d=b.metadata||{},e="image_gen"===d.async_task_type,f=k(b.content)||k(d);if(("assistant"!==c||e||f)&&(l({content:b.content,metadata:d}),"assistant"===c&&d.is_error&&b.content?.content_type==="text")){let a=(Array.isArray(b.content.parts)?b.content.parts:[]).filter(a=>"string"==typeof a).join("");a&&(m=a.slice(0,300))}}return{status:200,fileIds:h,sedimentIds:i,errorText:m}},{accessToken:b,conversationId:c,maxBytes:0x2000000});if(200!==d.status)f?.debug?.("CGPT-WEB-IMG",`conversation poll status ${d.status}, retrying`);else{for(let a of d.fileIds)h.includes(a)||h.push(a);for(let a of d.sedimentIds)i.includes(a)||i.push(a);if(h.length>0||i.length>0)return{fileIds:h.filter(a=>"file_upload"!==a),sedimentIds:i};if(d.errorText&&aB.test(d.errorText))throw new aD(`ChatGPT refused the image request: ${d.errorText}`,400)}await aC(5e3)}}async function aI(a,b,c,{fileIds:d,sedimentIds:e}){for(let c of d){let d=await a.evaluate(async({accessToken:a,fileId:b})=>{let c=async(a,b,c)=>{let d=new AbortController,e=setTimeout(()=>d.abort(),c);try{return await fetch(a,{...b,signal:d.signal})}finally{clearTimeout(e)}},d=await c(`/backend-api/files/${b}/download`,{credentials:"include",headers:{Authorization:`Bearer ${a}`,Accept:"application/json"}},6e4);if(!d.ok)return{status:d.status};let e=await d.json(),f=e.download_url||e.url||"";if(!f)return{status:404};let g=await c(f,{},9e4);if(!g.ok)return{status:g.status};let h=await g.blob(),i=new Uint8Array(await h.arrayBuffer()),j="";for(let a=0;a<i.length;a+=32768)j+=String.fromCharCode(...i.subarray(a,a+32768));return{status:200,mime:h.type||"image/png",b64:btoa(j)}},{accessToken:b,fileId:c});if(200===d.status&&d.b64)return{b64:d.b64,mime:d.mime}}for(let d of e){let e=await a.evaluate(async({accessToken:a,conversationId:b,sedimentId:c})=>{let d=async(a,b,c)=>{let d=new AbortController,e=setTimeout(()=>d.abort(),c);try{return await fetch(a,{...b,signal:d.signal})}finally{clearTimeout(e)}},e=await d(`/backend-api/conversation/${b}/attachment/${c}/download`,{credentials:"include",headers:{Authorization:`Bearer ${a}`,Accept:"application/json"}},6e4);if(!e.ok)return{status:e.status};let f=await e.json(),g=f.download_url||f.url||"";if(!g)return{status:404};let h=await d(g,{},9e4);if(!h.ok)return{status:h.status};let i=await h.blob(),j=new Uint8Array(await i.arrayBuffer()),k="";for(let a=0;a<j.length;a+=32768)k+=String.fromCharCode(...j.subarray(a,a+32768));return{status:200,mime:i.type||"image/png",b64:btoa(k)}},{accessToken:b,conversationId:c,sedimentId:d});if(200===e.status&&e.b64)return{b64:e.b64,mime:e.mime}}throw new aD("ChatGPT image generation produced no downloadable file",502)}async function aJ(a,{prompt:b,sizeHint:c,signal:d,log:e}){if(await R(a),d?.aborted)throw Error("Request aborted");let f=await aG(a,b,{sizeHint:c,signal:d});if(!f.conversationId&&0===f.fileIds.length&&0===f.sedimentIds.length)throw new aD("ChatGPT image conversation produced no conversation id",502);let g=await aF(a),h=f.fileIds.length>0||f.sedimentIds.length>0?f:await aH(a,g,f.conversationId,f,{signal:d,log:e});return aI(a,g,f.conversationId,h)}var aK=c(39609),aL=c(49426),aM=c(41004);let aN="OpenAI-Sentinel-Chat-Requirements-Prepare-Token",aO=a=>Buffer.from(JSON.stringify(a),"utf8").toString("base64"),aP=["https://chatgpt.com/cdn/assets/685809.dec86dcdc1.js","https://chatgpt.com/cdn/assets/399565.a1117ca8b4.js"],aQ=["cookie","domain","readyState","title","URL","charset","location"],aR=["caches","crypto","fetch","indexedDB","localStorage","origin"],aS=["userAgent","language","hardwareConcurrency"],aT=a=>a[Math.floor(Math.random()*a.length)];function aU(a){let b=aT(aS);return[2080,new Date().toString(),null,0,a,aT(aP),null,"en-US","en-US,en",0,`${b}−${a}`,aT(aQ),aT(aR),0,crypto.randomUUID(),"",8,0,0,0,0,0,0,0,0]}async function aV(a,{headers:b,body:c,signal:d,proxyOptions:e=null,timeoutMs:f=aM.pH}){let g,h=(0,aL.n)(d,f);try{g=await (0,aK.proxyAwareFetch)(a,{method:"POST",headers:{...b,"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify(c??{}),signal:h.signal},e)}catch(a){throw h.settleError(a)}finally{h.clear()}let i=await g.text().catch(()=>"");if(!g.ok)throw Object.assign(Error(`ChatGPT ${new URL(a).pathname} failed (HTTP ${g.status}) ${i.slice(0,200)}`),{status:g.status});try{return JSON.parse(i)}catch{throw Object.assign(Error(`ChatGPT ${new URL(a).pathname} returned invalid JSON`),{status:502})}}async function aW({baseUrl:a,accessToken:b,userAgent:c,signal:d,proxyOptions:e=null}){let f,g={Authorization:`Bearer ${b}`,"User-Agent":c},h=await aV(`${a}/backend-api/sentinel/chat-requirements/prepare`,{headers:{...g,[aN]:((f=aU(c))[3]=1,f[9]=0,`gAAAAAC${aO(f)}`)},signal:d,proxyOptions:e});if(!h?.prepare_token)throw Object.assign(Error("ChatGPT sentinel prepare returned no prepare_token"),{status:502});let i=await aV(`${a}/backend-api/sentinel/chat-requirements`,{headers:{...g,[aN]:h.prepare_token},signal:d,proxyOptions:e}),j={};return i?.token&&(j["OpenAI-Sentinel-Chat-Requirements-Token"]=i.token),i?.proofofwork?.required&&(j["OpenAI-Sentinel-Proof-Token"]=function({seed:a,difficulty:b,userAgent:c}){if(!a||!b)throw Error("ChatGPT sentinel asked for proof of work without seed/difficulty");let d=performance.now(),e=aU(c);for(let c=0;c<5e5;c++){e[3]=c,e[9]=Math.round(performance.now()-d);let f=aO(e);if((function(a){let b=0x811c9dc5;for(let c=0;c<a.length;c++)b^=a.charCodeAt(c),b=Math.imul(b,0x1000193)>>>0;return b^=b>>>16,b=Math.imul(b,0x85ebca6b)>>>0,b^=b>>>13,b=Math.imul(b,0xc2b2ae35)>>>0,((b^=b>>>16)>>>0).toString(16).padStart(8,"0")})(`${a}${f}`).slice(0,b.length)<=b)return`gAAAAAB${f}~S`}throw Error("ChatGPT sentinel proof of work exhausted its iteration budget")}({seed:i.proofofwork.seed,difficulty:i.proofofwork.difficulty,userAgent:c})),j}async function aX({baseUrl:a,accessToken:b,cookie:c,userAgent:d,conversationId:e,proxyOptions:f=null,log:g=null,timeoutMs:h=aM.pH}){if(!e)return!1;let i=(0,aL.n)(null,h);try{let h=await (0,aK.proxyAwareFetch)(`${a}/backend-api/conversation/${encodeURIComponent(e)}/delete`,{method:"POST",headers:{Authorization:`Bearer ${b}`,"User-Agent":d,Accept:"application/json","Content-Type":"application/json",...c?{Cookie:c}:{}},body:"{}",signal:i.signal},f);return g?.debug?.("CGPT-WEB",`conversation delete HTTP ${h.status}`),h.ok}catch(a){return g?.debug?.("CGPT-WEB",`conversation delete failed: ${a?.message||a}`),!1}finally{i.clear()}}let aY=/(content policy|violat(?:es|ed|ion)|can't create|cannot create|i can't generate|i cannot generate|not able to create|unable to create|safety)/i,aZ=a=>new Promise(b=>setTimeout(b,a));class a$ extends Error{constructor(a,b){super(a),this.name="ChatGptWebImageError",b&&(this.status=b)}}function a_(a,b,c,d,e=null){let f=new AbortController,g=setTimeout(()=>f.abort(),c),h=()=>f.abort();return d?.addEventListener("abort",h,{once:!0}),(0,aK.proxyAwareFetch)(a,{...b,signal:f.signal},e).finally(()=>{clearTimeout(g),d?.removeEventListener("abort",h)})}function a0(a){return(Array.isArray(a?.cookies)?a.cookies:[]).filter(a=>a?.name&&"string"==typeof a.value).map(a=>`${a.name}=${a.value}`).join("; ")}async function a1(a,b,c){let d=a.body?.getReader();if(!d)return"";let e=new TextDecoder,f="",g=Date.now()+c;try{for(;Date.now()<g;){let{done:a,value:c}=await d.read();if(a)break;if(c&&(f+=e.decode(c,{stream:!0})).length>b)break}}catch{}finally{await d.cancel().catch(()=>{})}return f}let a2=(a,b,c)=>{let d=(a,b)=>{b&&!a.includes(b)&&a.push(b)};for(let c of a.matchAll(/file-service:\/\/([A-Za-z0-9_-]+)/g))d(b,c[1]);for(let c of a.matchAll(/\bfile_00000000[a-f0-9]{24}\b/g))d(b,c[0]);for(let b of a.matchAll(/sediment:\/\/([A-Za-z0-9_-]+)/g))d(c,b[1])};function a3({accessToken:a,userAgent:b,cookie:c,sentinel:d}){return{...d,Authorization:`Bearer ${a}`,"User-Agent":b,...c?{Cookie:c}:{}}}async function a4(a,b,c,d){let{baseUrl:f}=a,g=a3(a),h=await a_(`${f}/backend-api/f/conversation/prepare`,{method:"POST",headers:{...g,"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({action:"next",fork_from_shared_post:!1,parent_message_id:(0,e.randomUUID)(),model:"auto",client_prepare_state:"success",timezone_offset_min:0,timezone:"UTC",conversation_mode:{kind:"primary_assistant"},system_hints:["picture_v2"],partial_query:{id:(0,e.randomUUID)(),author:{role:"user"},content:{content_type:"text",parts:[b]}},supports_buffering:!0,supported_encodings:["v1"],client_contextual_info:{app_name:"chatgpt.com"}})},6e4,d,a.proxyOptions);if(!h.ok)throw new a$(`ChatGPT prepare failed (HTTP ${h.status})`,h.status||502);let i=await h.json().catch(()=>null),j=i?.conduit_token||"",k=c?`${b} (aspect ratio ${c})`:b,l=await a_(`${f}/backend-api/f/conversation`,{method:"POST",headers:{...g,"Content-Type":"application/json",Accept:"text/event-stream","X-Conduit-Token":j,"X-Oai-Turn-Trace-Id":(0,e.randomUUID)()},body:JSON.stringify({action:"next",messages:[{id:(0,e.randomUUID)(),author:{role:"user"},create_time:Date.now()/1e3,content:{content_type:"text",parts:[k]},metadata:{developer_mode_connector_ids:[],selected_github_repos:[],selected_all_github_repos:!1,system_hints:["picture_v2"],serialization_metadata:{custom_symbol_offsets:[]}}}],parent_message_id:(0,e.randomUUID)(),model:"auto",client_prepare_state:"sent",timezone_offset_min:0,timezone:"UTC",conversation_mode:{kind:"primary_assistant"},enable_message_followups:!0,system_hints:["picture_v2"],supports_buffering:!0,supported_encodings:["v1"],client_contextual_info:{is_dark_mode:!1,time_since_loaded:1200,page_height:1072,page_width:1724,pixel_ratio:1.2,screen_height:1440,screen_width:2560,app_name:"chatgpt.com"},paragen_cot_summary_display_override:"allow",force_parallel_switch:"auto"})},105e3,d,a.proxyOptions);if(!l.ok)throw new a$(`ChatGPT conversation failed (HTTP ${l.status})`,l.status||502);let m=await a1(l,0x1000000,9e4),n=(m.match(/"conversation_id"\s*:\s*"([0-9a-f-]{36})"/)||[])[1]||"",o=[],p=[];return a2(m,o,p),{conversationId:n,fileIds:o,sedimentIds:p}}async function a5(a,b,c,{signal:d,log:e}){let f=Date.now(),g=[...c.fileIds],h=[...c.sedimentIds],i={...a3(a),Accept:"application/json"};for(await aZ(5e3);Date.now()-f<=24e4;){if(d?.aborted)throw Error("Request aborted");let c=await a_(`${a.baseUrl}/backend-api/conversation/${b}`,{headers:i},3e4,d,a.proxyOptions).catch(()=>null);if(!c?.ok){e?.debug?.("CGPT-WEB-IMG",`conversation poll status ${c?.status??"network"}, retrying`),await aZ(5e3);continue}if(Number(c.headers.get("content-length")??"0")>0x2000000)throw new a$("ChatGPT conversation document is unexpectedly large",502);let f=await c.text().catch(()=>"");if(f.length>0x2000000)throw new a$("ChatGPT conversation document is unexpectedly large",502);if(a2(f,g,h),g.length>0||h.length>0)return{fileIds:g.filter(a=>"file_upload"!==a),sedimentIds:h};if(aY.test(f)&&/"is_error"\s*:\s*true/.test(f))throw new a$("ChatGPT refused the image request (content policy)",400);if(/ChatGPTAgentToolRateLimitException|Free plan limit for image generation/i.test(f))throw new a$("ChatGPT account has hit its image generation quota — add another account or wait for the reset",429);await aZ(5e3)}throw new a$("ChatGPT image generation timed out",504)}async function a6(a,b,c){let d=await a_(b,{},9e4,c,a.proxyOptions);if(!d.ok)return null;let e=Buffer.from(await d.arrayBuffer());return e.length?{b64:e.toString("base64"),mime:(d.headers.get("content-type")||"image/png").split(";")[0]}:null}async function a7(a,b,{fileIds:c,sedimentIds:d},e){let f={...a3(a),Accept:"application/json"};for(let b of c){let c=await a_(`${a.baseUrl}/backend-api/files/${b}/download`,{headers:f},6e4,e,a.proxyOptions).catch(()=>null);if(!c?.ok)continue;let d=await c.json().catch(()=>null),g=d?.download_url||d?.url||"";if(!g)continue;let h=await a6(a,g,e);if(h)return h}for(let c of d){let d=await a_(`${a.baseUrl}/backend-api/conversation/${b}/attachment/${c}/download`,{headers:f},6e4,e,a.proxyOptions).catch(()=>null);if(!d?.ok)continue;let g=await d.json().catch(()=>null),h=g?.download_url||g?.url||"";if(!h)continue;let i=await a6(a,h,e);if(i)return i}throw new a$("ChatGPT image generation produced no downloadable file",502)}async function a8({baseUrl:a,accessToken:b,cookie:c,userAgent:d,prompt:e,sizeHint:f,signal:g,log:h,proxyOptions:i=null}){if(!b)throw new a$("ChatGPT session has no access token",401);if(g?.aborted)throw Error("Request aborted");let j=await aW({baseUrl:a,accessToken:b,userAgent:d,signal:g,proxyOptions:i}),k={baseUrl:a,accessToken:b,cookie:c,userAgent:d,sentinel:j,proxyOptions:i||null},l=await a4(k,e,f,g);if(!l.conversationId&&0===l.fileIds.length&&0===l.sedimentIds.length)throw new a$("ChatGPT image conversation produced no conversation id",502);let m=l.fileIds.length>0||l.sedimentIds.length>0?l:await a5(k,l.conversationId,l,{signal:g,log:h});try{return await a7(k,l.conversationId,m,g)}finally{aX({baseUrl:a,accessToken:b,cookie:c,userAgent:d,conversationId:l.conversationId,proxyOptions:i,log:h})}}let a9=a=>new Promise(b=>setTimeout(b,a));function ba(a,b,c,d,e=null){let f=new AbortController,g=setTimeout(()=>f.abort(),c),h=()=>f.abort();return d?.addEventListener("abort",h,{once:!0}),(0,aK.proxyAwareFetch)(a,{...b,signal:f.signal},e).finally(()=>{clearTimeout(g),d?.removeEventListener("abort",h)})}async function bb(a,b,c){let d=a.body?.getReader();if(!d)return"";let e=new TextDecoder,f="",g=Date.now()+c;try{for(;Date.now()<g;){let{done:a,value:c}=await d.read();if(a)break;if(c&&(f+=e.decode(c,{stream:!0})).length>b)break}}catch{}finally{await d.cancel().catch(()=>{})}return f}async function bc(a,{limit:b,deadlineMs:c,signal:d,onText:e}){let f=a.body?.getReader();if(!f)return{raw:"",text:""};let g=new TextDecoder,h=new y,i=Date.now()+c,j="",k="",l="",m=()=>{let a=k.split(/\r?\n\r?\n/);for(let b of(k=a.pop()||"",a))if(b.trim())try{h.ingest(`${b}
267
239
 
268
- ${o}`),!i)throw Error("DeepSeek web session ended before completion (no FINISHED signal received) — likely a dropped cookie session or network interruption upstream. Retry the request.");return{content:f,reasoningContent:g}}async function ai(a,b,c){let d=aa.get(a);if(d&&d.expiresAt>Math.floor(Date.now()/1e3))return d.accessToken;c?.info?.("DEEPSEEK-WEB","Acquiring access token from /users/current...");let e=await fetch(`${Z}/v0/users/current`,{headers:{Authorization:`Bearer ${a}`,..._},signal:b??void 0});if(401===e.status||403===e.status)throw Error("Token invalid or expired — get a new userToken from DeepSeek localStorage");if(!e.ok)throw Error(`users/current HTTP ${e.status}`);let f=await e.json();if(f?.code&&0!==f.code){let b=f.msg||f?.data?.biz_msg||`error code ${f.code}`;throw aa.delete(a),Error(`DeepSeek rejected token: ${b}`)}let g=f?.data?.biz_data||f?.biz_data;if(!g?.token){let a=f?.msg||f?.data?.biz_msg||"Unknown error";throw Error(`Failed to acquire token: ${a}`)}let h=g.token;return ac(aa),aa.set(a,{accessToken:h,expiresAt:Math.floor(Date.now()/1e3)+3600}),c?.info?.("DEEPSEEK-WEB",`Access token acquired (${h.length} chars)`),h}async function aj(a,b){let c=await fetch(`${Z}/v0/chat_session/create`,{method:"POST",headers:{..._,"Content-Type":"application/json",Authorization:`Bearer ${a}`,Cookie:af()},body:JSON.stringify({}),signal:b??void 0});if(!c.ok)throw Error(`chat_session/create HTTP ${c.status}`);let d=await c.json(),e=d?.data?.biz_data||d?.biz_data,f=e?.chat_session?.id;if(!f)throw Error(`No session id: code=${d?.code}`);return f}async function ak(a,b){try{await fetch(`${Z}/v0/chat_session/delete`,{method:"POST",headers:{..._,"Content-Type":"application/json",Authorization:`Bearer ${a}`},body:JSON.stringify({chat_session_id:b})})}catch{}}async function al(a,b,c="/api/v0/chat/completion"){return S({accessToken:a,headers:_,signal:b,targetPath:c})}class am extends d.H{constructor(){super("deepseek-web",{baseUrl:Y})}async testConnection(a,b){try{let c=ad(a);if(!c)return!1;return!!await ai(c,b)}catch{return!1}}async execute({model:a,body:b,stream:c,credentials:d,signal:g,log:h}){var i;let j,k,l=b||{},m=l.tools,n=Array.isArray(m)&&m.length>0,o=n?function(a){if(!Array.isArray(a)||0===a.length)return"";let b=(0,p.OA)(a);if(!b)return"";let c=[];for(let d of a){let a=d?.function;if(!a?.name)continue;let e="string"==typeof a.description&&a.description?a.description:"",f="";try{let c=t(a.parameters),d=t(c?.properties),e=Array.isArray(c?.required)?c.required.filter(a=>"string"==typeof a):[],g=c?{...c,properties:{...d??{},_nonce:{type:"string",const:b}},required:[...new Set([...e,"_nonce"])]}:a.parameters;f=g?JSON.stringify(g):""}catch{f=""}c.push(`- ${a.name}${e?`: ${e}`:""}${f?`
269
- parameters: ${f}`:""}`)}return 0===c.length?"":["You can call tools. To call a tool, output ONLY this exact block (no markdown fence):",`<tool>{"name": "<tool_name>", "arguments": { ... }, "_nonce": "${b}"}</tool>`,"Rules:","- Use exactly <tool>...</tool>. Do NOT use <tool:name>, <tool_call>, <name>, <parameter>, id=/name= attributes, <||DSML||> markers, or code fences.",`- Include the secret binding "_nonce": "${b}" exactly as shown.`,'- "name" must be one of the tools below; "arguments" must be a JSON object.',"- When a tool is needed, emit the <tool> block instead of only describing the plan.","- Emit one <tool> block per call; you may put several blocks back to back.","- If your runtime forces DSML instead, every DSML invoke MUST include this exact binding:",`<||DSML|| parameter name="_nonce" string="true">${b}</||DSML|| parameter>`," A DSML invoke without that binding is invalid and will be rejected.","- If no tool is needed, just answer normally without any <tool> block.","","Available tools:",...c].join("\n")}(m):"",q=Array.isArray(l.messages)?l.messages:[],r=o?[{role:"system",content:o},...q]:q,s=d??{},u=ad(s);if(!u)return{response:ae(400,"Missing userToken — paste it from DeepSeek localStorage (DevTools → Application → Local Storage → chat.deepseek.com → userToken)"),url:$,headers:{},transformedBody:b};let{modelType:v,thinkingEnabled:y,searchEnabled:z}=(k=(j=(a||"").toLowerCase()).includes("pro")||j.includes("expert")?"expert":"default",{modelType:k,thinkingEnabled:j.includes("r1")||j.includes("think")||j.includes("reason")||l?.thinking_enabled===!0||l?.thinking===!0||!!l?.reasoning_effort,searchEnabled:j.includes("search")||l?.search_enabled===!0||l?.search===!0||l?.web_search===!0}),A=s.providerSpecificData??{},B=!0===A.persistSession,C="number"==typeof A.historyWindow&&A.historyWindow>0?A.historyWindow:0;try{let b=Date.now(),d=await ai(u,g,h);h?.info?.("DEEPSEEK-WEB",`Token acquired in ${Date.now()-b}ms`);let j=n?function(a,b){let c=[];b&&c.push(b);let d=[],e=new Map,f=!1;for(let b of a)if("system"===b.role){let a=x(b.content).trim();a&&c.push(a)}else if("user"===b.role){let a=x(b.content).trim();a&&d.push(`User: ${a}`)}else if("assistant"===b.role){let a=x(b.content).trim(),c=Array.isArray(b.tool_calls)?b.tool_calls:[],g=[];for(let b of(a&&g.push(a),c)){let a="string"==typeof b?.function?.name?b.function.name:"",c=b?.function?.arguments,d="string"==typeof c&&c?c:JSON.stringify(c??{});b?.id&&e.set(b.id,a),g.push(`<tool>{"name": ${JSON.stringify(a)}, "arguments": ${d}}</tool>`),f=!0}g.length&&d.push(`Assistant: ${g.join("\n")}`)}else if("tool"===b.role){let a=x(b.content).trim(),c=b.tool_call_id&&e.get(b.tool_call_id)||b.name||"tool";d.push(`Tool result (${c}): ${a||"(no output)"}`),f=!0}let g=[];return c.length&&g.push(c.join("\n\n")),d.length&&g.push(d.join("\n\n")),f&&g.push("Continue the task using the tool results above. Do NOT repeat tool calls that already succeeded; perform the next step or give the final answer."),g.join("\n\n").replace(/!\[.*?\]\(.*?\)/g,"")}(q,o):function(a,b=0){if(0===a.length)return"";let c=[],d=[],e=new Map,f="";for(let b of a){var g;let a=(Array.isArray(g=b.content)?g.filter(a=>"text"===a.type).map(a=>a.text).join("\n"):String(g||"")).trim();if("system"===b.role)a&&c.push(a);else if("user"===b.role||"assistant"===b.role)for(let c of(a&&d.push({role:b.role,text:a}),"user"===b.role&&(f=a),Array.isArray(b.tool_calls)?b.tool_calls:[]))c?.id&&"string"==typeof c.function?.name&&e.set(c.id,c.function.name);else if("tool"===b.role&&a){let c=b.tool_call_id&&e.get(b.tool_call_id)||b.name||"tool";d.push({role:"tool",text:`(${c}) ${a}`})}}let h=[];c.length>0&&h.push(c.join("\n\n"));let i=b>0?b:20*(d.length>1);if(i>0&&d.length>1){let a=d.slice(-i).map(a=>"assistant"===a.role?`Assistant: ${a.text}`:"tool"===a.role?`Tool result ${a.text}`:`User: ${a.text}`).join("\n\n");h.push(a)}else f&&h.push(f);return h.join("\n\n").replace(/!\[.*?\]\(.*?\)/g,"")}(r,C);h?.info?.("DEEPSEEK-WEB",`model_type=${v}, thinking=${y}, search=${z}, stream=${!1!==c}, persist=${B}, window=${C}`);let k=async(a,b=j)=>{let c=await al(d,g),e=await ag(c,g),f={..._,"Content-Type":"application/json",Authorization:`Bearer ${d}`,"X-Ds-Pow-Response":e,"X-Client-Timezone-Offset":String(-60*new Date().getTimezoneOffset()),Cookie:af()},h={chat_session_id:a,parent_message_id:null,model_type:v,prompt:b,ref_file_ids:Array.isArray(l.ref_file_ids)?l.ref_file_ids:[],thinking_enabled:y,search_enabled:z,preempt:!1};return{resp:await fetch($,{method:"POST",headers:f,body:JSON.stringify(h),signal:g??void 0}),reqHeaders:f,requestPayload:h}},s=async()=>{if(B){let a=ab.get(u);if(a)return{sessionId:a.sessionId,reused:!0};let b=await aj(d,g);return ac(ab),ab.set(u,{sessionId:b,createdAt:Date.now()}),{sessionId:b,reused:!1}}return{sessionId:await aj(d,g),reused:!1}};b=Date.now();let{sessionId:t,reused:A}=await s();h?.info?.("DEEPSEEK-WEB",`Session ${A?"reused":"created"} in ${Date.now()-b}ms`),b=Date.now(),h?.info?.("DEEPSEEK-WEB",`POST ${$}`);let{resp:D,reqHeaders:E,requestPayload:F}=await k(t);if(h?.info?.("DEEPSEEK-WEB",`Completion response in ${Date.now()-b}ms, status=${D.status}`),!D.ok&&B&&A&&(h?.warn?.("DEEPSEEK-WEB","Reused session failed — retrying with a fresh session"),ab.delete(u),t=await aj(d,g),ac(ab),ab.set(u,{sessionId:t,createdAt:Date.now()}),A=!1,{resp:D,reqHeaders:E,requestPayload:F}=await k(t)),!D.ok){let a=D.status,b=`DeepSeek API error (${a})`;401===a||403===a?(aa.delete(u),b="DeepSeek token expired — get a fresh userToken from localStorage."):429===a&&(b="DeepSeek rate limited. Wait and retry."),h?.warn?.("DEEPSEEK-WEB",b);try{let a=await D.json();a?.code&&0!==a.code&&(b=`DeepSeek error ${a.code}: ${a.msg}`)}catch{}return B&&ab.delete(u),ak(d,t).catch(()=>{}),{response:ae(a,b),url:$,headers:E,transformedBody:F}}if((D.headers.get("content-type")||"").includes("application/json"))try{let a=await D.json(),b=function(a){if(!a||"object"!=typeof a)return null;let b="number"==typeof a.code?a.code:void 0,c=a.msg,d=a.data?.biz_msg;return void 0!==b&&0!==b?{code:b,message:("string"==typeof c?c:"string"==typeof d?d:"")||`DeepSeek error ${b}`}:null}(a);if(b){let a=`DeepSeek error ${b.code}: ${b.message}`;h?.warn?.("DEEPSEEK-WEB",a);let c=40003===b.code?401:40002===b.code?429:502;return 40003===b.code&&aa.delete(u),B&&ab.delete(u),ak(d,t).catch(()=>{}),{response:ae(c,a,b.code),url:$,headers:E,transformedBody:F}}return B||ak(d,t).catch(()=>{}),{response:new Response(JSON.stringify(a),{status:200,headers:{"Content-Type":"application/json"}}),url:$,headers:E,transformedBody:F}}catch{}let G=B?async()=>{}:()=>ak(d,t),H="string"==typeof a&&a.trim()?a.trim():"deepseek-web";if(n){let{content:a,reasoningContent:b}=await ah(D.body,H),i=Q(a,`call-${Date.now()}`,m),l=async a=>(await G(),{response:ae(502,a),url:$,headers:E,transformedBody:F});if(function(a,b){if(w(a))return!0;if("string"!=typeof a||!a.trim())return!1;let c=(0,p.n)(a);if(!c||void 0===c.arguments)return!1;let d=[c.name,c.command].find(a=>"string"==typeof a&&a.length>0)??null;return!!d&&!!(0,p.Ub)(d,(0,p.x2)(b))}(i.content,m)){h?.warn?.("DEEPSEEK-WEB","Malformed tool envelope — retrying once with nonce binding"),ab.delete(u),await ak(d,t).catch(()=>{}),t=await aj(d,g),B&&(ac(ab),ab.set(u,{sessionId:t,createdAt:Date.now()}));let c=[j,"Your previous response used an invalid tool envelope and was rejected.","Retry the requested next action from scratch. Follow the client tool contract exactly, including its _nonce binding and argument schema. Do not emit bare JSON or unbound DSML."].join("\n\n");if({resp:D,reqHeaders:E,requestPayload:F}=await k(t,c),!D.ok)return l("DeepSeek tool-call repair request failed.");if({content:a,reasoningContent:b}=await ah(D.body,H),i=Q(a,`call-${Date.now()}`,m),w(i.content))return l("DeepSeek emitted an invalid tool call after repair.")}return await G(),function(a){let{stream:b,clientModel:c,content:d,reasoningContent:g,toolCalls:h,reqHeaders:i,requestPayload:j}=a,k=!!h&&h.length>0,l=k?"tool_calls":"stop",m=`chatcmpl-${Date.now()}`,n=Math.floor(Date.now()/1e3);if(b){let a=new TextEncoder,b=(b,d,e)=>{b.enqueue(a.encode((0,f.N)({id:m,object:"chat.completion.chunk",created:n,model:c,system_fingerprint:null,choices:[{index:0,delta:d,finish_reason:e,logprobs:null}]})))};return{response:new Response(new ReadableStream({start(c){b(c,{role:"assistant",content:""},null),g&&b(c,{reasoning_content:g},null),d&&b(c,{content:d},null),k&&b(c,{tool_calls:h.map((a,b)=>({index:b,id:a.id,type:"function",function:{name:a.function.name,arguments:a.function.arguments}}))},null),b(c,{},l),c.enqueue(a.encode(e.$U)),c.close()}}),{status:200,headers:{...e.uB}}),url:$,headers:i,transformedBody:j}}let o={role:"assistant",content:d||""};return g&&(o.reasoning_content=g),k&&(o.tool_calls=h,d||(o.content=null)),{response:new Response(JSON.stringify({id:m,object:"chat.completion",created:n,model:c,choices:[{index:0,message:o,finish_reason:l,logprobs:null}],usage:{prompt_tokens:0,completion_tokens:0,total_tokens:0}}),{status:200,headers:{"Content-Type":"application/json"}}),url:$,headers:i,transformedBody:j}}({stream:!1!==c,clientModel:H,content:i.content,reasoningContent:b,toolCalls:i.toolCalls,reqHeaders:E,requestPayload:F})}if(!1!==c){let a,b=(i=function(a,b,c=null){let d=new TextEncoder,g=new TextDecoder,h=b||"deepseek-web",i=`chatcmpl-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,j=Math.floor(Date.now()/1e3),k=!1,l="",m=U(h),n=[],o=null,p=null;return new ReadableStream({async start(b){var q;let r,s=a.getReader();o=s;let t="",u=!1,v=!1,w=(a,c)=>{b.enqueue(d.encode((0,f.N)({id:i,object:"chat.completion.chunk",created:j,model:h,system_fingerprint:null,choices:[{index:0,delta:a,finish_reason:c??null,logprobs:null}]})))},x=()=>{k||(k=!0,w({role:"assistant",content:""}))},{finishOnce:y,hasFinished:z}=(q=()=>{let a=X(n,h);a&&(x(),w({content:`
240
+ `)}catch{}let b=function(a){let b=a?.mapping||{},c=null;for(let a of Object.values(b)){let b=a?.message;if(!b||"assistant"!==String(b.author?.role||"").toLowerCase()||b.content?.content_type!=="text")continue;let d=(b.content.parts||[]).filter(a=>"string"==typeof a).join(""),e=Number(b.create_time)||0;(!c||e>=c.at)&&(c={text:d,at:e})}return c?.text??""}(h.snapshot());b&&b!==l&&(b.startsWith(l)&&e(b.slice(l.length)),l=b)};try{for(;Date.now()<i;){if(d?.aborted)throw Error("Request aborted");let{done:a,value:c}=await f.read();if(a)break;if(!c)continue;let e=g.decode(c,{stream:!0});if(j+=e,k+=e,j.length>b)break;m()}}catch{}finally{await f.cancel().catch(()=>{})}return{raw:j,text:l}}async function bd({baseUrl:a,accessToken:b,cookie:c,userAgent:d,body:f,signal:g,log:h,proxyOptions:i=null,onDelta:j=null,onReady:k=null}){var l,m;if(!b)throw Object.assign(Error("ChatGPT session has no access token"),{status:401});if(g?.aborted)throw Error("Request aborted");let n=Array.isArray(f?.messages)?f.messages:[];if(0===n.length)throw Object.assign(Error("ChatGPT Web requires messages"),{status:400});let o=(0,aj.S$)(f,n),p=(l=function(a){let b=[],c=[];for(let d of a){let a=String(d?.role||"user"),e=[];if("string"==typeof d?.content)e.push(d.content);else if(Array.isArray(d?.content))for(let a of d.content)"string"==typeof a?e.push(a):"string"==typeof a?.text&&e.push(a.text);if(Array.isArray(d?.tool_calls))for(let a of d.tool_calls){let b=a?.function?.name;if(!b)continue;let c=a.function.arguments;try{c="string"==typeof c?JSON.parse(c):c}catch{}e.push(`<tool>${JSON.stringify({name:b,arguments:c})}</tool>`)}let f=e.join("\n").trim();f&&("system"===a||"developer"===a?b.push(f):"tool"===a?c.push(`Tool result${d?.tool_call_id?` (${d.tool_call_id})`:""}: ${f}`):"assistant"===a?c.push(`Assistant: ${f}`):c.push(f))}return[...b,...c].join("\n\n")}(o.effectiveMessages),m=o.hasTools,m?n.some(a=>"tool"===String(a?.role||"").toLowerCase())?l:`Use the client tools provided below. Do not answer with prose when a tool is needed.
270
241
 
271
- ${a}`})),x(),w({},"stop"),b.enqueue(d.encode(e.$U)),b.close()},r=!1,{finishOnce:()=>{if(!r){r=!0;try{q()}catch{}}},hasFinished:()=>r}),{scheduleFinishAfterDrain:A,clearFinishedDrain:B,isDrainPending:C}=p=function(a,b=750){let c=null,d=()=>{c&&(clearTimeout(c),c=null)};return{scheduleFinishAfterDrain:()=>{d(),c=setTimeout(()=>{c=null,a()},b)},clearFinishedDrain:d,isDrainPending:()=>null!==c}}(y),D=a=>{let b=W(a,h);if(!b)return;x(),v=!0;let c=l;!c&&m?c="thinking":!c&&V(h)&&(c="content"),"thinking"===c?w({reasoning_content:b}):w({content:b})},E=(a,b=!1)=>{let c;if(b&&("THINK"===(c=String(a?.type||"").toUpperCase())?l="thinking":("ANSWER"===c||"RESPONSE"===c)&&(l="content")),"string"==typeof a?.content&&0!==a.content.length){if(!b){let b=String(a?.type||"").toUpperCase();"THINK"===b?l="thinking":("ANSWER"===b||"RESPONSE"===b)&&(l="content")}D(a.content)}};try{for(;;){let{done:a,value:b}=await s.read();if(a)break;let c=(t+=g.decode(b,{stream:!0})).split("\n");for(let a of(t=c.pop()||"",c)){let b;if(!a.startsWith("data: ")&&!a.startsWith("data:"))continue;let c=a.replace(/^data:\s*/,"").trim();if("[DONE]"===c)return void y();try{b=JSON.parse(c)}catch{continue}let d=b?.p,e=b?.o,f=b?.v;if(f&&"object"==typeof f&&f.response){!0===f.response.thinking_enabled?l="thinking":!1===f.response.thinking_enabled&&(l="content");let a=f.response.fragments;if(Array.isArray(a))for(let b of a)E(b,!1)}if("response/fragments"===d)if(Array.isArray(f))for(let a of f)E(a,!0);else f&&"object"==typeof f&&E(f,!0);if("response"===d&&Array.isArray(f))for(let a of f)a?.p==="response"&&a?.v?.thinking_enabled===!0&&(l="thinking");if("response/search_status"!==d){if("response/search_results"===d&&Array.isArray(f)){if("BATCH"!==e)n.length=0,n.push(...f);else for(let a of f){let b=String(a?.p||"").match(/^(\d+)\/cite_index$/);if(b){let c=parseInt(b[1],10);n[c]&&(n[c].cite_index=a.v)}}continue}if("string"==typeof f)D(f);else if(Array.isArray(f)&&"response"===d){for(let a of f)if(Array.isArray(a?.v)){let b=a.v.map(a=>a?.content||"").join("");b&&D(b)}}if("response/status"===d&&"FINISHED"===f){u=!0,A();continue}C()&&A()}}}}catch(a){B(),z()||b.error(a);return}if(!u&&!v){B(),b.error(Error("DeepSeek web session ended before completion (no FINISHED signal received) — likely a dropped cookie session or network interruption upstream. Retry the request."));return}u||c?.warn?.("DEEPSEEK-WEB","upstream closed without FINISHED after partial content; completing with what arrived"),y()},cancel(a){p?.clearFinishedDrain(),o?.cancel(a).catch(()=>{})}},{highWaterMark:16384})}(D.body,H,h),a=i.getReader(),new ReadableStream({async pull(b){let{done:c,value:d}=await a.read();if(c){b.close(),G().catch(()=>{});return}b.enqueue(d)},cancel(){a.cancel(),G().catch(()=>{})}}));return{response:new Response(b,{status:200,headers:{...e.uB}}),url:$,headers:E,transformedBody:F}}let{content:I,reasoningContent:J}=await ah(D.body,H);await G();let K={role:"assistant",content:I};J&&(K.reasoning_content=J);let L={id:`chatcmpl-${Date.now()}`,object:"chat.completion",created:Math.floor(Date.now()/1e3),model:a||v,choices:[{index:0,message:K,finish_reason:"stop",logprobs:null}],usage:{prompt_tokens:0,completion_tokens:0,total_tokens:0}};return{response:new Response(JSON.stringify(L),{status:200,headers:{"Content-Type":"application/json"}}),url:$,headers:E,transformedBody:F}}catch(c){let a=c instanceof Error?c.message:String(c);if(h?.error?.("DEEPSEEK-WEB",`Execute failed: ${a}`),c instanceof Error&&"AbortError"===c.name)return{response:ae(499,"Request cancelled"),url:$,headers:{},transformedBody:b};return{response:ae(502,`DeepSeek error: ${a}`),url:$,headers:{},transformedBody:b}}}}new am},61433:(a,b,c)=>{c.d(b,{r:()=>h});var d=c(55511),e=c.n(d),f=c(74957),g=c(12643);class h extends f.H{constructor(){super("iflow",g.xq.iflow)}generateUUID(){return e().randomUUID()}createIFlowSignature(a,b,c,d){if(!d)return"";let f=`${a}:${b}:${c}`,g=e().createHmac("sha256",d);return g.update(f),g.digest("hex")}buildHeaders(a,b=!0){let c=`session-${this.generateUUID()}`,d=Date.now(),e=this.config.headers["User-Agent"]||"iFlow-Cli",f=a.apiKey||a.accessToken||"",g=this.createIFlowSignature(e,c,d,f),h={"Content-Type":"application/json",...this.config.headers,"session-id":c,"x-iflow-timestamp":d.toString(),"x-iflow-signature":g};return a.apiKey&&(h.Authorization=`Bearer ${a.apiKey}`),b&&(h.Accept="text/event-stream"),h}buildUrl(a,b,c=0,d=null){return this.config.baseUrl}transformRequest(a,b,c,d){return c&&b.messages&&!b.stream_options&&(b.stream_options={include_usage:!0}),b}}},70298:(a,b,c)=>{c.d(b,{RF:()=>bc});var d=c(74957),e=c(77598),f=c(73024),g=c(76760),h=c(80479);let i={"image/gif":"gif","image/jpeg":"jpg","image/jpg":"jpg","image/png":"png","image/webp":"webp"};class j extends Error{constructor(a){super(a),this.name="ChatGptWebAttachmentError",this.status=400}}function k(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function l(a){return"string"==typeof a&&a.trim()?a.trim():void 0}function m(a,b){return((a??"").split(/[\\/]/).pop()?.replace(/[\u0000-\u001f\u007f]/g,"").trim()||b).slice(0,180)}function n(a){let b=/^data:([^;,]+);base64,/i.exec(a);return b?.[1]?.trim().toLowerCase()}async function o(a){if(a.length>10)throw new j("ChatGPT Web accepts at most 10 attachments per request");let b=[],c=0;for(let d of a){let a="image"===d.kind?0x1400000:0x3200000;if(!d.ref.toLowerCase().startsWith("data:"))throw new j("ChatGPT Web attachments must be data URLs");let e=function(a){let b=a.indexOf(",");if(b<0)throw new j("Attachment data URL is malformed");let c=a.slice(5,b);if(!/(?:^|;)base64(?:;|$)/i.test(c))throw new j("Attachment data URL must be base64 encoded");let d=(c.split(";")[0]||"application/octet-stream").toLowerCase(),e=a.slice(b+1);if(e.length>0x6400000)throw new j("Attachment is too large");let f=e.replace(/\s/g,"");if(!f||f.length%4!=0||!/^[A-Za-z0-9+/]+={0,2}$/.test(f))throw new j("Attachment contains invalid base64 data");let g=Buffer.from(f,"base64");if(!g.length||g.toString("base64").replace(/=+$/,"")!==f.replace(/=+$/,""))throw new j("Attachment contains invalid base64 data");return{bytes:g,mimeType:d}}(d.ref);if(!e.bytes.length)throw new j("Attachment is empty");if(e.bytes.length>a)throw new j("Attachment is too large");if((c+=e.bytes.length)>0x3200000)throw new j("Combined ChatGPT Web attachments are too large");if("image"===d.kind){let a=function(a,b){let c=a.length>=8&&0x89504e47===a.readUInt32BE(0)?"png":a.length>=3&&255===a[0]&&216===a[1]?"jpeg":a.length>=3&&"GIF"===a.toString("ascii",0,3)?"gif":a.length>=12&&"RIFF"===a.toString("ascii",0,4)&&"WEBP"===a.toString("ascii",8,12)?"webp":null,d=(a.length<24||0x89504e47!==a.readUInt32BE(0)?null:{width:a.readUInt32BE(16),height:a.readUInt32BE(20)})??function(a){if(a.length<4||255!==a[0]||216!==a[1])return null;let b=2;for(;b+9<a.length;){if(255!==a[b]){b+=1;continue}let c=a[b+1];if(c>=192&&c<=195||c>=197&&c<=199||c>=201&&c<=203||c>=205&&c<=207)return{height:a.readUInt16BE(b+5),width:a.readUInt16BE(b+7)};if(216===c||1===c||c>=208&&c<=215){b+=2;continue}b+=2+a.readUInt16BE(b+2)}return null}(a)??(a.length<10||"GIF"!==a.toString("ascii",0,3)?null:{width:a.readUInt16LE(6),height:a.readUInt16LE(8)})??function(a){if(a.length<30||"RIFF"!==a.toString("ascii",0,4)||"WEBP"!==a.toString("ascii",8,12))return null;let b=a.toString("ascii",12,16);if("VP8X"===b)return a.length<30?null:{width:1+((a[24]|a[25]<<8|a[26]<<16)&0xffffff),height:1+((a[27]|a[28]<<8|a[29]<<16)&0xffffff)};if("VP8 "===b)return a.length<30?null:{width:16383&a.readUInt16LE(26),height:16383&a.readUInt16LE(28)};if("VP8L"===b){if(a.length<25)return null;let b=a.readUInt32LE(21);return{width:(16383&b)+1,height:(b>>14&16383)+1}}return null}(a),e="jpeg"===c?"image/jpeg":c?`image/${c}`:void 0;if(!e||!d)throw new j("Image attachment is undecodable or unsupported");if(b.startsWith("image/")&&b!==e&&("image/jpg"!==b||"image/jpeg"!==e))throw new j("Image attachment type does not match its data");if(Math.max(d.width,d.height)>11264||d.width*d.height>4e7)throw new j("Image attachment dimensions are too large");return{mimeType:e,width:d.width,height:d.height}}(e.bytes,d.mimeType??e.mimeType);b.push({kind:"image",name:d.name,mimeType:a.mimeType,size:e.bytes.length,data:e.bytes,width:a.width,height:a.height});continue}b.push({kind:"file",name:d.name,mimeType:d.mimeType??e.mimeType,size:e.bytes.length,data:e.bytes})}return b}function p(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function q(a){return structuredClone(a)}let r=new Set(["add","append","patch","replace"]),s=new Set(["__proto__","constructor","prototype"]);function t(a){if(Array.isArray(a)){for(let b of a)t(b);return}if(p(a))for(let[b,c]of Object.entries(a)){if(s.has(b))throw Error(`Unsafe object key in ChatGPT Web delta: ${b}`);t(c)}}function u(a){let b=[],c=a.replace(/\r\n?/g,"\n").split("\n"),d="message",e=[],f=!1,g=()=>{if(!f){d="message",e=[];return}let a=e.join("\n"),c="[DONE]"===a?{parsed:!1}:function(a){try{return{parsed:!0,value:JSON.parse(a)}}catch{return{parsed:!1}}}(a);b.push({event:d,data:a,...c.parsed?{json:c.value}:{},done:"[DONE]"===a}),d="message",e=[],f=!1};for(let a of c){if(""===a){g();continue}if(a.startsWith(":"))continue;let b=a.indexOf(":"),c=b>=0?a.slice(0,b):a,h=b>=0?a.slice(b+1):"";h.startsWith(" ")&&(h=h.slice(1)),"event"===c?d=h||"message":"data"===c&&(e.push(h),f=!0)}return g(),b}function v(a,b,c){if(c&&"-"===a)return b;if(!/^(?:0|[1-9]\d*)$/.test(a))throw Error(`Invalid ChatGPT Web array index: ${a}`);let d=Number(a);if(!Number.isSafeInteger(d)||d<0||d>(c?b:b-1))throw Error(`ChatGPT Web array index is out of bounds: ${a}`);return d}function w(a,b){if(t(b),null==a)return q(b);if("string"==typeof a&&"string"==typeof b)return a+b;if(Array.isArray(a)){let c=q(a);return Array.isArray(b)?c.push(...q(b)):c.push(q(b)),c}if(p(a)&&p(b))return{...q(a),...q(b)};throw Error(`Cannot append ChatGPT Web delta values (${typeof a}, ${typeof b})`)}function x(a){if("string"!=typeof a||!r.has(a))throw Error(`Unsupported delta operation: ${String(a)}`);return a}class y{constructor(){this.document=null,this.lastPath=null,this.lastOperation=null,this.streamDone=!1}snapshot(){return q(this.document)}ingest(a){let b=u(a),c=!1;for(let a of b){if("delta_encoding"===a.event){if("v1"!==a.json)throw Error(`Unsupported ChatGPT Web delta encoding: ${String(a.json)}`);this.document=null,this.lastPath=null,this.lastOperation=null,this.streamDone=!1;continue}"delta"===a.event&&(this.applyDelta(a.json),c=!0),a.done&&(this.streamDone=!0)}return{events:b,changed:c,done:this.streamDone}}applyDelta(a){if(!p(a))throw Error("ChatGPT Web delta payload must be an object");let b=void 0===a.p?this.lastPath:a.p,c=void 0===a.o?this.lastOperation:x(a.o);if("string"!=typeof b||null===c)throw Error("ChatGPT Web delta requires a current or inherited path and operation");this.lastPath=b,this.lastOperation=c,this.applyAt(b,c,a.v)}applyAt(a,b,c){t(c);let d=function(a){if(""===a)return[];if(!a.startsWith("/"))throw Error(`Invalid ChatGPT Web JSON Pointer: ${a}`);return a.slice(1).split("/").map(a=>{let b=a.replace(/~1/g,"/").replace(/~0/g,"~");if(s.has(b))throw Error(`Unsafe JSON Pointer segment: ${b}`);return b})}(a);if(0===d.length)return void this.applyAtRoot(b,c);let e=this.document;for(let b of d.slice(0,-1))if(Array.isArray(e))e=e[v(b,e.length,!1)];else if(p(e)&&Object.hasOwn(e,b))e=e[b];else throw Error(`ChatGPT Web delta path does not exist: ${a}`);let f=d[d.length-1];if(Array.isArray(e))return void this.applyToArray(e,f,b,c);if(!p(e))throw Error(`ChatGPT Web delta path is not mutable: ${a}`);this.applyToObject(e,f,b,c)}applyAtRoot(a,b){if("add"===a||"replace"===a){this.document=q(b);return}if("append"===a){this.document=w(this.document,b);return}if(!Array.isArray(b))throw Error("ChatGPT Web patch value must be an array");for(let a of b){if(!p(a)||"string"!=typeof a.p)throw Error("ChatGPT Web patch entry requires an explicit path and operation");this.applyAt(a.p,x(a.o),a.v)}}applyToArray(a,b,c,d){if("patch"===c)throw Error("Nested ChatGPT Web patch is unsupported");if("add"===c)return void a.splice(v(b,a.length,!0),0,q(d));let e=v(b,a.length,!1);a[e]="append"===c?w(a[e],d):q(d)}applyToObject(a,b,c,d){if("patch"===c)throw Error("Nested ChatGPT Web patch is unsupported");if("add"!==c&&!Object.hasOwn(a,b))throw Error(`ChatGPT Web delta target does not exist: ${b}`);a[b]="append"===c?w(a[b],d):q(d)}}let z="https://chatgpt.com",A=/^\/(?:cdn|unauth-mweb|auth-mweb)\/(?:assets|scripts)\/[A-Za-z0-9._-]+\.js$/,B=/(?:^|\.)oaiusercontent\.com$/i,C="__ninerouterChatGptFirstPartyV1",D="__ninerouterChatGptAbortV1",E="__ninerouterChatGptRequestV1",F=new Map,G=new WeakMap,H=null;function I(a){return a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function J(a,b){let c=a.lastIndexOf("export{");if(c<0)return null;let d=a.slice(c+7).match(RegExp(`(?:^|,)${I(b)} as ([A-Za-z_$][\\w$]*)`));return d?.[1]??null}function K(a){let b=new URL(a);if(b.origin!==z||!A.test(b.pathname))throw Error("ChatGPT Web exposed an invalid first-party asset URL");return b.toString()}async function L(a){let b=new AbortController,c=setTimeout(()=>b.abort(),2e4);c.unref?.();try{let c=await fetch(a,{signal:b.signal});if(!c.ok)throw Error("ChatGPT Web first-party asset could not be loaded");let d=Number(c.headers.get("content-length")??"0");if(Number.isFinite(d)&&d>0x1800000)throw Error("ChatGPT Web first-party asset exceeded the size limit");let e=new Uint8Array(await c.arrayBuffer());if(e.byteLength>0x1800000)throw Error("ChatGPT Web first-party asset exceeded the size limit");return new TextDecoder().decode(e)}finally{clearTimeout(c)}}function M(a,b){return a instanceof Error?a:Error(b)}async function N(a){let b=await a.evaluate(()=>({modulePreloadUrls:Array.from(document.querySelectorAll('link[rel="modulepreload"][href]'),a=>a.href),resourceUrls:performance.getEntriesByType("resource").map(a=>a.name)}));return Array.from(new Set([...b.resourceUrls,...b.modulePreloadUrls])).filter(a=>{try{let b=new URL(a);return b.origin===z&&A.test(b.pathname)}catch{return!1}})}async function O(a,b){let c,d;try{c=K(a)}catch(a){return b.lastError=M(a,"Invalid ChatGPT asset URL"),null}if(b.visited.has(c))return null;b.visited.add(c);let e=F.get(c);if(e)try{return{assetUrl:c,contract:await e}}catch{F.delete(c)}try{d=await L(c)}catch(a){return b.lastError=M(a,"ChatGPT asset discovery failed"),null}try{let a=function(a){let b=a.match(/function ([A-Za-z_$][\w$]*)\(e=!1,t=`none`(?:,n=[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*)?)?\)\{return [A-Za-z_$][\w$]*\(`finalized`,e,t(?:,n)?\)\}/)?.[1],c=a.match(/Promise\.all\(\[([A-Za-z_$][\w$]*)\.getEnforcementToken\(t,\{forceSync:!0\}\),([A-Za-z_$][\w$]*)\.getEnforcementToken\(t\)\]\)/),d=a.match(/([A-Za-z_$][\w$]*)\.safePost\(`\/sentinel\/chat-requirements\/prepare`/)?.[1],e=a.match(/function ([A-Za-z_$][\w$]*)\(e,t,n,r,i,a\)\{let o=\{\};return e\?\.token\?o\[`OpenAI-Sentinel-Chat-Requirements-Token`\]/)?.[1],f=c?.[1],g=c?.[2];if(!b||!f||!g||!d||!e)throw Error("ChatGPT Web first-party module contract was not found");let h={finalizeRequirements:J(a,b),proofManager:J(a,f),turnstileManager:J(a,g),requestClient:J(a,d),buildSentinelHeaders:J(a,e)};if(Object.values(h).some(a=>null===a))throw Error("ChatGPT Web first-party module contract exports were not found");return h}(d);return F.set(c,Promise.resolve(a)),H=c,{assetUrl:c,contract:a}}catch(f){for(let[a,e]of Object.entries(function(a){let b={},c=a.match(/function ([A-Za-z_$][\w$]*)\(e=!1,t=`none`(?:,n=[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*)?)?\)\{return [A-Za-z_$][\w$]*\(`finalized`,e,t(?:,n)?\)\}/)?.[1]??a.match(/finalizeChatRequirements\s*:\s*\(\)\s*=>\s*([A-Za-z_$][\w$]*)/)?.[1];c&&(b.finalizeRequirements=J(a,c)??c);let d=a.match(/Promise\.all\(\[([A-Za-z_$][\w$]*)\.getEnforcementToken\(t,\{forceSync:!0\}\),([A-Za-z_$][\w$]*)\.getEnforcementToken\(t\)\]\)/),e=d?.[1]??a.match(/([A-Za-z_$][\w$]*)\.getEnforcementToken\([^)]*forceSync\s*:\s*!0/)?.[1],f=d?.[2];e&&(b.proofManager=J(a,e)??e),f&&(b.turnstileManager=J(a,f)??f);let g=a.match(/([A-Za-z_$][\w$]*)\.safePost\(`\/sentinel\/chat-requirements\/prepare`/)?.[1]??a.match(/([A-Za-z_$][\w$]*)\.(?:safePost|post)\([`"]\/sentinel\/chat-requirements\/prepare[`"]/)?.[1];g&&(b.requestClient=J(a,g)??g);let h=a.match(/function ([A-Za-z_$][\w$]*)\(e,t,n,r,i,a\)\{let o=\{\};return e\?\.token\?o\[`OpenAI-Sentinel-Chat-Requirements-Token`\]/)?.[1]??a.match(/([A-Za-z_$][\w$]*)\s*=\s*[^;]{0,1200}OpenAI-Sentinel-Chat-Requirements-Token/)?.[1];h&&(b.buildSentinelHeaders=J(a,h)??h);let i=a.match(/(?:^|\}\),)([A-Za-z0-9_$]+):\(function\(e,t,n\)\{n\.d\(t,\{([^}]+)\}\);[\s\S]{0,1800}?async function ([A-Za-z_$][\w$]*)\(e\)\{let t=[A-Za-z_$][\w$]*\(\),n=[A-Za-z_$][\w$]*\(await e\(t\)\)/);if(i){let[,a,c,d]=i,e=c.match(RegExp(`(?:^|,)\\s*([A-Za-z_$][\\w$]*):\\(\\)=>${I(d)}(?:,|$)`))?.[1];e&&(b.resolveIntegrity=e,b.resolveIntegrityModule=a)}return b}(d)))b.partial[a]||(b.partial[a]=e,b.symbolAssetUrls[a]=c);if(b.partial.requestClient&&(b.partial.resolveIntegrity&&b.partial.resolveIntegrityModule||b.partial.finalizeRequirements&&b.partial.proofManager&&b.partial.buildSentinelHeaders)){let a={finalizeRequirements:b.partial.finalizeRequirements??"",proofManager:b.partial.proofManager??"",turnstileManager:b.partial.turnstileManager??b.partial.proofManager??"",requestClient:b.partial.requestClient,buildSentinelHeaders:b.partial.buildSentinelHeaders??"",...b.partial.resolveIntegrity?{resolveIntegrity:b.partial.resolveIntegrity,resolveIntegrityModule:b.partial.resolveIntegrityModule}:{}},d=b.symbolAssetUrls.finalizeRequirements??c;return H=d,{assetUrl:d,contract:a}}let a=Object.keys(b.partial);b.lastError=a.length?Error(`ChatGPT module discovery incomplete: found ${a.join(", ")}`):M(f,"ChatGPT module discovery failed");let e=function(a,b){let c=[],d=new Set,e=/["']\.\/([A-Za-z0-9_-]+\.js)["']/g;for(let f=e.exec(a);f;f=e.exec(a)){let a;try{a=K(new URL(`./${f[1]}`,b).toString())}catch{continue}d.has(a)||(d.add(a),c.push(a))}return c}(d,c);return b.queue.push(...e.filter(a=>!b.visited.has(a))),null}}async function P(a){for(;a.index<a.queue.length&&a.visited.size<512;){let b=a.queue[a.index];a.index+=1;let c=await O(b,a);if(c)return c}return null}async function Q(a){let b={queue:[...H?[H]:[]],visited:new Set,index:0,lastError:null,partial:{},symbolAssetUrls:{}},c=Date.now()+15e3;for(;Date.now()<=c&&b.visited.size<512;){b.queue.push(...await N(a));let d=await P(b);if(d)return d;Date.now()<c&&await new Promise(a=>setTimeout(a,250))}throw Error("ChatGPT Web first-party request module was not loaded")}async function R(a){let b,c,d,e,f,g;if(await a.evaluate(a=>{let b=globalThis;return"object"==typeof b[a]&&null!==b[a]},C))return;let{assetUrl:h,contract:i}=await Q(a),j=(b=JSON.stringify(K(h)),c=JSON.stringify(i),d=JSON.stringify(C),i.resolveIntegrity&&i.resolveIntegrityModule?`import * as upstream from ${b};const names = ${c};const modules = upstream.__webpack_modules__;const factory = modules?.[names.resolveIntegrityModule];if (typeof factory !== "function") throw new Error("ChatGPT integrity module factory is unavailable");const exports = {};const requireShim = id => {if (id === "TI" || id === "DD") return { a: () => crypto.randomUUID() };const real = modules[id];if (typeof real === "function") {const nested = {};real({}, nested, requireShim);return nested;}throw new Error("Unsupported ChatGPT integrity dependency: " + id);};requireShim.d = (target, definitions) => {for (const [name, getter] of Object.entries(definitions)) {Object.defineProperty(target, name, { enumerable: true, get: getter });}};factory({}, exports, requireShim);const resolveIntegrity = exports[names.resolveIntegrity];if (typeof resolveIntegrity !== "function") throw new Error("ChatGPT integrity resolver is unavailable");const sessionPromise = fetch("/api/auth/session", { credentials: "include" }).then(async response => {if (!response.ok) throw new Error("ChatGPT browser session is unavailable");return response.json();});const requestClient = {safePost: async (path, options = {}) => {const headers = new Headers(options.additionalHeaders || {});const session = await sessionPromise;if (typeof session?.accessToken === "string" && session.accessToken) {headers.set("Authorization", "Bearer " + session.accessToken);}headers.set("Accept", "application/json");if (!headers.has("Content-Type")) headers.set("Content-Type", "application/json");const body = typeof options.requestBody === "string" ? options.requestBody : JSON.stringify(options.requestBody ?? {});const response = await fetch("/backend-api" + path, {method: "POST", credentials: "include", headers, body, signal: options.signal});if (options.skipJsonTransform) return response;if (!response.ok) throw new Error("ChatGPT request failed with status " + response.status);return response.json();}};window[${d}] = { requestClient, resolveIntegrity };`:`import * as upstream from ${b};const names = ${c};window[${d}] = {finalizeRequirements: upstream[names.finalizeRequirements],proofManager: upstream[names.proofManager],turnstileManager: upstream[names.turnstileManager],requestClient: upstream[names.requestClient],buildSentinelHeaders: upstream[names.buildSentinelHeaders],resolveIntegrity: names.resolveIntegrity ? upstream[names.resolveIntegrity] : undefined};`),k=(e=[],f=a=>{let b=a.url();(b===h||b.startsWith("blob:"))&&e.push({kind:"requestfailed",detail:`${b} failed: ${a.failure()?.errorText??"unknown error"}`})},g=a=>{e.push({kind:"pageerror",detail:a instanceof Error?a.message:String(a)})},a.on("requestfailed",f),a.on("pageerror",g),{signals:e,dispose:()=>{a.off("requestfailed",f),a.off("pageerror",g)}});try{await a.evaluate(({bridgeKey:a,moduleSource:b})=>new Promise((c,d)=>{let e=globalThis;if("object"==typeof e[a]&&null!==e[a])return void c();let f="",g=new AbortController;document.addEventListener("securitypolicyviolation",a=>{f||(f=`${a.violatedDirective} blocked ${a.blockedURI}`)},{signal:g.signal});let h=URL.createObjectURL(new Blob([b],{type:"text/javascript"})),i=document.createElement("script");i.type="module",i.src=h,i.onload=()=>{URL.revokeObjectURL(h),g.abort(),"object"==typeof e[a]&&null!==e[a]?c():d(Error("ChatGPT Web first-party bridge did not initialize"))},i.onerror=()=>{URL.revokeObjectURL(h),g.abort(),d(Error(f?`csp: ${f}`:"no in-page reason"))},document.head.appendChild(i)}),{bridgeKey:C,moduleSource:j})}catch(c){let a=c instanceof Error?c.message:String(c),b=[...k.signals];throw a.startsWith("csp: ")?b.unshift({kind:"csp",detail:a.slice(5)}):a&&"no in-page reason"!==a&&b.push({kind:"pageerror",detail:a}),Error(function(a){let b="ChatGPT Web first-party bridge module failed to load";if(0===a.length)return`${b} (no CSP violation, failed request or page error was captured)`;let c=a.find(a=>"csp"===a.kind)??a.find(a=>"requestfailed"===a.kind)??a[0];return`${b}: ${c.kind}: ${c.detail}`}(b))}finally{k.dispose()}}async function S(a,b,c){return a.evaluate(async({abortKey:a,attachments:b,bridgeKey:c,requestId:d})=>{let e=globalThis,f=e[c];if("function"!=typeof f?.requestClient?.safePost)throw Error("ChatGPT Web first-party request client is unavailable");let g=e[a]??={},h=new AbortController;g[d]=h;let i=[];for(let a of b){let b="image"===a.kind?"multimodal":"my_files",c=await f.requestClient.safePost("/files",{requestBody:{file_name:a.name,file_size:a.size,use_case:b,timezone_offset_min:new Date().getTimezoneOffset(),reset_rate_limits:!1,supports_direct_azure_multipart:!0,mime_type:a.mimeType,entry_surface:"chat_composer",selection_method:"file_picker",client_resolved_mime_type:a.mimeType,mime_resolution_source:"filename_extension",store_in_library:!1},signal:h.signal}),d=c;if(c instanceof Response){if(!c.ok){let a=c.status;throw await c.body?.cancel().catch(()=>{}),Error(`ChatGPT Web file registration failed with status ${a}`)}d=await c.json()}if(!d||"object"!=typeof d||"string"!=typeof d.file_id||"string"!=typeof d.upload_url)throw Error("ChatGPT Web file registration returned an invalid response");i.push({fileId:d.file_id,uploadUrl:d.upload_url})}return i},{abortKey:D,attachments:c.map(({kind:a,mimeType:b,name:c,size:d})=>({kind:a,mimeType:b,name:c,size:d})),bridgeKey:C,requestId:b})}async function T(a,b){for(let c of a){let a=await fetch(function(a){let b=new URL(a);if("https:"!==b.protocol||!B.test(b.hostname))throw Error("ChatGPT Web returned an invalid upload destination");return b.toString()}(c.uploadUrl),{method:"PUT",headers:{Accept:"application/json, text/plain, */*","Content-Type":c.attachment.mimeType,"x-ms-blob-type":"BlockBlob","x-ms-version":"2020-04-08"},body:new Uint8Array(c.attachment.data),signal:b??void 0});if(!a.ok)throw Error(`ChatGPT Web attachment upload failed with status ${a.status}`)}}async function U(a,b,c){await a.evaluate(async({abortKey:a,bridgeKey:b,registered:c,requestId:d})=>{let e=globalThis,f=e[b];if("function"!=typeof f?.requestClient?.safePost)throw Error("ChatGPT Web first-party request client is unavailable");let g=e[a],h=g?.[d];if(!h)throw Error("ChatGPT Web request cancellation scope is unavailable");for(let a of c){let b="image"===a.kind?"multimodal":"my_files",c=await f.requestClient.safePost("/files/process_upload_stream",{requestBody:{file_id:a.fileId,use_case:b,index_for_retrieval:"image"!==a.kind,file_name:a.name,entry_surface:"chat_composer",metadata:{store_in_library:!1,is_temporary_chat:!0,library_eligibility_reason:"eligible",is_project_thread:!1}},signal:h.signal,skipJsonTransform:!0});if(c instanceof Response){let a=c.status,b=c.ok;if(await c.text(),!b)throw Error(`ChatGPT Web file processing failed with status ${a}`)}}},{abortKey:D,bridgeKey:C,registered:c,requestId:b})}async function V(a,b,c,d){let e=function(a){if("free"===a.kind)return{model:"auto",reason:a.thinkEnabled};let b="GPT-5.6 Sol"===a.modelLabel?"gpt-5-6":"gpt-5-5";return 4===a.effortIndex?{model:`${b}-pro`,reason:!1}:{model:b,reason:a.effortIndex>0}}(b.selection);await a.evaluate(({mode:a,prompt:b,registered:c,requestId:d,requestKey:e,pluginHints:f})=>{let g=globalThis,h=c.filter(a=>"image"===a.kind),i=c.map(a=>({id:a.fileId,size:a.size,name:a.name,mime_type:a.mimeType,..."image"===a.kind?{width:a.width,height:a.height}:{non_library_my_files_injest_upload:!0},source:"local",is_big_paste:!1})),j=[...a.reason?["reason"]:[],...Array.isArray(f)?f:[]],k={...j.length?{system_hints:j}:{},...i.length?{attachments:i}:{},serialization_metadata:{custom_symbol_offsets:[]}},l=h.length?{content_type:"multimodal_text",parts:[...h.map(a=>({content_type:"image_asset_pointer",asset_pointer:`sediment://${a.fileId}`,size_bytes:a.size,width:a.width,height:a.height})),b]}:{content_type:"text",parts:[b]};(g[e]??={})[d]={body:{action:"next",messages:[{id:crypto.randomUUID(),author:{role:"user"},create_time:Date.now()/1e3,content:l,metadata:k}],parent_message_id:"client-created-root",model:a.model,timezone_offset_min:new Date().getTimezoneOffset(),timezone:Intl.DateTimeFormat().resolvedOptions().timeZone,history_and_training_disabled:!0,conversation_mode:{kind:"primary_assistant"},system_hints:j,supports_buffering:!0,supported_encodings:["v1"]}}},{mode:e,prompt:b.prompt,registered:d,requestId:c,requestKey:E,pluginHints:Array.isArray(b.pluginHints)?b.pluginHints:[]})}async function W(a,b){await a.evaluate(async({abortKey:a,bridgeKey:b,requestId:c,requestKey:d})=>{let e=globalThis,f=e[b],g=[f?.finalizeRequirements,f?.proofManager?.getEnforcementToken,f?.turnstileManager?.getEnforcementToken,f?.buildSentinelHeaders].every(a=>"function"==typeof a),h="function"==typeof f?.resolveIntegrity&&"function"==typeof f?.requestClient?.safePost;if(!g&&!h)throw Error("ChatGPT Web first-party challenge bridge is incomplete");let i=e[a]?.[c],j=e[d]?.[c];if(!i||!j)throw Error("ChatGPT Web request scope is unavailable");if(h){let a=await f.resolveIntegrity(async a=>f.requestClient.safePost("/sentinel/chat-requirements/prepare",{requestBody:{p:a},signal:i.signal}));j.additionalHeaders=a?.headers??{}}else{let a=await f.finalizeRequirements(!1,"none");if(i.signal.aborted)throw new DOMException("Aborted","AbortError");let[b,c]=await Promise.all([f.proofManager.getEnforcementToken(a,{forceSync:!0}),f.turnstileManager.getEnforcementToken(a)]);j.additionalHeaders=f.buildSentinelHeaders(a,c,b,null,null,null)}},{abortKey:D,bridgeKey:C,requestId:b,requestKey:E})}async function X(a,b){await a.evaluate(async({abortKey:a,bridgeKey:b,requestId:c,requestKey:d})=>{let e=globalThis,f=e[b]?.requestClient,g=e[a]?.[c],h=e[d]?.[c];if("function"!=typeof f?.safePost||!g||!h)throw Error("ChatGPT Web conversation request scope is unavailable");let i=await f.safePost("/f/conversation",{requestBody:h.body,additionalHeaders:h.additionalHeaders,signal:g.signal,skipJsonTransform:!0});if(!(i instanceof Response))throw Error("ChatGPT Web conversation returned an invalid response");if(!i.ok){let a=i.status,b="";try{let a=await i.json(),c=a.detail&&"object"==typeof a.detail?a.detail:a.error&&"object"==typeof a.error?a.error:a,d=c.code??c.message??c.type;"string"==typeof d&&(b=d.slice(0,160))}catch{await i.body?.cancel().catch(()=>{})}throw Error(`ChatGPT Web conversation failed with status ${a}${b?` (${b})`:""}`)}h.response=i},{abortKey:D,bridgeKey:C,requestId:b,requestKey:E})}async function Y(a,b){return a.evaluate(async({requestId:a,requestKey:b,responseLimit:c})=>{let d=globalThis,e=d[b]?.[a],f=e?.response;if(!(f instanceof Response))throw Error("ChatGPT Web conversation response is unavailable");let g=f.body?.getReader();if(!g)throw Error("ChatGPT Web conversation returned an empty stream");let h=new TextDecoder,i=[],j=0;try{for(;;){let{done:a,value:b}=await g.read();if(a)break;if(b){if((j+=b.byteLength)>c)throw await g.cancel().catch(()=>{}),Error("ChatGPT Web conversation response exceeded the size limit");i.push(h.decode(b,{stream:!0}))}}i.push(h.decode())}finally{try{g.releaseLock()}catch{}}return i.join("")},{requestId:b,requestKey:E,responseLimit:0x1000000})}async function Z(a,b,c,d){let e=d.map(({attachment:a,fileId:b})=>({fileId:b,kind:a.kind,mimeType:a.mimeType,name:a.name,size:a.size,width:a.width,height:a.height}));return await U(a,c,e),await V(a,b,c,e),await W(a,c),await X(a,c),Y(a,c)}async function $(a,b){await a.evaluate(({abortKey:a,requestId:b,requestKey:c})=>{let d=globalThis,e=d[a],f=d[c];delete e?.[b],delete f?.[b]},{abortKey:D,requestId:b,requestKey:E}).catch(()=>{})}async function _(a,b){await a.evaluate(({abortKey:a,requestId:b})=>{let c=globalThis[a];c?.[b]?.abort()},{abortKey:D,requestId:b}).catch(()=>{})}async function aa(a,b){let c=G.get(a)??Promise.resolve(),d=()=>{},e=new Promise(a=>{d=a}),f=c.catch(()=>{}).then(()=>e);G.set(a,f),await c.catch(()=>{});try{return await b()}finally{d(),G.get(a)===f&&G.delete(a)}}async function ab(a,b,c={}){let d=c.requestId??crypto.randomUUID();return aa(a,async()=>{if(c.signal?.aborted)throw new DOMException("Aborted","AbortError");let e=()=>{_(a,d)};c.signal?.addEventListener("abort",e,{once:!0});try{await R(a);let e=(await S(a,d,b.attachments)).map((a,c)=>({...a,attachment:b.attachments[c]}));return await T(e,c.signal),await Z(a,b,d,e)}finally{c.signal?.removeEventListener("abort",e),await $(a,d)}})}let ac="https://chatgpt.com";function ad(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function ae(a){if("string"!=typeof a||!a.trim())throw Error("ChatGPT Web browser turn requires a non-empty prompt");return a}function af(a){let b;try{b=new URL(a)}catch{throw Error("ChatGPT Web browser session requires a valid URL")}if(b.origin!==ac)throw Error("ChatGPT Web browser session requires the first-party chatgpt.com origin")}function ag(a,b,c){if(!ad(a)||!ad(a.message))return null;let d=a.message,e=ad(d.author)?d.author:null,f=ad(d.content)?d.content:null,g=Array.isArray(f?.parts)?f.parts:[];return e?.role==="assistant"&&f?.content_type==="text"&&g.every(a=>"string"==typeof a)&&"finished_successfully"===d.status&&!0===d.end_turn?{conversationId:b,turnExchangeId:c,text:g.join(""),status:d.status,endTurn:!0}:null}class ah{constructor(a,b={}){this.page=a,this.pageUrl=b.pageUrl??"https://chatgpt.com/?temporary-chat=true",this.selection=b.selection,this.closePageOnCleanup=!0===b.closePageOnCleanup,this.executePageRequest=b.executePageRequest??ab}url(){return this.pageUrl}async start(){af(this.pageUrl);let a=async()=>{this.closePageOnCleanup&&await this.page.close().catch(()=>{})};try{let b=!1;try{b=new URL(this.page.url()).origin===ac}catch{b=!1}return b||await this.page.goto(this.pageUrl,{waitUntil:"domcontentloaded",timeout:3e4}),af(this.page.url()),a}catch(b){throw await a(),b}}async submitPrompt(a){if(!this.selection)throw Error("ChatGPT Web direct request requires a model selection");return af(this.page.url()),this.executePageRequest(this.page,{prompt:ae(a.prompt),attachments:a.attachments,selection:this.selection,pluginHints:a.pluginHints??[]},{signal:a.signal})}}async function ai(a,b){let c;if(b.signal?.aborted)throw Error("ChatGPT Web browser turn aborted");let d=ae(b.prompt);af(a.url());let e=b.timeoutMs??18e4;if(!Number.isFinite(e)||e<=0)throw Error("ChatGPT Web browser turn requires a positive timeout");let f=null,g=new Promise((a,b)=>{c=setTimeout(()=>b(Error("ChatGPT Web browser turn timed out")),e),c.unref?.()});try{let c=(async()=>(f=await a.start(),function(a){if("string"!=typeof a||!a.trim())throw Error("ChatGPT Web direct conversation returned an empty stream");let b=new y,c="",d="",e=null;for(let f of u(a))ad(f.json)&&("string"==typeof f.json.conversation_id&&(c=f.json.conversation_id),"string"==typeof f.json.turn_exchange_id&&(d=f.json.turn_exchange_id)),"delta_encoding"===f.event&&(e=ag(b.snapshot(),c,d)??e,b=new y),b.ingest(function(a){let b="message"===a.event?"":`event: ${a.event}
272
- `;return`${b}data: ${a.data}
242
+ ${l}
273
243
 
274
- `}(f)),e=ag(b.snapshot(),c,d)??e;let f=ag(b.snapshot(),c,d)??e;return f?{...f,conversationId:c,turnExchangeId:d}:function(a,b,c){let d=ag(a,b,c);if(d)return d;if(!ad(a)||!ad(a.message)){let b=ad(a)?Object.keys(a).sort().join(","):"non-object";throw Error(`ChatGPT Web assistant document is incomplete (root=${b})`)}let e=a.message,f=ad(e.author)?e.author:null,g=ad(e.content)?e.content:null,h=Array.isArray(g?.parts)?g.parts:[],i=JSON.stringify({messageKeys:Object.keys(e).sort(),role:f?.role??null,contentType:g?.content_type??null,partCount:h.length,partTypes:h.map(a=>typeof a),status:e.status??null,endTurn:e.end_turn??null});throw Error(`ChatGPT Web assistant document is incomplete (${i})`)}(b.snapshot(),c,d)}(await a.submitPrompt({prompt:d,attachments:b.attachments??[],pluginHints:b.pluginHints??[],signal:b.signal}))))();return c.catch(()=>{}),await Promise.race([c,g])}finally{clearTimeout(c),await f?.()}}var aj=c(14229),ak=c(25360);let al="https://chatgpt.com/?temporary-chat=true",am=["chatgpt.com","openai.com"];function an(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function ao(a){let b=a.toLowerCase().replace(/^\./,"");return am.some(a=>b===a||b.endsWith(`.${a}`))}function ap(a){if(!an(a)||!Array.isArray(a.cookies)||!Array.isArray(a.origins))throw Error("ChatGPT Web browser storage state is invalid");for(let b of a.cookies){if(!an(b)||"string"!=typeof b.name||!b.name||"string"!=typeof b.value||"string"!=typeof b.domain||"string"!=typeof b.path||!b.path.startsWith("/")||"number"!=typeof b.expires||!Number.isFinite(b.expires)||"boolean"!=typeof b.httpOnly||"boolean"!=typeof b.secure||!["Strict","Lax","None"].includes(String(b.sameSite)))throw Error("ChatGPT Web browser storage state contains an invalid cookie");if(!ao(b.domain))throw Error("ChatGPT Web browser storage state contains a foreign cookie domain")}for(let b of a.origins)!function(a){let b;if(!an(a)||"string"!=typeof a.origin||!Array.isArray(a.localStorage))throw Error("ChatGPT Web browser storage state contains an invalid origin");try{b=new URL(a.origin)}catch{throw Error("ChatGPT Web browser storage state contains an invalid origin")}if("https:"!==b.protocol||!ao(b.hostname))throw Error("ChatGPT Web browser storage state contains a foreign origin");for(let b of a.localStorage)if(!an(b)||"string"!=typeof b.name||"string"!=typeof b.value)throw Error("ChatGPT Web browser storage state contains invalid local storage")}(b);let b=structuredClone(a);for(let a of b.cookies)a.name.startsWith("__Host-")&&(a.domain=a.domain.replace(/^\./,""),a.path="/",a.secure=!0);return b}function aq(a){if(null==a)return"";if("string"==typeof a)return a;if(!Array.isArray(a))throw Error("ChatGPT Web clean-room adapter supports text content only");let b=[];for(let c of a){if(an(c)&&("text"===c.type||"input_text"===c.type)&&"string"==typeof c.text){b.push(c.text);continue}if(!("string"==typeof c?c.toLowerCase().startsWith("data:image/"):!!k(c)&&["file","image","image_url","input_file","input_image"].includes(l(c.type)?.toLowerCase()??"")))throw Error("ChatGPT Web clean-room adapter received unsupported content")}return b.join("")}function ar(a){return"string"==typeof a.reasoning_effort?a.reasoning_effort.toLowerCase():an(a.reasoning)&&"string"==typeof a.reasoning.effort?a.reasoning.effort.toLowerCase():null}function as(a){if(null===a||"medium"===a)return 1;if(["none","off","minimal","low"].includes(a))return 0;if("high"===a)return 2;if("xhigh"===a||"max"===a)return 3;throw Error(`ChatGPT Web clean-room adapter does not support reasoning effort ${a}`)}function at(a){let b=a.providerSpecificData,c=b?.storageState??a.apiKey;if("string"==typeof c){let a=c.trim();if(a.startsWith("{"))try{return ap(JSON.parse(a))}catch{throw Error("ChatGPT Web browser storage state JSON is invalid")}let b=a.trim().replace(/^Cookie:\s*/i,"");if(!b)throw Error("ChatGPT Web Cookie header is empty");if(!b.includes("="))return ap({cookies:[{name:"__Secure-next-auth.session-token",value:b,domain:".chatgpt.com",path:"/",expires:-1,httpOnly:!0,secure:!0,sameSite:"Lax"}],origins:[]});let d=b.split(/;\s*/).map(a=>{let b=a.indexOf("=");if(b<=0)throw Error("ChatGPT Web Cookie header contains an invalid cookie");return[a.slice(0,b).trim(),a.slice(b+1)]});if(!d.some(([a])=>/^__Secure-next-auth\.session-token(?:\.\d+)?$/.test(a))){if(b.includes(";")||b.includes("="))throw Error("ChatGPT Web Cookie header is missing __Secure-next-auth.session-token");d.splice(0,d.length,["__Secure-next-auth.session-token",b])}return ap({cookies:d.map(([a,b])=>({name:a,value:b,domain:".chatgpt.com",path:"/",expires:-1,httpOnly:a.startsWith("__Secure-")||a.startsWith("__Host-"),secure:!0,sameSite:"Lax"})),origins:[]})}return ap(c)}function au(a){return"string"==typeof a&&a.trim()?a.trim():void 0}function av(a){let b=process.env;return[a,b.CHATGPT_WEB_CHROME_PATH,b.CHROME_PATH,"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome","/usr/bin/google-chrome","/usr/bin/google-chrome-stable","/usr/bin/chromium","/usr/bin/chromium-browser",...b.PROGRAMFILES?[(0,g.join)(b.PROGRAMFILES,"Google","Chrome","Application","chrome.exe")]:[],...b["PROGRAMFILES(X86)"]?[(0,g.join)(b["PROGRAMFILES(X86)"],"Google","Chrome","Application","chrome.exe")]:[],...b.LOCALAPPDATA?[(0,g.join)(b.LOCALAPPDATA,"Google","Chrome","Application","chrome.exe")]:[]].find(a=>!!(a?.trim()&&(0,f.existsSync)(a.trim())))}async function aw(a){let b=(0,e.createHash)("sha256").update(a.connectionId).update("\0").update(JSON.stringify(a.storageState)).digest("hex"),c=await (0,h.qG)(`chatgpt-web-cleanroom:${b}`,{cookieDomain:"chatgpt.com",storageState:a.storageState,userAgent:a.userAgent,locale:a.locale,timezone:a.timezone,warmupUrl:al,headless:!0,executablePath:a.chromeExecutablePath}),d=c.warmupPage&&!c.warmupPage.isClosed()?c.warmupPage:await (0,h.we)(c);return c.warmupPage!==d&&(c.warmupPage=d),new ah(d,{pageUrl:al,selection:a.selection,closePageOnCleanup:!1})}function ax(a,b,c,d={}){let f=d.id??`chatcmpl-${(0,e.randomUUID)()}`,g=d.created??Math.floor(Date.now()/1e3);return c?new Response([{id:f,object:"chat.completion.chunk",created:g,model:a,choices:[{index:0,delta:{role:"assistant"},finish_reason:null}]},{id:f,object:"chat.completion.chunk",created:g,model:a,choices:[{index:0,delta:{content:b.text},finish_reason:null}]},{id:f,object:"chat.completion.chunk",created:g,model:a,choices:[{index:0,delta:{},finish_reason:"stop"}]}].map(a=>`data: ${JSON.stringify(a)}
275
-
276
- `).join("")+"data: [DONE]\n\n",{headers:{"Content-Type":"text/event-stream; charset=utf-8"}}):Response.json({id:f,object:"chat.completion",created:g,model:a,choices:[{index:0,message:{role:"assistant",content:b.text},finish_reason:"stop"}]})}async function ay(a){let b=function(a,b){if(!an(b))throw Error("ChatGPT Web clean-room adapter requires an object body");let{prompt:c,hasTools:d,requestedTools:e}=function(a){let b,c;if(!Array.isArray(a.messages)||0===a.messages.length)throw Error("ChatGPT Web clean-room adapter requires messages");let d=a.messages[0],e=1===a.messages.length&&an(d)&&"user"===d.role&&!(Array.isArray(a.tools)&&a.tools.length>0),f=!1;if(e)b=aq(d.content);else{let d=(0,aj.S$)(a,a.messages);f=d.hasTools,c=d.requestedTools,b=(function(a){let b=new Map,c=[],d=[],e=!1;for(let f of a){if(!an(f)||"string"!=typeof f.role)throw Error("ChatGPT Web clean-room adapter received an invalid message");let a=aq(f.content).trim();if("system"===f.role||"developer"===f.role){a&&c.push(a);continue}if("user"===f.role){a&&d.push(`User:
277
- ${a}`);continue}if("assistant"===f.role){let c=[];for(let d of(a&&c.push(a),Array.isArray(f.tool_calls)?f.tool_calls:[])){let a="string"==typeof d?.function?.name?d.function.name:"",f=d?.function?.arguments,g="string"==typeof f&&f?f:JSON.stringify(f??{});d?.id&&b.set(d.id,a),c.push(`<tool>{"name": ${JSON.stringify(a)}, "arguments": ${g}}</tool>`),e=!0}c.length&&d.push(`Assistant:
278
- ${c.join("\n")}`);continue}if("tool"===f.role){let c=f.tool_call_id&&b.get(f.tool_call_id)||f.name||"tool";d.push(`Tool result (${c}): ${a||"(no output)"}`),e=!0;continue}throw Error(`ChatGPT Web clean-room adapter does not support the "${f.role}" role`)}return e&&d.push("Continue the task using the tool results above. Do NOT repeat tool calls that already succeeded; perform the next step or give the final answer."),[...c,...d]})(d.effectiveMessages).join("\n\n")}if(!b.trim())throw Error("ChatGPT Web clean-room adapter requires non-empty text");if(new TextEncoder().encode(b).byteLength>4194304)throw Error("ChatGPT Web clean-room adapter prompt is too large");return{prompt:b,hasTools:f,requestedTools:c}}(b),f=function(a){let b=[...function(a){let b=[];for(let[c,d]of(a||[]).entries())if(Array.isArray(d?.content))for(let[a,e]of d.content.entries()){let d;if(!k(e))continue;let f=l(e.type)?.toLowerCase();if("image_url"===f&&k(e.image_url)?d=l(e.image_url.url):"input_image"===f?d=l(e.image_url??e.url):"image"===f&&"string"==typeof e.source&&(d=l(e.source)),!d)continue;let g=l(e.filename??e.name),h=b.length+1,j=n(d);b.push({kind:"image",ref:d,name:m(g,`image-${h}.${function(a){let b=n(a);if(b&&i[b])return i[b];try{let b=/\.([a-zA-Z0-9]{2,5})$/.exec(new URL(a).pathname);if(b&&["gif","jpeg","jpg","png","webp"].includes(b[1].toLowerCase()))return b[1].toLowerCase().replace("jpeg","jpg")}catch{}return"png"}(d)}`),...j?{mimeType:j}:{},messageIndex:c,partIndex:a})}return b}(a),...function(a){let b=[];for(let c of a||[])if(Array.isArray(c?.content))for(let a of c.content){if(!k(a))continue;let c=l(a.type)?.toLowerCase();("file"===c||"input_file"===c)&&b.push(function(a){let b=k(a.file)?a.file:a,c=l(b.file_data??a.file_data),d=l(b.mime_type??a.mime_type)?.toLowerCase(),e=c;if(!e)throw new j("ChatGPT Web file input requires base64 file_data");return e.toLowerCase().startsWith("data:")||(e=`data:${d??"application/octet-stream"};base64,${e}`),{kind:"file",ref:e,name:m(l(b.filename??a.filename),"attachment.bin"),...d?{mimeType:d}:{}}}(a))}return b}(a)];if(b.length>10)throw new j("ChatGPT Web accepts at most 10 attachments per request");return b}(b.messages);return{prompt:c,selection:function(a,b){let c=a.trim().toLowerCase().replace(/^chatgpt-web\//,"").replace(/^cgpt-web\//,"").replace(/\./g,"-");if("gpt-5-6-luna-free"===c)return{kind:"free",thinkEnabled:!1};if("gpt-5-6-luna-free-thinking"===c)return{kind:"free",thinkEnabled:!0};if("gpt-5-6-pro"===c)return{kind:"picker",modelLabel:"GPT-5.6 Sol",effortIndex:4};if("gpt-5-6-instant"===c||"gpt-5-6"===c)return{kind:"picker",modelLabel:"GPT-5.6 Sol",effortIndex:0};if(["gpt-5-6-thinking","gpt-5-6-sol"].includes(c))return{kind:"picker",modelLabel:"GPT-5.6 Sol",effortIndex:as(ar(b))};if("gpt-5-5-pro"===c)return{kind:"picker",modelLabel:"GPT-5.5",effortIndex:4};if("gpt-5-5-instant"===c)return{kind:"picker",modelLabel:"GPT-5.5",effortIndex:0};if(["gpt-5-5","gpt-5-5-thinking"].includes(c))return{kind:"picker",modelLabel:"GPT-5.5",effortIndex:as(ar(b))};throw Error(`ChatGPT Web clean-room adapter received an unsupported model: ${a}`)}(a,b),attachments:f,hasTools:d,requestedTools:e}}(a.model,a.body),c=await o(b.attachments),d=at(a.credentials),f=au(a.credentials.connectionId);if(!f)throw Error("ChatGPT Web clean-room adapter requires a connection ID");let g=a.credentials.providerSpecificData,h=await aw({connectionId:f,storageState:d,selection:b.selection,userAgent:au(g?.customUserAgent),locale:au(g?.locale),timezone:au(g?.timezone),chromeExecutablePath:av(au(g?.chromeExecutablePath))}),p=await ai(h,{prompt:b.prompt,attachments:c,pluginHints:function(a){if(null==a)return[];let b=Array.isArray(a)?a:"string"==typeof a?a.split(/[,\n]/):[],c=new Set,d=[];for(let a of b){let b="string"==typeof a?a.trim():"";!/^plugin:[A-Za-z0-9_-]+$/.test(b)||c.has(b)||(c.add(b),d.push(b))}return d}(g?.pluginHints),signal:a.signal});if(!b.hasTools)return ax(a.model,p,a.stream);let q=ax(a.model,p,!1);return(0,ak.N)(q,b.requestedTools,a.stream,{idSeed:"cgpt",cid:`chatcmpl-${(0,e.randomUUID)()}`,created:Math.floor(Date.now()/1e3),model:a.model})}let az=/(content policy|violat(?:es|ed|ion)|can't create|cannot create|i can't generate|i cannot generate|not able to create|unable to create|safety)/i,aA=a=>new Promise(b=>setTimeout(b,a));class aB extends Error{constructor(a,b){super(a),this.name="ChatGptWebImageError",b&&(this.status=b)}}async function aC(a){return a.evaluate(async a=>{let b=globalThis[a],c=[b?.finalizeRequirements,b?.proofManager?.getEnforcementToken,b?.turnstileManager?.getEnforcementToken,b?.buildSentinelHeaders].every(a=>"function"==typeof a),d="function"==typeof b?.resolveIntegrity&&"function"==typeof b?.requestClient?.safePost;if(!c&&!d)throw Error("ChatGPT Web first-party challenge bridge is incomplete");if(d){let a=await b.resolveIntegrity(async a=>b.requestClient.safePost("/sentinel/chat-requirements/prepare",{requestBody:{p:a}}));return{...a?.headers??{}}}let e=await b.finalizeRequirements(!1,"none"),[f,g]=await Promise.all([b.proofManager.getEnforcementToken(e,{forceSync:!0}),b.turnstileManager.getEnforcementToken(e)]);return b.buildSentinelHeaders(e,g,f,null,null,null)},C)}async function aD(a){return a.evaluate(async()=>{let a=await fetch("/api/auth/session",{credentials:"include"});if(!a.ok)throw Error("ChatGPT Web browser session is unavailable");let b=await a.json();if("string"!=typeof b?.accessToken||!b.accessToken)throw Error("ChatGPT Web browser session has no access token");return b.accessToken})}async function aE(a,b,{sizeHint:c,signal:d}){let e=await aC(a),f=await aD(a);return a.evaluate(async({accessToken:a,headers:b,prompt:c,sizeHint:d,maxBytes:e})=>{let f={...b,Authorization:`Bearer ${a}`},g=async(a,b)=>{let c=a.body?.getReader();if(!c)return"";let d=new TextDecoder,e=[],f=0;try{for(;;){let{done:a,value:g}=await c.read();if(a)break;if(g){if((f+=g.byteLength)>b)throw await c.cancel().catch(()=>{}),Error(`response exceeded ${b} bytes`);e.push(d.decode(g,{stream:!0}))}}e.push(d.decode())}finally{try{c.releaseLock()}catch{}}return e.join("")},h=async(a,b,c)=>{let d=new AbortController,e=setTimeout(()=>d.abort(),c);try{return await fetch(a,{...b,signal:d.signal})}finally{clearTimeout(e)}},i=await h("/backend-api/f/conversation/prepare",{method:"POST",credentials:"include",headers:{...f,"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({action:"next",fork_from_shared_post:!1,parent_message_id:crypto.randomUUID(),model:"auto",client_prepare_state:"success",timezone_offset_min:new Date().getTimezoneOffset(),timezone:Intl.DateTimeFormat().resolvedOptions().timeZone,conversation_mode:{kind:"primary_assistant"},system_hints:["picture_v2"],partial_query:{id:crypto.randomUUID(),author:{role:"user"},content:{content_type:"text",parts:[c]}},supports_buffering:!0,supported_encodings:["v1"],client_contextual_info:{app_name:"chatgpt.com"}})},6e4);if(!i.ok)throw Error(`prepare failed with status ${i.status}`);let j=(await i.json()).conduit_token||"",k=d?`${c} (aspect ratio ${d})`:c,l=new AbortController,m=setTimeout(()=>l.abort(),9e4),n="";try{let a=await fetch("/backend-api/f/conversation",{method:"POST",credentials:"include",signal:l.signal,headers:{...f,"Content-Type":"application/json",Accept:"text/event-stream","X-Conduit-Token":j,"X-Oai-Turn-Trace-Id":crypto.randomUUID()},body:JSON.stringify({action:"next",messages:[{id:crypto.randomUUID(),author:{role:"user"},create_time:Date.now()/1e3,content:{content_type:"text",parts:[k]},metadata:{developer_mode_connector_ids:[],selected_github_repos:[],selected_all_github_repos:!1,system_hints:["picture_v2"],serialization_metadata:{custom_symbol_offsets:[]}}}],parent_message_id:crypto.randomUUID(),model:"auto",client_prepare_state:"sent",timezone_offset_min:new Date().getTimezoneOffset(),timezone:Intl.DateTimeFormat().resolvedOptions().timeZone,conversation_mode:{kind:"primary_assistant"},enable_message_followups:!0,system_hints:["picture_v2"],supports_buffering:!0,supported_encodings:["v1"],client_contextual_info:{is_dark_mode:!1,time_since_loaded:1200,page_height:1072,page_width:1724,pixel_ratio:1.2,screen_height:1440,screen_width:2560,app_name:"chatgpt.com"},paragen_cot_summary_display_override:"allow",force_parallel_switch:"auto"})});if(!a.ok){let b=a.status;throw await a.body?.cancel().catch(()=>{}),Error(`conversation failed with status ${b}`)}try{n=await g(a,e)}catch(a){if(!l.signal.aborted&&!/exceeded/.test(String(a?.message||"")))throw a}}finally{clearTimeout(m),l.abort()}let o=(n.match(/"conversation_id"\s*:\s*"([0-9a-f-]{36})"/)||[])[1]||"",p=[],q=[],r=(a,b)=>{b&&!a.includes(b)&&a.push(b)};for(let a of n.matchAll(/file-service:\/\/([A-Za-z0-9_-]+)/g))r(p,a[1]);for(let a of n.matchAll(/\bfile_00000000[a-f0-9]{24}\b/g))r(p,a[0]);for(let a of n.matchAll(/sediment:\/\/([A-Za-z0-9_-]+)/g))r(q,a[1]);return{conversationId:o,fileIds:p,sedimentIds:q}},{accessToken:f,headers:e,prompt:b,sizeHint:c,maxBytes:0x1000000})}async function aF(a,b,c,d,{signal:e,log:f}){let g=Date.now(),h=[...d.fileIds],i=[...d.sedimentIds];for(await aA(8e3);;){if(e?.aborted)throw Error("Request aborted");if(Date.now()-g>24e4)throw new aB("ChatGPT image generation timed out",504);let d=await a.evaluate(async({accessToken:a,conversationId:b,maxBytes:c})=>{let d,e=async(a,b,c)=>{let d=new AbortController,e=setTimeout(()=>d.abort(),c);try{return await fetch(a,{...b,signal:d.signal})}finally{clearTimeout(e)}},f=await e(`/backend-api/conversation/${b}`,{credentials:"include",headers:{Authorization:`Bearer ${a}`,Accept:"application/json"}},3e4);if(!f.ok)return{status:f.status};if(Number(f.headers.get("content-length")??"0")>c)return{status:413};let g=await f.text();if(g.length>c)return{status:413};try{d=JSON.parse(g)}catch{return{status:502}}let h=[],i=[],j=(a,b)=>{b&&!a.includes(b)&&a.push(b)},k=a=>{if(Array.isArray(a))return a.some(k);if(a&&"object"==typeof a){if("image_asset_pointer"===String(a.content_type||""))return!0;let b=String(a.asset_pointer||"");return!!(b.startsWith("file-service://")||b.startsWith("sediment://"))||Object.values(a).some(k)}return!1},l=a=>{if("string"==typeof a){for(let b of a.matchAll(/file-service:\/\/([A-Za-z0-9_-]+)/g))j(h,b[1]);for(let b of a.matchAll(/\bfile_00000000[a-f0-9]{24}\b/g))j(h,b[0]);for(let b of a.matchAll(/sediment:\/\/([A-Za-z0-9_-]+)/g))j(i,b[1]);return}Array.isArray(a)?a.forEach(l):a&&"object"==typeof a&&Object.values(a).forEach(l)},m="";for(let a of Object.values(d.mapping||{})){let b=(a||{}).message||{},c=String(b.author?.role||"").toLowerCase();if("tool"!==c&&"assistant"!==c)continue;let d=b.metadata||{},e="image_gen"===d.async_task_type,f=k(b.content)||k(d);if(("assistant"!==c||e||f)&&(l({content:b.content,metadata:d}),"assistant"===c&&d.is_error&&b.content?.content_type==="text")){let a=(Array.isArray(b.content.parts)?b.content.parts:[]).filter(a=>"string"==typeof a).join("");a&&(m=a.slice(0,300))}}return{status:200,fileIds:h,sedimentIds:i,errorText:m}},{accessToken:b,conversationId:c,maxBytes:0x2000000});if(200!==d.status)f?.debug?.("CGPT-WEB-IMG",`conversation poll status ${d.status}, retrying`);else{for(let a of d.fileIds)h.includes(a)||h.push(a);for(let a of d.sedimentIds)i.includes(a)||i.push(a);if(h.length>0||i.length>0)return{fileIds:h.filter(a=>"file_upload"!==a),sedimentIds:i};if(d.errorText&&az.test(d.errorText))throw new aB(`ChatGPT refused the image request: ${d.errorText}`,400)}await aA(5e3)}}async function aG(a,b,c,{fileIds:d,sedimentIds:e}){for(let c of d){let d=await a.evaluate(async({accessToken:a,fileId:b})=>{let c=async(a,b,c)=>{let d=new AbortController,e=setTimeout(()=>d.abort(),c);try{return await fetch(a,{...b,signal:d.signal})}finally{clearTimeout(e)}},d=await c(`/backend-api/files/${b}/download`,{credentials:"include",headers:{Authorization:`Bearer ${a}`,Accept:"application/json"}},6e4);if(!d.ok)return{status:d.status};let e=await d.json(),f=e.download_url||e.url||"";if(!f)return{status:404};let g=await c(f,{},9e4);if(!g.ok)return{status:g.status};let h=await g.blob(),i=new Uint8Array(await h.arrayBuffer()),j="";for(let a=0;a<i.length;a+=32768)j+=String.fromCharCode(...i.subarray(a,a+32768));return{status:200,mime:h.type||"image/png",b64:btoa(j)}},{accessToken:b,fileId:c});if(200===d.status&&d.b64)return{b64:d.b64,mime:d.mime}}for(let d of e){let e=await a.evaluate(async({accessToken:a,conversationId:b,sedimentId:c})=>{let d=async(a,b,c)=>{let d=new AbortController,e=setTimeout(()=>d.abort(),c);try{return await fetch(a,{...b,signal:d.signal})}finally{clearTimeout(e)}},e=await d(`/backend-api/conversation/${b}/attachment/${c}/download`,{credentials:"include",headers:{Authorization:`Bearer ${a}`,Accept:"application/json"}},6e4);if(!e.ok)return{status:e.status};let f=await e.json(),g=f.download_url||f.url||"";if(!g)return{status:404};let h=await d(g,{},9e4);if(!h.ok)return{status:h.status};let i=await h.blob(),j=new Uint8Array(await i.arrayBuffer()),k="";for(let a=0;a<j.length;a+=32768)k+=String.fromCharCode(...j.subarray(a,a+32768));return{status:200,mime:i.type||"image/png",b64:btoa(k)}},{accessToken:b,conversationId:c,sedimentId:d});if(200===e.status&&e.b64)return{b64:e.b64,mime:e.mime}}throw new aB("ChatGPT image generation produced no downloadable file",502)}async function aH(a,{prompt:b,sizeHint:c,signal:d,log:e}){if(await R(a),d?.aborted)throw Error("Request aborted");let f=await aE(a,b,{sizeHint:c,signal:d});if(!f.conversationId&&0===f.fileIds.length&&0===f.sedimentIds.length)throw new aB("ChatGPT image conversation produced no conversation id",502);let g=await aD(a),h=f.fileIds.length>0||f.sedimentIds.length>0?f:await aF(a,g,f.conversationId,f,{signal:d,log:e});return aG(a,g,f.conversationId,h)}let aI="OpenAI-Sentinel-Chat-Requirements-Prepare-Token",aJ=a=>Buffer.from(JSON.stringify(a),"utf8").toString("base64"),aK=["https://chatgpt.com/cdn/assets/685809.dec86dcdc1.js","https://chatgpt.com/cdn/assets/399565.a1117ca8b4.js"],aL=["cookie","domain","readyState","title","URL","charset","location"],aM=["caches","crypto","fetch","indexedDB","localStorage","origin"],aN=["userAgent","language","hardwareConcurrency"],aO=a=>a[Math.floor(Math.random()*a.length)];function aP(a){let b=aO(aN);return[2080,new Date().toString(),null,0,a,aO(aK),null,"en-US","en-US,en",0,`${b}−${a}`,aO(aL),aO(aM),0,crypto.randomUUID(),"",8,0,0,0,0,0,0,0,0]}async function aQ(a,{headers:b,body:c,signal:d}){let e=await fetch(a,{method:"POST",headers:{...b,"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify(c??{}),signal:d}),f=await e.text().catch(()=>"");if(!e.ok)throw Object.assign(Error(`ChatGPT ${new URL(a).pathname} failed (HTTP ${e.status}) ${f.slice(0,200)}`),{status:e.status});try{return JSON.parse(f)}catch{throw Object.assign(Error(`ChatGPT ${new URL(a).pathname} returned invalid JSON`),{status:502})}}async function aR({baseUrl:a,accessToken:b,userAgent:c,signal:d}){let e,f={Authorization:`Bearer ${b}`,"User-Agent":c},g=await aQ(`${a}/backend-api/sentinel/chat-requirements/prepare`,{headers:{...f,[aI]:((e=aP(c))[3]=1,e[9]=0,`gAAAAAC${aJ(e)}`)},signal:d});if(!g?.prepare_token)throw Object.assign(Error("ChatGPT sentinel prepare returned no prepare_token"),{status:502});let h=await aQ(`${a}/backend-api/sentinel/chat-requirements`,{headers:{...f,[aI]:g.prepare_token},signal:d}),i={};return h?.token&&(i["OpenAI-Sentinel-Chat-Requirements-Token"]=h.token),h?.proofofwork?.required&&(i["OpenAI-Sentinel-Proof-Token"]=function({seed:a,difficulty:b,userAgent:c}){if(!a||!b)throw Error("ChatGPT sentinel asked for proof of work without seed/difficulty");let d=performance.now(),e=aP(c);for(let c=0;c<5e5;c++){e[3]=c,e[9]=Math.round(performance.now()-d);let f=aJ(e);if((function(a){let b=0x811c9dc5;for(let c=0;c<a.length;c++)b^=a.charCodeAt(c),b=Math.imul(b,0x1000193)>>>0;return b^=b>>>16,b=Math.imul(b,0x85ebca6b)>>>0,b^=b>>>13,b=Math.imul(b,0xc2b2ae35)>>>0,((b^=b>>>16)>>>0).toString(16).padStart(8,"0")})(`${a}${f}`).slice(0,b.length)<=b)return`gAAAAAB${f}~S`}throw Error("ChatGPT sentinel proof of work exhausted its iteration budget")}({seed:h.proofofwork.seed,difficulty:h.proofofwork.difficulty,userAgent:c})),i}let aS=/(content policy|violat(?:es|ed|ion)|can't create|cannot create|i can't generate|i cannot generate|not able to create|unable to create|safety)/i,aT=a=>new Promise(b=>setTimeout(b,a));class aU extends Error{constructor(a,b){super(a),this.name="ChatGptWebImageError",b&&(this.status=b)}}function aV(a,b,c,d){let e=new AbortController,f=setTimeout(()=>e.abort(),c),g=()=>e.abort();return d?.addEventListener("abort",g,{once:!0}),fetch(a,{...b,signal:e.signal}).finally(()=>{clearTimeout(f),d?.removeEventListener("abort",g)})}function aW(a){return(Array.isArray(a?.cookies)?a.cookies:[]).filter(a=>a?.name&&"string"==typeof a.value).map(a=>`${a.name}=${a.value}`).join("; ")}async function aX(a,b,c){let d=a.body?.getReader();if(!d)return"";let e=new TextDecoder,f="",g=Date.now()+c;try{for(;Date.now()<g;){let{done:a,value:c}=await d.read();if(a)break;if(c&&(f+=e.decode(c,{stream:!0})).length>b)break}}catch{}finally{await d.cancel().catch(()=>{})}return f}let aY=(a,b,c)=>{let d=(a,b)=>{b&&!a.includes(b)&&a.push(b)};for(let c of a.matchAll(/file-service:\/\/([A-Za-z0-9_-]+)/g))d(b,c[1]);for(let c of a.matchAll(/\bfile_00000000[a-f0-9]{24}\b/g))d(b,c[0]);for(let b of a.matchAll(/sediment:\/\/([A-Za-z0-9_-]+)/g))d(c,b[1])};function aZ({accessToken:a,userAgent:b,cookie:c,sentinel:d}){return{...d,Authorization:`Bearer ${a}`,"User-Agent":b,...c?{Cookie:c}:{}}}async function a$(a,b,c,d){let{baseUrl:f}=a,g=aZ(a),h=await aV(`${f}/backend-api/f/conversation/prepare`,{method:"POST",headers:{...g,"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({action:"next",fork_from_shared_post:!1,parent_message_id:(0,e.randomUUID)(),model:"auto",client_prepare_state:"success",timezone_offset_min:0,timezone:"UTC",conversation_mode:{kind:"primary_assistant"},system_hints:["picture_v2"],partial_query:{id:(0,e.randomUUID)(),author:{role:"user"},content:{content_type:"text",parts:[b]}},supports_buffering:!0,supported_encodings:["v1"],client_contextual_info:{app_name:"chatgpt.com"}})},6e4,d);if(!h.ok)throw new aU(`ChatGPT prepare failed (HTTP ${h.status})`,h.status||502);let i=await h.json().catch(()=>null),j=i?.conduit_token||"",k=c?`${b} (aspect ratio ${c})`:b,l=await aV(`${f}/backend-api/f/conversation`,{method:"POST",headers:{...g,"Content-Type":"application/json",Accept:"text/event-stream","X-Conduit-Token":j,"X-Oai-Turn-Trace-Id":(0,e.randomUUID)()},body:JSON.stringify({action:"next",messages:[{id:(0,e.randomUUID)(),author:{role:"user"},create_time:Date.now()/1e3,content:{content_type:"text",parts:[k]},metadata:{developer_mode_connector_ids:[],selected_github_repos:[],selected_all_github_repos:!1,system_hints:["picture_v2"],serialization_metadata:{custom_symbol_offsets:[]}}}],parent_message_id:(0,e.randomUUID)(),model:"auto",client_prepare_state:"sent",timezone_offset_min:0,timezone:"UTC",conversation_mode:{kind:"primary_assistant"},enable_message_followups:!0,system_hints:["picture_v2"],supports_buffering:!0,supported_encodings:["v1"],client_contextual_info:{is_dark_mode:!1,time_since_loaded:1200,page_height:1072,page_width:1724,pixel_ratio:1.2,screen_height:1440,screen_width:2560,app_name:"chatgpt.com"},paragen_cot_summary_display_override:"allow",force_parallel_switch:"auto"})},105e3,d);if(!l.ok)throw new aU(`ChatGPT conversation failed (HTTP ${l.status})`,l.status||502);let m=await aX(l,0x1000000,9e4),n=(m.match(/"conversation_id"\s*:\s*"([0-9a-f-]{36})"/)||[])[1]||"",o=[],p=[];return aY(m,o,p),{conversationId:n,fileIds:o,sedimentIds:p}}async function a_(a,b,c,{signal:d,log:e}){let f=Date.now(),g=[...c.fileIds],h=[...c.sedimentIds],i={...aZ(a),Accept:"application/json"};for(await aT(5e3);Date.now()-f<=24e4;){if(d?.aborted)throw Error("Request aborted");let c=await aV(`${a.baseUrl}/backend-api/conversation/${b}`,{headers:i},3e4,d).catch(()=>null);if(!c?.ok){e?.debug?.("CGPT-WEB-IMG",`conversation poll status ${c?.status??"network"}, retrying`),await aT(5e3);continue}if(Number(c.headers.get("content-length")??"0")>0x2000000)throw new aU("ChatGPT conversation document is unexpectedly large",502);let f=await c.text().catch(()=>"");if(f.length>0x2000000)throw new aU("ChatGPT conversation document is unexpectedly large",502);if(aY(f,g,h),g.length>0||h.length>0)return{fileIds:g.filter(a=>"file_upload"!==a),sedimentIds:h};if(aS.test(f)&&/"is_error"\s*:\s*true/.test(f))throw new aU("ChatGPT refused the image request (content policy)",400);if(/ChatGPTAgentToolRateLimitException|Free plan limit for image generation/i.test(f))throw new aU("ChatGPT account has hit its image generation quota — add another account or wait for the reset",429);await aT(5e3)}throw new aU("ChatGPT image generation timed out",504)}async function a0(a,b){let c=await aV(a,{},9e4,b);if(!c.ok)return null;let d=Buffer.from(await c.arrayBuffer());return d.length?{b64:d.toString("base64"),mime:(c.headers.get("content-type")||"image/png").split(";")[0]}:null}async function a1(a,b,{fileIds:c,sedimentIds:d},e){let f={...aZ(a),Accept:"application/json"};for(let b of c){let c=await aV(`${a.baseUrl}/backend-api/files/${b}/download`,{headers:f},6e4,e).catch(()=>null);if(!c?.ok)continue;let d=await c.json().catch(()=>null),g=d?.download_url||d?.url||"";if(!g)continue;let h=await a0(g,e);if(h)return h}for(let c of d){let d=await aV(`${a.baseUrl}/backend-api/conversation/${b}/attachment/${c}/download`,{headers:f},6e4,e).catch(()=>null);if(!d?.ok)continue;let g=await d.json().catch(()=>null),h=g?.download_url||g?.url||"";if(!h)continue;let i=await a0(h,e);if(i)return i}throw new aU("ChatGPT image generation produced no downloadable file",502)}async function a2({baseUrl:a,accessToken:b,cookie:c,userAgent:d,prompt:e,sizeHint:f,signal:g,log:h}){if(!b)throw new aU("ChatGPT session has no access token",401);if(g?.aborted)throw Error("Request aborted");let i=await aR({baseUrl:a,accessToken:b,userAgent:d,signal:g}),j={baseUrl:a,accessToken:b,cookie:c,userAgent:d,sentinel:i},k=await a$(j,e,f,g);if(!k.conversationId&&0===k.fileIds.length&&0===k.sedimentIds.length)throw new aU("ChatGPT image conversation produced no conversation id",502);let l=k.fileIds.length>0||k.sedimentIds.length>0?k:await a_(j,k.conversationId,k,{signal:g,log:h});return a1(j,k.conversationId,l,g)}let a3=a=>new Promise(b=>setTimeout(b,a));function a4(a,b,c,d){let e=new AbortController,f=setTimeout(()=>e.abort(),c),g=()=>e.abort();return d?.addEventListener("abort",g,{once:!0}),fetch(a,{...b,signal:e.signal}).finally(()=>{clearTimeout(f),d?.removeEventListener("abort",g)})}async function a5(a,b,c){let d=a.body?.getReader();if(!d)return"";let e=new TextDecoder,f="",g=Date.now()+c;try{for(;Date.now()<g;){let{done:a,value:c}=await d.read();if(a)break;if(c&&(f+=e.decode(c,{stream:!0})).length>b)break}}catch{}finally{await d.cancel().catch(()=>{})}return f}async function a6({baseUrl:a,accessToken:b,cookie:c,userAgent:d,body:f,signal:g,log:h}){var i,j;if(!b)throw Object.assign(Error("ChatGPT session has no access token"),{status:401});if(g?.aborted)throw Error("Request aborted");let k=Array.isArray(f?.messages)?f.messages:[];if(0===k.length)throw Object.assign(Error("ChatGPT Web requires messages"),{status:400});let l=(0,aj.S$)(f,k),m=(i=function(a){let b=[],c=[];for(let d of a){let a=String(d?.role||"user"),e=[];if("string"==typeof d?.content)e.push(d.content);else if(Array.isArray(d?.content))for(let a of d.content)"string"==typeof a?e.push(a):"string"==typeof a?.text&&e.push(a.text);if(Array.isArray(d?.tool_calls))for(let a of d.tool_calls){let b=a?.function?.name;if(!b)continue;let c=a.function.arguments;try{c="string"==typeof c?JSON.parse(c):c}catch{}e.push(`<tool>${JSON.stringify({name:b,arguments:c})}</tool>`)}let f=e.join("\n").trim();f&&("system"===a||"developer"===a?b.push(f):"tool"===a?c.push(`Tool result${d?.tool_call_id?` (${d.tool_call_id})`:""}: ${f}`):"assistant"===a?c.push(`Assistant: ${f}`):c.push(f))}return[...b,...c].join("\n\n")}(l.effectiveMessages),j=l.hasTools,j?k.some(a=>"tool"===String(a?.role||"").toLowerCase())?i:`Use the client tools provided below. Do not answer with prose when a tool is needed.
244
+ Respond with ONLY <tool> blocks, one per line. No prose, no code fences, no explanation before or after the blocks.`:l);if(!p.trim())throw Object.assign(Error("ChatGPT Web requires non-empty text"),{status:400});let q={...await aW({baseUrl:a,accessToken:b,userAgent:d,signal:g,proxyOptions:i}),Authorization:`Bearer ${b}`,"User-Agent":d,...c?{Cookie:c}:{},"Content-Type":"application/json"},r=await ba(`${a}/backend-api/f/conversation/prepare`,{method:"POST",headers:{...q,Accept:"application/json"},body:JSON.stringify({action:"next",parent_message_id:(0,e.randomUUID)(),model:"auto",client_prepare_state:"success",timezone_offset_min:0,timezone:"UTC",conversation_mode:{kind:"primary_assistant"},partial_query:{id:(0,e.randomUUID)(),author:{role:"user"},content:{content_type:"text",parts:[p]}},supports_buffering:!0,supported_encodings:["v1"],client_contextual_info:{app_name:"chatgpt.com"}})},6e4,g,i);if(!r.ok){let a=(await r.text().catch(()=>"")).slice(0,200);throw Object.assign(Error(`ChatGPT prepare failed (HTTP ${r.status}) ${a}`),{status:r.status||502})}let s=await r.json().catch(()=>null),t=await ba(`${a}/backend-api/f/conversation`,{method:"POST",headers:{...q,Accept:"text/event-stream","X-Conduit-Token":s?.conduit_token||"","X-Oai-Turn-Trace-Id":(0,e.randomUUID)()},body:JSON.stringify({action:"next",messages:[{id:(0,e.randomUUID)(),author:{role:"user"},create_time:Date.now()/1e3,content:{content_type:"text",parts:[p]},metadata:{serialization_metadata:{custom_symbol_offsets:[]}}}],parent_message_id:(0,e.randomUUID)(),model:"auto",client_prepare_state:"sent",timezone_offset_min:0,timezone:"UTC",conversation_mode:{kind:"primary_assistant"},enable_message_followups:!0,supports_buffering:!0,supported_encodings:["v1"],client_contextual_info:{app_name:"chatgpt.com"},force_parallel_switch:"auto"})},135e3,g,i);if(!t.ok)throw Object.assign(Error(`ChatGPT conversation failed (HTTP ${t.status})`),{status:t.status||502});if("function"==typeof k)try{k()}catch{}let u="function"==typeof j,v="",w=((u?(await bc(t,{limit:0x1000000,deadlineMs:12e4,signal:g,onText:a=>{v+=a;try{j(a)}catch{}}})).raw:await bb(t,0x1000000,12e4)).match(/"conversation_id"\s*:\s*"([0-9a-f-]{36})"/)||[])[1]||"";if(!w)throw Object.assign(Error("ChatGPT conversation produced no conversation id"),{status:502});try{let e=Date.now();for(;Date.now()-e<=18e4;){if(g?.aborted)throw Error("Request aborted");let e=await ba(`${a}/backend-api/conversation/${w}`,{headers:{Authorization:`Bearer ${b}`,"User-Agent":d,Accept:"application/json",...c?{Cookie:c}:{}}},3e4,g,i).catch(()=>null);if(e?.ok){let a=await e.json().catch(()=>null),b=a?function(a){let b=a?.mapping||{},c="",d=!1,e="",f=!1;for(let a of Object.values(b)){let b=a?.message;if(b&&"assistant"===String(b.author?.role||"").toLowerCase()&&(b.metadata?.is_complete===!0&&(d=!0),b.content?.content_type==="text"&&(c+=(b.content.parts||[]).filter(a=>"string"==typeof a).join("")),b.metadata?.is_error)){f=!0;let a=(b.content?.parts||[]).filter(a=>"string"==typeof a).join("");a&&(e=a)}}return d?{text:c,errorText:e,isError:f}:null}(a):null;if(b){if(!b.text.trim()&&b.isError)throw Object.assign(Error(`ChatGPT refused the turn${b.errorText?`: ${b.errorText.slice(0,200)}`:""}`),{status:400});if(u)if(b.text.startsWith(v)){let a=b.text.slice(v.length);if(a){v+=a;try{j(a)}catch{}}}else b.text!==v&&h?.warn?.("CGPT-WEB","streamed text diverged from the final conversation document");return h&&!o.hasTools&&h.debug?.("CGPT-WEB",`chat turn complete (${b.text.length} chars)`),{text:b.text,hasTools:o.hasTools,requestedTools:o.requestedTools}}}else h&&h.debug?.("CGPT-WEB",`conversation poll status ${e?.status??"network"}, retrying`);await a9(1500)}throw Object.assign(Error("ChatGPT chat turn timed out"),{status:504})}finally{aX({baseUrl:a,accessToken:b,cookie:c,userAgent:d,conversationId:w,proxyOptions:i,log:h})}}var be=c(4052),bf=c(92536),bg=c(78959);let bh="https://chatgpt.com",bi="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36";async function bj({storageState:a,userAgent:b,signal:c,proxyOptions:d=null,timeoutMs:e=aM.pH}){let f,g=a0(a),h=(0,aL.n)(c,e);try{f=await (0,aK.proxyAwareFetch)(`${bh}/api/auth/session`,{headers:{"User-Agent":b,Accept:"application/json",...g?{Cookie:g}:{}},signal:h.signal},d)}catch(a){throw h.settleError(a)}finally{h.clear()}if(!f.ok)throw Object.assign(Error(`ChatGPT session unavailable (HTTP ${f.status})`),{status:403===f.status?401:f.status||502});let i=await f.json().catch(()=>null);if("string"!=typeof i?.accessToken||!i.accessToken)throw Object.assign(Error("ChatGPT session is not signed in"),{status:401});return i.accessToken}function bk(a,b){return new Response(JSON.stringify({error:{message:b}}),{status:a,headers:{"Content-Type":"application/json"}})}class bl extends d.H{constructor(){super("chatgpt-web",{id:"chatgpt-web",baseUrl:bh})}async testConnection(a){try{let b=a?.providerSpecificData?.storageState??a?.apiKey;if("string"!=typeof b||!b.trim())return!1;if(b.trim().startsWith("{"))return JSON.parse(b),!0;return/__Secure-next-auth\.session-token|^[\w-]+\.[\w-]+\.[\w-]+$/.test(b.trim())}catch{return!1}}async execute(a){try{let b=await this.#a(a);if(b)return b;return{response:await aA(a),url:bh,headers:{},transformedBody:a.body}}catch(c){let b=c instanceof Error?c.message:"ChatGPT Web browser execution failed";if((0,be.BE)(b))return{response:bk(503,"ChatGPT Web requires a Chrome/Chromium browser (headed). Install Google Chrome on the host (or set CHATGPT_WEB_CHROME_PATH), and run `npx playwright-core install chromium`."),url:bh,headers:{},transformedBody:a.body};return{response:bk(Number.isInteger(c?.status)&&c.status>=400&&c.status<=599?c.status:/storage state|credentials|connection ID/i.test(b)?401:/(?:\bHTTP[_\s-]*429\b|\bstatus\s+429\b|\brate[-_\s]?limit(?:ed)?\b|\bquota\s+(?:exhausted|reached|exceeded)\b|\b(?:image(?:\s+upload)?|upload|usage)\s+limit\s+(?:reached|exceeded)\b|\breached\s+(?:your\s+)?(?:image(?:\s+upload)?|upload|usage)\s+limit\b)/i.test(b)?429:/request|messages|prompt|model|tools|text content|reasoning effort/i.test(b)?400:502,b),url:bh,headers:{},transformedBody:a.body}}}async #a(a){let b,c,{credentials:d,body:f,model:g,stream:h,proxyOptions:i=null}=a;try{b=av(d)}catch{return null}let j=d?.providerSpecificData,k="string"==typeof j?.customUserAgent&&j.customUserAgent.trim()?j.customUserAgent.trim():bi,l=Array.isArray(f?.tools)&&f.tools.length>0;if(!0===a.stream&&!l){let c=await bj({storageState:b,userAgent:k,signal:a.signal,proxyOptions:i});return this.#b({input:a,accessToken:c,storageState:b,userAgent:k,model:g})}try{let d=await bj({storageState:b,userAgent:k,signal:a.signal,proxyOptions:i});c=await bd({baseUrl:bh,accessToken:d,cookie:a0(b),userAgent:k,body:f,signal:a.signal,log:a.log,proxyOptions:i})}catch(a){if(a?.code==="TURNSTILE_REQUIRED"||/Turnstile/i.test(a?.message||""))return null;throw a}if(!c.hasTools)return{response:az(g,{text:c.text},h),url:bh,headers:{},transformedBody:f};let m=az(g,{text:c.text},!1);return{response:await am(m,c.requestedTools,h,{idSeed:"call",cid:`chatcmpl-${(0,e.randomUUID)()}`,created:Math.floor(Date.now()/1e3),model:g}),url:bh,headers:{},transformedBody:f}}async #b({input:a,accessToken:b,storageState:c,userAgent:d,model:f}){let g,h,{body:i,signal:j,log:k}=a,l=new TextEncoder,m=new AbortController,n=j?AbortSignal.any([j,m.signal]):m.signal,o=`chatcmpl-${(0,e.randomUUID)()}`,p=Math.floor(Date.now()/1e3),q="string"==typeof f&&f.trim()?f.trim():"chatgpt-web",r=!1,s=null,t=!1,u=new ReadableStream({start:a=>{s=a},cancel(){m.abort()}},{highWaterMark:16384}),v=(a,b=null)=>{if(!t)try{s.enqueue(l.encode((0,bf.N)({id:o,object:"chat.completion.chunk",created:p,model:q,system_fingerprint:null,choices:[{index:0,delta:a,finish_reason:b,logprobs:null}]})))}catch{t=!0}},w=new Promise((a,b)=>{g=a,h=b}),x=bd({baseUrl:bh,accessToken:b,cookie:a0(c),userAgent:d,body:i,signal:n,log:k,proxyOptions:a.proxyOptions||null,onReady:()=>g(),onDelta:a=>{r||(r=!0,v({role:"assistant",content:""})),v({content:a})}});x.catch(a=>h(a));try{await w}catch(b){if(b?.code==="TURNSTILE_REQUIRED"||/Turnstile/i.test(b?.message||""))return{response:await aA(a),url:bh,headers:{},transformedBody:i};throw b}return x.then(()=>{if(r||(r=!0,v({role:"assistant",content:""})),v({},"stop"),!t)try{s.enqueue(l.encode(bg.$U)),s.close()}catch{t=!0}}).catch(a=>{if(!t){try{s.error(a)}catch{}t=!0}}),{response:new Response(u,{status:200,headers:{...bg.uB}}),url:bh,headers:{},transformedBody:i}}async generateMedia({prompt:a,n:b=1,size:c,credentials:d,signal:e,log:f,proxyOptions:g=null}){if(!a)throw Error("prompt is required for image generation");let h=av(d),i=d.providerSpecificData,j="string"==typeof i?.customUserAgent&&i.customUserAgent.trim()?i.customUserAgent.trim():bi,k=[];for(let i=0;i<Math.max(1,b);i++)k.push(await this.#c({prompt:a,size:c,storageState:h,userAgent:j,signal:e,log:f,credentials:d,proxyOptions:g}));return k}async #c({prompt:a,size:b,storageState:c,userAgent:d,signal:e,log:f,credentials:g,proxyOptions:h=null}){try{let g=await bj({storageState:c,userAgent:d,signal:e,proxyOptions:h});return await a8({baseUrl:bh,accessToken:g,cookie:a0(c),userAgent:d,prompt:a,sizeHint:b,signal:e,log:f,proxyOptions:h})}catch(a){if(a?.code!=="TURNSTILE_REQUIRED"&&!/Turnstile/i.test(a?.message||""))throw a;f?.warn?.("CGPT-WEB","Sentinel demanded Turnstile — falling back to the browser path")}let i="string"==typeof g?.connectionId&&g.connectionId.trim()?g.connectionId.trim():null;if(!i)throw Error("ChatGPT Web image generation requires a connection ID");let j=g.providerSpecificData,k=await ay({connectionId:i,storageState:c,selection:{kind:"picker",modelLabel:"GPT-5.6 Sol",effortIndex:0},userAgent:d,locale:"string"==typeof j?.locale?j.locale:void 0,timezone:"string"==typeof j?.timezone?j.timezone:void 0,chromeExecutablePath:ax(j?.chromeExecutablePath),proxyOptions:h});try{return await k.start(),await aJ(k.page,{prompt:a,sizeHint:b,signal:e,log:f})}finally{await k.page.close().catch(()=>{})}}}},49059:(a,b,c)=>{c.d(b,{v:()=>e});var d=c(96179);class e extends d.L{constructor(){super("codebuddy-cn")}transformRequest(a,b,c,d){let e=super.transformRequest(a,b,c,d);e.stream=!0;let f="You are a helpful AI assistant that helps with software engineering tasks.",g=/you are claude code|claude.?code.+official.+cli|anthropic.+official.+cli|anxthxropic.+official.+cli|you are (?:cursor|windsurf|cline|aider|continue|copilot|cody)|you are an? (?:ai )?(?:coding |code )?agent|cc_entrypoint\s*=\s*(?:cli|vscode|jetbrains|gui)|claude.?code.+issues|give feedback.+claude.?code|you are .{0,30}(?:powerful )?ai agent|orchestration capabilities|OhMyOpenCode|<agent-identity>|<Role>|<Behavior_Instructions>/i;Array.isArray(e.messages)&&(e.messages=e.messages.map(a=>{let b;if(!a||"system"!==a.role)return a;let c="string"==typeof(b=a.content)?b:Array.isArray(b)?b.map(a=>a&&"string"==typeof a.text?a.text:"").join("\n"):"";return c&&(c.length>2e3||g.test(c))?"string"==typeof a.content?{...a,content:f}:{...a,content:[{type:"text",text:f}]}:a}));let h=e.reasoning_effort;return"none"===h||"off"===h?delete e.reasoning_effort:h&&(e.reasoning_summary="auto"),e.tool_choice&&"object"==typeof e.tool_choice&&(e.tool_choice="required"),e}parseError(a,b){if(b)try{let a=JSON.parse(b),c=a?.msg||a?.message||a?.error?.message||"";if(a?.code===6004||/超出频率限制|frequency limit|限额/i.test(c)){let a=null,b=c.match(/(\d{4}-\d{2}-\d{2})\s+(\d{2}:\d{2}:\d{2})(?:\s*UTC\+?([0-9:]+))?/i);if(b){let c=b[1],d=b[2],e=b[3]?b[3].includes(":")?b[3].startsWith("+")?b[3]:`+${b[3]}`:`+${b[3].padStart(2,"0")}:00`:"+08:00",f=new Date(`${c}T${d}${e}`);isNaN(f.getTime())||(a=f.getTime())}return{status:429,message:c||"CodeBuddy frequency limit (6004)",resetsAtMs:a}}}catch{}return super.parseError(a,b)}}},49227:(a,b,c)=>{c.d(b,{hG:()=>D});var d=c(77598),e=c.n(d),f=c(74957),g=c(12643),h=c(93943),i=c(37981),j=c(57247),k=c(90737),l=c(41004),m=c(80662),n=c(19713);let o=null;async function p(a="endpoint-proxy-salt"){let b=function(){if(o)return o;try{o=(0,n.machineIdSync)()}catch{o=e().randomUUID()}return o}();return e().createHash("sha256").update(b+a).digest("hex").substring(0,16)}let q=/^(rs|fc|resp|msg)_/,r=new Set(["web_search","x_search","web_search_preview","file_search","image_generation","code_interpreter","mcp","local_shell"]),s=new Set(["model","input","instructions","tools","tool_choice","stream","store","reasoning","include","temperature","top_p","max_output_tokens","parallel_tool_calls","text","metadata","prompt_cache_key"]),t=["low","medium","high","xhigh"],u=/^(?:rs|msg|fc)_[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,v={type:"object",properties:{input:{type:"string"}},required:["input"]},w=new Map,x=new WeakMap;function y(a){let b="string"==typeof a?a.trim().toLowerCase():"";return"max"===b?"xhigh":t.includes(b)?b:"high"}function z(a){return"string"==typeof a?a:void 0===a?"":JSON.stringify(a)}function A(a){return"string"==typeof a&&u.test(a)}function B(a){if(!a||"object"!=typeof a||Array.isArray(a))return a;let{internal_chat_message_metadata_passthrough:b,...c}=a;if("reasoning"===a.type)return A(a.id)&&"string"==typeof a.encrypted_content?c:null;if("custom_tool_call"===a.type){let b=a.call_id||a.id,c="string"==typeof a.name?a.name.trim():"";return b&&c?{type:"function_call",call_id:b,name:c,arguments:JSON.stringify({input:z(a.input??a.arguments)})}:null}if("custom_tool_call_output"===a.type||"function_call_output"===a.type){let b=a.call_id||a.id;return b?{type:"function_call_output",call_id:b,output:z(a.output)}:null}if("function_call"===a.type){let b=a.call_id||a.id,c="string"==typeof a.name?a.name.trim():"";return b&&c?{type:"function_call",...A(a.id)?{id:a.id}:{},call_id:b,name:c,arguments:"string"==typeof a.arguments?a.arguments:JSON.stringify(a.arguments??{}),..."string"==typeof a.status?{status:a.status}:{}}:null}return c}let C=null;class D extends f.H{constructor(){super("grok-cli",g.xq["grok-cli"])}buildUrl(){return this.config.baseUrl}async refreshCredentials(a,b,c=null){return a?.refreshToken?(0,h.Vq)("grok-cli",a,b,c):null}needsRefresh(a){return(0,h.fp)("grok-cli",a)}buildHeaders(a,b=!0,c=null,d=null,f=null,g={}){let h=super.buildHeaders(a,b);for(let[a,b]of Object.entries(this.config.headers||{}))null!=b&&void 0===h[a]&&(h[a]=b);h["x-grok-client-identifier"]=this.config.clientIdentifier||h["x-grok-client-identifier"]||k.rK,h["x-grok-client-version"]=this.config.clientVersion||h["x-grok-client-version"]||k.uG;let i=g?.sessionId||a?.connectionId||e().randomUUID(),j=g?.reqId||e().randomUUID();h["x-grok-session-id"]=i,h["x-grok-conv-id"]=i,h["x-grok-req-id"]=j,h["x-grok-turn-idx"]=String(g?.turnIdx||1),g?.agentId&&(h["x-grok-agent-id"]=g.agentId),g?.model&&(h["x-grok-model-override"]=g.model);let l=a?.providerSpecificData||{},m=l.email||a?.email,n=l.userId||a?.userId||a?.providerUserId;return m&&(h["x-email"]=m),n&&(h["x-userid"]=n),h}parseError(a,b){if(402===a.status&&b)try{let a=JSON.parse(b),c=a?.code||"",d=a?.error||a?.message||b;return{status:402,message:"string"==typeof d?d:b,code:"string"==typeof c?c:void 0}}catch{}return super.parseError(a,b)}transformRequest(a,b,c,d,f={}){let g;g={prompt_cache_key:b?.prompt_cache_key,session_id:b?.session_id,conversation_id:b?.conversation_id,metadata:b?.metadata},f.sessionId=(0,m.oV)({headers:d?.rawHeaders,body:g,connectionId:d?.connectionId||d?.id,workspaceId:d?.providerSpecificData?.workspaceId,scope:"grok-cli"}),f.reqId=e().randomUUID(),f.agentId=d?.providerSpecificData?.deviceId||d?.providerSpecificData?.agentId||f.agentId||null;let h=(0,i.me)(b.input);h&&(b.input=h),(!b.input||Array.isArray(b.input)&&0===b.input.length)&&(Array.isArray(b.messages)&&b.messages.length>0?(b.input=b.messages.map(a=>({type:"message",role:a.role||"user",content:"string"==typeof a.content?a.content:JSON.stringify(a.content??"")})),delete b.messages):b.input=[{type:"message",role:"user",content:"..."}]),function(a){if(!Array.isArray(a?.input))return;let b=a.input.map(B).filter(Boolean),c=new Set(b.filter(a=>a?.type==="function_call"&&a.call_id).map(a=>a.call_id));a.input=b.filter(a=>a?.type!=="function_call_output"||c.has(a.call_id))}(b),Array.isArray(b.input)&&(b.input=b.input.filter(a=>{if("string"==typeof a&&q.test(a))return!1;if(a&&"object"==typeof a&&!Array.isArray(a)){if("item_reference"===a.type)return!1;"string"==typeof a.id&&q.test(a.id)&&!A(a.id)&&delete a.id}return!0})),function(a){if(!Array.isArray(a.tools)||0===a.tools.length){delete a.tools,delete a.tool_choice;return}let b=new Set,c=new Set;if(a.tools=a.tools.filter(a=>{if(!a||"object"!=typeof a||Array.isArray(a))return!1;let d="string"==typeof a.type?a.type:"";if("function"!==d){if(r.has(d))return c.add(d),!0;if(!d&&a.function);else if(d&&"string"!=typeof a.name)return!1}if(!("function"===d||""===d||a.function||"string"==typeof a.name)||r.has(d))return r.has(d);let e=a.function&&"object"==typeof a.function&&!Array.isArray(a.function)?a.function:null,f=("string"==typeof a.name?a.name:"string"==typeof e?.name?e.name:"").trim();if(!f)return!1;let g="string"==typeof a.description?a.description:"string"==typeof e?.description?e.description:"",h="custom"===d?v:a.parameters&&"object"==typeof a.parameters&&!Array.isArray(a.parameters)?a.parameters:e?.parameters&&"object"==typeof e.parameters&&!Array.isArray(e.parameters)?e.parameters:{type:"object",properties:{}};for(let b of Object.keys(a))delete a[b];return a.type="function",a.name=f.slice(0,128),g&&(a.description=g),a.parameters=h,b.add(a.name),!0}),0===a.tools.length){delete a.tools,delete a.tool_choice;return}if(a.tool_choice&&"object"==typeof a.tool_choice&&!Array.isArray(a.tool_choice)){let d="string"==typeof a.tool_choice.type?a.tool_choice.type:"";if("function"===d||"custom"===d){let c=a.tool_choice.name??a.tool_choice.function?.name,d="string"==typeof c?c.trim().slice(0,128):"";d&&b.has(d)?a.tool_choice={type:"function",name:d}:delete a.tool_choice}else c.has(d)||delete a.tool_choice}}(b),f.turnIdx=function(a,b,c=null){let d=function(a){if(!Array.isArray(a))return 1;let b=0;for(let c of a){if(!c||"object"!=typeof c||Array.isArray(c))continue;let a="string"==typeof c.type?c.type:"";"user"!==c.role||a&&"message"!==a||(b+=1)}return Math.max(1,b)}(b);if(!a)return d;if(c&&x.has(c))return x.get(c);let e=Date.now(),f=w.get(a),g=f&&e-f.lastUsed<=l.v1.sessionTtlMs?f.turn:0;f&&w.delete(a);let h=g>0?Math.max(d,g+ +!!c):d;for(;w.size>=5e3;)w.delete(w.keys().next().value);return w.set(a,{turn:h,lastUsed:e}),c&&x.set(c,h),h}(f.sessionId,b.input,b),b.stream=!0,b.store=!1;let n=function(a){if(!a||"string"!=typeof a)return null;for(let b of t)if(a.endsWith(`-${b}`))return b;return null}(b.model||a),o=b.model||a;n&&(o=o.replace(RegExp(`-${n}$`),"")),(o=(0,j.kt)("gcli",o)||o)===(b.model||a)&&(o=(0,j.kt)("grok-cli",o)||o),b.model=o,f.model=o;let p=(0,k.Au)(o);if(b.reasoning&&"object"==typeof b.reasoning?(p?b.reasoning.effort=y(b.reasoning.effort||b.reasoning_effort||n):delete b.reasoning.effort,b.reasoning.summary||(b.reasoning.summary="concise")):(b.reasoning={summary:"concise"},p&&(b.reasoning.effort=y(b.reasoning_effort||n))),delete b.reasoning_effort,b.reasoning&&"none"!==b.reasoning.effort){let a=Array.isArray(b.include)?b.include:[];a.includes("reasoning.encrypted_content")||a.push("reasoning.encrypted_content"),b.include=a}for(let a of(delete b.messages,delete b.max_tokens,delete b.max_completion_tokens,delete b.n,delete b.seed,delete b.logprobs,delete b.top_logprobs,delete b.frequency_penalty,delete b.presence_penalty,delete b.logit_bias,delete b.user,delete b.stream_options,delete b.prompt_cache_retention,delete b.safety_identifier,delete b.previous_response_id,Object.keys(b)))s.has(a)||delete b[a];return b}async execute(a){let b={agentId:a.credentials?.providerSpecificData?.deviceId||await (!C&&(C=(async()=>{try{let a=await p("grok-cli-agent");return[a.slice(0,8),a.slice(8,12),"5"+a.slice(13,16),"a"+a.slice(17,20),a.slice(0,12).padEnd(12,"0")].join("-")}catch{return e().randomUUID()}})()),C)};return super.execute({...a,hookCtx:b})}}},51349:(a,b,c)=>{c.d(b,{m:()=>e});var d=c(96179);class e extends d.L{constructor(){super("codebuddy-intl")}transformRequest(a,b,c,d){let e=super.transformRequest(a,b,c,d);e.stream=!0;let f=e.reasoning_effort;"none"===f||"off"===f?delete e.reasoning_effort:f&&(e.reasoning_summary="auto");let g=Array.isArray(e.messages)?e.messages:[];for(let a of(e.messages=[{role:"system",content:"You are CodeBuddy Code."}],g))!a||"object"!=typeof a||["system","developer"].includes(a.role)||("user"===a.role&&"string"==typeof a.content?e.messages.push({...a,content:[{type:"text",text:a.content}]}):e.messages.push({...a}));return e}parseError(a,b){if(b)try{let a=JSON.parse(b),c=a?.msg||a?.message||a?.error?.message||"";if(a?.code===6004||/超出频率限制|frequency limit|限额/i.test(c)){let a=null,b=c.match(/(\d{4}-\d{2}-\d{2})\s+(\d{2}:\d{2}:\d{2})(?:\s*UTC\+?([0-9:]+))?/i);if(b){let c=b[1],d=b[2],e=b[3]?b[3].includes(":")?b[3].startsWith("+")?b[3]:`+${b[3]}`:`+${b[3].padStart(2,"0")}:00`:"+08:00",f=new Date(`${c}T${d}${e}`);isNaN(f.getTime())||(a=f.getTime())}return{status:429,message:c||"CodeBuddy frequency limit (6004)",resetsAtMs:a}}}catch{}return super.parseError(a,b)}}},53307:(a,b,c)=>{c.d(b,{sh:()=>u});var d=c(74957);let e="https://uncensored.com",f="https://clerk.uncensored.com",g="5.127.1",h="https://internal.chatuncensored.ai/v2/image-gen",i={"1:1":{imageWidth:"1024",imageHeight:"1024"},"16:9":{imageWidth:"1024",imageHeight:"576"},"9:16":{imageWidth:"576",imageHeight:"1024"},"4:3":{imageWidth:"1024",imageHeight:"768"},"3:4":{imageWidth:"768",imageHeight:"1024"},"3:2":{imageWidth:"1152",imageHeight:"768"},"2:3":{imageWidth:"768",imageHeight:"1152"},"4:5":{imageWidth:"896",imageHeight:"1120"},"5:4":{imageWidth:"1120",imageHeight:"896"},"21:9":{imageWidth:"1344",imageHeight:"576"}},j={"seedream-v4.5":{name:"Seedream v4.5",aspects:["1:1","16:9","9:16","4:3","3:4"]},"seedream-v5":{name:"Seedream v5",aspects:["1:1","16:9","9:16","4:3","3:4","3:2","2:3"]},"seedream-v5-flash":{name:"Seedream v5 Flash",aspects:["1:1","16:9","9:16","4:3","3:4","3:2","2:3","4:5","5:4","21:9"],resolutions:["1k","1.5k","2k"]},"nano-banana-pro-ultra":{name:"Nano Banana Pro Ultra",aspects:["1:1","3:2","2:3","3:4","4:3","4:5","5:4","9:16","16:9","21:9"],resolutions:["4k","8k"]},"nano-banana-pro":{name:"Nano Banana Pro",aspects:["1:1","2:3","3:2","3:4","4:3","4:5","5:4","9:16","16:9","21:9"],resolutions:["1k","2k","4k"]},"nano-banana":{name:"Nano Banana",aspects:["1:1","9:16","16:9","3:4","4:3","3:2","2:3","5:4","4:5","21:9"]},"nano-banana-2":{name:"Nano Banana 2",aspects:["1:1","3:2","2:3","3:4","4:3","4:5","5:4","9:16","16:9","21:9"],resolutions:["1k","2k","4k"]},"gpt-image":{name:"GPT Image 1.5",aspects:["1:1","2:3","3:2"],qualities:["medium","high"]},"gpt-image-2":{name:"GPT Image 2",aspects:["1:1","3:2","2:3","3:4","4:3","4:5","5:4","9:16","16:9","21:9"]},"gpt-image-2.5-flare":{name:"GPT Image 2.5 Flare",aspects:["1:1","3:2","2:3","3:4","4:3","4:5","5:4","9:16","16:9","21:9","2:1","1:2","3:1","1:3","9:21"]},"gpt-image-2.5-sunburst":{name:"GPT Image 2.5 Sunburst",aspects:["1:1","3:2","2:3","3:4","4:3","4:5","5:4","9:16","16:9","21:9","2:1","1:2","3:1","1:3","9:21"]},"wan-2.6":{name:"Wan 2.6",aspects:["1:1","4:3","3:4","3:2","2:3"]},"wan-2.6-image":{name:"Wan 2.6",upstream:"wan-2.6",aspects:["1:1","4:3","3:4","3:2","2:3"]},"wan-2.7-text-to-image":{name:"Wan 2.7",aspects:["1:1","16:9","9:16","4:3","3:4","3:2","2:3"]},"wan-2.7-text-to-image-pro":{name:"Wan 2.7 Pro",aspects:["1:1","16:9","9:16","4:3","3:4","3:2","2:3"]},"prefect-pony-xl":{name:"Prefect Pony XL",aspects:["1:1","16:9","9:16","4:3","3:4","3:2","2:3"]},"1.0":{name:"Flux.1",aspects:[]},"1.1":{name:"Flux.1.1",aspects:[]},"1.2":{name:"Wan 2.6 (Flux tier)",aspects:[]},"2.0":{name:"Flux.2",aspects:[]},"flux-2-max":{name:"Flux 2 Max",aspects:[]},SDXL:{name:"SDXL uncensored",aspects:[]},realism:{name:"Realism",aspects:[]},"realism-2":{name:"Realism 2",aspects:[]},"z-image-turbo":{name:"Z Image Turbo",aspects:[]}},k={default:{name:"Standard",t2v:!0,i2v:!0,aspects:["auto","16:9","9:16","1:1"],resolutions:["480p","720p"],seconds:[5,8]},turbo:{name:"Turbo",t2v:!0,i2v:!0,aspects:["auto","16:9","9:16","1:1"],resolutions:["480p","720p"],seconds:[5,8]},"wan-2.2-uncensored-v2":{name:"Wan Ultra Uncensored v2",t2v:!0,i2v:!0,aspects:["auto","16:9","9:16","1:1"],resolutions:["480p","720p"],seconds:[5,8]},"wan-2.2-uncensored":{name:"Wan Ultra Uncensored",t2v:!0,i2v:!0,aspects:["auto","16:9","9:16","1:1"],resolutions:["480p","720p"],seconds:[5,8]},"wan-2.6":{name:"Wan v2.6",t2v:!0,i2v:!0,aspects:["auto","16:9","9:16","1:1"],seconds:[5,8]},"wan-2.6-ultra":{name:"Wan 2.6 Ultra Uncensored",t2v:!0,i2v:!0},"wan-2.7":{name:"Wan 2.7",t2v:!0,i2v:!0},"wan-2.7-pro":{name:"Wan 2.7 Pro",t2v:!0,i2v:!0},"wan-2.7-uncensored":{name:"Wan 2.7 Uncensored",t2v:!0,i2v:!0},"wan-2.7-uncensored-v2":{name:"Wan 2.7 Uncensored v2",t2v:!0,i2v:!0},"wan-3.0":{name:"Wan 3.0",t2v:!0,i2v:!0,audio:!0},"wan-3.0-uncensored":{name:"Wan 3.0 Uncensored",t2v:!0,i2v:!0,audio:!0},"wan-3.0-uncensored-pro":{name:"Wan 3.0 Uncensored Pro",t2v:!0,i2v:!0,audio:!0},"sora-2":{name:"Sora 2",t2v:!0,i2v:!0,seconds:[4,8,12]},"sora-2-pro":{name:"Sora 2 Pro",t2v:!0,i2v:!0,seconds:[4,8,12]},"grok-imagine-video":{name:"Grok Imagine Video",t2v:!0,i2v:!0},"bytedance-seedance-2.0":{name:"Seedance 2.0",t2v:!0,i2v:!0},"seedance-2.0-fast":{name:"Seedance 2.0 Fast",t2v:!0,i2v:!0},"seedance-2.0-uncensored":{name:"Seedance 2.0 Uncensored",t2v:!0,i2v:!0,audio:!0},"seedance-2.0-fast-uncensored":{name:"Seedance 2.0 Fast Uncensored",t2v:!0,i2v:!0,audio:!0},"seedance-2.0-mini-uncensored":{name:"Seedance 2.0 Mini Uncensored",t2v:!0,i2v:!0,audio:!0},"seedance-2.0-mini-turbo":{name:"Seedance 2.0 Mini Turbo Uncensored",t2v:!0,i2v:!0,audio:!0},"seedance-v1.5-pro-uncensored":{name:"Seedance v1.5 Pro Uncensored",t2v:!0,i2v:!0,audio:!0},"seedance-2.5-uncensored":{name:"Seedance 2.5 Uncensored",t2v:!0,i2v:!0,audio:!0},"seedance-2.5":{name:"Seedance 2.5",t2v:!0,i2v:!0,audio:!0},"vidu-q3-uncensored":{name:"Vidu Q3 Uncensored",t2v:!0,i2v:!0},"av-gen-v2":{name:"AV-Gen v2 with audio",t2v:!0,i2v:!0,audio:!0},"cosmos-predict":{name:"Cosmos Predict 2.5",t2v:!0,i2v:!0},"minimax-h3":{name:"MiniMax H3",t2v:!0,i2v:!0},"happyhorse-1.0":{name:"Happy Horse 1.0",t2v:!0,i2v:!0},"wan/v2.2-a14b":{name:"Wan v2.2-a14b",t2v:!0,i2v:!0}};function l(a){let b=new Map;for(let c of String(a||"").split(";")){let a=c.indexOf("=");if(a<0)continue;let d=c.slice(0,a).trim();d&&b.set(d,c.slice(a+1).trim())}return b}function m(a){try{let b=a.split(".")[1].replace(/-/g,"+").replace(/_/g,"/");return JSON.parse(Buffer.from(b+"=".repeat((4-b.length%4)%4),"base64").toString("utf8"))}catch{return null}}function n(a){return[...a.entries()].map(([a,b])=>`${a}=${b}`).join("; ")}function o(a,b){for(let c of"function"==typeof a.headers.getSetCookie?a.headers.getSetCookie():[]){let a=String(c).split(";")[0],d=a.indexOf("=");if(d>0&&a.slice(0,d).trim()===b)return a.slice(d+1).trim()}return""}async function p(a,b,c){let d=m(a)?.sid;if("string"==typeof d&&d)return{sid:d,rotatedClient:""};let e=await fetch(`${f}/v1/client?_clerk_js_version=${g}`,{headers:b,signal:c});if(!e.ok)return{sid:"",rotatedClient:""};let h=o(e,"__client"),i=await e.json().catch(()=>null),j=i?.response??i?.client??i,k=Array.isArray(j?.sessions)?j.sessions:[],l=k.find(a=>a?.status==="active")??k[0];return{sid:"string"==typeof l?.id?l.id:"",rotatedClient:h}}async function q(a,b){let c=l(a),d=c.get("__client");if(!d)throw Object.assign(Error("UC credential missing the __client cookie — paste the full uncensored.com Cookie header from a logged-in session"),{status:401});let h={Cookie:n(c),Origin:e,Referer:`${e}/`,Accept:"application/json"},i=await p(d,h,b),j=i.sid;if(!j)throw Object.assign(Error("UC Clerk session not found — the __client cookie has no active session. Log in again via Login via Browser"),{status:401});let k=await fetch(`${f}/v1/client/sessions/${encodeURIComponent(j)}/tokens?_clerk_js_version=${g}`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Origin:e,Referer:`${e}/`,Cookie:n(c)},body:"",signal:b});if(!k.ok){let a=(await k.text().catch(()=>"")).slice(0,200);throw Object.assign(Error(`UC Clerk token mint failed (HTTP ${k.status}) ${a}`),{status:k.status})}let q=o(k,"__client")||i.rotatedClient,r=await k.json().catch(()=>null),s=r?.jwt;if("string"!=typeof s||!s)throw Object.assign(Error("UC Clerk token mint returned no jwt"),{status:502});let t=m(s)?.uid;return{jwt:s,uid:"string"==typeof t?t:"",rotatedClient:q}}async function r(a,{signal:b,log:c,intervalMs:d=5e3,timeoutMs:f=3e5}){let g=Date.now()+f;for(;Date.now()<g;){if(b?.aborted)throw Error("aborted");await new Promise(a=>setTimeout(a,d));let f=0;try{f=(await fetch(a,{method:"HEAD",headers:{Referer:`${e}/`},signal:b})).status}catch{f=0}if(200===f)return;f>=400&&f<500&&429!==f&&c?.warn?.("UC-WEB",`result poll got HTTP ${f} — continuing until timeout`)}throw Error("UC result did not become available in time")}async function s(a,{signal:b}){let c=await fetch(a,{headers:{Referer:`${e}/`},signal:b});if(!c.ok)throw Error(`UC result download failed (HTTP ${c.status})`);return{b64:Buffer.from(await c.arrayBuffer()).toString("base64"),mime:(c.headers.get("content-type")||"").split(";")[0]||"application/octet-stream"}}async function t(a,b,c){let d=/^data:[^;]*;base64,(.*)$/.exec(String(a));if(d)return Buffer.from(d[1],"base64");if(/^https?:\/\//i.test(String(a))){let c=await fetch(a,{signal:b,headers:{Accept:"image/*","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/155.0.0.0 Safari/537.36"}});if(!c.ok)throw Error(`input image download failed (HTTP ${c.status})`);return Buffer.from(await c.arrayBuffer())}try{return Buffer.from(String(a),"base64")}catch{return c?.error?.("UC-WEB","could not decode input image"),null}}class u extends d.H{constructor(){super("uc-web",{id:"uc-web",baseUrl:"https://internal.chatuncensored.ai"})}async execute(){return{response:new Response(JSON.stringify({error:{message:"uc-web is a media provider — use /v1/images/generations or /v1/videos/generations",type:"invalid_request"}}),{status:400,headers:{"Content-Type":"application/json"}}),url:h,headers:{},transformedBody:{}}}async generateMedia({prompt:a,kind:b="image",size:c,model:d,duration:f,resolution:g,images:m,credentials:o,signal:p,log:u}){if("image"!==b&&"video"!==b)throw Error("uc-web supports image and video generation only");if(!a?.trim())throw Error("prompt is required");let v=String(o?.apiKey||""),{jwt:w,uid:x,rotatedClient:y}=await q(v,p),z=function(a,b){if(!b)return"";let c=l(a);return c.get("__client")===b?"":(c.set("__client",b),n(c))}(v,y);z&&o&&(o.apiKey=z);let A={Authorization:`Bearer ${w}`,Origin:e,Referer:`${e}/`,"Content-Type":"application/json"};if("image"===b){let b=d||"seedream-v4.5";if(!j[b])throw Object.assign(Error(`Unknown UC image model "${b}" — see the provider's model list`),{status:400});let e=j[b],f={prompt:a,mode:"dev",model_version:e.upstream||b,m_n_user:!0,moderationMode:"SUPER_LIGHT",country:"US",vdiscount:!1,...function(a,b){let c=String(a||"").trim(),d=Array.isArray(b)&&b.length?b:null,e=i[c]&&(!d||d.includes(c))?{aspect_ratio:c,...i[c]}:null;if(e)return e;if(c.includes("x")){let[a,b]=c.split("x").map(Number);if(Number.isFinite(a)&&Number.isFinite(b)&&a>0&&b>0){let c=null,e=1/0;for(let[f,g]of Object.entries(i)){if(d&&!d.includes(f))continue;let h=Math.abs(Number(g.imageWidth)/Number(g.imageHeight)-a/b);h<e&&(e=h,c=f)}if(c)return{aspect_ratio:c,...i[c]}}}let f=d?.[0]||"1:1";return{aspect_ratio:f,...i[f]}}(c,e.aspects)};if(e.resolutions?.length){let a=String(g||"").toLowerCase();f.resolution=e.resolutions.includes(a)?a:e.resolutions[0]}let k=await fetch(h,{method:"POST",headers:A,body:JSON.stringify(f),signal:p});if(!k.ok){let a=(await k.text().catch(()=>"")).slice(0,200);throw Object.assign(Error(`UC image request failed (HTTP ${k.status}) ${a}`),{status:k.status})}let l=await k.json().catch(()=>null),m="string"==typeof l?.url?l.url:"";if(!m)throw Error("UC image response carried no result url");return await r(m,{signal:p,log:u}),[await s(m,{signal:p})]}let B=d||"default";if(!k[B])throw Object.assign(Error(`Unknown UC video model "${B}" — see the provider's model list`),{status:400});let C=k[B],D=Array.isArray(m)?m[0]:m;if(D&&!1===C.i2v)throw Error(`UC video model "${B}" does not accept an input image`);if(!D&&!1===C.t2v)throw Error(`UC video model "${B}" requires an input image`);let E=Number(f)>0?Number(f):C.seconds?.[0]??5,F=C.resolutions?.length?C.resolutions.includes(String(g||""))?String(g):C.resolutions[0]:"480p",G={prompt:a,media_blob_name:null,num_frames:Math.round(16*E)+1,frames_per_second:16,num_inference_steps:30,guide_scale:5,shift:5,aspect_ratio:C.aspects?.includes("auto")?"auto":"9:16",pro_mode:"wan-3.0-uncensored-pro"===B,turbo:"turbo"===B,resolution:F,sora_resolution:F,end_frame_blob_name:null,model:B,seconds:E,video_to_video_duration:E,vdiscount:!1};if(D){if(!x)throw Object.assign(Error("Could not derive the account uid — re-paste the full Cookie header"),{status:401});let a=await t(D,p,u);if(!a)throw Error("UC image-to-video could not decode the input image");let b=await fetch("https://internal-6.pubyar.com/generate-signed-url",{method:"POST",headers:A,body:JSON.stringify({content_type:"image/png",user_identifier:x}),signal:p});if(!b.ok){let a=(await b.text().catch(()=>"")).slice(0,200);throw Object.assign(Error(`UC signed-url request failed (HTTP ${b.status}) ${a}`),{status:b.status})}let c=await b.json().catch(()=>null);if(!c?.signed_url||!c?.blob_name)throw Error("UC signed-url response missing signed_url or blob_name");let d=await fetch(c.signed_url,{method:"PUT",headers:{"Content-Type":"image/png"},body:new Uint8Array(a),signal:p});if(!d.ok)throw Object.assign(Error(`UC input-image upload failed (HTTP ${d.status})`),{status:d.status});G.media_blob_name=c.blob_name}let H=await fetch("https://internal.chatuncensored.ai/image_to_video",{method:"POST",headers:A,body:JSON.stringify(G),signal:p});if(!H.ok){let a=(await H.text().catch(()=>"")).slice(0,200);throw Object.assign(Error(`UC video request failed (HTTP ${H.status}) ${a}`),{status:H.status})}let I=await H.json().catch(()=>null),J="string"==typeof I?.url?I.url:"";if(!J)throw Error("UC video response carried no result url");let K=Number.isFinite(Number(I?.timeout_seconds))&&Number(I.timeout_seconds)>0?1e3*Number(I.timeout_seconds):3e5;return await r(J,{signal:p,log:u,timeoutMs:K}),[await s(J,{signal:p})]}}},55330:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{$R:()=>S,getExecutor:()=>R});var e=c(39536),f=c(98625),g=c(19696),h=c(95128),i=c(11655),j=c(61433),k=c(77333),l=c(76467),m=c(32447),n=c(19932),o=c(19946),p=c(73870),q=c(4493),r=c(13120),s=c(17373),t=c(77919),u=c(49227),v=c(23013),w=c(59192),x=c(20690),y=c(88331),z=c(53307),A=c(48868),B=c(9708),C=c(90926),D=c(26878),E=c(36732),F=c(49059),G=c(51349),H=c(85308),I=c(27617),J=c(71880),K=c(98665),L=c(93509),M=c(96179),N=c(83243),O=c(95089),P=c(74161);c(74957);var Q=a([o]);o=(Q.then?(await Q)():Q)[0];let T={antigravity:new e.c,azure:new f.P,"gemini-cli":new h.V,github:new i.x,iflow:new j.r,qoder:new k.DH,"qoder-cn":new k.DH("qoder-cn"),kiro:new l.B,kimchi:new m.BL,codex:new n.T,cursor:new o.ou,cu:new o.ou,vertex:new p.w("vertex"),"vertex-partner":new p.w("vertex-partner"),opencode:new q.j9,"opencode-go":new r.H,"opencode-zen":new s.mO,"grok-web":new t.$,"grok-cli":new u.hG,gcli:new u.hG,gb:new u.hG,"perplexity-web":new v.Ay,"deepseek-web":new w.id,"muse-web":new x._5,"veoaifree-web":new y.Q,"veo-free":new y.Q,"uc-web":new z.sh,"chatgpt-web":new A.RF,"ollama-local":new B.D,commandcode:new C.Ak,"xiaomi-tokenplan":new D.F,"xiaomi-mimo":new E.Rb,codearts:new I.Ay,deveco:new J.y,"codebuddy-cn":new F.v,"codebuddy-intl":new G.m,trae:new H.A,"trae-enterprise":new H.A("trae-enterprise"),zed:new K.A,windsurf:new L.Ay,"minimax-code":new N.M("minimax-code"),"minimax-code-global":new N.M("minimax-code-global"),"devin-cli":new O.c,zcode:new P.B,bedrock:new g.UD,br:new g.UD,"bedrock-xai":new g.UD("bedrock-xai"),brx:new g.UD("bedrock-xai")},U=new Map;function R(a){return T[a]?T[a]:(U.has(a)||U.set(a,new M.L(a)),U.get(a))}function S(a){return!!T[a]}d()}catch(a){d(a)}})},59192:(a,b,c)=>{c.d(b,{id:()=>an});var d=c(74957),e=c(78959),f=c(92536),g=c(73024),h=c(76760),i=c.n(h),j=c(75919);let k=[1n,32898n,0x800000000000808an,0x8000000080008000n,32907n,2147483649n,0x8000000080008081n,0x8000000000008009n,138n,136n,2147516425n,2147483658n,2147516555n,0x800000000000008bn,0x8000000000008089n,0x8000000000008003n,0x8000000000008002n,0x8000000000000080n,32778n,0x800000008000000an,0x8000000080008081n,0x8000000000008080n,2147483649n,0x8000000080008008n];Uint32Array.from(k,a=>Number(4294967295n&a)),Uint32Array.from(k,a=>Number(a>>32n&4294967295n)),Uint8Array.from({length:25},(a,b)=>{let c=Math.floor(b/5);return 2*(c+(b%5*2+3*c)%5*5)}),Uint8Array.from({length:25},(a,b)=>{let c=b%5;return 2*(b-c+(c+1)%5)}),Uint8Array.from({length:25},(a,b)=>{let c=b%5;return 2*(b-c+(c+2)%5)});let l=/^[a-f0-9]{64}$/i,m=0;function n(){let a=Error("DeepSeek PoW computation aborted");return a.name="AbortError",a}async function o(a,b,c,d,e,f={}){return function(a,b={}){let{signal:c}=b;if(c?.aborted)return Promise.reject(n());if(m>=2)return Promise.reject(Error("DeepSeek PoW worker capacity reached (2)"));let d=function(a){if(void 0===a)return 1e4;if(!Number.isSafeInteger(a)||a<1||a>3e4)throw Error("DeepSeek PoW timeout must be an integer from 1 to 30000ms");return a}(b.timeoutMs);return m+=1,new Promise((b,e)=>{let f;try{f=new j.Worker(function(){let a=i().join(process.cwd(),"open-sse/lib/deepseek-pow-worker.mjs");if(!(0,g.existsSync)(a))throw Error(`DeepSeek PoW worker script not found at ${a}`);return a}(),{workerData:a})}catch(a){m=Math.max(0,m-1),e(a instanceof Error?a:Error(String(a)));return}let h=!1,k=(a,b)=>{h||(h=!0,clearTimeout(o),c?.removeEventListener("abort",l),m=Math.max(0,m-1),b&&f.terminate(),a())},l=()=>{k(()=>e(n()),!0)},o=setTimeout(()=>{k(()=>e(Error(`DeepSeek PoW computation exceeded ${d}ms`)),!0)},d);c?.addEventListener("abort",l,{once:!0}),f.once("message",a=>{!Number.isSafeInteger(a)||a<-1?k(()=>e(Error("DeepSeek PoW worker returned an invalid answer")),!0):k(()=>b(a),!1)}),f.once("error",a=>{k(()=>e(a),!0)}),f.once("exit",a=>{0!==a?k(()=>e(Error(`DeepSeek PoW worker exited with code ${a}`)),!1):k(()=>e(Error("DeepSeek PoW worker exited without an answer")),!1)})})}(function(a,b,c,d,e){if("DeepSeekHashV1"!==a)throw Error(`Unsupported DeepSeek PoW algorithm: ${a}`);if(!l.test(b))throw Error("DeepSeek PoW challenge must be a 64-character SHA3-256 hex digest");if("string"!=typeof c||0===c.length||c.length>1024)throw Error("DeepSeek PoW salt must contain 1-1024 characters");if(!Number.isSafeInteger(d)||d<1||d>25e4)throw Error("DeepSeek PoW difficulty must be an integer from 1 to 250000");if(!Number.isSafeInteger(e)||e<0)throw Error("DeepSeek PoW expiry must be a non-negative safe integer");return{challenge:b.toLowerCase(),prefix:`${c}_${e}_`,difficulty:d}}(a,b,c,d,e),f)}var p=c(39609),q=c(14229),r=c(70452);let s=new((c.n(r))())({strict:!1,allErrors:!1,validateFormats:!1}),t=new WeakMap;function u(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:null}function v(a,b,c){let d=Array.isArray(a)?a.find(a=>a?.function?.name===b)??null:null;if(!d)return!1;let e=d.function?.parameters;if(void 0===e)return!0;if(("object"!=typeof e||null===e)&&"boolean"!=typeof e)return!1;let f=t.get(a);f||(f=new Map,t.set(a,f));let g=f.get(b);if(void 0===g){try{g=s.compile(e)}catch{g=null}f.set(b,g)}return!!g&&!0===g(c)}function w(a,b,c){if(!b.toolCalls)return b;let d=(0,q.OA)(c),e=[];for(let f of b.toolCalls){let b=(0,q.n)(f.function.arguments);if(!b)return{content:a,toolCalls:null};let g=b._nonce;if(void 0!==g&&g!==d)return{content:a,toolCalls:null};let{_nonce:h,...i}=b;if(!v(c,f.function.name,i))return{content:a,toolCalls:null};e.push({...f,function:{...f.function,arguments:JSON.stringify(i)}})}return{content:b.content,toolCalls:e}}function x(a){return"string"==typeof a&&!!a.trim()&&(!!/<\/?(?:|||\|\|?)DSML(?:|||\|\|?)\s*(?:calls|invoke|parameter)\b/i.test(a)||/<\/?(?:tool|tool_call)(?::|\s|>)/i.test(a))}function y(a){return Array.isArray(a)?a.filter(a=>a?.type==="text").map(a=>a?.text??"").join("\n"):null==a?"":String(a)}let z=/<(\/?)(?:tool_call|tool)(:[A-Za-z0-9_.+-]+)?((?:\s[^>]*)?)\/?>/g;function A(a,b){let c=RegExp(`\\b${b}\\s*=\\s*("|')`).exec(a);if(!c)return null;let d=c[1],e=c.index+c[0].length,f="";for(;e<a.length;){let b=a[e];if("\\"===b){f+=a[e+1]??"",e+=2;continue}if(b===d)break;f+=b,e+=1}return f}function B(a,b){let c=RegExp(`<${b}\\b[^>]*>([\\s\\S]*?)<\\/${b}>`,"i").exec(a);return c?c[1].trim():null}let C=/<parameter\b([^>]*?)\/?>(?:((?:(?!<parameter\b)[\s\S])*?)<\/parameter>)?/gi;function D(a){return"string"==typeof a&&a.length>0?a:null}let E="[||]",F=`${E}{2}DSML${E}{2}`,G=RegExp(`</?${F}\\s*(?:calls|invoke|parameter)\\b[^>]*>|<${F}\\s*/\\s*(?:calls|invoke|parameter)\\s*>`,"gi");function H(a,b,c){let d=[],e=RegExp(`(?:</?${F}\\s*${b}\\b([^>]*)>|<${F}\\s*/\\s*${b}\\s*>)`,"gi"),f=null;for(;null!==(f=e.exec(a));)d.push({start:c+f.index,end:c+e.lastIndex,attrs:f[1]??""});return d}function I(a,b,c,d,e){let f=A(a.attrs,"name");if(!f)return null;let g=b?b.start:d,h=H(c.slice(a.end,g),"parameter",a.end),i={},j=a.end;for(let a=0;a<h.length;a+=1){let b=h[a],d=A(b.attrs,"name");if(!d)continue;let e=h[a+1],f=c.slice(b.end,e?e.start:g).trim();i[d]=""!==f?f:A(b.attrs,"content")??"",j=e?e.end:g}if(!Object.values(i).some(a=>""!==a))return null;let k=(0,q.Ub)(f,e)??f;return{start:a.start,end:b?b.end:j,name:k,args:i}}let J=/<[||]{1,2}DSML[||]{1,2}\s+(calls|invoke|parameter)([^>]*)>/gi,K=/<\/[||]{1,2}DSML[||]{1,2}\s+(calls|invoke|parameter)\s*>/gi,L=/<(?:(?:\|DSML\|)|(?:||DSML||))invoke\b([^>]*)>([\s\S]*?)<\/(?:(?:\|DSML\|)|(?:||DSML||))invoke\s*>/gi,M=/<(?:(?:\|DSML\|)|(?:||DSML||))parameter\b([^>]*)>([\s\S]*?)(?:<\/(?:(?:\|DSML\|)|(?:||DSML||))parameter\s*>|<(?:(?:\|DSML\|)|(?:||DSML||))parameter\s*>)/gi,N=/<(?:(?:\|DSML\|)|(?:||DSML||))(?:calls|call|invoke|parameter)\b[^>]*>[^]*?<\/(?:(?:\|DSML\|)|(?:||DSML||))(?:calls|call|invoke|parameter)\s*>/i,O=/(?:<\|tool_call_begin\|>|<|tool▁call▁begin|>)[\s\n]*([^<\s]+)[\s\n]*(?:<\|tool_call_argument_begin\|>|<|tool▁call▁argument▁begin|>)([\s\S]*?)(?:<\|tool_call_argument_end\|>|<|tool▁call▁argument▁end|>)[\s\n]*(?:<\|tool_call_end\|>|<|tool▁call▁end|>)/g;function P(a){try{return JSON.parse(a)}catch{return null}}function Q(a,b,c){let d=Array.isArray(c)?c.find(a=>a?.function?.name===b):void 0,e=d?.function?.parameters?.properties;if(!e||"object"!=typeof e)return a;for(let[b,c]of Object.entries(a))e[b]?.type==="string"&&"string"!=typeof c&&(a[b]=JSON.stringify(c));return a}function R(a,b="call",c){var d,e,f;if("string"!=typeof a||0===a.length)return{content:a??"",toolCalls:null};a=a.replace(/\s*This response is AI-generated, for reference only\.\s*$/i,"");let g=(0,q.x2)(c),h=(d=a,RegExp(`</?${F}\\s*(?:calls|invoke|parameter)\\b`,"i").test(d))?function(a,b){let c=[],d=[],e=RegExp(`<${F}\\s*calls\\s*>([\\s\\S]*?)(?:</${F}\\s*calls\\s*>|<${F}\\s*/\\s*calls\\s*>)`,"gi"),f=RegExp(`(?:</${F}\\s*calls\\s*>|<${F}\\s*/\\s*calls\\s*>)\\s*$`,"i"),g=[],h=null;for(;null!==(h=e.exec(a));){let i={start:h.index,end:e.lastIndex};g.push(i);let j=h[1],k=h.index+h[0].indexOf(j),l=f.exec(h[0]);d.push({start:h.index,end:k}),d.push({start:h.index+(l?l.index:h[0].length),end:h.index+h[0].length});let m=H(j,"invoke",k);for(let d=0;d<m.length;d+=1){if(!A(m[d].attrs,"name"))continue;let e=I(m[d],m[d+1],a,k+j.length,b);e&&c.push(e),m[d+1]&&(d+=1)}}let i=H(a,"invoke",0).filter(a=>!g.some(b=>a.start>=b.start&&a.end<=b.end));for(let d=0;d<i.length;d+=1){if(!A(i[d].attrs,"name"))continue;let e=I(i[d],i[d+1],a,a.length,b);e&&c.push(e),i[d+1]&&(d+=1)}return{calls:c.sort((a,b)=>a.start-b.start),strip:d}}(a,g):null,i=h&&h.calls.length>0?h:null;if(!i){let d=/<tool\b|<tool:/.test(a),g=a=>(a.toolCalls?.length??0)>0||!d,h=function(a,b,c){if(!/<(?:(?:||DSML||)|(?:\|DSML\|))/.test(a))return{content:a,toolCalls:null,recognized:!1};let d=(0,q.x2)(c),e=(0,q.OA)(c),f=[],g=[],h=/<(?<dsml>||DSML|||\|DSML\|)\s*invoke\s+name=["']([^"']+)["']\s*>([\s\S]*?)<\/\k<dsml>\s*invoke\s*>/g,i=null,j=!1,k=!1;for(;null!==(i=h.exec(a));){let a;j=!0;let l=(0,q.Ub)(i[2],d);if(!e||!l){k=!0;continue}let m=function(a){let b={},c=/<(?:||DSML|||\|DSML\|)\s*parameter\s+name=["']([^"']+)["'][^>]*>([\s\S]*?)(?:<\/?(?:||DSML|||\|DSML\|)\s*parameter\s*>|(?=<(?:||DSML|||\|DSML\|)\s*parameter\s+name=|<\/(?:||DSML|||\|DSML\|)\s*invoke\s*>))/g,d=null;for(;null!==(d=c.exec(a));){let a=d[2].trim();b[d[1]]=P(a)??a}if(Object.keys(b).length>0)return b;let e=P(a.trim()||"{}");return e&&"object"==typeof e&&!Array.isArray(e)&&Object.assign(b,e),b}(i[3]),n=u(m.arguments);if((m._nonce??n?._nonce)!==e){k=!0;continue}if(n){let{_nonce:b,...c}=n;a=c}else{let{_nonce:b,name:c,...d}=m;a=d}if(!v(c,l,a)){k=!0;continue}f.push({id:`${b}_${f.length}`,type:"function",function:{name:l,arguments:JSON.stringify(a)}}),g.push({start:i.index,end:h.lastIndex})}if(k||0===f.length)return{content:a,toolCalls:null,recognized:j};let l=/<\/?(?:||DSML|||\|DSML\|)\s*calls\s*>/g,m=null;for(;null!==(m=l.exec(a));)g.push({start:m.index,end:l.lastIndex});return{content:(0,q.LW)(a,g),toolCalls:f,recognized:!0}}(a,b,c);if(h.recognized&&g(h))return w(a,h,c);let i=function(a,b,c){let d=(0,q.x2)(c),e=[],f=[];O.lastIndex=0;let g=null;for(;null!==(g=O.exec(a));){let a=(0,q.Ub)(g[1],d),h=P(g[2].trim());if(!a||!h||"object"!=typeof h||Array.isArray(h))continue;let i=Q(h,a,c);e.push({id:`${b}_${e.length}`,type:"function",function:{name:a,arguments:JSON.stringify(i)}}),f.push({start:g.index,end:g.index+g[0].length})}!function(a,b,c,d,e,f){L.lastIndex=0;let g=null;for(;null!==(g=L.exec(a));){let a=A(g[1]||"","name"),h=a?(0,q.Ub)(a,c):null;if(!h)continue;let{args:i,found:j}=function(a){let b={},c=!1;M.lastIndex=0;let d=null;for(;null!==(d=M.exec(a));){let a=A(d[1]||"","name");if(!a)continue;let e=d[2].trim();b[a]=P(e)??e,c=!0}return{args:b,found:c}}(g[2]);if(!j&&g[2].trim())continue;let k=Q(i,h,d);e.push({id:`${b}_${e.length}`,type:"function",function:{name:h,arguments:JSON.stringify(k)}}),f.push({start:g.index,end:g.index+g[0].length})}}(a,b,d,c,e,f),e.length>0&&function(a,b){let c=/<(?:(?:\|DSML\|)|(?:||DSML||))calls\s*>[\s\S]*?<\/(?:(?:\|DSML\|)|(?:||DSML||))calls\s*>/gi,d=null;for(;null!==(d=c.exec(a));){let a=d.index,c=a+d[0].length;b.some(b=>b.start>=a&&b.end<=c)&&b.push({start:a,end:c})}}(a,f);let h=N.test(a)||/<(?:(?:\|tool_call_)|(?:|tool▁call▁))/.test(a);return 0===e.length?{content:a,toolCalls:null,recognized:h}:{content:(0,q.LW)(a,f),toolCalls:e,recognized:h}}(a,b,c);if(i.recognized&&g(i))return w(a,i,c);e=(f=e=a).includes("DSML")?f.replace(J,(a,b,c)=>{let d=b.toLowerCase();if("calls"===d)return"";let e=A(c,"name"),f=null!==e?` name="${e}"`:"";return"invoke"===d?`<tool${f}>`:`<parameter${f}>`}).replace(K,(a,b)=>{let c=b.toLowerCase();return"calls"===c?"":"invoke"===c?"</tool>":"</parameter>"}):f,(/[||]{1,2}DSML[||]{1,2}/i.test(e)||/<parameter\b/i.test(e)||/<\/(?:parameter|invoke|arguments|calls|tool_calls|function_calls)>/i.test(e)||e.includes("This response is AI-generated, for reference only."))&&(e=(e=e.replace(/\s*This response is AI-generated, for reference only\.\s*$/i,"")).replace(/<\/?(?:[||]{1,2})DSML(?:[||]{1,2})\s*(?:calls|tool_calls|function_calls)>/gi,"").replace(/<(\/?)(?:(?:[||]{1,2})DSML(?:[||]{1,2})\s*)?invoke\b/gi,"<$1tool").replace(/<(\/?)(?:(?:[||]{1,2})DSML(?:[||]{1,2})\s*)?parameter\b/gi,"<$1parameter").replace(/(}\s*)<\/(?:parameter|invoke|calls|tool_calls|function_calls)>/gi,"$1"),/<parameter\b/i.test(e)&&!/<tool\b/i.test(e)&&(e=e.replace(/((?:<parameter\b[\s\S]*?<\/parameter>\s*)+)/gi,"<tool>$1</tool>"))),a=e}let j=function(a){let b=[],c=null;for(z.lastIndex=0;null!==(c=z.exec(a));)b.push({start:c.index,end:z.lastIndex,closing:"/"===c[1],suffix:c[2]?c[2].slice(1):"",attrs:c[3]||""});return b}(a);if(0===j.length&&!i)return w(a,(0,q.uQ)(a,b,c),c);let k=function(a){let b=new Map;if(!Array.isArray(a))return b;for(let c of a){let a=c?.function;if(!a?.name)continue;let d=a.parameters,e=d?.properties;e&&"object"==typeof e&&!Array.isArray(e)?b.set(a.name,new Set(Object.keys(e))):b.set(a.name,new Set)}return b}(c),l=function(a,b){let c=[],d=[];for(let b of a){if(!b.closing){d.push(b);continue}let a=d.pop();a&&c.push({open:a,close:b,innerStart:a.end,innerEnd:b.start})}for(let a of d){let d={start:b,end:b,closing:!0,suffix:"",attrs:""};c.push({open:a,close:d,innerStart:a.end,innerEnd:b})}return c}(j,a.length),m=[],n=(0,q.OA)(c);for(let b of l.filter(a=>!l.some(b=>b!==a&&b.open.start>=a.innerStart&&b.close.end<=a.innerEnd)).sort((a,b)=>a.open.start-b.open.start)){let c=b.open.suffix||A(b.open.attrs,"name")||A(b.open.attrs,"id")||"",d=a.slice(b.innerStart,b.innerEnd).replace(G,""),e=function(a,b,c,d){let e,f=b.trim(),g=B(f,"name"),h=B(f,"arguments")??B(f,"parameters"),i=h?null:function(a){let b={},c=!1,d=null;for(C.lastIndex=0;null!==(d=C.exec(a));){let a=d[1]||"",e=d[2],f=A(a,"name");if(!f)continue;let g=A(a,"content")??("string"==typeof e?e.trim():"");b[f]=g,c=!0}return c?b:null}(f),j=!!g||!!h||!!i,k=j?null:(0,q.n)(f);if(!k&&!j){let a=function(a){let b=a.indexOf("{");if(-1===b)return null;let c=0,d="",e=!1;for(let f=b;f<a.length;f+=1){let g=a[f];if(e){e=!1;continue}if(d){"\\"===g?e=!0:g===d&&(d="");continue}if('"'===g||"'"===g){d=g;continue}if("{"===g){c+=1;continue}if("}"===g&&0==(c-=1))return a.slice(b,f+1)}return null}(f);a&&(k=(0,q.n)(a))}let l=k?D(k.name)??D(k.type):null,m=g?(0,q.Ub)(g,c):null,n=l?(0,q.Ub)(l,c):null,o=a?(0,q.Ub)(a,c):null,p=null,r=!1,s=(a,b)=>{!p&&a&&(p=a,r=b)};if(s(m,!1),s(n,!1),s(o,!0),s(g,!1),s(l,!1),s(a,!0),!p&&!a&&k){let a=D(k.command),b=a?(0,q.Ub)(a,c):null;b&&(p=b,r=!1)}if(!p&&i&&d&&d.size>0){let a=Object.keys(i);if(a.length>0){let b=[];for(let[c,e]of d)e.size>0&&a.every(a=>e.has(a))&&b.push(c);1===b.length&&(p=b[0],r=!1)}}if(!p)return null;if(h)e=(0,q.n)(h)??h;else if(i)e=i;else if(k)if(void 0!==k.arguments)e=k.arguments;else if(void 0!==k.params)e=k.params;else if(r)e=k;else{let{name:a,type:b,id:c,command:d,arguments:f,params:g,...h}=k;e=h}else e={};return{name:p,arguments:(0,q.r3)(e)}}(c,d,g,k);if(e){if(n){let a=(0,q.n)(d);if(a&&"string"==typeof a.name&&void 0!==a._nonce&&a._nonce!==n)continue}m.push({start:b.open.start,end:b.close.end,call:e})}}let o=[];if(i)for(let a of(o=i.strip,i.calls))m.push({start:a.start,end:a.end,call:{name:a.name,arguments:(0,q.r3)(a.args)}});if(0===m.length)return{content:a,toolCalls:null};m.sort((a,b)=>a.start-b.start);let p=[],r=[];for(let a of m)p.push({id:`${b}_${p.length}`,type:"function",function:{name:a.call.name,arguments:a.call.arguments}}),r.push({start:a.start,end:a.end});let s=[...r,...o,...j.filter(a=>!r.some(b=>a.start>=b.start&&a.end<=b.end)).map(a=>({start:a.start,end:a.end}))],t=(0,q.LW)(a,s);return p.length>0&&(t=t.replace(/<parameter\b[^>]*>[\s\S]*?(?:<\/parameter>|$)/gi,"").replace(/<\/?(?:parameter|invoke|tool|calls|tool_calls|function_calls)\b[^>]*>/gi,"").replace(/\n{3,}/g,"\n\n").trim()),function(a,b,c){if(!b.toolCalls)return b;let d=(0,q.OA)(c),e=[];for(let f of b.toolCalls){let b=(0,q.n)(f.function.arguments);if(!b)return{content:a,toolCalls:null};if(!("_nonce"in b)){e.push(f);continue}if(b._nonce!==d)return{content:a,toolCalls:null};let{_nonce:g,...h}=b;if(!v(c,f.function.name,h))return{content:a,toolCalls:null};e.push({...f,function:{...f.function,arguments:JSON.stringify(h)}})}return{content:b.content,toolCalls:e}}(a,{content:t,toolCalls:p},c)}function S(a,{min:b=-Number.MAX_SAFE_INTEGER,max:c=Number.MAX_SAFE_INTEGER}={}){return Number.isSafeInteger(a)&&a>=b&&a<=c}async function T(a){let b=await (0,p.proxyAwareFetch)("https://chat.deepseek.com/api/v0/chat/create_pow_challenge",{method:"POST",headers:{...a.headers,"Content-Type":"application/json",Authorization:`Bearer ${a.accessToken}`},body:JSON.stringify({target_path:a.targetPath}),signal:a.signal??void 0},a.proxyOptions||null);if(!b.ok)throw Error(`create_pow_challenge HTTP ${b.status}`);let c=await b.json(),d={...c?.data?.biz_data?.challenge??c?.biz_data?.challenge,target_path:a.targetPath};if(!d||"string"!=typeof d.algorithm||"string"!=typeof d.challenge||"string"!=typeof d.salt||"string"!=typeof d.signature||!S(d.difficulty,{min:1})||!S(d.expire_at,{min:0})||"string"!=typeof d.target_path)throw Error("Invalid DeepSeek PoW challenge");return d}var U=c(98915);function V(a){let b=a.toLowerCase();return b.includes("think")||b.includes("r1")||b.includes("reason")}function W(a){let b=a.toLowerCase();return b.includes("search")||b.includes("fold")}function X(a,b){let c=a.replace(/^FINISHED\s*/,"").replace(/^(WEB_SEARCH|SEARCHING|SEARCH)\s*/i,"");return W(b)?b.toLowerCase().includes("search-silent")?c.replace(/\[citation:(\d+)\]/g,""):c.replace(/\[citation:(\d+)\]/g,"[$1]"):c}function Y(a,b){return 0===a.length||b.toLowerCase().includes("search-silent")?"":a.filter(a=>a.cite_index).sort((a,b)=>(a.cite_index||0)-(b.cite_index||0)).map(a=>`[${a.cite_index}]: [${a.title}](${a.url})`).join("\n")}let Z="https://chat.deepseek.com",$=`${Z}/api`,_=`${$}/v0/chat/completion`,aa={Accept:"*/*","Accept-Encoding":"gzip, deflate, br, zstd","Accept-Language":"en-US,en;q=0.9",Origin:Z,Referer:`${Z}/`,"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36","X-Client-Bundle-Id":"com.deepseek.chat","X-Client-Locale":"en-US","X-Client-Platform":"web","X-Client-Version":"2.0.0"},ab=new Map,ac=new Map;function ad(a){if(a.size>=100){let b=a.keys().next().value;b&&a.delete(b)}}function ae(a){let b=a?.apiKey||a?.accessToken;return"string"!=typeof b||0===b.length?null:(0,U.Xm)(b)}function af(a,b,c){return new Response(JSON.stringify({error:{message:b,type:"upstream_error",code:c??`HTTP_${a}`}}),{status:a,headers:{"Content-Type":"application/json"}})}function ag(){let a=Date.now(),b=()=>"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,a=>{let b=16*Math.random()|0;return("x"===a?b:3&b|8).toString(16)});return`intercom-HWWAFSESTIME=${a}; HWWAFSESID=${Array.from({length:18},()=>Math.floor(16*Math.random()).toString(16)).join("")}; Hm_lvt_${b()}=${Math.floor(a/1e3)}; _frid=${b()}`}async function ah(a,b){let c=await o(a.algorithm,a.challenge,a.salt,a.difficulty,a.expire_at,{signal:b});if(c<0)throw Error("PoW solver failed");return Buffer.from(JSON.stringify({algorithm:a.algorithm,challenge:a.challenge,salt:a.salt,answer:c,signature:a.signature,target_path:a.target_path})).toString("base64")}async function ai(a,b){let c=new TextDecoder,d=a.getReader(),e="",f="",g="",h="",i=!1,j=b||"deepseek-web",k=V(j),l=[],m=a=>{let b=X(a,j);if(!b)return;let c=h;!c&&k?c="thinking":!c&&W(j)&&(c="content"),"thinking"===c?g+=b:f+=b},n=(a,b=!1)=>{let c;if(b&&("THINK"===(c=String(a?.type||"").toUpperCase())?h="thinking":("ANSWER"===c||"RESPONSE"===c)&&(h="content")),"string"==typeof a?.content&&0!==a.content.length){if(!b){let b=String(a?.type||"").toUpperCase();"THINK"===b?h="thinking":("ANSWER"===b||"RESPONSE"===b)&&(h="content")}m(a.content)}};for(;;){let{done:a,value:b}=await d.read();if(a)break;let f=(e+=c.decode(b,{stream:!0})).split("\n");for(let a of(e=f.pop()||"",f)){if(!a.startsWith("data: ")&&!a.startsWith("data:"))continue;let b=a.replace(/^data:\s*/,"").trim();try{let a=JSON.parse(b),c=a?.p,d=a?.v;if("response/status"===c&&"FINISHED"===d&&(i=!0),d&&"object"==typeof d&&d.response&&(!0===d.response.thinking_enabled?h="thinking":!1===d.response.thinking_enabled&&(h="content"),Array.isArray(d.response.fragments)))for(let a of d.response.fragments)n(a,!1);if("response/fragments"===c)if(Array.isArray(d))for(let a of d)n(a,!0);else d&&"object"==typeof d&&n(d,!0);if("response"===c&&Array.isArray(d))for(let a of d)a?.p==="response"&&a?.v?.thinking_enabled===!0&&(h="thinking");if("response/search_status"===c)continue;if("response/search_results"===c&&Array.isArray(d)){if(a?.o!=="BATCH")l.length=0,l.push(...d);else for(let a of d){let b=String(a?.p||"").match(/^(\d+)\/cite_index$/);if(b){let c=parseInt(b[1],10);l[c]&&(l[c].cite_index=a.v)}}continue}if("string"==typeof d)m(d);else if(Array.isArray(d)&&"response"===c){for(let a of d)if(Array.isArray(a?.v)){let b=a.v.map(a=>a?.content||"").join("");b&&m(b)}}}catch{}}}let o=Y(l,j);if(o&&(f+=`
279
245
 
280
- ${i}
246
+ ${o}`),!i)throw Error("DeepSeek web session ended before completion (no FINISHED signal received) — likely a dropped cookie session or network interruption upstream. Retry the request.");return{content:f,reasoningContent:g}}async function aj(a,b,c,d=null){let e=ab.get(a);if(e&&e.expiresAt>Math.floor(Date.now()/1e3))return e.accessToken;c?.info?.("DEEPSEEK-WEB","Acquiring access token from /users/current...");let f=await (0,p.proxyAwareFetch)(`${$}/v0/users/current`,{headers:{Authorization:`Bearer ${a}`,...aa},signal:b??void 0},d);if(401===f.status||403===f.status)throw Error("Token invalid or expired — get a new userToken from DeepSeek localStorage");if(!f.ok)throw Error(`users/current HTTP ${f.status}`);let g=await f.json();if(g?.code&&0!==g.code){let b=g.msg||g?.data?.biz_msg||`error code ${g.code}`;throw ab.delete(a),Error(`DeepSeek rejected token: ${b}`)}let h=g?.data?.biz_data||g?.biz_data;if(!h?.token){let a=g?.msg||g?.data?.biz_msg||"Unknown error";throw Error(`Failed to acquire token: ${a}`)}let i=h.token;return ad(ab),ab.set(a,{accessToken:i,expiresAt:Math.floor(Date.now()/1e3)+3600}),c?.info?.("DEEPSEEK-WEB",`Access token acquired (${i.length} chars)`),i}async function ak(a,b,c=null){let d=await (0,p.proxyAwareFetch)(`${$}/v0/chat_session/create`,{method:"POST",headers:{...aa,"Content-Type":"application/json",Authorization:`Bearer ${a}`,Cookie:ag()},body:JSON.stringify({}),signal:b??void 0},c);if(!d.ok)throw Error(`chat_session/create HTTP ${d.status}`);let e=await d.json(),f=e?.data?.biz_data||e?.biz_data,g=f?.chat_session?.id;if(!g)throw Error(`No session id: code=${e?.code}`);return g}async function al(a,b,c=null){try{await (0,p.proxyAwareFetch)(`${$}/v0/chat_session/delete`,{method:"POST",headers:{...aa,"Content-Type":"application/json",Authorization:`Bearer ${a}`},body:JSON.stringify({chat_session_id:b})},c)}catch{}}async function am(a,b,c="/api/v0/chat/completion",d=null){return T({accessToken:a,headers:aa,signal:b,targetPath:c,proxyOptions:d})}class an extends d.H{constructor(){super("deepseek-web",{baseUrl:Z})}async testConnection(a,b){try{let c=ae(a);if(!c)return!1;return!!await aj(c,b,null,a?.proxyOptions||null)}catch{return!1}}async execute({model:a,body:b,stream:c,credentials:d,signal:g,log:h,proxyOptions:i=null}){var j;let k,l,m=b||{},n=m.tools,o=Array.isArray(n)&&n.length>0,r=o?function(a){if(!Array.isArray(a)||0===a.length)return"";let b=(0,q.OA)(a);if(!b)return"";let c=[];for(let d of a){let a=d?.function;if(!a?.name)continue;let e="string"==typeof a.description&&a.description?a.description:"",f="";try{let c=u(a.parameters),d=u(c?.properties),e=Array.isArray(c?.required)?c.required.filter(a=>"string"==typeof a):[],g=c?{...c,properties:{...d??{},_nonce:{type:"string",const:b}},required:[...new Set([...e,"_nonce"])]}:a.parameters;f=g?JSON.stringify(g):""}catch{f=""}c.push(`- ${a.name}${e?`: ${e}`:""}${f?`
247
+ parameters: ${f}`:""}`)}return 0===c.length?"":["You can call tools. To call a tool, output ONLY this exact block (no markdown fence):",`<tool>{"name": "<tool_name>", "arguments": { ... }, "_nonce": "${b}"}</tool>`,"Rules:","- Use exactly <tool>...</tool>. Do NOT use <tool:name>, <tool_call>, <name>, <parameter>, id=/name= attributes, <||DSML||> markers, or code fences.",`- Include the secret binding "_nonce": "${b}" exactly as shown.`,'- "name" must be one of the tools below; "arguments" must be a JSON object.',"- When a tool is needed, emit the <tool> block instead of only describing the plan.","- Emit one <tool> block per call; you may put several blocks back to back.","- If your runtime forces DSML instead, every DSML invoke MUST include this exact binding:",`<||DSML|| parameter name="_nonce" string="true">${b}</||DSML|| parameter>`," A DSML invoke without that binding is invalid and will be rejected.","- If no tool is needed, just answer normally without any <tool> block.","","Available tools:",...c].join("\n")}(n):"",s=Array.isArray(m.messages)?m.messages:[],t=r?[{role:"system",content:r},...s]:s,v=d??{},w=ae(v);if(!w)return{response:af(400,"Missing userToken — paste it from DeepSeek localStorage (DevTools → Application → Local Storage → chat.deepseek.com → userToken)"),url:_,headers:{},transformedBody:b};let{modelType:z,thinkingEnabled:A,searchEnabled:B}=(l=(k=(a||"").toLowerCase()).includes("pro")||k.includes("expert")?"expert":"default",{modelType:l,thinkingEnabled:k.includes("r1")||k.includes("think")||k.includes("reason")||m?.thinking_enabled===!0||m?.thinking===!0||!!m?.reasoning_effort,searchEnabled:k.includes("search")||m?.search_enabled===!0||m?.search===!0||m?.web_search===!0}),C=v.providerSpecificData??{},D=!0===C.persistSession,E="number"==typeof C.historyWindow&&C.historyWindow>0?C.historyWindow:0;try{let b=Date.now(),d=await aj(w,g,h,i);h?.info?.("DEEPSEEK-WEB",`Token acquired in ${Date.now()-b}ms`);let k=o?function(a,b){let c=[];b&&c.push(b);let d=[],e=new Map,f=!1;for(let b of a)if("system"===b.role){let a=y(b.content).trim();a&&c.push(a)}else if("user"===b.role){let a=y(b.content).trim();a&&d.push(`User: ${a}`)}else if("assistant"===b.role){let a=y(b.content).trim(),c=Array.isArray(b.tool_calls)?b.tool_calls:[],g=[];for(let b of(a&&g.push(a),c)){let a="string"==typeof b?.function?.name?b.function.name:"",c=b?.function?.arguments,d="string"==typeof c&&c?c:JSON.stringify(c??{});b?.id&&e.set(b.id,a),g.push(`<tool>{"name": ${JSON.stringify(a)}, "arguments": ${d}}</tool>`),f=!0}g.length&&d.push(`Assistant: ${g.join("\n")}`)}else if("tool"===b.role){let a=y(b.content).trim(),c=b.tool_call_id&&e.get(b.tool_call_id)||b.name||"tool";d.push(`Tool result (${c}): ${a||"(no output)"}`),f=!0}let g=[];return c.length&&g.push(c.join("\n\n")),d.length&&g.push(d.join("\n\n")),f&&g.push("Continue the task using the tool results above. Do NOT repeat tool calls that already succeeded; perform the next step or give the final answer."),g.join("\n\n").replace(/!\[.*?\]\(.*?\)/g,"")}(s,r):function(a,b=0){if(0===a.length)return"";let c=[],d=[],e=new Map,f="";for(let b of a){var g;let a=(Array.isArray(g=b.content)?g.filter(a=>"text"===a.type).map(a=>a.text).join("\n"):String(g||"")).trim();if("system"===b.role)a&&c.push(a);else if("user"===b.role||"assistant"===b.role)for(let c of(a&&d.push({role:b.role,text:a}),"user"===b.role&&(f=a),Array.isArray(b.tool_calls)?b.tool_calls:[]))c?.id&&"string"==typeof c.function?.name&&e.set(c.id,c.function.name);else if("tool"===b.role&&a){let c=b.tool_call_id&&e.get(b.tool_call_id)||b.name||"tool";d.push({role:"tool",text:`(${c}) ${a}`})}}let h=[];c.length>0&&h.push(c.join("\n\n"));let i=b>0?b:20*(d.length>1);if(i>0&&d.length>1){let a=d.slice(-i).map(a=>"assistant"===a.role?`Assistant: ${a.text}`:"tool"===a.role?`Tool result ${a.text}`:`User: ${a.text}`).join("\n\n");h.push(a)}else f&&h.push(f);return h.join("\n\n").replace(/!\[.*?\]\(.*?\)/g,"")}(t,E);h?.info?.("DEEPSEEK-WEB",`model_type=${z}, thinking=${A}, search=${B}, stream=${!1!==c}, persist=${D}, window=${E}`);let l=async(a,b=k)=>{let c=await am(d,g,void 0,i),e=await ah(c,g),f={...aa,"Content-Type":"application/json",Authorization:`Bearer ${d}`,"X-Ds-Pow-Response":e,"X-Client-Timezone-Offset":String(-60*new Date().getTimezoneOffset()),Cookie:ag()},h={chat_session_id:a,parent_message_id:null,model_type:z,prompt:b,ref_file_ids:Array.isArray(m.ref_file_ids)?m.ref_file_ids:[],thinking_enabled:A,search_enabled:B,preempt:!1};return{resp:await (0,p.proxyAwareFetch)(_,{method:"POST",headers:f,body:JSON.stringify(h),signal:g??void 0},i),reqHeaders:f,requestPayload:h}},u=async()=>{if(D){let a=ac.get(w);if(a)return{sessionId:a.sessionId,reused:!0};let b=await ak(d,g,i);return ad(ac),ac.set(w,{sessionId:b,createdAt:Date.now()}),{sessionId:b,reused:!1}}return{sessionId:await ak(d,g,i),reused:!1}};b=Date.now();let{sessionId:v,reused:C}=await u();h?.info?.("DEEPSEEK-WEB",`Session ${C?"reused":"created"} in ${Date.now()-b}ms`),b=Date.now(),h?.info?.("DEEPSEEK-WEB",`POST ${_}`);let{resp:F,reqHeaders:G,requestPayload:H}=await l(v);if(h?.info?.("DEEPSEEK-WEB",`Completion response in ${Date.now()-b}ms, status=${F.status}`),!F.ok&&D&&C&&(h?.warn?.("DEEPSEEK-WEB","Reused session failed — retrying with a fresh session"),ac.delete(w),v=await ak(d,g,i),ad(ac),ac.set(w,{sessionId:v,createdAt:Date.now()}),C=!1,{resp:F,reqHeaders:G,requestPayload:H}=await l(v)),!F.ok){let a=F.status,b=`DeepSeek API error (${a})`;401===a||403===a?(ab.delete(w),b="DeepSeek token expired — get a fresh userToken from localStorage."):429===a&&(b="DeepSeek rate limited. Wait and retry."),h?.warn?.("DEEPSEEK-WEB",b);try{let a=await F.json();a?.code&&0!==a.code&&(b=`DeepSeek error ${a.code}: ${a.msg}`)}catch{}return D&&ac.delete(w),al(d,v,i).catch(()=>{}),{response:af(a,b),url:_,headers:G,transformedBody:H}}if((F.headers.get("content-type")||"").includes("application/json"))try{let a=await F.json(),b=function(a){if(!a||"object"!=typeof a)return null;let b="number"==typeof a.code?a.code:void 0,c=a.msg,d=a.data?.biz_msg;return void 0!==b&&0!==b?{code:b,message:("string"==typeof c?c:"string"==typeof d?d:"")||`DeepSeek error ${b}`}:null}(a);if(b){let a=`DeepSeek error ${b.code}: ${b.message}`;h?.warn?.("DEEPSEEK-WEB",a);let c=40003===b.code?401:40002===b.code?429:502;return 40003===b.code&&ab.delete(w),D&&ac.delete(w),al(d,v,i).catch(()=>{}),{response:af(c,a,b.code),url:_,headers:G,transformedBody:H}}return D||al(d,v,i).catch(()=>{}),{response:new Response(JSON.stringify(a),{status:200,headers:{"Content-Type":"application/json"}}),url:_,headers:G,transformedBody:H}}catch{}let I=D?async()=>{}:()=>al(d,v),J="string"==typeof a&&a.trim()?a.trim():"deepseek-web";if(o){let{content:a,reasoningContent:b}=await ai(F.body,J),j=R(a,`call-${Date.now()}`,n),m=async a=>(await I(),{response:af(502,a),url:_,headers:G,transformedBody:H});if(function(a,b){if(x(a))return!0;if("string"!=typeof a||!a.trim())return!1;let c=(0,q.n)(a);if(!c||void 0===c.arguments)return!1;let d=[c.name,c.command].find(a=>"string"==typeof a&&a.length>0)??null;return!!d&&!!(0,q.Ub)(d,(0,q.x2)(b))}(j.content,n)){h?.warn?.("DEEPSEEK-WEB","Malformed tool envelope — retrying once with nonce binding"),ac.delete(w),await al(d,v,i).catch(()=>{}),v=await ak(d,g,i),D&&(ad(ac),ac.set(w,{sessionId:v,createdAt:Date.now()}));let c=[k,"Your previous response used an invalid tool envelope and was rejected.","Retry the requested next action from scratch. Follow the client tool contract exactly, including its _nonce binding and argument schema. Do not emit bare JSON or unbound DSML."].join("\n\n");if({resp:F,reqHeaders:G,requestPayload:H}=await l(v,c),!F.ok)return m("DeepSeek tool-call repair request failed.");if({content:a,reasoningContent:b}=await ai(F.body,J),j=R(a,`call-${Date.now()}`,n),x(j.content))return m("DeepSeek emitted an invalid tool call after repair.")}return await I(),function(a){let{stream:b,clientModel:c,content:d,reasoningContent:g,toolCalls:h,reqHeaders:i,requestPayload:j}=a,k=!!h&&h.length>0,l=k?"tool_calls":"stop",m=`chatcmpl-${Date.now()}`,n=Math.floor(Date.now()/1e3);if(b){let a=new TextEncoder,b=(b,d,e)=>{b.enqueue(a.encode((0,f.N)({id:m,object:"chat.completion.chunk",created:n,model:c,system_fingerprint:null,choices:[{index:0,delta:d,finish_reason:e,logprobs:null}]})))};return{response:new Response(new ReadableStream({start(c){b(c,{role:"assistant",content:""},null),g&&b(c,{reasoning_content:g},null),d&&b(c,{content:d},null),k&&b(c,{tool_calls:h.map((a,b)=>({index:b,id:a.id,type:"function",function:{name:a.function.name,arguments:a.function.arguments}}))},null),b(c,{},l),c.enqueue(a.encode(e.$U)),c.close()}}),{status:200,headers:{...e.uB}}),url:_,headers:i,transformedBody:j}}let o={role:"assistant",content:d||""};return g&&(o.reasoning_content=g),k&&(o.tool_calls=h,d||(o.content=null)),{response:new Response(JSON.stringify({id:m,object:"chat.completion",created:n,model:c,choices:[{index:0,message:o,finish_reason:l,logprobs:null}],usage:{prompt_tokens:0,completion_tokens:0,total_tokens:0}}),{status:200,headers:{"Content-Type":"application/json"}}),url:_,headers:i,transformedBody:j}}({stream:!1!==c,clientModel:J,content:j.content,reasoningContent:b,toolCalls:j.toolCalls,reqHeaders:G,requestPayload:H})}if(!1!==c){let a,b=(j=function(a,b,c=null){let d=new TextEncoder,g=new TextDecoder,h=b||"deepseek-web",i=`chatcmpl-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,j=Math.floor(Date.now()/1e3),k=!1,l="",m=V(h),n=[],o=null,p=null;return new ReadableStream({async start(b){var q;let r,s=a.getReader();o=s;let t="",u=!1,v=!1,w=(a,c)=>{b.enqueue(d.encode((0,f.N)({id:i,object:"chat.completion.chunk",created:j,model:h,system_fingerprint:null,choices:[{index:0,delta:a,finish_reason:c??null,logprobs:null}]})))},x=()=>{k||(k=!0,w({role:"assistant",content:""}))},{finishOnce:y,hasFinished:z}=(q=()=>{let a=Y(n,h);a&&(x(),w({content:`
281
248
 
282
- Respond with ONLY <tool> blocks, one per line. No prose, no code fences, no explanation before or after the blocks.`:i);if(!m.trim())throw Object.assign(Error("ChatGPT Web requires non-empty text"),{status:400});let n={...await aR({baseUrl:a,accessToken:b,userAgent:d,signal:g}),Authorization:`Bearer ${b}`,"User-Agent":d,...c?{Cookie:c}:{},"Content-Type":"application/json"},o=await a4(`${a}/backend-api/f/conversation/prepare`,{method:"POST",headers:{...n,Accept:"application/json"},body:JSON.stringify({action:"next",parent_message_id:(0,e.randomUUID)(),model:"auto",client_prepare_state:"success",timezone_offset_min:0,timezone:"UTC",conversation_mode:{kind:"primary_assistant"},partial_query:{id:(0,e.randomUUID)(),author:{role:"user"},content:{content_type:"text",parts:[m]}},supports_buffering:!0,supported_encodings:["v1"],client_contextual_info:{app_name:"chatgpt.com"}})},6e4,g);if(!o.ok){let a=(await o.text().catch(()=>"")).slice(0,200);throw Object.assign(Error(`ChatGPT prepare failed (HTTP ${o.status}) ${a}`),{status:o.status||502})}let p=await o.json().catch(()=>null),q=await a4(`${a}/backend-api/f/conversation`,{method:"POST",headers:{...n,Accept:"text/event-stream","X-Conduit-Token":p?.conduit_token||"","X-Oai-Turn-Trace-Id":(0,e.randomUUID)()},body:JSON.stringify({action:"next",messages:[{id:(0,e.randomUUID)(),author:{role:"user"},create_time:Date.now()/1e3,content:{content_type:"text",parts:[m]},metadata:{serialization_metadata:{custom_symbol_offsets:[]}}}],parent_message_id:(0,e.randomUUID)(),model:"auto",client_prepare_state:"sent",timezone_offset_min:0,timezone:"UTC",conversation_mode:{kind:"primary_assistant"},enable_message_followups:!0,supports_buffering:!0,supported_encodings:["v1"],client_contextual_info:{app_name:"chatgpt.com"},force_parallel_switch:"auto"})},135e3,g);if(!q.ok)throw Object.assign(Error(`ChatGPT conversation failed (HTTP ${q.status})`),{status:q.status||502});let r=((await a5(q,0x1000000,12e4)).match(/"conversation_id"\s*:\s*"([0-9a-f-]{36})"/)||[])[1]||"";if(!r)throw Object.assign(Error("ChatGPT conversation produced no conversation id"),{status:502});let s=Date.now();for(;Date.now()-s<=18e4;){if(g?.aborted)throw Error("Request aborted");let e=await a4(`${a}/backend-api/conversation/${r}`,{headers:{Authorization:`Bearer ${b}`,"User-Agent":d,Accept:"application/json",...c?{Cookie:c}:{}}},3e4,g).catch(()=>null);if(e?.ok){let a=await e.json().catch(()=>null),b=a?function(a){let b=a?.mapping||{},c="",d=!1,e="";for(let a of Object.values(b)){let b=a?.message;if(b&&"assistant"===String(b.author?.role||"").toLowerCase()&&(b.metadata?.is_complete===!0&&(d=!0),b.content?.content_type==="text"&&(c+=(b.content.parts||[]).filter(a=>"string"==typeof a).join("")),b.metadata?.is_error)){let a=(b.content?.parts||[]).filter(a=>"string"==typeof a).join("");a&&(e=a)}}return d?{text:c,errorText:e}:null}(a):null;if(b){if(!b.text.trim()&&b.errorText)throw Object.assign(Error(`ChatGPT refused the turn: ${b.errorText.slice(0,200)}`),{status:400});return h&&!l.hasTools&&h.debug?.("CGPT-WEB",`chat turn complete (${b.text.length} chars)`),{text:b.text,hasTools:l.hasTools,requestedTools:l.requestedTools}}}else h&&h.debug?.("CGPT-WEB",`conversation poll status ${e?.status??"network"}, retrying`);await a3(1500)}throw Object.assign(Error("ChatGPT chat turn timed out"),{status:504})}var a7=c(4052);let a8="https://chatgpt.com",a9="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36";async function ba({storageState:a,userAgent:b,signal:c}){let d=aW(a),e=await fetch(`${a8}/api/auth/session`,{headers:{"User-Agent":b,Accept:"application/json",...d?{Cookie:d}:{}},signal:c});if(!e.ok)throw Object.assign(Error(`ChatGPT session unavailable (HTTP ${e.status})`),{status:403===e.status?401:e.status||502});let f=await e.json().catch(()=>null);if("string"!=typeof f?.accessToken||!f.accessToken)throw Object.assign(Error("ChatGPT session is not signed in"),{status:401});return f.accessToken}function bb(a,b){return new Response(JSON.stringify({error:{message:b}}),{status:a,headers:{"Content-Type":"application/json"}})}class bc extends d.H{constructor(){super("chatgpt-web",{id:"chatgpt-web",baseUrl:a8})}async testConnection(a){try{let b=a?.providerSpecificData?.storageState??a?.apiKey;if("string"!=typeof b||!b.trim())return!1;if(b.trim().startsWith("{"))return JSON.parse(b),!0;return/__Secure-next-auth\.session-token|^[\w-]+\.[\w-]+\.[\w-]+$/.test(b.trim())}catch{return!1}}async execute(a){try{let b=await this.#a(a);if(b)return b;return{response:await ay(a),url:a8,headers:{},transformedBody:a.body}}catch(c){let b=c instanceof Error?c.message:"ChatGPT Web browser execution failed";if((0,a7.BE)(b))return{response:bb(503,"ChatGPT Web requires a Chrome/Chromium browser (headed). Install Google Chrome on the host (or set CHATGPT_WEB_CHROME_PATH), and run `npx playwright-core install chromium`."),url:a8,headers:{},transformedBody:a.body};return{response:bb(/storage state|credentials|connection ID/i.test(b)?401:/(?:\bHTTP[_\s-]*429\b|\bstatus\s+429\b|\brate[-_\s]?limit(?:ed)?\b|\bquota\s+(?:exhausted|reached|exceeded)\b|\b(?:image(?:\s+upload)?|upload|usage)\s+limit\s+(?:reached|exceeded)\b|\breached\s+(?:your\s+)?(?:image(?:\s+upload)?|upload|usage)\s+limit\b)/i.test(b)?429:/request|messages|prompt|model|tools|text content|reasoning effort/i.test(b)?400:502,b),url:a8,headers:{},transformedBody:a.body}}}async #a(a){let b,c,{credentials:d,body:f,model:g,stream:h}=a;try{b=at(d)}catch{return null}let i=d?.providerSpecificData,j="string"==typeof i?.customUserAgent&&i.customUserAgent.trim()?i.customUserAgent.trim():a9;try{let d=await ba({storageState:b,userAgent:j,signal:a.signal});c=await a6({baseUrl:a8,accessToken:d,cookie:aW(b),userAgent:j,body:f,signal:a.signal,log:a.log})}catch(a){if(a?.code==="TURNSTILE_REQUIRED"||/Turnstile/i.test(a?.message||""))return null;throw a}if(!c.hasTools)return{response:ax(g,{text:c.text},h),url:a8,headers:{},transformedBody:f};let k=ax(g,{text:c.text},!1);return{response:await (0,ak.N)(k,c.requestedTools,h,{idSeed:"call",cid:`chatcmpl-${(0,e.randomUUID)()}`,created:Math.floor(Date.now()/1e3),model:g}),url:a8,headers:{},transformedBody:f}}async generateMedia({prompt:a,n:b=1,size:c,credentials:d,signal:e,log:f}){if(!a)throw Error("prompt is required for image generation");let g=at(d),h=d.providerSpecificData,i="string"==typeof h?.customUserAgent&&h.customUserAgent.trim()?h.customUserAgent.trim():a9,j=[];for(let h=0;h<Math.max(1,b);h++)j.push(await this.#b({prompt:a,size:c,storageState:g,userAgent:i,signal:e,log:f,credentials:d}));return j}async #b({prompt:a,size:b,storageState:c,userAgent:d,signal:e,log:f,credentials:g}){try{let g=await ba({storageState:c,userAgent:d,signal:e});return await a2({baseUrl:a8,accessToken:g,cookie:aW(c),userAgent:d,prompt:a,sizeHint:b,signal:e,log:f})}catch(a){if(a?.code!=="TURNSTILE_REQUIRED"&&!/Turnstile/i.test(a?.message||""))throw a;f?.warn?.("CGPT-WEB","Sentinel demanded Turnstile — falling back to the browser path")}let h="string"==typeof g?.connectionId&&g.connectionId.trim()?g.connectionId.trim():null;if(!h)throw Error("ChatGPT Web image generation requires a connection ID");let i=g.providerSpecificData,j=await aw({connectionId:h,storageState:c,selection:{kind:"picker",modelLabel:"GPT-5.6 Sol",effortIndex:0},userAgent:d,locale:"string"==typeof i?.locale?i.locale:void 0,timezone:"string"==typeof i?.timezone?i.timezone:void 0,chromeExecutablePath:av(i?.chromeExecutablePath)});try{return await j.start(),await aH(j.page,{prompt:a,sizeHint:b,signal:e,log:f})}finally{await j.page.close().catch(()=>{})}}}},71880:(a,b,c)=>{c.d(b,{y:()=>u});var d=c(77598),e=c.n(d),f=c(96179),g=c(41004),h=c(93943),i=c(7630),j=c(57247),k=c(43659);let l=["max_tokens","max_completion_tokens","max_output_tokens"],m=new Set(["4016","4015","4011",4016,4015,4011]),n="currently overloaded",o=Symbol.for("deveco.chatId");function p(a){let b=String(a||""),c=b.indexOf("/");return c>=0?b.slice(c+1):b}function q(a){return a?e().createHash("sha256").update(String(a)).digest("hex").slice(0,32):e().randomUUID().replace(/-/g,"")}function r(a){let b=p(a);return(0,j.KC)("deveco").find(a=>a.id===b)||null}async function s(a,b){let c=a.body.getReader(),d=[],e=0,f=!1,g=null,h=new Promise(a=>{g=setTimeout(()=>a("timeout"),b)}),i=null;try{for(;e<8192;){i=c.read();let a=await Promise.race([i,h]);if("timeout"===a){f=!0;break}if(i=null,a.done||(d.push(a.value),e+=a.value.byteLength,Buffer.from(t(d)).toString("utf8").includes(n)))break}}catch{}return clearTimeout(g),{head:d.length?Buffer.from(t(d)).toString("utf8"):"",replayed:new Response(new ReadableStream({async start(a){try{for(let b of d)a.enqueue(b);let b=i;for(;;){let{done:d,value:e}=await (b||c.read());if(b=null,d)break;a.enqueue(e)}a.close()}catch(b){a.error(b)}},cancel(a){c.cancel(a).catch(()=>{})}}),{status:a.status,statusText:a.statusText,headers:a.headers}),timedOut:f}}function t(a){let b=new Uint8Array(a.reduce((a,b)=>a+b.byteLength,0)),c=0;for(let d of a)b.set(d,c),c+=d.byteLength;return b}class u extends f.L{constructor(a="deveco"){super(a)}async execute(a){var b,c,d;let e,f=q(a?.providerSessionId),h=a?{...a,credentials:{...a.credentials||{},[o]:f}}:a,i=await super.execute(h),j=i?.response;if(!j||200!==j.status)return i;if(!(j.headers?.get?.("content-type")||"").includes("event-stream")){let a=function(a){if(!a||!a.includes("errorCode"))return null;try{let b=JSON.parse(a);if(void 0===b.errorCode)return null;return m.has(b.errorCode)||/token|jwt|auth|login|realname/i.test(String(b.errorMsg||""))?b:null}catch{return null}}(await j.clone().text().catch(()=>""));return a?function(a,b,c){let{response:d}=a;return{...a,response:new Response(b,{status:c,statusText:d.statusText,headers:d.headers})}}(i,JSON.stringify({error:{type:"authentication_error",message:a.errorMsg||"DevEco token rejected — reconnect the account"}}),g.gx.UNAUTHORIZED):i}let l=r(a?.model);if(!l?.contextLength||(b=i,c=a,d=4.5*l.contextLength,(e=b.bodyStr||JSON.stringify(b.transformedBody||c?.body||{})).includes(";base64,")?!(Buffer.byteLength(e.replace(/;base64,[A-Za-z0-9+/=]+/g,""),"utf8")>d):!(e.length>d||!(3*e.length<=d)&&Buffer.byteLength(e,"utf8")>d)))return i;let{head:p,replayed:t,timedOut:u}=await s(j,3e3);return u||!p.includes(n)?{...i,response:t}:{...i,response:new Response(JSON.stringify((0,k.xJ)(g.gx.BAD_REQUEST,`prompt is too long: DevEco built-in models cap the conversation at ${l.contextLength} tokens and this request exceeds that window. Compact or shrink the context, or route this model to a larger-context provider.`)),{status:g.gx.BAD_REQUEST,headers:{"Content-Type":"application/json"}})}}transformRequest(a,b,c,d){let e=super.transformRequest(a,b,c,d);return e&&"object"==typeof e&&(e.model=p(e.model||a),e.stream=!0,l.some(a=>null!=e[a])||(e.max_tokens=r(e.model||a)?.maxOutputTokens||32e3),void 0===e.tool_choice||Array.isArray(e.tools)&&0!==e.tools.length||delete e.tool_choice),e}buildHeaders(a,b=!0,c,d,e){let f=a?.accessToken||a?.providerSpecificData?.securityToken||"";return{"Content-Type":"application/json",Authorization:`Bearer ${f}`,"Chat-Id":a?.[o]||q(null),lang:"en",...b?{Accept:"text/event-stream"}:{}}}parseError(a,b){if(b)try{let c=JSON.parse(b),d=c?.error?.message||c?.message;if("string"==typeof d&&d)return{status:a.status,message:d}}catch{}return super.parseError(a,b)}async refreshCredentials(a,b,c=null){let d=await (0,h.MF)(this.provider,a,()=>(0,i.WH)(a,{log:b,proxyOptions:c||a?.proxyOptions||null}));return d?.providerSpecificData&&(d.providerSpecificData={...a?.providerSpecificData||{},...d.providerSpecificData}),d}}},73870:(a,b,c)=>{c.d(b,{w:()=>n});var d=c(74957),e=c(12643),f=c(57247),g=c(8521),h=c(39609),i=c(49426),j=c(41004);let k=new Map;function l(a){if("string"!=typeof a)return null;try{let b=JSON.parse(a);if("authorized_user"===b.type&&b.client_id&&b.client_secret&&b.refresh_token)return b;return null}catch{return null}}async function m(a){if(k.has(a))return k.get(a);let b=await (0,i.S)(`https://aiplatform.googleapis.com/v1/publishers/google/models/__probe__:generateContent?key=${a}`,{method:"POST",headers:{"Content-Type":"application/json"},body:"{}"}),c=await b.json().catch(()=>null),d=(c?.[0]?.error?.message||c?.error?.message||"").match(/projects\/([^/]+)\//),e=d?.[1]||null;return e&&k.set(a,e),e}class n extends d.H{constructor(a="vertex"){super(a,e.xq[a]||{})}buildUrl(a,b,c=0,d=null){let e=(0,g.Sc)(d?.apiKey),h=l(d?.apiKey),i=!!e||!!h||!!d?.accessToken,j=i?null:d?.apiKey,k=e?.project_id||h?.quota_project_id||d?.providerSpecificData?.projectId;if("vertex-partner"===this.provider){if(!k)throw Error("Vertex partner models require a project_id. Add it in providerSpecificData or use Service Account JSON.");let a=`https://aiplatform.googleapis.com/v1/projects/${k}/locations/global/endpoints/openapi/chat/completions`;return j?`${a}?key=${j}`:a}let m=b?"streamGenerateContent":"generateContent";if(i){if(!k)throw Error("Vertex OAuth/ADC requires a project_id. Add quota_project_id to your ADC JSON or set providerSpecificData.projectId.");let c=d?.providerSpecificData?.location||(0,f.V2)(this.provider,a)?.defaultLocation||"us-central1",e=`https://aiplatform.googleapis.com/v1/projects/${k}/locations/${c}/publishers/google/models/${a}:${m}`;return b&&(e+="?alt=sse"),e}let n=d?.providerSpecificData?.location||"global",o=k?`https://aiplatform.googleapis.com/v1/projects/${k}/locations/${n}/publishers/google/models/${a}:${m}`:`https://aiplatform.googleapis.com/v1/publishers/google/models/${a}:${m}`;return b&&(o+="?alt=sse"),j&&(o+=b?`&key=${j}`:`?key=${j}`),o}buildHeaders(a,b=!0){let c={"Content-Type":"application/json"};return a.accessToken&&(c.Authorization=`Bearer ${a.accessToken}`),b&&(c.Accept="text/event-stream"),c}async refreshCredentials(a,b){let c=(0,g.Sc)(a?.apiKey);if(!c)return null;let d=await (0,g.pb)(c,b);return d?{accessToken:d.accessToken,expiresAt:d.expiresAt}:null}async execute({model:a,body:b,stream:c,credentials:d,signal:e,log:f,proxyOptions:k=null}){let n,o=(0,g.Sc)(d?.apiKey),p=l(d?.apiKey);if(o){let a=await (0,g.pb)(o,f);if(!a?.accessToken)throw Error("Vertex: failed to mint access token from Service Account JSON");d.accessToken=a.accessToken}if(p){let a=await (0,g.I9)(p.refresh_token,p.client_id,p.client_secret,f);if(!a?.accessToken)throw Error("Vertex: failed to refresh access token from ADC JSON (authorized_user)");d.accessToken=a.accessToken}if("vertex-partner"===this.provider&&!o&&!p&&!d?.providerSpecificData?.projectId){let a=await m(d.apiKey);if(!a)throw Error("Vertex: could not resolve project_id from API key. Please add it manually in provider settings.");f?.debug?.("VERTEX",`Resolved project_id: ${a}`),d.providerSpecificData={...d.providerSpecificData,projectId:a}}let q=this.buildUrl(a,c,0,d),r=this.buildHeaders(d,c),s=this.transformRequest(a,b,c,d),t=(0,i.n)(e,this.config?.timeoutMs||j.Z1);try{n=await (0,h.proxyAwareFetch)(q,{method:"POST",headers:r,body:JSON.stringify(s),signal:t.signal},k)}catch(a){throw t.settleError(a)}finally{t.clear()}return{response:n,url:q,headers:r,transformedBody:s}}}},74161:(a,b,c)=>{c.d(b,{B:()=>f});var d=c(96179),e=c(94526);class f extends d.L{constructor(){super("zcode")}transformRequest(a,b,c,d){return function(a){var b;let c;if(!a||"object"!=typeof a||Array.isArray(a)||!((c=(Array.isArray(b=a.system)?b:"string"==typeof b?[b]:[]).map(a=>"string"==typeof a?a:"string"==typeof a?.text?a.text:"")).length>3)&&e.L.every(a=>c.some(b=>b===a.text)))return a;let d=function(a){if("string"==typeof a)return e.L.some(b=>b.text===a)?null:{text:a,cacheControl:null};if(!Array.isArray(a))return null;let b=null,c=[];for(let d of a){if("string"==typeof d){d&&!e.L.some(a=>a.text===d)&&c.push(d);continue}"string"==typeof d?.text&&d.text&&!e.L.some(a=>a.text===d.text)&&c.push(d.text),d?.cache_control&&(b=d.cache_control)}return c.length?{text:c.join("\n\n"),cacheControl:b}:null}(a.system);if(d)return{...a,system:[...e.L,{type:"text",text:d.text,...d.cacheControl?{cache_control:{...d.cacheControl}}:{}}]};let f=null;if(Array.isArray(a.system))for(let b of a.system)b?.cache_control&&(f=b.cache_control);if(!f)return{...a,system:[...e.L]};let g=e.L.map((a,b)=>b===e.L.length-1?{...a,cache_control:{...f}}:a);return{...a,system:g}}(super.transformRequest(a,b,c,d))}}},76467:(a,b,c)=>{c.d(b,{B:()=>M});var d=c(74957),e=c(12643),f=c(6382),g=c(94755),h=c(8521),i=c(78959),j=c(24),k=c(41004),l=c(68421),m=c(8658),n=c(12009);let o=l.bJ.maxMessageBytes,p=l.bJ.maxHeadersBytes,q=new Set(["assistantResponseEvent","reasoningContentEvent","codeEvent","toolUseEvent","messageStopEvent","metadataEvent","MetadataEvent","contextUsageEvent","meteringEvent","metricsEvent"]),r=new TextEncoder,s=new TextDecoder,t=Object.freeze({tool:"Retry the previous response because its Kiro tool_call wrapper was malformed. If you use the wrapper tool named tool_call, its input must contain a non-empty name and an arguments field.",ellipsis:"Retry the previous response because it ended with only an ellipsis. Return the complete final answer, not only ... or ….",short_final:"Retry the previous response because its final only announced a future action. Complete the check now and return the result or a concrete blocker."}),u=/^(?:(?:(?:現在|接著|接下來|下一步)[,,::\s]*(?:我(?:只)?(?:會|要|將|再)?\s*)?|我只再)(?:補|查|確認|驗證|追(?:查|蹤)?|繼續|檢查|測試)|我(?:會|要|將)(?:再|重新)?(?:補(?:齊|查)?|抓取|查(?:詢)?|確認|驗證|追(?:查|蹤)?|繼續|檢查|測試)|(?:(?:next|now|then)\b[\s,:-]*)?(?:i(?:'ll| will| am going to| need to)|let me)\s+(?:verify|check|confirm|validate|investigate|trace|continue|follow up|test)\b)/iu,v=/^目前證據顯示[\s\S]{1,700}[。.!?;;]\s*最後補查\s+504\s+access\s+log[,,]\s*確認\s+host[//]路徑與是否為集中流量[。.!]?$/iu,w=/^(?:(?:next|now|then)\b[\s,:-]*)?(?:i(?:'ll| will| am going to| need to)|let me)\s+(?:verify|check|confirm|validate|investigate|trace|continue|follow up|test)\b/iu,x=/(?:[:;\n]|[.!?]\s+\S|\b(?:status|checksum|response|deployment)\s+(?:is|are|was|were|matches?|equals?|returned)\b)/iu,y=/^(?:(?:現在|接著|接下來|下一步)[,,::\s]*(?:我(?:只)?(?:會|要|將|再)?\s*)?|我只再|我(?:會|要|將)(?:再|重新)?)(?:補|抓取|查|確認|驗證|追|繼續|檢查|測試)/u,z=/(?:[。!?]\s*\S|(?:版本|狀態|回應|結果|部署|校驗碼)(?:是|為|等於|顯示))/u,A=/(?:請(?:你|先)|你(?:先|需要|可以|提供|確認|批准|允許)|等待(?:你|使用者)|等你|核准|同意|授權|\b(?:after|when|once)\s+you\b|\byour\s+(?:approval|confirmation|permission|input)\b|\bwait(?:ing)?\s+for\s+you\b|\bplease\s+(?:approve|confirm|provide|send)\b)/iu,B=/(?:已(?:經)?完成|完成(?:了|驗證|確認)|修復完成|確認無誤|驗證(?:完成|通過)|測試(?:均)?通過|結論|總結|\b(?:done|completed|fixed|verified|confirmed|passed|in conclusion|summary)\b|\b(?:is|are) complete\b)/iu,C=/(?:顯示|發現|因此|成功|失敗|正常|無錯誤|沒有錯誤|\b(?:found|shows?|showed|because|therefore|succeeded|failed|healthy|green|no errors?)\b)/iu;function D(a,b){let c=Number.parseInt(process.env?.[a]||"",10);return Number.isFinite(c)&&c>0?c:b}function E(a,b){let c=new Uint8Array(b),d=0;for(let b of a)c.set(b,d),d+=b.byteLength;return c}async function F(a,b,c,d){let e=a?.body?.getReader?.();if(!e)return"";let f=[],g=0;try{for(;g<c;){let{done:a,value:h}=await (0,n.S)(e,b,d,"Kiro retry error body stalled");if(a)break;let i=c-g,j=h.byteLength>i?h.slice(0,i):h;if(f.push(j),g+=j.byteLength,h.byteLength>i)break}}finally{await e.cancel("bounded Kiro retry error body").catch(()=>{})}return s.decode(E(f,g))}function G(a){let b=String(a||"").trim().replace(/([a-z])([A-Z])/g,"$1_$2").toLowerCase().replace(/[\s-]+/g,"_");return["endturn","end_turn","stop","stop_sequence"].includes(b)?"end_turn":["tooluse","tool_use","tool_calls"].includes(b)?"tool_use":["maxtokens","max_tokens","max_output_tokens","length"].includes(b)?"max_tokens":b||null}let H=new Set(["model_context_window_exceeded","max_tokens"]);function I(a,b){return["malformed_model_output","invalid_model_output"].includes(a)?"retryable_protocol_failure":["cancelled","pause_turn","model_context_window_exceeded"].includes(a)?"terminal_incomplete":"refusal"===a||/(?:content.*filter|guardrail|safety|policy|blocked)/u.test(a)?"terminal_refusal":"max_tokens"===a?b?"terminal_incomplete":"length":a&&!["end_turn","tool_use"].includes(a)?"unknown_failure":b||"tool_use"===a?"tool_use":a&&"end_turn"!==a?"unknown_failure":"complete"}function J(a,b){if(!b)return a;if(!a)return b;let c=a=>{let b=I(a,!1);return"terminal_refusal"===b?6:"terminal_incomplete"===b?5:"unknown_failure"===b?4:"retryable_protocol_failure"===b?3:"length"===b?2:1};return c(b)>c(a)?b:a}function K(a){return["...","…"].includes(String(a||"").trim())}function L(a,b,c){return r.encode(`data: ${JSON.stringify({error:{message:b,type:"upstream_error",code:a,...c?{details:c}:{}}})}
249
+ ${a}`})),x(),w({},"stop"),b.enqueue(d.encode(e.$U)),b.close()},r=!1,{finishOnce:()=>{if(!r){r=!0;try{q()}catch{}}},hasFinished:()=>r}),{scheduleFinishAfterDrain:A,clearFinishedDrain:B,isDrainPending:C}=p=function(a,b=750){let c=null,d=()=>{c&&(clearTimeout(c),c=null)};return{scheduleFinishAfterDrain:()=>{d(),c=setTimeout(()=>{c=null,a()},b)},clearFinishedDrain:d,isDrainPending:()=>null!==c}}(y),D=a=>{let b=X(a,h);if(!b)return;x(),v=!0;let c=l;!c&&m?c="thinking":!c&&W(h)&&(c="content"),"thinking"===c?w({reasoning_content:b}):w({content:b})},E=(a,b=!1)=>{let c;if(b&&("THINK"===(c=String(a?.type||"").toUpperCase())?l="thinking":("ANSWER"===c||"RESPONSE"===c)&&(l="content")),"string"==typeof a?.content&&0!==a.content.length){if(!b){let b=String(a?.type||"").toUpperCase();"THINK"===b?l="thinking":("ANSWER"===b||"RESPONSE"===b)&&(l="content")}D(a.content)}};try{for(;;){let{done:a,value:b}=await s.read();if(a)break;let c=(t+=g.decode(b,{stream:!0})).split("\n");for(let a of(t=c.pop()||"",c)){let b;if(!a.startsWith("data: ")&&!a.startsWith("data:"))continue;let c=a.replace(/^data:\s*/,"").trim();if("[DONE]"===c)return void y();try{b=JSON.parse(c)}catch{continue}let d=b?.p,e=b?.o,f=b?.v;if(f&&"object"==typeof f&&f.response){!0===f.response.thinking_enabled?l="thinking":!1===f.response.thinking_enabled&&(l="content");let a=f.response.fragments;if(Array.isArray(a))for(let b of a)E(b,!1)}if("response/fragments"===d)if(Array.isArray(f))for(let a of f)E(a,!0);else f&&"object"==typeof f&&E(f,!0);if("response"===d&&Array.isArray(f))for(let a of f)a?.p==="response"&&a?.v?.thinking_enabled===!0&&(l="thinking");if("response/search_status"!==d){if("response/search_results"===d&&Array.isArray(f)){if("BATCH"!==e)n.length=0,n.push(...f);else for(let a of f){let b=String(a?.p||"").match(/^(\d+)\/cite_index$/);if(b){let c=parseInt(b[1],10);n[c]&&(n[c].cite_index=a.v)}}continue}if("string"==typeof f)D(f);else if(Array.isArray(f)&&"response"===d){for(let a of f)if(Array.isArray(a?.v)){let b=a.v.map(a=>a?.content||"").join("");b&&D(b)}}if("response/status"===d&&"FINISHED"===f){u=!0,A();continue}C()&&A()}}}}catch(a){B(),z()||b.error(a);return}if(!u&&!v){B(),b.error(Error("DeepSeek web session ended before completion (no FINISHED signal received) — likely a dropped cookie session or network interruption upstream. Retry the request."));return}u||c?.warn?.("DEEPSEEK-WEB","upstream closed without FINISHED after partial content; completing with what arrived"),y()},cancel(a){p?.clearFinishedDrain(),o?.cancel(a).catch(()=>{})}},{highWaterMark:16384})}(F.body,J,h),a=j.getReader(),new ReadableStream({async pull(b){let{done:c,value:d}=await a.read();if(c){b.close(),I().catch(()=>{});return}b.enqueue(d)},cancel(){a.cancel(),I().catch(()=>{})}}));return{response:new Response(b,{status:200,headers:{...e.uB}}),url:_,headers:G,transformedBody:H}}let{content:K,reasoningContent:L}=await ai(F.body,J);await I();let M={role:"assistant",content:K};L&&(M.reasoning_content=L);let N={id:`chatcmpl-${Date.now()}`,object:"chat.completion",created:Math.floor(Date.now()/1e3),model:a||z,choices:[{index:0,message:M,finish_reason:"stop",logprobs:null}],usage:{prompt_tokens:0,completion_tokens:0,total_tokens:0}};return{response:new Response(JSON.stringify(N),{status:200,headers:{"Content-Type":"application/json"}}),url:_,headers:G,transformedBody:H}}catch(c){let a=c instanceof Error?c.message:String(c);if(h?.error?.("DEEPSEEK-WEB",`Execute failed: ${a}`),c instanceof Error&&"AbortError"===c.name)return{response:af(499,"Request cancelled"),url:_,headers:{},transformedBody:b};return{response:af(502,`DeepSeek error: ${a}`),url:_,headers:{},transformedBody:b}}}}new an},61433:(a,b,c)=>{c.d(b,{r:()=>h});var d=c(55511),e=c.n(d),f=c(74957),g=c(12643);class h extends f.H{constructor(){super("iflow",g.xq.iflow)}generateUUID(){return e().randomUUID()}createIFlowSignature(a,b,c,d){if(!d)return"";let f=`${a}:${b}:${c}`,g=e().createHmac("sha256",d);return g.update(f),g.digest("hex")}buildHeaders(a,b=!0){let c=`session-${this.generateUUID()}`,d=Date.now(),e=this.config.headers["User-Agent"]||"iFlow-Cli",f=a.apiKey||a.accessToken||"",g=this.createIFlowSignature(e,c,d,f),h={"Content-Type":"application/json",...this.config.headers,"session-id":c,"x-iflow-timestamp":d.toString(),"x-iflow-signature":g};return a.apiKey&&(h.Authorization=`Bearer ${a.apiKey}`),b&&(h.Accept="text/event-stream"),h}buildUrl(a,b,c=0,d=null){return this.config.baseUrl}transformRequest(a,b,c,d){return c&&b.messages&&!b.stream_options&&(b.stream_options={include_usage:!0}),b}}},71880:(a,b,c)=>{c.d(b,{y:()=>u});var d=c(77598),e=c.n(d),f=c(96179),g=c(41004),h=c(93943),i=c(7630),j=c(57247),k=c(43659);let l=["max_tokens","max_completion_tokens","max_output_tokens"],m=new Set(["4016","4015","4011",4016,4015,4011]),n="currently overloaded",o=Symbol.for("deveco.chatId");function p(a){let b=String(a||""),c=b.indexOf("/");return c>=0?b.slice(c+1):b}function q(a){return a?e().createHash("sha256").update(String(a)).digest("hex").slice(0,32):e().randomUUID().replace(/-/g,"")}function r(a){let b=p(a);return(0,j.KC)("deveco").find(a=>a.id===b)||null}async function s(a,b){let c=a.body.getReader(),d=[],e=0,f=!1,g=null,h=new Promise(a=>{g=setTimeout(()=>a("timeout"),b)}),i=null;try{for(;e<8192;){i=c.read();let a=await Promise.race([i,h]);if("timeout"===a){f=!0;break}if(i=null,a.done||(d.push(a.value),e+=a.value.byteLength,Buffer.from(t(d)).toString("utf8").includes(n)))break}}catch{}return clearTimeout(g),{head:d.length?Buffer.from(t(d)).toString("utf8"):"",replayed:new Response(new ReadableStream({async start(a){try{for(let b of d)a.enqueue(b);let b=i;for(;;){let{done:d,value:e}=await (b||c.read());if(b=null,d)break;a.enqueue(e)}a.close()}catch(b){a.error(b)}},cancel(a){c.cancel(a).catch(()=>{})}}),{status:a.status,statusText:a.statusText,headers:a.headers}),timedOut:f}}function t(a){let b=new Uint8Array(a.reduce((a,b)=>a+b.byteLength,0)),c=0;for(let d of a)b.set(d,c),c+=d.byteLength;return b}class u extends f.L{constructor(a="deveco"){super(a)}async execute(a){var b,c,d;let e,f=q(a?.providerSessionId),h=a?{...a,credentials:{...a.credentials||{},[o]:f}}:a,i=await super.execute(h),j=i?.response;if(!j||200!==j.status)return i;if(!(j.headers?.get?.("content-type")||"").includes("event-stream")){let a=function(a){if(!a||!a.includes("errorCode"))return null;try{let b=JSON.parse(a);if(void 0===b.errorCode)return null;return m.has(b.errorCode)||/token|jwt|auth|login|realname/i.test(String(b.errorMsg||""))?b:null}catch{return null}}(await j.clone().text().catch(()=>""));return a?function(a,b,c){let{response:d}=a;return{...a,response:new Response(b,{status:c,statusText:d.statusText,headers:d.headers})}}(i,JSON.stringify({error:{type:"authentication_error",message:a.errorMsg||"DevEco token rejected — reconnect the account"}}),g.gx.UNAUTHORIZED):i}let l=r(a?.model);if(!l?.contextLength||(b=i,c=a,d=4.5*l.contextLength,(e=b.bodyStr||JSON.stringify(b.transformedBody||c?.body||{})).includes(";base64,")?!(Buffer.byteLength(e.replace(/;base64,[A-Za-z0-9+/=]+/g,""),"utf8")>d):!(e.length>d||!(3*e.length<=d)&&Buffer.byteLength(e,"utf8")>d)))return i;let{head:p,replayed:t,timedOut:u}=await s(j,3e3);return u||!p.includes(n)?{...i,response:t}:{...i,response:new Response(JSON.stringify((0,k.xJ)(g.gx.BAD_REQUEST,`prompt is too long: DevEco built-in models cap the conversation at ${l.contextLength} tokens and this request exceeds that window. Compact or shrink the context, or route this model to a larger-context provider.`)),{status:g.gx.BAD_REQUEST,headers:{"Content-Type":"application/json"}})}}transformRequest(a,b,c,d){let e=super.transformRequest(a,b,c,d);return e&&"object"==typeof e&&(e.model=p(e.model||a),e.stream=!0,l.some(a=>null!=e[a])||(e.max_tokens=r(e.model||a)?.maxOutputTokens||32e3),void 0===e.tool_choice||Array.isArray(e.tools)&&0!==e.tools.length||delete e.tool_choice),e}buildHeaders(a,b=!0,c,d,e){let f=a?.accessToken||a?.providerSpecificData?.securityToken||"";return{"Content-Type":"application/json",Authorization:`Bearer ${f}`,"Chat-Id":a?.[o]||q(null),lang:"en",...b?{Accept:"text/event-stream"}:{}}}parseError(a,b){if(b)try{let c=JSON.parse(b),d=c?.error?.message||c?.message;if("string"==typeof d&&d)return{status:a.status,message:d}}catch{}return super.parseError(a,b)}async refreshCredentials(a,b,c=null){let d=await (0,h.MF)(this.provider,a,()=>(0,i.WH)(a,{log:b,proxyOptions:c||a?.proxyOptions||null}));return d?.providerSpecificData&&(d.providerSpecificData={...a?.providerSpecificData||{},...d.providerSpecificData}),d}}},73870:(a,b,c)=>{c.d(b,{w:()=>n});var d=c(74957),e=c(12643),f=c(57247),g=c(8521),h=c(39609),i=c(49426),j=c(41004);let k=new Map;function l(a){if("string"!=typeof a)return null;try{let b=JSON.parse(a);if("authorized_user"===b.type&&b.client_id&&b.client_secret&&b.refresh_token)return b;return null}catch{return null}}async function m(a){if(k.has(a))return k.get(a);let b=await (0,i.S)(`https://aiplatform.googleapis.com/v1/publishers/google/models/__probe__:generateContent?key=${a}`,{method:"POST",headers:{"Content-Type":"application/json"},body:"{}"}),c=await b.json().catch(()=>null),d=(c?.[0]?.error?.message||c?.error?.message||"").match(/projects\/([^/]+)\//),e=d?.[1]||null;return e&&k.set(a,e),e}class n extends d.H{constructor(a="vertex"){super(a,e.xq[a]||{})}buildUrl(a,b,c=0,d=null){let e=(0,g.Sc)(d?.apiKey),h=l(d?.apiKey),i=!!e||!!h||!!d?.accessToken,j=i?null:d?.apiKey,k=e?.project_id||h?.quota_project_id||d?.providerSpecificData?.projectId;if("vertex-partner"===this.provider){if(!k)throw Error("Vertex partner models require a project_id. Add it in providerSpecificData or use Service Account JSON.");let a=`https://aiplatform.googleapis.com/v1/projects/${k}/locations/global/endpoints/openapi/chat/completions`;return j?`${a}?key=${j}`:a}let m=b?"streamGenerateContent":"generateContent";if(i){if(!k)throw Error("Vertex OAuth/ADC requires a project_id. Add quota_project_id to your ADC JSON or set providerSpecificData.projectId.");let c=d?.providerSpecificData?.location||(0,f.V2)(this.provider,a)?.defaultLocation||"us-central1",e=`https://aiplatform.googleapis.com/v1/projects/${k}/locations/${c}/publishers/google/models/${a}:${m}`;return b&&(e+="?alt=sse"),e}let n=d?.providerSpecificData?.location||"global",o=k?`https://aiplatform.googleapis.com/v1/projects/${k}/locations/${n}/publishers/google/models/${a}:${m}`:`https://aiplatform.googleapis.com/v1/publishers/google/models/${a}:${m}`;return b&&(o+="?alt=sse"),j&&(o+=b?`&key=${j}`:`?key=${j}`),o}buildHeaders(a,b=!0){let c={"Content-Type":"application/json"};return a.accessToken&&(c.Authorization=`Bearer ${a.accessToken}`),b&&(c.Accept="text/event-stream"),c}async refreshCredentials(a,b){let c=(0,g.Sc)(a?.apiKey);if(!c)return null;let d=await (0,g.pb)(c,b);return d?{accessToken:d.accessToken,expiresAt:d.expiresAt}:null}async execute({model:a,body:b,stream:c,credentials:d,signal:e,log:f,proxyOptions:k=null}){let n,o=(0,g.Sc)(d?.apiKey),p=l(d?.apiKey);if(o){let a=await (0,g.pb)(o,f);if(!a?.accessToken)throw Error("Vertex: failed to mint access token from Service Account JSON");d.accessToken=a.accessToken}if(p){let a=await (0,g.I9)(p.refresh_token,p.client_id,p.client_secret,f);if(!a?.accessToken)throw Error("Vertex: failed to refresh access token from ADC JSON (authorized_user)");d.accessToken=a.accessToken}if("vertex-partner"===this.provider&&!o&&!p&&!d?.providerSpecificData?.projectId){let a=await m(d.apiKey);if(!a)throw Error("Vertex: could not resolve project_id from API key. Please add it manually in provider settings.");f?.debug?.("VERTEX",`Resolved project_id: ${a}`),d.providerSpecificData={...d.providerSpecificData,projectId:a}}let q=this.buildUrl(a,c,0,d),r=this.buildHeaders(d,c),s=this.transformRequest(a,b,c,d),t=(0,i.n)(e,this.config?.timeoutMs||j.Z1);try{n=await (0,h.proxyAwareFetch)(q,{method:"POST",headers:r,body:JSON.stringify(s),signal:t.signal},k)}catch(a){throw t.settleError(a)}finally{t.clear()}return{response:n,url:q,headers:r,transformedBody:s}}}},74161:(a,b,c)=>{c.d(b,{B:()=>f});var d=c(96179),e=c(94526);class f extends d.L{constructor(){super("zcode")}transformRequest(a,b,c,d){return function(a){var b;let c;if(!a||"object"!=typeof a||Array.isArray(a)||!((c=(Array.isArray(b=a.system)?b:"string"==typeof b?[b]:[]).map(a=>"string"==typeof a?a:"string"==typeof a?.text?a.text:"")).length>3)&&e.L.every(a=>c.some(b=>b===a.text)))return a;let d=function(a){if("string"==typeof a)return e.L.some(b=>b.text===a)?null:{text:a,cacheControl:null};if(!Array.isArray(a))return null;let b=null,c=[];for(let d of a){if("string"==typeof d){d&&!e.L.some(a=>a.text===d)&&c.push(d);continue}"string"==typeof d?.text&&d.text&&!e.L.some(a=>a.text===d.text)&&c.push(d.text),d?.cache_control&&(b=d.cache_control)}return c.length?{text:c.join("\n\n"),cacheControl:b}:null}(a.system);if(d)return{...a,system:[...e.L,{type:"text",text:d.text,...d.cacheControl?{cache_control:{...d.cacheControl}}:{}}]};let f=null;if(Array.isArray(a.system))for(let b of a.system)b?.cache_control&&(f=b.cache_control);if(!f)return{...a,system:[...e.L]};let g=e.L.map((a,b)=>b===e.L.length-1?{...a,cache_control:{...f}}:a);return{...a,system:g}}(super.transformRequest(a,b,c,d))}}},76467:(a,b,c)=>{c.d(b,{B:()=>M});var d=c(74957),e=c(12643),f=c(6382),g=c(94755),h=c(8521),i=c(78959),j=c(24),k=c(41004),l=c(68421),m=c(8658),n=c(12009);let o=l.bJ.maxMessageBytes,p=l.bJ.maxHeadersBytes,q=new Set(["assistantResponseEvent","reasoningContentEvent","codeEvent","toolUseEvent","messageStopEvent","metadataEvent","MetadataEvent","contextUsageEvent","meteringEvent","metricsEvent"]),r=new TextEncoder,s=new TextDecoder,t=Object.freeze({tool:"Retry the previous response because its Kiro tool_call wrapper was malformed. If you use the wrapper tool named tool_call, its input must contain a non-empty name and an arguments field.",ellipsis:"Retry the previous response because it ended with only an ellipsis. Return the complete final answer, not only ... or ….",short_final:"Retry the previous response because its final only announced a future action. Complete the check now and return the result or a concrete blocker."}),u=/^(?:(?:(?:現在|接著|接下來|下一步)[,,::\s]*(?:我(?:只)?(?:會|要|將|再)?\s*)?|我只再)(?:補|查|確認|驗證|追(?:查|蹤)?|繼續|檢查|測試)|我(?:會|要|將)(?:再|重新)?(?:補(?:齊|查)?|抓取|查(?:詢)?|確認|驗證|追(?:查|蹤)?|繼續|檢查|測試)|(?:(?:next|now|then)\b[\s,:-]*)?(?:i(?:'ll| will| am going to| need to)|let me)\s+(?:verify|check|confirm|validate|investigate|trace|continue|follow up|test)\b)/iu,v=/^目前證據顯示[\s\S]{1,700}[。.!?;;]\s*最後補查\s+504\s+access\s+log[,,]\s*確認\s+host[//]路徑與是否為集中流量[。.!]?$/iu,w=/^(?:(?:next|now|then)\b[\s,:-]*)?(?:i(?:'ll| will| am going to| need to)|let me)\s+(?:verify|check|confirm|validate|investigate|trace|continue|follow up|test)\b/iu,x=/(?:[:;\n]|[.!?]\s+\S|\b(?:status|checksum|response|deployment)\s+(?:is|are|was|were|matches?|equals?|returned)\b)/iu,y=/^(?:(?:現在|接著|接下來|下一步)[,,::\s]*(?:我(?:只)?(?:會|要|將|再)?\s*)?|我只再|我(?:會|要|將)(?:再|重新)?)(?:補|抓取|查|確認|驗證|追|繼續|檢查|測試)/u,z=/(?:[。!?]\s*\S|(?:版本|狀態|回應|結果|部署|校驗碼)(?:是|為|等於|顯示))/u,A=/(?:請(?:你|先)|你(?:先|需要|可以|提供|確認|批准|允許)|等待(?:你|使用者)|等你|核准|同意|授權|\b(?:after|when|once)\s+you\b|\byour\s+(?:approval|confirmation|permission|input)\b|\bwait(?:ing)?\s+for\s+you\b|\bplease\s+(?:approve|confirm|provide|send)\b)/iu,B=/(?:已(?:經)?完成|完成(?:了|驗證|確認)|修復完成|確認無誤|驗證(?:完成|通過)|測試(?:均)?通過|結論|總結|\b(?:done|completed|fixed|verified|confirmed|passed|in conclusion|summary)\b|\b(?:is|are) complete\b)/iu,C=/(?:顯示|發現|因此|成功|失敗|正常|無錯誤|沒有錯誤|\b(?:found|shows?|showed|because|therefore|succeeded|failed|healthy|green|no errors?)\b)/iu;function D(a,b){let c=Number.parseInt(process.env?.[a]||"",10);return Number.isFinite(c)&&c>0?c:b}function E(a,b){let c=new Uint8Array(b),d=0;for(let b of a)c.set(b,d),d+=b.byteLength;return c}async function F(a,b,c,d){let e=a?.body?.getReader?.();if(!e)return"";let f=[],g=0;try{for(;g<c;){let{done:a,value:h}=await (0,n.S)(e,b,d,"Kiro retry error body stalled");if(a)break;let i=c-g,j=h.byteLength>i?h.slice(0,i):h;if(f.push(j),g+=j.byteLength,h.byteLength>i)break}}finally{await e.cancel("bounded Kiro retry error body").catch(()=>{})}return s.decode(E(f,g))}function G(a){let b=String(a||"").trim().replace(/([a-z])([A-Z])/g,"$1_$2").toLowerCase().replace(/[\s-]+/g,"_");return["endturn","end_turn","stop","stop_sequence"].includes(b)?"end_turn":["tooluse","tool_use","tool_calls"].includes(b)?"tool_use":["maxtokens","max_tokens","max_output_tokens","length"].includes(b)?"max_tokens":b||null}let H=new Set(["model_context_window_exceeded","max_tokens"]);function I(a,b){return["malformed_model_output","invalid_model_output"].includes(a)?"retryable_protocol_failure":["cancelled","pause_turn","model_context_window_exceeded"].includes(a)?"terminal_incomplete":"refusal"===a||/(?:content.*filter|guardrail|safety|policy|blocked)/u.test(a)?"terminal_refusal":"max_tokens"===a?b?"terminal_incomplete":"length":a&&!["end_turn","tool_use"].includes(a)?"unknown_failure":b||"tool_use"===a?"tool_use":a&&"end_turn"!==a?"unknown_failure":"complete"}function J(a,b){if(!b)return a;if(!a)return b;let c=a=>{let b=I(a,!1);return"terminal_refusal"===b?6:"terminal_incomplete"===b?5:"unknown_failure"===b?4:"retryable_protocol_failure"===b?3:"length"===b?2:1};return c(b)>c(a)?b:a}function K(a){return["...","…"].includes(String(a||"").trim())}function L(a,b,c){return r.encode(`data: ${JSON.stringify({error:{message:b,type:"upstream_error",code:a,...c?{details:c}:{}}})}
283
250
 
284
251
  data: [DONE]
285
252
 
@@ -303,7 +270,7 @@ Content-Type: ${d||"application/octet-stream"}\r
303
270
 
304
271
  `)),c.enqueue(i.encode(l.$U)),j=!0;return}h&&(n.handleInner(h,c),o())};return new Response(new ReadableStream({async start(a){try{let b;for(;-1!==(b=g.indexOf("\n"));){let c=g.slice(0,b);if(g=g.slice(b+1),p(c,a),j){await e.cancel().catch(()=>{}),a.close();return}}for(h&&(g+=d.decode()).length>0&&(p(g,a),g="");!j&&!h;){let b,{done:c,value:f}=await e.read();if(c){(g+=d.decode()).length>0&&(p(g,a),g="");break}for(g+=d.decode(f,{stream:!0});-1!==(b=g.indexOf("\n"));){let c=g.slice(0,b);if(g=g.slice(b+1),p(c,a),j){await e.cancel().catch(()=>{}),a.close();return}}}}catch{}finally{if(!j)try{n.flush(a),j=!0}catch{}try{a.close()}catch{}await e.cancel().catch(()=>{})}},cancel:()=>e.cancel().catch(()=>{})}),{status:a.status,statusText:a.statusText,headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache"}})}class Z extends g.H{constructor(a="qoder"){super(a,h.xq[a]),this.region="qoder-cn"===a?"cn":"intl"}buildUrl(a){return`${(0,n.e9)(a,this.region)}/algo${n.F8}?FetchKeys=llm_model_result&AgentId=agent_common&Encode=1`}async execute({model:a,body:b,stream:c,credentials:e,signal:f,log:g,proxyOptions:h=null}){let k,l,p,q=e?.apiKey||e?.accessToken;if((0,o.zh)(q))try{e=await (0,o._M)(e,h,f,this.region)}catch(a){return g?.error?.("QODER",`PAT exchange failed: ${a.message}`),{response:new Response(JSON.stringify({error:{message:`qoder PAT exchange failed: ${a.message}`}}),{status:401,headers:{"Content-Type":"application/json"}}),url:this.buildUrl(e),headers:{},transformedBody:b}}let z=this.buildUrl(e),A=e?.providerSpecificData||{};if(!A.userId)return{response:new Response(JSON.stringify({error:{message:"qoder credential is missing userId; reconnect the account"}}),{status:401,headers:{"Content-Type":"application/json"}}),url:z,headers:{},transformedBody:b};if(!e?.accessToken)return{response:new Response(JSON.stringify({error:{message:"qoder credential is missing accessToken; reconnect the account"}}),{status:401,headers:{"Content-Type":"application/json"}}),url:z,headers:{},transformedBody:b};try{({qoderKey:k,payload:l}=await S({model:a,body:b,credentials:e,log:g,proxyOptions:h,signal:f,region:this.region}))}catch(a){return{response:new Response(JSON.stringify({error:{message:a.message}}),{status:400,headers:{"Content-Type":"application/json"}}),url:z,headers:{},transformedBody:b}}let B=`${this.provider}/${k}`,C=async a=>{let c,g,l=Buffer.from(JSON.stringify(a),"utf8"),n=Buffer.from(function(a){let b=(Buffer.isBuffer(a)?a:"string"==typeof a?Buffer.from(a,"utf8"):Buffer.from(a)).toString("base64"),c=b.length,e=Math.floor(c/3),f=b.slice(c-e)+b.slice(e,c-e)+b.slice(0,e),g=Buffer.alloc(c);for(let a=0;a<c;a++){let b=f.charCodeAt(a);b<128&&d[b]>=0?g[a]=d[b]:g[a]=b}return g.toString("latin1")}(l),"latin1");try{c=(0,r.dE)(n,z,{userId:A.userId,authToken:e.accessToken,name:e.displayName||"",email:e.email||"",machineId:A.machineId||(0,r.if)(A.userId)})}catch(a){return{error:new Response(JSON.stringify({error:{message:`qoder cosy signing failed: ${a.message}`}}),{status:401,headers:{"Content-Type":"application/json"}}),url:z,headers:{},transformedBody:b}}let o={"Content-Type":"application/json",Accept:"text/event-stream","Cache-Control":"no-cache","X-Model-Key":k,"X-Model-Source":a.model_config&&a.model_config.source||"system","Accept-Encoding":"identity",...c},p=this.config?.timeoutMs||m.pH,q=(0,j.n)(f,p);try{g=await (0,i.proxyAwareFetch)(z,{method:"POST",headers:o,body:n,signal:q.signal},{...h,strictProxy:!0})}catch(a){if(f?.aborted)throw f.reason??a;throw q.settleError(a)}finally{q.clear()}return{response:g,url:z,headers:o,transformedBody:a}},D=async(a,b,c,d,g)=>{let j=function(a,{requestSetId:b,modelKey:c,queueType:d}={}){let e=new URLSearchParams;return b&&e.set("requestSetId",b),c&&e.set("modelKey",c),d&&e.set("queueType",d),`${a}/algo/api/v2/service/ask/queue/status?${e.toString()}`}((0,n.e9)(e,this.region),{requestSetId:c,modelKey:a,queueType:b});try{let a=await (0,i.proxyAwareFetch)(j,{method:"GET",headers:{Accept:"application/json","Accept-Encoding":"identity","X-Request-ID":d,"X-Session-ID":g||"",...(0,r.dE)(Buffer.alloc(0),j,{userId:A.userId,authToken:e.accessToken,name:e.displayName||"",email:e.email||"",machineId:A.machineId||(0,r.if)(A.userId)})},signal:f},h);if(!a.ok)return{endpointOk:!1,info:null};let b=function(a){let b="string"==typeof a?x(a):a;if(!t(b))return null;let c=w(b.isQueued);return void 0===c?null:{isQueued:c,serviceAvailable:w(b.serviceAvailable),modelKey:v(b.modelKey),queueType:v(b.queueType),queueCount:u(b.queueCount),retryAfterSeconds:u(b.retryAfterSeconds),waitTime:u(b.waitTime)}}(await a.text().catch(()=>""));return b?{endpointOk:!0,info:b}:{endpointOk:!1,info:null}}catch(a){if(f?.aborted)throw a;return{endpointOk:!1,info:null}}},E=Number.isFinite(p=Number(process.env.QODER_MODEL_QUEUE_MAX_WAIT_MS))&&p>0?p:18e4,F=Date.now(),G=null,H=!0,I=!1,J=l;for(;;){let a=await C(J);if(a.error)return{response:a.error,url:a.url,headers:a.headers,transformedBody:a.transformedBody};if(!a.response.ok)return{response:a.response,url:a.url,headers:a.headers,transformedBody:a.transformedBody};let b=a.response.body.getReader(),c=new TextDecoder,d=await X(b,c),e=d.isError?function(a){let b="string"==typeof a?x(a):a;if(!b)return null;let c=function(a){let b=[],c=new Set,d=new Set,e=[a];for(;e.length>0;){let a=e.shift();if(t(a)){if(c.has(a))continue;for(let f of(c.add(a),b.push(a),s)){let b=a[f];if(t(b)||Array.isArray(b))e.push(b);else if("string"==typeof b&&!d.has(b)){d.add(b);let a=x(b);a&&e.push(a)}}}else if(Array.isArray(a))for(let b of a)(t(b)||Array.isArray(b))&&e.push(b)}return b}(b),d={code:void 0,subCode:void 0,isQueued:void 0,modelKey:void 0,queueType:void 0,queueCount:void 0,serviceAvailable:void 0,retryAfterSeconds:void 0,waitTime:void 0};for(let a of c)void 0===d.code&&(d.code=v(a.code)),void 0===d.subCode&&(d.subCode=v(a.subCode)),void 0===d.isQueued&&(d.isQueued=w(a.isQueued)),void 0===d.modelKey&&(d.modelKey=v(a.modelKey)),void 0===d.queueType&&(d.queueType=v(a.queueType)),void 0===d.queueCount&&(d.queueCount=u(a.queueCount)),void 0===d.serviceAvailable&&(d.serviceAvailable=w(a.serviceAvailable)),void 0===d.retryAfterSeconds&&(d.retryAfterSeconds=u(a.retryAfterSeconds)),void 0===d.waitTime&&(d.waitTime=u(a.waitTime));return!0!==d.isQueued&&!1!==d.serviceAvailable&&"RESOURCE_LIMIT"!==d.subCode&&"10605"!==d.code?null:d}(d.message||""):null;if(!e){if(d.isError){let b=d.isBilling?m.gx.FORBIDDEN:Number.isInteger(d.statusVal)&&d.statusVal>=400&&d.statusVal<=599?d.statusVal:m.gx.BAD_GATEWAY;return{response:new Response(JSON.stringify({error:{message:d.message||"qoder upstream error",code:d.statusVal}}),{status:b,headers:{"Content-Type":"application/json"}}),url:a.url,headers:a.headers,transformedBody:a.transformedBody}}let c=new Response(new ReadableStream({start(a){let c=!1,e=()=>{if(!c){c=!0;try{a.close()}catch{}}},f=b=>{if(c)return!1;try{return a.enqueue(b),!0}catch{return c=!0,!1}},g=new TextEncoder;if(d.consumed&&!f(g.encode(d.consumed)))return;if(d.upstreamDone)return void e();let h=()=>{c||b.read().then(({done:a,value:b})=>{a?e():f(b)&&h()}).catch(()=>e())};h()},cancel:()=>b.cancel().catch(()=>{})}),{status:a.response.status,statusText:a.response.statusText,headers:a.response.headers});return{response:await Y(c,B,g),url:a.url,headers:a.headers,transformedBody:a.transformedBody}}G=e;let h=Date.now()-F;if(h>=E)return g?.warn?.("QODER",`model queue wait timed out after ${Math.round(h/1e3)}s for ${B} (queueType=${G.queueType||"?"}, waitTime=${G.waitTime??"?"}s)`),{response:new Response(JSON.stringify({error:{message:`qoder model "${k}" is still queued after ${Math.round(h/1e3)}s (queueType=${G.queueType||"?"}); retry shortly`,code:"qoder_model_queued",type:"rate_limit_error"}}),{status:503,headers:{"Content-Type":"application/json"}}),url:a.url,headers:a.headers,transformedBody:a.transformedBody};let i=y(e);if(H){let a=J.request_set_id,b=await D(e.modelKey||k,e.queueType,a,J.request_id,J.session_id);b.endpointOk?!1===b.info.isQueued?I?(H=!1,g?.info?.("QODER",`queue status claims ready but "${k}" is still refused; falling back to timed replays`)):(I=!0,g?.info?.("QODER",`model "${k}" reported ready (queueType=${b.info.queueType||"?"}); replaying`),i=0):(i=y(b.info,{fromStatus:!0}),g?.info?.("QODER",`model "${k}" still queued (queueType=${b.info.queueType||"?"}, queueCount=${b.info.queueCount??"?"}); rechecking in ${Math.round(i/1e3)}s`)):H=!1}i>0&&await function(a,b){return a>0?new Promise((c,d)=>{if(b?.aborted)return void d(b.reason);let e=setTimeout(()=>{b?.removeEventListener?.("abort",f),c()},a),f=()=>{clearTimeout(e),d(b.reason)};b?.addEventListener?.("abort",f,{once:!0})}):Promise.resolve()}(i,f)}}async refreshCredentials(){return null}parseError(a,b){let c=super.parseError(a,b),d=function(a){let b=T(a);if(!U.test(b))return null;let c=b.match(/"retryAfterSeconds"\s*:\s*(\d+)/),d=c?Number(c[1]):0;return d>0?1e3*d:null}(b);return d&&(c.resetsAtMs=Date.now()+d),c}needsRefresh(){return!1}}},77919:(a,b,c)=>{c.d(b,{$:()=>M});var d=c(74957),e=c(12643),f=c(41004),g=c(39609),h=c(49426),i=c(78959),j=c(92536),k=c(22115);function l(a){let b=a?.content;return"string"==typeof b?b:Array.isArray(b)?b.map(a=>"string"==typeof a?a:a?.text??"").filter(Boolean).join("\n"):""}function m(a){for(let b=a.length-1;b>=0;b--)if("user"===String(a[b]?.role||""))return l(a[b]);return""}function n(a,b){let c=b&&"object"==typeof b?b:{},d=Object.keys(c).sort().map(a=>{var b;return`${a}=${"string"==typeof(b=c[a])?b.replace(/\s+/g," ").replace(/["'`]/g,"").toLowerCase():b}`});return`${a}(${d.join(",")})`}function o(a){let b=a&&"object"==typeof a?a.properties:null;return b&&"object"==typeof b?b:{}}function p(a){let b=a&&"object"==typeof a?a.required:null;return Array.isArray(b)?b:[]}function q(a){return`${a.name} ${a.description||""}`.toLowerCase()}function r(a,b){let c=new Set(Object.keys(o(a.parameters)).map(a=>a.toLowerCase()));return b.some(a=>c.has(a.toLowerCase()))}function s(a){return/\b(mcp|mcpproxy|upstream|registry|oauth|cache key|token usage|handoff|context management|memory|memories|lsp|language server|plan file|server management|tool discovery)\b/.test(q(a))}function t(a){return/\b(ctx_|memory|memories|conversation history|session notes|project memories|context\.db)\b/.test(q(a))}function u(a){if(s(a))return!1;let b=q(a),c=a.name.toLowerCase(),d=/\b(bash|shell|terminal|run_command|execute_command|exec|command)\b/.test(c),e=/\b(?:run|execute).{0,24}\b(?:shell|bash|terminal|command)\b|\b(?:shell|bash|terminal)\b/.test(b);return d||r(a,["command","cmd","shell"])&&e}function v(a){let b=q(a);return r(a,["filePath","file_path","path"])&&/\b(read|file|filesystem|open)\b/.test(b)&&!/\b(write|edit|patch|delete|remove|grep|search|bash|shell|command)\b/.test(b)}function w(a){let b=q(a),c=a.name.toLowerCase(),d=/\b(webfetch|web.fetch|fetch_url|url_fetch|read_url|browse_page|browsepage)\b/.test(c),e=/\b(?:fetch|browse|read).{0,32}\b(?:url|uri|web page|page content)\b|\b(?:url|uri|web page|page content).{0,32}\b(?:fetch|browse|read)\b/.test(b);return d||!s(a)&&r(a,["url","uri"])&&e}function x(a){let b=q(a);return r(a,["query","search"])&&/\b(web|internet|exa|browser|browse|serp)\b/.test(b)&&!s(a)&&!t(a)}function y(...a){for(let b of a)if("string"==typeof b&&b.trim())return b}function z(a){return null!=a&&""!==a}function A(a,b,c,d){let e=c.toolsByName.get(a);if(!e)return b;let f=o(e.parameters),g=p(e.parameters),h={...b};for(let a of("filePath"in f&&!z(h.filePath)&&(h.filePath=y(b.filePath,b.file_path,b.path)),"file_path"in f&&!z(h.file_path)&&(h.file_path=y(b.file_path,b.filePath,b.path)),"path"in f&&!z(h.path)&&(h.path=y(b.path,b.filePath,b.file_path)),"query"in f&&!z(h.query)&&(h.query=y(b.query,b.search,b.input)),"url"in f&&!z(h.url)&&(h.url=y(b.url,b.uri)),"uri"in f&&!z(h.uri)&&(h.uri=y(b.uri,b.url)),"input"in f&&!z(h.input)&&(h.input=y(b.input,b.query,b.command)),g)){if(z(h[a]))continue;let b=function(a,b,c){let d=a.toLowerCase(),e=y(b.command,b.cmd,b.shell,b.input),f=y(b.filePath,b.file_path,b.path,b.filename),g=y(b.query,b.search,b.input),h=y(b.url,b.uri);return"command"===d||"cmd"===d?e:"filepath"===d||"file_path"===d||"path"===d?f:"query"===d||"search"===d?g:"url"===d||"uri"===d?h:"input"===d?g||h||e||f:"description"===d||"reason"===d?e?`Execute shell command: ${e}`:f?`Read file: ${f}`:h?`Fetch URL: ${h}`:g?`Search: ${g}`:`Grok Web ${c} tool call`:void 0}(a,h,d);void 0!==b&&(h[a]=b)}let i={},j=new Set([...Object.keys(f),...g]);for(let a of Object.keys(h))(0===j.size||j.has(a))&&(i[a]=h[a]);return i}function B(a,b,c){if(!c.enabled||!a||"object"!=typeof a)return null;let d=b||`call_${crypto.randomUUID()}`,e=(a,b)=>{if(!b||"object"!=typeof b)return null;let e=function(a,b){let c=null;for(let d of b.toolsByName.values()){let e=function(a,b,c){let d=a.name.toLowerCase(),e=(a.description||"").toLowerCase(),f=new Set(Object.keys(o(a.parameters)).map(a=>a.toLowerCase())),g=`${d} ${e}`,h=String(c||"").toLowerCase(),i=0;if("bash"===b)u(a)||(i-=80),"bash"===d&&(i+=100),["shell","terminal","run_command","execute_command","exec","command"].includes(d)&&(i+=80),(f.has("command")||f.has("cmd"))&&(i+=60),/bash|shell|terminal|command|execute|run/.test(g)&&(i+=25),/read|search|grep|web|http|browser|context|note|memory/.test(d)&&(i-=50);else if("readFile"===b)v(a)||(i-=60),["read","read_file","readfile","file_read"].includes(d)&&(i+=100),(f.has("filepath")||f.has("file_path")||f.has("path"))&&(i+=50),/read.*file|file.*read|filesystem/.test(g)&&(i+=25),/write|edit|delete|remove|bash|shell|command/.test(g)&&(i-=50);else("webSearch"===b||"browsePage"===b)&&((t(a)||s(a))&&(i-=180),("browsePage"===b||/https?:\/\//.test(String(h||"")))&&(w(a)||(i-=60),/webfetch|web_fetch|fetch|browse|browse_page|read_url|url_fetch|page/.test(d)&&(i+=140),(f.has("url")||f.has("uri"))&&(i+=90),/fetch|browse|url|web page|page content|extract.*url|read.*url/.test(g)&&(i+=55),/websearch|web_search|search/.test(d)&&!(f.has("url")||f.has("uri"))&&(i-=80)),"webSearch"!==b||x(a)||(i-=60),["web_search","websearch","search"].includes(d)&&(i+=100),(f.has("query")||f.has("search"))&&(i+=50),/web.*search|search.*web|internet|browse/.test(g)&&(i+=25),/file|bash|shell|command|write|edit/.test(g)&&(i-=50));return i}(d,a,b.lastUserText);e<=0||(!c||e>c.score)&&(c={name:d.name,score:e})}return c?.name||null}(a,c);if(!e)return null;let f=A(e,b,c,a);return c.executedToolKeys.has(n(e,f))?null:{id:d,type:"function",function:{name:e,arguments:JSON.stringify(f)}}},f=a.bash?.args?e("bash",a.bash.args):null;if(f)return f;let g=(a.readFile||a.read_file)?.args?e("readFile",(a.readFile||a.read_file).args):null;if(g)return g;let h=a.webSearch?.args?e("webSearch",a.webSearch.args):null;if(h)return h;let i=(a.browsePage||a.browse_page)?.args?e("browsePage",(a.browsePage||a.browse_page).args):null;return i||null}function C(a,b){if(!b.enabled||!a.includes("<tool_call>"))return null;let c=[];for(let d of function*(a,b,c){for(;;){let d=b.exec(a);if(null===d)return;let e=d.index+d[0].length,f=c.exec(a.slice(e));if(null===f||(yield{inner:a.slice(e,e+f.index),after:e+f.index+f[0].length},b.lastIndex=c.lastIndex=0,!(a=a.slice(e+f.index+f[0].length)).includes("<tool_call>")))return}}(String(a),/<tool_call>/g,/<\/tool_call>/g)){let a;try{a=JSON.parse(d.inner.trim())}catch{continue}if(!a||"object"!=typeof a)continue;let e="string"==typeof a.name?a.name.trim():"";if(!e||!b.toolsByName.has(e))continue;let f=A(e,function(a){if(!a)return{};if("object"==typeof a)return a;if("string"==typeof a)try{let b=JSON.parse(a);return b&&"object"==typeof b?b:{}}catch{return{input:a}}return{}}(a.arguments),b,"clientTool");b.executedToolKeys.has(n(e,f))||c.push({id:"string"==typeof a.id&&a.id.trim()?a.id.trim():`call_${crypto.randomUUID()}`,type:"function",function:{name:e,arguments:JSON.stringify(f)}})}return c.length>0?c:null}var D=c(10079);let E=e.xq["grok-web"].baseUrl,F={"grok-3":{grokModel:"grok-4-1-thinking-1129",modelMode:"MODEL_MODE_FAST",isThinking:!1},"grok-3-mini":{grokModel:"grok-4-1-thinking-1129",modelMode:"MODEL_MODE_GROK_4_1_MINI_THINKING",isThinking:!0},"grok-3-thinking":{grokModel:"grok-4-1-thinking-1129",modelMode:"MODEL_MODE_GROK_4_1_THINKING",isThinking:!0},"grok-4":{grokModel:"grok-4-1-thinking-1129",modelMode:"MODEL_MODE_FAST",isThinking:!1},"grok-4-mini":{grokModel:"grok-4-1-thinking-1129",modelMode:"MODEL_MODE_GROK_4_1_MINI_THINKING",isThinking:!0},"grok-4-thinking":{grokModel:"grok-4-1-thinking-1129",modelMode:"MODEL_MODE_GROK_4_1_THINKING",isThinking:!0},"grok-4-heavy":{grokModel:"grok-4-1-thinking-1129",modelMode:"MODEL_MODE_EXPERT",isThinking:!0},"grok-4.1-mini":{grokModel:"grok-4-1-thinking-1129",modelMode:"MODEL_MODE_GROK_4_1_MINI_THINKING",isThinking:!0},"grok-4.1-fast":{grokModel:"grok-4-1-thinking-1129",modelMode:"MODEL_MODE_FAST",isThinking:!1},"grok-4.1-expert":{grokModel:"grok-4-1-thinking-1129",modelMode:"MODEL_MODE_EXPERT",isThinking:!0},"grok-4.1-thinking":{grokModel:"grok-4-1-thinking-1129",modelMode:"MODEL_MODE_GROK_4_1_THINKING",isThinking:!0},"grok-4.2":{grokModel:"grok-4-1-thinking-1129",modelMode:"MODEL_MODE_GROK_420",isThinking:!1},"grok-4.20":{grokModel:"grok-4-1-thinking-1129",modelMode:"MODEL_MODE_GROK_420",isThinking:!1},"grok-4.20-beta":{grokModel:"grok-4-1-thinking-1129",modelMode:"MODEL_MODE_GROK_420",isThinking:!1}};function G(a,b=!1){let c=b?"abcdefghijklmnopqrstuvwxyz0123456789":"abcdefghijklmnopqrstuvwxyz",d="";for(let b=0;b<a;b++)d+=c[Math.floor(Math.random()*c.length)];return d}function H(){return btoa(.5>Math.random()?`x1:TypeError: Cannot read properties of null (reading 'children["${G(5,!0)}"]')`:`x1:TypeError: Cannot read properties of undefined (reading '${G(10)}')`)}function I(a){let b=new Uint8Array(a);return crypto.getRandomValues(b),Array.from(b,a=>a.toString(16).padStart(2,"0")).join("")}async function*J(a,b){let c=a.getReader(),d=new TextDecoder,e="";try{for(;;){if(b?.aborted)return;let{value:a,done:f}=await c.read();if(f)break;for(e+=d.decode(a,{stream:!0});;){let a=e.indexOf("\n");if(a<0)break;let b=e.slice(0,a).trim();if(e=e.slice(a+1),b)try{yield JSON.parse(b)}catch{}}}let a=(e+=d.decode()).trim();if(a)try{yield JSON.parse(a)}catch{}}finally{c.releaseLock()}}async function*K(a,b,c){let d="",e="",f=!1;for await(let g of J(a,c)){if(g.error)return void(yield{error:g.error.message||`Grok error: ${g.error.code}`,done:!0});let a=g.result?.response;if(a){if(a.llmInfo?.modelHash&&!d&&(d=a.llmInfo.modelHash),a.responseId&&(e=a.responseId),a.toolUsageCard){yield{toolCard:a.toolUsageCard,toolCardId:a.toolUsageCardId,fingerprint:d,responseId:e};continue}if(a.modelResponse){let c=a.modelResponse;f&&b&&(c.message&&(yield{thinking:c.message}),f=!1),c.message&&(yield{fullMessage:c.message,fingerprint:d,responseId:e}),c.metadata?.llm_info?.modelHash&&(d=c.metadata.llm_info.modelHash);continue}null!=a.token&&(yield{delta:a.token,fingerprint:d,responseId:e})}}yield{done:!0,fingerprint:d,responseId:e}}async function L(a,b,c,d,e,f,g){let h="",i="",j=[],k=[];for await(let b of K(a,e,f)){if(b.fingerprint&&(i=b.fingerprint),b.error)return new Response(JSON.stringify({error:{message:b.error,type:"upstream_error",code:"GROK_ERROR"}}),{status:502,headers:{"Content-Type":"application/json"}});if(b.thinking){j.push(b.thinking);continue}if(b.toolCard&&g){let a=B(b.toolCard,b.toolCardId,g);a&&k.push(a);continue}if(b.done)break;b.fullMessage?h=b.fullMessage:b.delta&&(h+=b.delta)}let l={role:"assistant",content:h};j.length>0&&(l.reasoning_content=j.join("\n"));let m=(g?.enabled?C(h,g):null)||(k.length?k:null),n="stop";m?.length&&(l.content=h.replace(/<tool_call>[\s\S]*?<\/tool_call>/g,"").trim(),l.tool_calls=m,n="tool_calls");let o=Math.ceil(h.length/4),p=Math.ceil(h.length/4);return new Response(JSON.stringify({id:c,object:"chat.completion",created:d,model:b,system_fingerprint:i||null,choices:[{index:0,message:l,finish_reason:n,logprobs:null}],usage:{prompt_tokens:o,completion_tokens:p,total_tokens:o+p}}),{status:200,headers:{"Content-Type":"application/json"}})}class M extends d.H{constructor(){super("grok-web",e.xq["grok-web"])}async execute({model:a,body:b,stream:c,credentials:d,signal:e,log:r,proxyOptions:y=null}){let z,A,G=b?.messages;if(!G||!Array.isArray(G)||0===G.length)return{response:new Response(JSON.stringify({error:{message:"Missing or empty messages array",type:"invalid_request"}}),{status:400,headers:{"Content-Type":"application/json"}}),url:E,headers:{},transformedBody:b};let J=F[a];J||r?.info?.("GROK-WEB",`Unmapped model ${a}, defaulting to grok-4.1-fast`);let{grokModel:M,modelMode:N,isThinking:O}=J||F["grok-4.1-fast"],P=function(a){let b=Array.isArray(a?.tools)?a.tools:[],c=Array.isArray(a?.messages)?a.messages:[],d=a?.tool_choice??"auto",e=function(a){let b=new Set,c=[];for(let d of a)if("assistant"===String(d?.role||"")&&Array.isArray(d.tool_calls))for(let a of d.tool_calls){let d=a?.function||{},e={};try{e=JSON.parse(d.arguments||"{}")}catch{}b.add(n(d.name||"",e)),c.push(function(a,b){let c=b&&"object"==typeof b?b:{},d=Object.keys(c).sort().map(a=>String(c[a]).slice(0,60)).join(", ");return`${a}(${d})`}(d.name||"tool",e))}return{keys:b,summaries:c}}(c);if("none"===d)return{enabled:!1,toolsByName:new Map,lastUserText:m(c),executedToolKeys:e.keys,completedToolCalls:e.summaries};let f=b.map(a=>{let b=a?.function;if(a?.type!=="function"||!b||"object"!=typeof b)return null;let c="string"==typeof b.name?b.name.trim():"";return c?{name:c,..."string"==typeof b.description?{description:b.description}:{},parameters:b.parameters||{type:"object",properties:{}}}:null}).filter(Boolean),g=d&&"object"==typeof d&&"string"==typeof d.function?.name?d.function.name:null,h=g?f.filter(a=>a.name===g):f;return{enabled:h.length>0,toolsByName:new Map(h.map(a=>[a.name,a])),lastUserText:m(c),executedToolKeys:e.keys,completedToolCalls:e.summaries}}(b),Q=P.enabled?function(a,b,c){var d,e;let f=(d=b,e=c,d.enabled?['CLIENT_TOOLS: use this caller-runtime tool list as the tool interface for this request. To call one, respond only with <tool_call>{"name":"exact_tool_name","arguments":{...}}</tool_call>. After tool results, answer normally.',`tool_choice=${JSON.stringify(e??"auto")}`,...d.completedToolCalls.length?["completed_tool_calls:",...d.completedToolCalls.map(a=>`- ${a}`),"Do not repeat completed tool calls unless a different result is required; use their tool results to answer."]:[],"tools (priority order for this request):",...[...d.toolsByName.values()].map((a,b)=>({tool:a,index:b,score:w(a)?90:x(a)?85:v(a)?75:u(a)?70:/\b(glob|grep|search files?|file search|content search)\b/.test(q(a))?60:/\b(edit|write|patch|modify|apply)\b/.test(q(a))?50:/\b(task|agent|delegate|subagent)\b/.test(q(a))?40:t(a)?20:s(a)?10:30})).sort((a,b)=>b.score-a.score||a.index-b.index).map(({tool:a},b)=>{var c;let d,e,f;return`${b+1}. name: ${a.name}${d=Object.keys(o(c=a.parameters)),e=p(c),f=[],d.length&&f.push(`args=${d.join(",")}`),e.length&&f.push(`required=${e.join(",")}`),f.length?` (${f.join("; ")})`:""}${a.description?`
305
272
  description: ${a.description}`:""}`})].join("\n"):""),g=[],h=-1;for(let b=a.length-1;b>=0;b--)if("user"===String(a[b]?.role||"")){h=b;break}let i=[];for(let b=0;b<a.length;b++){let c=a[b],d=String(c?.role||"user");"developer"===d&&(d="system");let e=l(c);if("tool"===d){if(b<h)continue;let a="string"==typeof c.name?c.name:"unknown_tool";e=`CLIENT TOOL RESULT from caller runtime for ${a} (${c.tool_call_id||"unknown_call"}). Use this result to answer; do not call the same tool again:
306
- ${e}`}else if("assistant"===d&&Array.isArray(c.tool_calls)){if(b<h)continue;let a=c.tool_calls.map(a=>({id:a.id,function:a.function}));e=[e,`Previous assistant tool calls: ${JSON.stringify(a)}`].filter(Boolean).join("\n")}e.trim()&&i.push({role:d,text:e})}let j=-1;for(let a=i.length-1;a>=0;a--)if("user"===i[a].role){j=a;break}for(let a=0;a<i.length;a++)g.push(a===j?i[a].text:`${i[a].role}: ${i[a].text}`);return f.trim()&&g.push(f.trim()),g.join("\n\n")}(G,P,b?.tool_choice):function(a){let b=[];for(let c of a){let a=String(c.role||"user");"developer"===a&&(a="system");let d="";"string"==typeof c.content?d=c.content:Array.isArray(c.content)&&(d=c.content.filter(a=>"text"===a.type).map(a=>String(a.text||"")).join(" ")),d.trim()&&b.push({role:a,text:d})}let c=-1;for(let a=b.length-1;a>=0;a--)if("user"===b[a].role){c=a;break}let d=[];for(let a=0;a<b.length;a++){let{role:e,text:f}=b[a];d.push(a===c?f:`${e}: ${f}`)}return d.join("\n\n")}(G);if(!Q.trim())return{response:new Response(JSON.stringify({error:{message:"Empty query after processing",type:"invalid_request"}}),{status:400,headers:{"Content-Type":"application/json"}}),url:E,headers:{},transformedBody:b};let R={temporary:!0,modelName:M,modelMode:N,message:Q,fileAttachments:[],imageAttachments:[],disableSearch:!1,enableImageGeneration:!1,returnImageBytes:!1,returnRawGrokInXaiRequest:!1,enableImageStreaming:!1,imageGenerationCount:0,forceConcise:!1,toolOverrides:{},enableSideBySide:!0,sendFinalMetadata:!0,isReasoning:!1,disableTextFollowUps:!1,disableMemory:!0,forceSideBySide:!1,isAsyncChat:!1,disableSelfHarmShortCircuit:!1,deviceEnvInfo:{darkModeEnabled:!1,devicePixelRatio:2,screenWidth:2056,screenHeight:1329,viewportWidth:2056,viewportHeight:1083}},S=I(16),T=I(8),U={Accept:"*/*","Accept-Encoding":"gzip, deflate, br, zstd","Accept-Language":"en-US,en;q=0.9",Baggage:"sentry-environment=production,sentry-release=d6add6fb0460641fd482d767a335ef72b9b6abb8,sentry-public_key=b311e0f2690c81f25e2c4cf6d4f7ce1c","Cache-Control":"no-cache","Content-Type":"application/json",Origin:"https://grok.com",Pragma:"no-cache",Referer:"https://grok.com/","Sec-Ch-Ua":'"Chromium";v="146", "Not(A:Brand";v="24"',"Sec-Ch-Ua-Mobile":"?0","Sec-Ch-Ua-Platform":'"macOS"',"Sec-Fetch-Dest":"empty","Sec-Fetch-Mode":"cors","Sec-Fetch-Site":"same-origin","User-Agent":k.CO,"x-statsig-id":H(),"Browser-Id":crypto.randomUUID(),"x-xai-request-id":crypto.randomUUID(),traceparent:`00-${S}-${T}-00`};if(d.apiKey){let a=(0,D.lT)(d.apiKey);a&&(U.Cookie=a)}r?.info?.("GROK-WEB",`Query to ${a} (grok=${M}, mode=${N}), len=${Q.length}`);let V=!(0,g.hasProxyEgress)(E,y),W=(0,h.n)(e,this.config?.timeoutMs||f.Z1);try{z=V?await (0,k.X7)(E,{method:"POST",headers:U,body:JSON.stringify(R),timeoutMs:12e4,signal:W.signal}):await (0,g.proxyAwareFetch)(E,{method:"POST",headers:U,body:JSON.stringify(R),signal:W.signal},y)}catch(a){if(a instanceof k.jm)return{response:new Response(JSON.stringify({error:{message:a.message,type:"configuration_error",code:"TLS_CLIENT_UNAVAILABLE"}}),{status:503,headers:{"Content-Type":"application/json"}}),url:E,headers:U,transformedBody:R};return r?.error?.("GROK-WEB",`Fetch failed: ${a.message||String(a)}`),{response:new Response(JSON.stringify({error:{message:`Grok connection failed: ${a.message||String(a)}`,type:"upstream_error"}}),{status:502,headers:{"Content-Type":"application/json"}}),url:E,headers:U,transformedBody:R}}finally{W.clear()}if(!z.ok){let a=z.status,b=`Grok returned HTTP ${a}`;return(0,k.ZB)(await z.clone().text().catch(()=>""))?b="Grok returned a Cloudflare challenge — cf_clearance in the pasted Cookie header no longer matches this machine. Re-copy the full Cookie header from a logged-in grok.com browser on this machine.":401===a||403===a?b="Grok auth failed — SSO cookie may be expired. Re-paste your sso cookie value from grok.com.":429===a&&(b="Grok rate limited. Wait a moment and retry, or rotate cookies."),r?.warn?.("GROK-WEB",b),{response:new Response(JSON.stringify({error:{message:b,type:"upstream_error",code:`HTTP_${a}`}}),{status:a,headers:{"Content-Type":"application/json"}}),url:E,headers:U,transformedBody:R}}if(!z.body)return{response:new Response(JSON.stringify({error:{message:"Grok returned empty response body",type:"upstream_error"}}),{status:502,headers:{"Content-Type":"application/json"}}),url:E,headers:U,transformedBody:R};let X=`chatcmpl-grok-${crypto.randomUUID().slice(0,12)}`,Y=Math.floor(Date.now()/1e3);if(c){var Z;let b;A=new Response((Z=z.body,b=new TextEncoder,new ReadableStream({async start(c){try{c.enqueue(b.encode((0,j.N)({id:X,object:"chat.completion.chunk",created:Y,model:a,system_fingerprint:null,choices:[{index:0,delta:{role:"assistant"},finish_reason:null,logprobs:null}]})));let f="",g="",h=!1,k=[];for await(let i of K(Z,O,e)){if(i.fingerprint&&(f=i.fingerprint),i.error){c.enqueue(b.encode((0,j.N)({id:X,object:"chat.completion.chunk",created:Y,model:a,system_fingerprint:f||null,choices:[{index:0,delta:{content:`[Error: ${i.error}]`},finish_reason:null,logprobs:null}]})));break}if(i.thinking){c.enqueue(b.encode((0,j.N)({id:X,object:"chat.completion.chunk",created:Y,model:a,system_fingerprint:f||null,choices:[{index:0,delta:{reasoning_content:i.thinking},finish_reason:null,logprobs:null}]})));continue}if(i.toolCard&&P){let a=B(i.toolCard,i.toolCardId,P);a&&k.push(a);continue}if(i.done)break;if(i.delta)if(P?.enabled){var d;if(g+=i.delta,d=g,/<tool(?:_call)?$|<tool_call[^>]*$/.test(d)||d.includes("<tool_call>")&&!d.includes("</tool_call>")){h=!0;continue}if(h)continue;let e=Math.min(12,g.length),k=g.slice(0,g.length-e);k&&c.enqueue(b.encode((0,j.N)({id:X,object:"chat.completion.chunk",created:Y,model:a,system_fingerprint:f||null,choices:[{index:0,delta:{content:k},finish_reason:null,logprobs:null}]}))),g=g.slice(g.length-e)}else c.enqueue(b.encode((0,j.N)({id:X,object:"chat.completion.chunk",created:Y,model:a,system_fingerprint:f||null,choices:[{index:0,delta:{content:i.delta},finish_reason:null,logprobs:null}]})));i.fullMessage&&P?.enabled&&(g=i.fullMessage)}let l=(P?.enabled?C(g,P):null)||(k.length?k:null);if(l?.length){for(let d=0;d<l.length;d++)c.enqueue(b.encode((0,j.N)({id:X,object:"chat.completion.chunk",created:Y,model:a,system_fingerprint:f||null,choices:[{index:0,delta:{tool_calls:[{index:d,...l[d]}]},finish_reason:null,logprobs:null}]})));c.enqueue(b.encode((0,j.N)({id:X,object:"chat.completion.chunk",created:Y,model:a,system_fingerprint:f||null,choices:[{index:0,delta:{},finish_reason:"tool_calls",logprobs:null}]})))}else g&&c.enqueue(b.encode((0,j.N)({id:X,object:"chat.completion.chunk",created:Y,model:a,system_fingerprint:f||null,choices:[{index:0,delta:{content:g},finish_reason:null,logprobs:null}]}))),c.enqueue(b.encode((0,j.N)({id:X,object:"chat.completion.chunk",created:Y,model:a,system_fingerprint:f||null,choices:[{index:0,delta:{},finish_reason:"stop",logprobs:null}]})));c.enqueue(b.encode(i.$U))}catch(d){c.enqueue(b.encode((0,j.N)({id:X,object:"chat.completion.chunk",created:Y,model:a,system_fingerprint:null,choices:[{index:0,delta:{content:`[Stream error: ${d.message||String(d)}]`},finish_reason:"stop",logprobs:null}]}))),c.enqueue(b.encode(i.$U))}finally{c.close()}}})),{status:200,headers:{...i.uB}})}else A=await L(z.body,a,X,Y,O,e,P);return{response:A,url:E,headers:U,transformedBody:R}}async generateMedia({prompt:a,kind:b="image",size:c,duration:d,n:e=1,credentials:f,signal:g,log:h}){if("image"!==b&&"video"!==b)throw Error("Grok Web supports image and video generation only");if(!a?.trim())throw Error("prompt is required for media generation");let i="video"===b?1:Math.max(1,e),j=(0,D.lT)(String(f?.apiKey||""));if(!j)throw Error("Grok Web requires the grok.com Cookie header (sso) pasted into the connection");let l=[];for(let e=0;e<i;e++){if(g?.aborted)throw Error("aborted");let e=crypto.randomUUID(),f={"Content-Type":"application/json",Accept:"text/event-stream","User-Agent":k.CO,"Sec-Ch-Ua":'"Chromium";v="146", "Not(A:Brand";v="24"',"Sec-Ch-Ua-Mobile":"?0","Sec-Ch-Ua-Platform":'"macOS"',Origin:"https://grok.com",Referer:"https://grok.com/","Browser-Id":e,"x-xai-request-id":e,"x-statsig-id":H(),Cookie:j},i="video"===b?function({prompt:a,size:b,duration:c}){return{modelName:"imagine-video-gen",message:`${a} --mode=custom`,enableImageStreaming:!0,enableSideBySide:!0,sendFinalMetadata:!0,responseMetadata:{experiments:[],modelConfigOverride:{modelMap:{}}},mediaGenInput:{textToVideo:{prompt:a,aspectRatio:/^\d{1,2}:\d{1,2}$/.test(String(b||""))?String(b):"16:9",duration:Number.isFinite(Number(c))&&Number(c)>0?Number(c):6,resolutionName:"480p"}},kind:"CONVERSATION_KIND_IMAGINE"}}({prompt:a,size:c,duration:d}):{temporary:!0,modelName:"grok-4-1-thinking-1129",modelMode:"MODEL_MODE_FAST",message:c?`Generate an image (${c}): ${a}`:`Generate an image: ${a}`,fileAttachments:[],imageAttachments:[],disableSearch:!1,enableImageGeneration:!0,returnImageBytes:!1,returnRawGrokInXaiRequest:!1,enableImageStreaming:!0,imageGenerationCount:1,forceConcise:!1,toolOverrides:{},enableSideBySide:!0,sendFinalMetadata:!0,isReasoning:!1,disableTextFollowUps:!1,disableMemory:!0,forceSideBySide:!1,isAsyncChat:!1,disableSelfHarmShortCircuit:!1,deviceEnvInfo:{darkModeEnabled:!1,devicePixelRatio:2,screenWidth:2056,screenHeight:1329,viewportWidth:2056,viewportHeight:1083}},m=await (0,k.X7)(E,{method:"POST",headers:f,body:JSON.stringify(i),timeoutMs:"video"===b?3e5:17e4,signal:g}),n=await m.text();if(!m.ok||(0,k.ZB)(n))throw Error((0,k.ZB)(n)?"Grok returned a Cloudflare challenge — re-copy the full Cookie header (with cf_clearance) from a logged-in grok.com browser on this machine":`grok ${b} request failed: HTTP ${m.status} ${n.slice(0,200)}`);if("video"===b){let a=function(a){let b=[],c=a=>{if(!(b.length>8)){if("string"==typeof a){if(/\.mp4(\?|#|$)/i.test(a))return void b.push(a);let d=a.trim();if(d.startsWith("{")||d.startsWith("["))try{c(JSON.parse(d))}catch{}return}if(Array.isArray(a))return void a.forEach(c);a&&"object"==typeof a&&Object.values(a).forEach(c)}};for(let b of String(a).split("\n")){let a=b.trim();if(a.startsWith("{"))try{c(JSON.parse(a))}catch{}}return b[b.length-1]||null}(n);if(!a)throw h?.warn?.("GROK-WEB",`no video URL in stream, tail: ${n.slice(-300)}`),Error("grok returned no video asset — quota may be exhausted (1 video/day) or the prompt was moderated");let b=await (0,k.X7)(a.startsWith("http")?a:`https://assets.grok.com/${a}`,{method:"GET",headers:{"User-Agent":k.CO,Referer:"https://grok.com/",Cookie:j},timeoutMs:12e4,signal:g});if(!b.ok)throw Error(`video download failed: HTTP ${b.status}`);let c=Buffer.from(await b.arrayBuffer());l.push({b64:c.toString("base64"),mime:"video/mp4"});break}let o=null;for(let a of n.split("\n")){let b,c;if(!a.trim().startsWith("{"))continue;try{b=JSON.parse(a)}catch{continue}let d=b?.result?.response?.cardAttachment?.jsonData;if("string"!=typeof d)continue;try{c=JSON.parse(d)}catch{continue}let e=c?.image_chunk;e&&Number(e.progress)>=100&&e.imageUrl&&(o=e)}if(!o)throw Error("grok returned no completed image chunk — prompt may have been moderated or image generation is unavailable for this account");let p=await (0,k.X7)(`https://assets.grok.com/${o.imageUrl}`,{method:"GET",headers:{"User-Agent":k.CO,Referer:"https://grok.com/",Cookie:j},timeoutMs:6e4,signal:g});if(!p.ok)throw Error(`image download failed: HTTP ${p.status}`);let q=Buffer.from(await p.arrayBuffer());l.push({b64:q.toString("base64"),mime:o.mimeType||"image/jpeg"})}return h?.info?.("GROK-WEB",`${b} generation completed (${l.length} item(s))`),l}}},80479:(a,b,c)=>{c.d(b,{qG:()=>I,we:()=>J,zD:()=>K}),c(4573);var d=c(20742),e=c(31421),f=c(77030);let g=null,h=null;async function i(){let a=process.env.OBSCURA_BIN;if(a)return a;let{resolve:b}=await Promise.resolve().then(c.t.bind(c,76760,23)),{existsSync:d,accessSync:e,constants:f}=await Promise.resolve().then(c.t.bind(c,73024,23));for(let a of(process.env.PATH||"").split(":")){let c=b(a,"obscura");try{if(e(c,f.X_OK),d(c))return c}catch{}}return null}async function j(a,b){let c=Date.now()+b;for(;Date.now()<c;){try{let b=new AbortController,c=setTimeout(()=>b.abort(),1500),d=a.replace(/^ws/,"http").replace(/\/$/,"")+"/json/version",e=await fetch(d,{signal:b.signal});if(clearTimeout(c),e.ok)return!0}catch{}await new Promise(a=>setTimeout(a,250))}return!1}async function k(){let a;if(void 0!==(a=process.env.NINEROUTER_BROWSER_POOL)&&("off"===a||"0"===a||"false"===a))return null;if(g)return g;if(h)return h;h=(async()=>{let a=process.env.OBSCURA_CDP_ENDPOINT;if(a)return g={child:null,endpoint:a};let b=await i();if(!b)return null;let c=Number(process.env.OBSCURA_PORT)||await new Promise((a,b)=>{let c=(0,f.createServer)();c.once("error",b),c.listen(0,"127.0.0.1",()=>{let d=c.address();c.close(()=>{d&&"object"==typeof d?a(d.port):b(Error("obscura: could not allocate a free port"))})})}),d=(0,e.spawn)(b,["serve","--port",String(c),"--host","127.0.0.1"],{stdio:["ignore","ignore","pipe"]});d.stderr?.on("data",()=>{});let h=`http://127.0.0.1:${c}`,k=new Promise(a=>{d.once("exit",()=>a(!0)),d.once("error",()=>a(!0))});return!0!==await Promise.race([j(h,3e4),k.then(()=>!1)])?(d.kill("SIGKILL"),null):g={child:d,endpoint:h}})();try{return await h}finally{h=null}}async function l(){let a=await k();if(!a)return null;try{let{chromium:b}=await (0,d.A)("playwright-core");return{browser:await b.connectOverCDP(a.endpoint),child:a.child}}catch{return null}}let m="Missing X server or $DISPLAY: a headed browser needs a display. Install Xvfb (apt-get install xvfb) or run with xvfb-run.";class n extends Error{constructor(a){super(a?`${m} (${a})`:m),this.name="MissingDisplayError",this.code="NINER_NO_DISPLAY"}}let o=null,p=null,q=!1;async function r(a={}){let b=a.env??process.env;if(!((a.platform??process.platform)!=="linux"||function(a=process.env){return!!(a.DISPLAY||a.WAYLAND_DISPLAY)}(b))){if(o&&null===o.child.exitCode&&!o.child.killed)return o.display;if(o=null,!p){var c,d;p=(c=a.spawn??e.spawn,d=a.timeoutMs??5e3,new Promise((a,b)=>{let e=c("Xvfb",["-displayfd","3","-screen","0","1280x1024x24","-nolisten","tcp"],{stdio:["ignore","ignore","ignore","pipe"]}),f=!1,g="",h=a=>{if(!f){f=!0,clearTimeout(i);try{e.kill("SIGTERM")}catch{}b(a)}},i=setTimeout(()=>h(new n("Xvfb start timeout")),d);i.unref?.(),e.once("error",a=>h(new n("ENOENT"===a.code?"Xvfb not found":a.message))),e.once("exit",()=>{o?.child===e&&(o=null),h(new n("Xvfb exited"))});let j=e.stdio?.[3];j?.on("data",b=>{g+=b.toString();let c=/^(\d+)\n/.exec(g);if(!c||f)return;f=!0,clearTimeout(i);let d=`:${c[1]}`;o={child:e,display:d},e.unref?.(),a(d)})})).finally(()=>{p=null}),q||a.spawn||(q=!0,process.once("exit",()=>s()))}return p}}function s(){let a=o?.child;o=null;try{a?.kill("SIGTERM")}catch{}}var t=c(4052);let u={browser:null,engine:null,headedBrowser:null,contexts:new Map,pendingContexts:new Map,launching:null,headedLaunching:null,generation:0,lastActivity:0,idleTimer:null,evictTimer:null,cloakLaunch:null,cloakLaunchResolved:!1,metrics:{browserLaunches:0,browserLaunchFailures:0,contextsCreated:0,contextsReused:0,contextsEvicted:0,contextsReleased:0,contextCreateFailures:0,shutdowns:0,lastShutdownReason:null}};async function v(){if(u.cloakLaunchResolved)return u.cloakLaunch;u.cloakLaunchResolved=!0;try{u.cloakLaunch=(await import("cloakbrowser")).launch??null}catch{u.cloakLaunch=null}return u.cloakLaunch}function w(){u.idleTimer&&clearTimeout(u.idleTimer),u.idleTimer=setTimeout(()=>{L("idle-timeout")},3e5),u.idleTimer.unref?.()}function x(a){let b=a?u.browser:u.headedBrowser;return b?.isConnected()?b:(b&&y(a,null),null)}function y(a,b){a?u.browser=b:u.headedBrowser=b}function z(a){return a?u.launching:u.headedLaunching}function A(a,b){a?u.launching=b:u.headedLaunching=b}function B(a,b){z(a)===b&&A(a,null)}function C(a){let b=!1!==a.headless;return{headless:b,...a.executablePath?{executablePath:a.executablePath}:{},args:["--no-sandbox","--disable-dev-shm-usage","--disable-blink-features=AutomationControlled","--disk-cache-size=52428800",...b?[]:["--window-position=-32000,-32000"]]}}async function D(a,b){if(!b){let{chromium:b}=await (0,d.A)("playwright-core"),c=await r(),e=C(a);return c&&(e.env={...process.env,DISPLAY:c}),(0,t.KI)(b,e)}let c=await l();if(c)return u.engine="obscura",c.browser;let e=await v();if(e)return u.engine="cloakbrowser",e({headless:!0,args:["--no-sandbox","--disable-dev-shm-usage"]});u.engine="chromium";let{chromium:f}=await (0,d.A)("playwright-core");return(0,t.KI)(f,C(a))}async function E(a){let b=!1!==a.headless,c=x(b);if(c)return c;let d=z(b);if(d)return d;let e=u.generation,f=(async()=>{let c=await D(a,b);if(u.generation!==e)throw await c.close().catch(()=>{}),Error("Pool shut down during browser launch");return y(b,c),u.metrics.browserLaunches++,c})();A(b,f);try{let a=await f;return B(b,f),a}catch(a){throw B(b,f),u.metrics.browserLaunchFailures++,a}}function F(a,b){b&&u.metrics.contextCreateFailures++,u.pendingContexts.delete(a)}async function G(a,b){if(b.cookieString){var c,d;let e=(c=b.cookieString,d=b.cookieDomain,c.split(";").map(a=>a.trim()).filter(Boolean).map(a=>{let b=a.indexOf("=");if(b<0)return null;let c=a.slice(0,b).trim(),e=a.slice(b+1).trim();return c&&e?{name:c,value:e,domain:d.startsWith(".")?d:`.${d}`,path:"/",expires:-1,httpOnly:!1,secure:!0,sameSite:"Lax"}:null}).filter(Boolean));e.length>0&&await a.addCookies(e)}if(!b.localStorage||0===Object.keys(b.localStorage).length)return;let e=new URL(b.localStorageOrigin||b.warmupUrl||"").origin;await a.addInitScript(({expectedOrigin:a,entries:b})=>{if(window.location.origin===a)for(let[a,c]of b)window.localStorage.setItem(a,c)},{expectedOrigin:e,entries:Object.entries(b.localStorage)})}async function H(a,b){if(!b)return null;let c=null;try{return c=await a.newPage(),await c.goto(b,{waitUntil:"domcontentloaded",timeout:3e4}),await new Promise(a=>setTimeout(a,1500)),c}catch{return await c?.close().catch(()=>{}),null}}async function I(a,b){let c;if(void 0!==(c=process.env.NINEROUTER_BROWSER_POOL)&&("off"===c||"0"===c||"false"===c))throw Error("browserPool: NINEROUTER_BROWSER_POOL=off — context requested but pool is disabled");let d=!1!==b.headless,e=`${d?"headless":"headed"}:${a}`,f=u.contexts.get(e);if(f)return f.lastUsed=Date.now(),u.lastActivity=Date.now(),u.metrics.contextsReused++,w(),f;let g=u.pendingContexts.get(e);if(g)return g.promise;let h=(async()=>{let a=await E(b),c=d&&("obscura"===u.engine||null!==u.cloakLaunch),f=await a.newContext({userAgent:b.userAgent||"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36",locale:b.locale||"en-US",timezoneId:b.timezone||"America/New_York",viewport:{width:1280,height:800},...b.storageState?{storageState:b.storageState}:{}});await G(f,b);let g=await H(f,b.warmupUrl);if(x(d)!==a)throw await f.close().catch(()=>{}),g&&await g.close().catch(()=>{}),Error("Pool shut down during context creation");let h={id:e,context:f,warmupPage:g,lastUsed:Date.now(),isStealth:c};return u.contexts.set(e,h),u.metrics.contextsCreated++,u.lastActivity=Date.now(),w(),u.evictTimer&&clearInterval(u.evictTimer),u.evictTimer=setInterval(()=>(function(){let a=Date.now();for(let[b,c]of u.contexts)a-c.lastUsed>6e5&&(console.log("[BrowserPool] Evicted stale context","(idle",((a-c.lastUsed)/1e3).toFixed(0)+"s)"),u.contexts.delete(b),u.metrics.contextsEvicted++,c.context.close().catch(()=>{}));for(let[b,c]of u.pendingContexts)a-c.createdAt>3e5&&(u.pendingContexts.delete(b),u.metrics.contextsEvicted++);0!==u.contexts.size||0!==u.pendingContexts.size||u.launching||u.headedLaunching||L("all-contexts-evicted")})(),6e4),u.evictTimer.unref?.(),h})();return u.pendingContexts.set(e,{promise:h,createdAt:Date.now()}),h.then(()=>F(e,!1)).catch(()=>F(e,!0)),h}async function J(a){return a.context.newPage()}async function K(a){let b=[a,`headless:${a}`,`headed:${a}`].find(a=>u.contexts.has(a));if(!b)return;let c=u.contexts.get(b);if(c){u.contexts.delete(b),u.metrics.contextsReleased++;try{await c.context.close()}catch{}0===u.contexts.size&&await L("last-context-closed")}}async function L(a){for(let[b,c]of(u.generation++,u.metrics.shutdowns++,u.metrics.lastShutdownReason=a,u.idleTimer&&(clearTimeout(u.idleTimer),u.idleTimer=null),u.evictTimer&&(clearInterval(u.evictTimer),u.evictTimer=null),u.pendingContexts.clear(),u.contexts)){try{await c.context.close()}catch{}u.contexts.delete(b)}if(u.browser){try{await u.browser.close()}catch{}u.browser=null}if(u.headedBrowser){try{await u.headedBrowser.close()}catch{}u.headedBrowser=null}u.launching=null,u.headedLaunching=null,s(),u.engine=null,u.lastActivity=Date.now()}},83243:(a,b,c)=>{c.d(b,{M:()=>h});var d=c(96179),e=c(8521);let f=/insufficient|balance|credit|quota|exhaust|limit|余额|积分|额度|不足|用完|上限/i;async function g(a){let b=a?.status;if(!a||402!==b&&403!==b&&429!==b)return a;let c=await a.text().catch(()=>"");if(429===b||!f.test(c)){let d=new Headers(a.headers);return d.delete("content-length"),d.delete("content-encoding"),new Response(c,{status:b,statusText:a.statusText,headers:d})}let d=c.trim();try{let a=JSON.parse(c);d=a?.error?.message??a?.message??a?.msg??a?.base_resp?.status_msg??d}catch{}let e=new Headers(a.headers);return e.delete("content-length"),e.delete("content-encoding"),e.set("content-type","application/json"),new Response(JSON.stringify({type:"error",error:{type:"rate_limit_error",message:`usage limit reached: ${d}`}}),{status:429,statusText:"Too Many Requests",headers:e})}class h extends d.L{async execute(a){let b=await super.execute(a);return b?.response?{...b,response:await g(b.response)}:b}async refreshCredentials(a,b){return a?.refreshToken?(0,e.rE)(this.provider,a.refreshToken,b):null}}},85308:(a,b,c)=>{c.d(b,{A:()=>j});var d=c(74957),e=c(39609),f=c(49426),g=c(41004),h=c(12643);let i=parseInt(process.env.TRAE_STREAM_TIMEOUT_MS||"300000",10);class j extends d.H{constructor(a="trae"){super(a,h.xq[a]),this.isEnterprise="trae-enterprise"===a}base(){let a=this.config?.baseUrl;if(a)return a.replace(/\/$/,"");if(!this.isEnterprise)return"https://core-normal.trae.ai/api/remote/v1";throw Error(`Trae provider "${this.provider}" has no transport baseUrl`)}buildHeaders(a,b=!0){let c=a?.providerSpecificData||{};return{...this.config?.headers||{},Authorization:`Cloud-IDE-JWT ${a?.accessToken||""}`,"Content-Type":"application/json","X-Preferenced-Language":c.appLanguage||"en","x-user-region":c.userRegion||"US","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36",Accept:b?"text/event-stream":"application/json"}}resolveMode(a){let b=(a||"").trim().toLowerCase(),c="work"===b||"auto-work"===b||"solo-work"===b;if(c&&!this.isEnterprise)return{mode:"work",strategy:"auto",modelName:""};let d=!b||"auto"===b||c;return{mode:"code",strategy:d?"auto":"manual",modelName:d?"":a}}commonParams(a,b,c,d){let e=function(a){let b=String(a||"").split(".");if(3!==b.length)return{};try{let a=JSON.parse(Buffer.from(b[1],"base64url").toString());return a?.data||{}}catch{return{}}}(d),f=this.isEnterprise,g={language:"en-us",app_language:a.appLanguage||"en",quality:"stable",app_version:a.appVersion||(f?"3.5.54":"1.0.0.1229"),web_id:a.webId||"",user_identity:a.userIdentity||(f?"member":"Free"),is_freshman:"0",biz_user_id:a.bizUserId||"",user_unique_id:a.userUniqueId||e.user_id||"",scope:a.scope||(f?e.scope||"saas":"marscode-us"),tenant:a.tenant||(f?e.tenant_id||"tob_online":"marscode"),region:a.region||(f?"cn-beijing":"US-East"),aiRegion:a.aiRegion||a.region||(f?"cn-beijing":"US-East"),is_privacy_mode:0,privacy_mode:"off",solo_chat_mode:b};return c&&(g.biz_session_id=c),JSON.stringify(g)}async createSession(a,b,c,d,h,i,j){let k,{mode:l,strategy:m,modelName:n}=this.resolveMode(c),o={mode:l,environment_id:"default",initial_message:{chat_session_id:"",content:[],query:b,model_name:n,agent_type:"solo_agent_remote",model_selection_strategy:m,common_params:this.commonParams(d,l,null,i)},env:"remote",auto_create_project:!1,origin:"web"},p=(0,f.n)(h,this.config?.timeoutMs||g.pH);try{k=await (0,e.proxyAwareFetch)(`${this.base()}/chat_sessions`,{method:"POST",headers:a,body:JSON.stringify(o),signal:p.signal},j||null)}catch(a){throw p.settleError(a)}finally{p.clear()}let q=await k.text();if(!k.ok)throw Error(`[${k.status}] ${q}`);let r=JSON.parse(q);if(r?.code!==0)throw Error(`Trae create_session: ${JSON.stringify(r)}`);return{sessionId:r.data.chat_session_id,messageId:r.data.message_id}}async streamEvents(a,b,c,d,f,g){let h=`${this.base()}/chat_sessions/${b}/events?reply_to_message_id=${encodeURIComponent(c)}`,j=new AbortController;f?.aborted&&j.abort();let k=setTimeout(()=>j.abort(Error("trae stream timeout")),i),l=()=>j.abort();f&&f.addEventListener("abort",l,{once:!0});try{let b=await (0,e.proxyAwareFetch)(h,{method:"GET",headers:a,signal:j.signal},g||null);if(!b.ok||!b.body)throw Error(`[${b.status}] events stream failed`);let c=b.body.getReader(),f=new TextDecoder,i="",k=null;for(;;){let a,{done:b,value:e}=await c.read();if(b)break;for(i+=f.decode(e,{stream:!0});(a=i.indexOf("\n"))>=0;){let b=i.slice(0,a).replace(/\r$/,"");if(i=i.slice(a+1),b.startsWith("event:"))k=b.slice(6).trim();else if(b.startsWith("data:")){let a,e=b.slice(5).trim();try{a=JSON.parse(e)}catch{a={_raw:e}}if(d(k,a))return void await c.cancel().catch(()=>{})}else""===b&&(k=null)}}}finally{clearTimeout(k),f&&f.removeEventListener("abort",l)}}async execute({model:a,body:b,stream:c,credentials:d,signal:e}){let f,g=d?.providerSpecificData||{},h=d?.proxyOptions||null,i=function(a){let b=[];for(let c of a){let a="";"string"==typeof c.content?a=c.content:Array.isArray(c.content)&&(a=c.content.map(a=>"string"==typeof a?a:a&&"object"==typeof a?String(a.text??""):"").join("")),"system"===c.role?b.push(`[System]
273
+ ${e}`}else if("assistant"===d&&Array.isArray(c.tool_calls)){if(b<h)continue;let a=c.tool_calls.map(a=>({id:a.id,function:a.function}));e=[e,`Previous assistant tool calls: ${JSON.stringify(a)}`].filter(Boolean).join("\n")}e.trim()&&i.push({role:d,text:e})}let j=-1;for(let a=i.length-1;a>=0;a--)if("user"===i[a].role){j=a;break}for(let a=0;a<i.length;a++)g.push(a===j?i[a].text:`${i[a].role}: ${i[a].text}`);return f.trim()&&g.push(f.trim()),g.join("\n\n")}(G,P,b?.tool_choice):function(a){let b=[];for(let c of a){let a=String(c.role||"user");"developer"===a&&(a="system");let d="";"string"==typeof c.content?d=c.content:Array.isArray(c.content)&&(d=c.content.filter(a=>"text"===a.type).map(a=>String(a.text||"")).join(" ")),d.trim()&&b.push({role:a,text:d})}let c=-1;for(let a=b.length-1;a>=0;a--)if("user"===b[a].role){c=a;break}let d=[];for(let a=0;a<b.length;a++){let{role:e,text:f}=b[a];d.push(a===c?f:`${e}: ${f}`)}return d.join("\n\n")}(G);if(!Q.trim())return{response:new Response(JSON.stringify({error:{message:"Empty query after processing",type:"invalid_request"}}),{status:400,headers:{"Content-Type":"application/json"}}),url:E,headers:{},transformedBody:b};let R={temporary:!0,modelName:M,modelMode:N,message:Q,fileAttachments:[],imageAttachments:[],disableSearch:!1,enableImageGeneration:!1,returnImageBytes:!1,returnRawGrokInXaiRequest:!1,enableImageStreaming:!1,imageGenerationCount:0,forceConcise:!1,toolOverrides:{},enableSideBySide:!0,sendFinalMetadata:!0,isReasoning:!1,disableTextFollowUps:!1,disableMemory:!0,forceSideBySide:!1,isAsyncChat:!1,disableSelfHarmShortCircuit:!1,deviceEnvInfo:{darkModeEnabled:!1,devicePixelRatio:2,screenWidth:2056,screenHeight:1329,viewportWidth:2056,viewportHeight:1083}},S=I(16),T=I(8),U={Accept:"*/*","Accept-Encoding":"gzip, deflate, br, zstd","Accept-Language":"en-US,en;q=0.9",Baggage:"sentry-environment=production,sentry-release=d6add6fb0460641fd482d767a335ef72b9b6abb8,sentry-public_key=b311e0f2690c81f25e2c4cf6d4f7ce1c","Cache-Control":"no-cache","Content-Type":"application/json",Origin:"https://grok.com",Pragma:"no-cache",Referer:"https://grok.com/","Sec-Ch-Ua":'"Chromium";v="146", "Not(A:Brand";v="24"',"Sec-Ch-Ua-Mobile":"?0","Sec-Ch-Ua-Platform":'"macOS"',"Sec-Fetch-Dest":"empty","Sec-Fetch-Mode":"cors","Sec-Fetch-Site":"same-origin","User-Agent":k.CO,"x-statsig-id":H(),"Browser-Id":crypto.randomUUID(),"x-xai-request-id":crypto.randomUUID(),traceparent:`00-${S}-${T}-00`};if(d.apiKey){let a=(0,D.lT)(d.apiKey);a&&(U.Cookie=a)}r?.info?.("GROK-WEB",`Query to ${a} (grok=${M}, mode=${N}), len=${Q.length}`);let V=!(0,g.hasProxyEgress)(E,y),W=(0,h.n)(e,this.config?.timeoutMs||f.Z1);try{z=V?await (0,k.X7)(E,{method:"POST",headers:U,body:JSON.stringify(R),timeoutMs:12e4,signal:W.signal}):await (0,g.proxyAwareFetch)(E,{method:"POST",headers:U,body:JSON.stringify(R),signal:W.signal},y)}catch(a){if(a instanceof k.jm)return{response:new Response(JSON.stringify({error:{message:a.message,type:"configuration_error",code:"TLS_CLIENT_UNAVAILABLE"}}),{status:503,headers:{"Content-Type":"application/json"}}),url:E,headers:U,transformedBody:R};return r?.error?.("GROK-WEB",`Fetch failed: ${a.message||String(a)}`),{response:new Response(JSON.stringify({error:{message:`Grok connection failed: ${a.message||String(a)}`,type:"upstream_error"}}),{status:502,headers:{"Content-Type":"application/json"}}),url:E,headers:U,transformedBody:R}}finally{W.clear()}if(!z.ok){let a=z.status,b=`Grok returned HTTP ${a}`;return(0,k.ZB)(await z.clone().text().catch(()=>""))?b="Grok returned a Cloudflare challenge — cf_clearance in the pasted Cookie header no longer matches this machine. Re-copy the full Cookie header from a logged-in grok.com browser on this machine.":401===a||403===a?b="Grok auth failed — SSO cookie may be expired. Re-paste your sso cookie value from grok.com.":429===a&&(b="Grok rate limited. Wait a moment and retry, or rotate cookies."),r?.warn?.("GROK-WEB",b),{response:new Response(JSON.stringify({error:{message:b,type:"upstream_error",code:`HTTP_${a}`}}),{status:a,headers:{"Content-Type":"application/json"}}),url:E,headers:U,transformedBody:R}}if(!z.body)return{response:new Response(JSON.stringify({error:{message:"Grok returned empty response body",type:"upstream_error"}}),{status:502,headers:{"Content-Type":"application/json"}}),url:E,headers:U,transformedBody:R};let X=`chatcmpl-grok-${crypto.randomUUID().slice(0,12)}`,Y=Math.floor(Date.now()/1e3);if(c){var Z;let b;A=new Response((Z=z.body,b=new TextEncoder,new ReadableStream({async start(c){try{c.enqueue(b.encode((0,j.N)({id:X,object:"chat.completion.chunk",created:Y,model:a,system_fingerprint:null,choices:[{index:0,delta:{role:"assistant"},finish_reason:null,logprobs:null}]})));let f="",g="",h=!1,k=[];for await(let i of K(Z,O,e)){if(i.fingerprint&&(f=i.fingerprint),i.error){c.enqueue(b.encode((0,j.N)({id:X,object:"chat.completion.chunk",created:Y,model:a,system_fingerprint:f||null,choices:[{index:0,delta:{content:`[Error: ${i.error}]`},finish_reason:null,logprobs:null}]})));break}if(i.thinking){c.enqueue(b.encode((0,j.N)({id:X,object:"chat.completion.chunk",created:Y,model:a,system_fingerprint:f||null,choices:[{index:0,delta:{reasoning_content:i.thinking},finish_reason:null,logprobs:null}]})));continue}if(i.toolCard&&P){let a=B(i.toolCard,i.toolCardId,P);a&&k.push(a);continue}if(i.done)break;if(i.delta)if(P?.enabled){var d;if(g+=i.delta,d=g,/<tool(?:_call)?$|<tool_call[^>]*$/.test(d)||d.includes("<tool_call>")&&!d.includes("</tool_call>")){h=!0;continue}if(h)continue;let e=Math.min(12,g.length),k=g.slice(0,g.length-e);k&&c.enqueue(b.encode((0,j.N)({id:X,object:"chat.completion.chunk",created:Y,model:a,system_fingerprint:f||null,choices:[{index:0,delta:{content:k},finish_reason:null,logprobs:null}]}))),g=g.slice(g.length-e)}else c.enqueue(b.encode((0,j.N)({id:X,object:"chat.completion.chunk",created:Y,model:a,system_fingerprint:f||null,choices:[{index:0,delta:{content:i.delta},finish_reason:null,logprobs:null}]})));i.fullMessage&&P?.enabled&&(g=i.fullMessage)}let l=(P?.enabled?C(g,P):null)||(k.length?k:null);if(l?.length){for(let d=0;d<l.length;d++)c.enqueue(b.encode((0,j.N)({id:X,object:"chat.completion.chunk",created:Y,model:a,system_fingerprint:f||null,choices:[{index:0,delta:{tool_calls:[{index:d,...l[d]}]},finish_reason:null,logprobs:null}]})));c.enqueue(b.encode((0,j.N)({id:X,object:"chat.completion.chunk",created:Y,model:a,system_fingerprint:f||null,choices:[{index:0,delta:{},finish_reason:"tool_calls",logprobs:null}]})))}else g&&c.enqueue(b.encode((0,j.N)({id:X,object:"chat.completion.chunk",created:Y,model:a,system_fingerprint:f||null,choices:[{index:0,delta:{content:g},finish_reason:null,logprobs:null}]}))),c.enqueue(b.encode((0,j.N)({id:X,object:"chat.completion.chunk",created:Y,model:a,system_fingerprint:f||null,choices:[{index:0,delta:{},finish_reason:"stop",logprobs:null}]})));c.enqueue(b.encode(i.$U))}catch(d){c.enqueue(b.encode((0,j.N)({id:X,object:"chat.completion.chunk",created:Y,model:a,system_fingerprint:null,choices:[{index:0,delta:{content:`[Stream error: ${d.message||String(d)}]`},finish_reason:"stop",logprobs:null}]}))),c.enqueue(b.encode(i.$U))}finally{c.close()}}})),{status:200,headers:{...i.uB}})}else A=await L(z.body,a,X,Y,O,e,P);return{response:A,url:E,headers:U,transformedBody:R}}async generateMedia({prompt:a,kind:b="image",size:c,duration:d,n:e=1,credentials:f,signal:g,log:h}){if("image"!==b&&"video"!==b)throw Error("Grok Web supports image and video generation only");if(!a?.trim())throw Error("prompt is required for media generation");let i="video"===b?1:Math.max(1,e),j=(0,D.lT)(String(f?.apiKey||""));if(!j)throw Error("Grok Web requires the grok.com Cookie header (sso) pasted into the connection");let l=[];for(let e=0;e<i;e++){if(g?.aborted)throw Error("aborted");let e=crypto.randomUUID(),f={"Content-Type":"application/json",Accept:"text/event-stream","User-Agent":k.CO,"Sec-Ch-Ua":'"Chromium";v="146", "Not(A:Brand";v="24"',"Sec-Ch-Ua-Mobile":"?0","Sec-Ch-Ua-Platform":'"macOS"',Origin:"https://grok.com",Referer:"https://grok.com/","Browser-Id":e,"x-xai-request-id":e,"x-statsig-id":H(),Cookie:j},i="video"===b?function({prompt:a,size:b,duration:c}){return{modelName:"imagine-video-gen",message:`${a} --mode=custom`,enableImageStreaming:!0,enableSideBySide:!0,sendFinalMetadata:!0,responseMetadata:{experiments:[],modelConfigOverride:{modelMap:{}}},mediaGenInput:{textToVideo:{prompt:a,aspectRatio:/^\d{1,2}:\d{1,2}$/.test(String(b||""))?String(b):"16:9",duration:Number.isFinite(Number(c))&&Number(c)>0?Number(c):6,resolutionName:"480p"}},kind:"CONVERSATION_KIND_IMAGINE"}}({prompt:a,size:c,duration:d}):{temporary:!0,modelName:"grok-4-1-thinking-1129",modelMode:"MODEL_MODE_FAST",message:c?`Generate an image (${c}): ${a}`:`Generate an image: ${a}`,fileAttachments:[],imageAttachments:[],disableSearch:!1,enableImageGeneration:!0,returnImageBytes:!1,returnRawGrokInXaiRequest:!1,enableImageStreaming:!0,imageGenerationCount:1,forceConcise:!1,toolOverrides:{},enableSideBySide:!0,sendFinalMetadata:!0,isReasoning:!1,disableTextFollowUps:!1,disableMemory:!0,forceSideBySide:!1,isAsyncChat:!1,disableSelfHarmShortCircuit:!1,deviceEnvInfo:{darkModeEnabled:!1,devicePixelRatio:2,screenWidth:2056,screenHeight:1329,viewportWidth:2056,viewportHeight:1083}},m=await (0,k.X7)(E,{method:"POST",headers:f,body:JSON.stringify(i),timeoutMs:"video"===b?3e5:17e4,signal:g}),n=await m.text();if(!m.ok||(0,k.ZB)(n))throw Error((0,k.ZB)(n)?"Grok returned a Cloudflare challenge — re-copy the full Cookie header (with cf_clearance) from a logged-in grok.com browser on this machine":`grok ${b} request failed: HTTP ${m.status} ${n.slice(0,200)}`);if("video"===b){let a=function(a){let b=[],c=a=>{if(!(b.length>8)){if("string"==typeof a){if(/\.mp4(\?|#|$)/i.test(a))return void b.push(a);let d=a.trim();if(d.startsWith("{")||d.startsWith("["))try{c(JSON.parse(d))}catch{}return}if(Array.isArray(a))return void a.forEach(c);a&&"object"==typeof a&&Object.values(a).forEach(c)}};for(let b of String(a).split("\n")){let a=b.trim();if(a.startsWith("{"))try{c(JSON.parse(a))}catch{}}return b[b.length-1]||null}(n);if(!a)throw h?.warn?.("GROK-WEB",`no video URL in stream, tail: ${n.slice(-300)}`),Error("grok returned no video asset — quota may be exhausted (1 video/day) or the prompt was moderated");let b=await (0,k.X7)(a.startsWith("http")?a:`https://assets.grok.com/${a}`,{method:"GET",headers:{"User-Agent":k.CO,Referer:"https://grok.com/",Cookie:j},timeoutMs:12e4,signal:g});if(!b.ok)throw Error(`video download failed: HTTP ${b.status}`);let c=Buffer.from(await b.arrayBuffer());l.push({b64:c.toString("base64"),mime:"video/mp4"});break}let o=null;for(let a of n.split("\n")){let b,c;if(!a.trim().startsWith("{"))continue;try{b=JSON.parse(a)}catch{continue}let d=b?.result?.response?.cardAttachment?.jsonData;if("string"!=typeof d)continue;try{c=JSON.parse(d)}catch{continue}let e=c?.image_chunk;e&&Number(e.progress)>=100&&e.imageUrl&&(o=e)}if(!o)throw Error("grok returned no completed image chunk — prompt may have been moderated or image generation is unavailable for this account");let p=await (0,k.X7)(`https://assets.grok.com/${o.imageUrl}`,{method:"GET",headers:{"User-Agent":k.CO,Referer:"https://grok.com/",Cookie:j},timeoutMs:6e4,signal:g});if(!p.ok)throw Error(`image download failed: HTTP ${p.status}`);let q=Buffer.from(await p.arrayBuffer());l.push({b64:q.toString("base64"),mime:o.mimeType||"image/jpeg"})}return h?.info?.("GROK-WEB",`${b} generation completed (${l.length} item(s))`),l}}},80479:(a,b,c)=>{c.d(b,{qG:()=>J,we:()=>K,gZ:()=>u,zD:()=>L}),c(4573);var d=c(20742),e=c(31421),f=c(77030);let g=null,h=null;async function i(){let a=process.env.OBSCURA_BIN;if(a)return a;let{resolve:b}=await Promise.resolve().then(c.t.bind(c,76760,23)),{existsSync:d,accessSync:e,constants:f}=await Promise.resolve().then(c.t.bind(c,73024,23));for(let a of(process.env.PATH||"").split(":")){let c=b(a,"obscura");try{if(e(c,f.X_OK),d(c))return c}catch{}}return null}async function j(a,b){let c=Date.now()+b;for(;Date.now()<c;){try{let b=new AbortController,c=setTimeout(()=>b.abort(),1500),d=a.replace(/^ws/,"http").replace(/\/$/,"")+"/json/version",e=await fetch(d,{signal:b.signal});if(clearTimeout(c),e.ok)return!0}catch{}await new Promise(a=>setTimeout(a,250))}return!1}async function k(){let a;if(void 0!==(a=process.env.NINEROUTER_BROWSER_POOL)&&("off"===a||"0"===a||"false"===a))return null;if(g)return g;if(h)return h;h=(async()=>{let a=process.env.OBSCURA_CDP_ENDPOINT;if(a)return g={child:null,endpoint:a};let b=await i();if(!b)return null;let c=Number(process.env.OBSCURA_PORT)||await new Promise((a,b)=>{let c=(0,f.createServer)();c.once("error",b),c.listen(0,"127.0.0.1",()=>{let d=c.address();c.close(()=>{d&&"object"==typeof d?a(d.port):b(Error("obscura: could not allocate a free port"))})})}),d=(0,e.spawn)(b,["serve","--port",String(c),"--host","127.0.0.1"],{stdio:["ignore","ignore","pipe"]});d.stderr?.on("data",()=>{});let h=`http://127.0.0.1:${c}`,k=new Promise(a=>{d.once("exit",()=>a(!0)),d.once("error",()=>a(!0))});return!0!==await Promise.race([j(h,3e4),k.then(()=>!1)])?(d.kill("SIGKILL"),null):g={child:d,endpoint:h}})();try{return await h}finally{h=null}}async function l(){let a=await k();if(!a)return null;try{let{chromium:b}=await (0,d.A)("playwright-core");return{browser:await b.connectOverCDP(a.endpoint),child:a.child}}catch{return null}}let m="Missing X server or $DISPLAY: a headed browser needs a display. Install Xvfb (apt-get install xvfb) or run with xvfb-run.";class n extends Error{constructor(a){super(a?`${m} (${a})`:m),this.name="MissingDisplayError",this.code="NINER_NO_DISPLAY"}}let o=null,p=null,q=!1;async function r(a={}){let b=a.env??process.env;if(!((a.platform??process.platform)!=="linux"||function(a=process.env){return!!(a.DISPLAY||a.WAYLAND_DISPLAY)}(b))){if(o&&null===o.child.exitCode&&!o.child.killed)return o.display;if(o=null,!p){var c,d;p=(c=a.spawn??e.spawn,d=a.timeoutMs??5e3,new Promise((a,b)=>{let e=c("Xvfb",["-displayfd","3","-screen","0","1280x1024x24","-nolisten","tcp"],{stdio:["ignore","ignore","ignore","pipe"]}),f=!1,g="",h=a=>{if(!f){f=!0,clearTimeout(i);try{e.kill("SIGTERM")}catch{}b(a)}},i=setTimeout(()=>h(new n("Xvfb start timeout")),d);i.unref?.(),e.once("error",a=>h(new n("ENOENT"===a.code?"Xvfb not found":a.message))),e.once("exit",()=>{o?.child===e&&(o=null),h(new n("Xvfb exited"))});let j=e.stdio?.[3];j?.on("data",b=>{g+=b.toString();let c=/^(\d+)\n/.exec(g);if(!c||f)return;f=!0,clearTimeout(i);let d=`:${c[1]}`;o={child:e,display:d},e.unref?.(),a(d)})})).finally(()=>{p=null}),q||a.spawn||(q=!0,process.once("exit",()=>s()))}return p}}function s(){let a=o?.child;o=null;try{a?.kill("SIGTERM")}catch{}}var t=c(4052);function u(a){let b=String(a?.connectionProxyUrl||a?.url||"").trim();if(!1===(a?.connectionProxyEnabled??a?.enabled))return null;if(!b){if(a?.strictProxy===!0&&String(a?.vercelRelayUrl||"").trim())throw Error("This connection proxies through a relay pool, which the browser page cannot use — set a plain http/socks5 proxy URL on the connection for it.");return null}let c=String(a?.connectionNoProxy||"").trim();return{server:b,...c?{bypass:c}:{}}}let v={browser:null,engine:null,headedBrowser:null,contexts:new Map,pendingContexts:new Map,launching:null,headedLaunching:null,generation:0,lastActivity:0,idleTimer:null,evictTimer:null,cloakLaunch:null,cloakLaunchResolved:!1,metrics:{browserLaunches:0,browserLaunchFailures:0,contextsCreated:0,contextsReused:0,contextsEvicted:0,contextsReleased:0,contextCreateFailures:0,shutdowns:0,lastShutdownReason:null}};async function w(){if(v.cloakLaunchResolved)return v.cloakLaunch;v.cloakLaunchResolved=!0;try{v.cloakLaunch=(await import("cloakbrowser")).launch??null}catch{v.cloakLaunch=null}return v.cloakLaunch}function x(){v.idleTimer&&clearTimeout(v.idleTimer),v.idleTimer=setTimeout(()=>{M("idle-timeout")},3e5),v.idleTimer.unref?.()}function y(a){let b=a?v.browser:v.headedBrowser;return b?.isConnected()?b:(b&&z(a,null),null)}function z(a,b){a?v.browser=b:v.headedBrowser=b}function A(a){return a?v.launching:v.headedLaunching}function B(a,b){a?v.launching=b:v.headedLaunching=b}function C(a,b){A(a)===b&&B(a,null)}function D(a){let b=!1!==a.headless;return{headless:b,...a.executablePath?{executablePath:a.executablePath}:{},args:["--no-sandbox","--disable-dev-shm-usage","--disable-blink-features=AutomationControlled","--disk-cache-size=52428800",...b?[]:["--window-position=-32000,-32000"]]}}async function E(a,b){if(!b){let{chromium:b}=await (0,d.A)("playwright-core"),c=await r(),e=D(a);return c&&(e.env={...process.env,DISPLAY:c}),(0,t.KI)(b,e)}let c=await l();if(c)return v.engine="obscura",c.browser;let e=await w();if(e)return v.engine="cloakbrowser",e({headless:!0,args:["--no-sandbox","--disable-dev-shm-usage"]});v.engine="chromium";let{chromium:f}=await (0,d.A)("playwright-core");return(0,t.KI)(f,D(a))}async function F(a){let b=!1!==a.headless,c=y(b);if(c)return c;let d=A(b);if(d)return d;let e=v.generation,f=(async()=>{let c=await E(a,b);if(v.generation!==e)throw await c.close().catch(()=>{}),Error("Pool shut down during browser launch");return z(b,c),v.metrics.browserLaunches++,c})();B(b,f);try{let a=await f;return C(b,f),a}catch(a){throw C(b,f),v.metrics.browserLaunchFailures++,a}}function G(a,b){b&&v.metrics.contextCreateFailures++,v.pendingContexts.delete(a)}async function H(a,b){if(b.cookieString){var c,d;let e=(c=b.cookieString,d=b.cookieDomain,c.split(";").map(a=>a.trim()).filter(Boolean).map(a=>{let b=a.indexOf("=");if(b<0)return null;let c=a.slice(0,b).trim(),e=a.slice(b+1).trim();return c&&e?{name:c,value:e,domain:d.startsWith(".")?d:`.${d}`,path:"/",expires:-1,httpOnly:!1,secure:!0,sameSite:"Lax"}:null}).filter(Boolean));e.length>0&&await a.addCookies(e)}if(!b.localStorage||0===Object.keys(b.localStorage).length)return;let e=new URL(b.localStorageOrigin||b.warmupUrl||"").origin;await a.addInitScript(({expectedOrigin:a,entries:b})=>{if(window.location.origin===a)for(let[a,c]of b)window.localStorage.setItem(a,c)},{expectedOrigin:e,entries:Object.entries(b.localStorage)})}async function I(a,b){if(!b)return null;let c=null;try{return c=await a.newPage(),await c.goto(b,{waitUntil:"domcontentloaded",timeout:3e4}),await new Promise(a=>setTimeout(a,1500)),c}catch{return await c?.close().catch(()=>{}),null}}async function J(a,b){let c;if(void 0!==(c=process.env.NINEROUTER_BROWSER_POOL)&&("off"===c||"0"===c||"false"===c))throw Error("browserPool: NINEROUTER_BROWSER_POOL=off — context requested but pool is disabled");let d=!1!==b.headless,e=`${d?"headless":"headed"}:${a}`,f=v.contexts.get(e);if(f)return f.lastUsed=Date.now(),v.lastActivity=Date.now(),v.metrics.contextsReused++,x(),f;let g=v.pendingContexts.get(e);if(g)return g.promise;let h=(async()=>{let a=await F(b),c=d&&("obscura"===v.engine||null!==v.cloakLaunch),f=b.proxy||u(b.proxyOptions),g=await a.newContext({userAgent:b.userAgent||"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36",locale:b.locale||"en-US",timezoneId:b.timezone||"America/New_York",viewport:{width:1280,height:800},...f?{proxy:f}:{},...b.storageState?{storageState:b.storageState}:{}});await H(g,b);let h=await I(g,b.warmupUrl);if(y(d)!==a)throw await g.close().catch(()=>{}),h&&await h.close().catch(()=>{}),Error("Pool shut down during context creation");let i={id:e,context:g,warmupPage:h,lastUsed:Date.now(),isStealth:c};return v.contexts.set(e,i),v.metrics.contextsCreated++,v.lastActivity=Date.now(),x(),v.evictTimer&&clearInterval(v.evictTimer),v.evictTimer=setInterval(()=>(function(){let a=Date.now();for(let[b,c]of v.contexts)a-c.lastUsed>6e5&&(console.log("[BrowserPool] Evicted stale context","(idle",((a-c.lastUsed)/1e3).toFixed(0)+"s)"),v.contexts.delete(b),v.metrics.contextsEvicted++,c.context.close().catch(()=>{}));for(let[b,c]of v.pendingContexts)a-c.createdAt>3e5&&(v.pendingContexts.delete(b),v.metrics.contextsEvicted++);0!==v.contexts.size||0!==v.pendingContexts.size||v.launching||v.headedLaunching||M("all-contexts-evicted")})(),6e4),v.evictTimer.unref?.(),i})();return v.pendingContexts.set(e,{promise:h,createdAt:Date.now()}),h.then(()=>G(e,!1)).catch(()=>G(e,!0)),h}async function K(a){return a.context.newPage()}async function L(a){let b=[a,`headless:${a}`,`headed:${a}`].find(a=>v.contexts.has(a));if(!b)return;let c=v.contexts.get(b);if(c){v.contexts.delete(b),v.metrics.contextsReleased++;try{await c.context.close()}catch{}0===v.contexts.size&&await M("last-context-closed")}}async function M(a){for(let[b,c]of(v.generation++,v.metrics.shutdowns++,v.metrics.lastShutdownReason=a,v.idleTimer&&(clearTimeout(v.idleTimer),v.idleTimer=null),v.evictTimer&&(clearInterval(v.evictTimer),v.evictTimer=null),v.pendingContexts.clear(),v.contexts)){try{await c.context.close()}catch{}v.contexts.delete(b)}if(v.browser){try{await v.browser.close()}catch{}v.browser=null}if(v.headedBrowser){try{await v.headedBrowser.close()}catch{}v.headedBrowser=null}v.launching=null,v.headedLaunching=null,s(),v.engine=null,v.lastActivity=Date.now()}},83243:(a,b,c)=>{c.d(b,{M:()=>h});var d=c(96179),e=c(8521);let f=/insufficient|balance|credit|quota|exhaust|limit|余额|积分|额度|不足|用完|上限/i;async function g(a){let b=a?.status;if(!a||402!==b&&403!==b&&429!==b)return a;let c=await a.text().catch(()=>"");if(429===b||!f.test(c)){let d=new Headers(a.headers);return d.delete("content-length"),d.delete("content-encoding"),new Response(c,{status:b,statusText:a.statusText,headers:d})}let d=c.trim();try{let a=JSON.parse(c);d=a?.error?.message??a?.message??a?.msg??a?.base_resp?.status_msg??d}catch{}let e=new Headers(a.headers);return e.delete("content-length"),e.delete("content-encoding"),e.set("content-type","application/json"),new Response(JSON.stringify({type:"error",error:{type:"rate_limit_error",message:`usage limit reached: ${d}`}}),{status:429,statusText:"Too Many Requests",headers:e})}class h extends d.L{async execute(a){let b=await super.execute(a);return b?.response?{...b,response:await g(b.response)}:b}async refreshCredentials(a,b){return a?.refreshToken?(0,e.rE)(this.provider,a.refreshToken,b):null}}},85308:(a,b,c)=>{c.d(b,{A:()=>j});var d=c(74957),e=c(39609),f=c(49426),g=c(41004),h=c(12643);let i=parseInt(process.env.TRAE_STREAM_TIMEOUT_MS||"300000",10);class j extends d.H{constructor(a="trae"){super(a,h.xq[a]),this.isEnterprise="trae-enterprise"===a}base(){let a=this.config?.baseUrl;if(a)return a.replace(/\/$/,"");if(!this.isEnterprise)return"https://core-normal.trae.ai/api/remote/v1";throw Error(`Trae provider "${this.provider}" has no transport baseUrl`)}buildHeaders(a,b=!0){let c=a?.providerSpecificData||{};return{...this.config?.headers||{},Authorization:`Cloud-IDE-JWT ${a?.accessToken||""}`,"Content-Type":"application/json","X-Preferenced-Language":c.appLanguage||"en","x-user-region":c.userRegion||"US","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36",Accept:b?"text/event-stream":"application/json"}}resolveMode(a){let b=(a||"").trim().toLowerCase(),c="work"===b||"auto-work"===b||"solo-work"===b;if(c&&!this.isEnterprise)return{mode:"work",strategy:"auto",modelName:""};let d=!b||"auto"===b||c;return{mode:"code",strategy:d?"auto":"manual",modelName:d?"":a}}commonParams(a,b,c,d){let e=function(a){let b=String(a||"").split(".");if(3!==b.length)return{};try{let a=JSON.parse(Buffer.from(b[1],"base64url").toString());return a?.data||{}}catch{return{}}}(d),f=this.isEnterprise,g={language:"en-us",app_language:a.appLanguage||"en",quality:"stable",app_version:a.appVersion||(f?"3.5.54":"1.0.0.1229"),web_id:a.webId||"",user_identity:a.userIdentity||(f?"member":"Free"),is_freshman:"0",biz_user_id:a.bizUserId||"",user_unique_id:a.userUniqueId||e.user_id||"",scope:a.scope||(f?e.scope||"saas":"marscode-us"),tenant:a.tenant||(f?e.tenant_id||"tob_online":"marscode"),region:a.region||(f?"cn-beijing":"US-East"),aiRegion:a.aiRegion||a.region||(f?"cn-beijing":"US-East"),is_privacy_mode:0,privacy_mode:"off",solo_chat_mode:b};return c&&(g.biz_session_id=c),JSON.stringify(g)}async createSession(a,b,c,d,h,i,j){let k,{mode:l,strategy:m,modelName:n}=this.resolveMode(c),o={mode:l,environment_id:"default",initial_message:{chat_session_id:"",content:[],query:b,model_name:n,agent_type:"solo_agent_remote",model_selection_strategy:m,common_params:this.commonParams(d,l,null,i)},env:"remote",auto_create_project:!1,origin:"web"},p=(0,f.n)(h,this.config?.timeoutMs||g.pH);try{k=await (0,e.proxyAwareFetch)(`${this.base()}/chat_sessions`,{method:"POST",headers:a,body:JSON.stringify(o),signal:p.signal},j||null)}catch(a){throw p.settleError(a)}finally{p.clear()}let q=await k.text();if(!k.ok)throw Error(`[${k.status}] ${q}`);let r=JSON.parse(q);if(r?.code!==0)throw Error(`Trae create_session: ${JSON.stringify(r)}`);return{sessionId:r.data.chat_session_id,messageId:r.data.message_id}}async streamEvents(a,b,c,d,f,g){let h=`${this.base()}/chat_sessions/${b}/events?reply_to_message_id=${encodeURIComponent(c)}`,j=new AbortController;f?.aborted&&j.abort();let k=setTimeout(()=>j.abort(Error("trae stream timeout")),i),l=()=>j.abort();f&&f.addEventListener("abort",l,{once:!0});try{let b=await (0,e.proxyAwareFetch)(h,{method:"GET",headers:a,signal:j.signal},g||null);if(!b.ok||!b.body)throw Error(`[${b.status}] events stream failed`);let c=b.body.getReader(),f=new TextDecoder,i="",k=null;for(;;){let a,{done:b,value:e}=await c.read();if(b)break;for(i+=f.decode(e,{stream:!0});(a=i.indexOf("\n"))>=0;){let b=i.slice(0,a).replace(/\r$/,"");if(i=i.slice(a+1),b.startsWith("event:"))k=b.slice(6).trim();else if(b.startsWith("data:")){let a,e=b.slice(5).trim();try{a=JSON.parse(e)}catch{a={_raw:e}}if(d(k,a))return void await c.cancel().catch(()=>{})}else""===b&&(k=null)}}}finally{clearTimeout(k),f&&f.removeEventListener("abort",l)}}async execute({model:a,body:b,stream:c,credentials:d,signal:e}){let f,g=d?.providerSpecificData||{},h=d?.proxyOptions||null,i=function(a){let b=[];for(let c of a){let a="";"string"==typeof c.content?a=c.content:Array.isArray(c.content)&&(a=c.content.map(a=>"string"==typeof a?a:a&&"object"==typeof a?String(a.text??""):"").join("")),"system"===c.role?b.push(`[System]
307
274
  ${a}`):"assistant"===c.role?b.push(`[Assistant]
308
275
  ${a}`):b.push(a)}return JSON.stringify([{type:"text",data:{content:b.join("\n\n")}}])}(b?.messages||[]),j=`chatcmpl-${this.provider}-${Date.now()}`,k=Math.floor(Date.now()/1e3),l=(a,b)=>new Response(JSON.stringify({error:{message:b,type:"api_error",code:""}}),{status:a,headers:{"Content-Type":"application/json"}}),m=d?.accessToken||"";if(!m)return{response:l(401,`${this.provider}: no Cloud-IDE-JWT — reconnect this provider`),url:this.base(),headers:{},transformedBody:b};let n=this.buildHeaders({...d,accessToken:m},!1!==c);try{f=await this.createSession(n,i,a,g,e,m,h)}catch(a){return{response:l(502,a?.message?String(a.message):String(a)),url:this.base(),headers:n,transformedBody:b}}let o=[],p={},q=0,r=null,s=null,t="",u=a=>{a.tool_call_info?.name==="finish"&&(t=a.tool_call_info?.params?.summary||t);let b=a.id;if(!b)return"";b in p||o.push(b);let c=a.thought||"";c.length>=(p[b]||"").length&&(p[b]=c);let d=o.map(a=>p[a]).join(""),e=d.slice(q);return q=d.length,e},v=()=>{let a=o.map(a=>p[a]).join("");return t.startsWith(a)&&t.length>a.length?t.slice(a.length):""};if(!1!==c){let c=new TextEncoder;return{response:new Response(new ReadableStream({start:async b=>{let d=a=>b.enqueue(c.encode(`data: ${JSON.stringify(a)}
309
276