miawrouter 1.2.3 → 1.2.4

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 (640) hide show
  1. package/README.md +7 -0
  2. package/app/.next-cli-build/BUILD_ID +1 -1
  3. package/app/.next-cli-build/app-path-routes-manifest.json +9 -9
  4. package/app/.next-cli-build/build-manifest.json +2 -2
  5. package/app/.next-cli-build/prerender-manifest.json +3 -3
  6. package/app/.next-cli-build/server/app/(dashboard)/dashboard/a2a/page.js.nft.json +1 -1
  7. package/app/.next-cli-build/server/app/(dashboard)/dashboard/a2a/page_client-reference-manifest.js +1 -1
  8. package/app/.next-cli-build/server/app/(dashboard)/dashboard/activity/page.js.nft.json +1 -1
  9. package/app/.next-cli-build/server/app/(dashboard)/dashboard/activity/page_client-reference-manifest.js +1 -1
  10. package/app/.next-cli-build/server/app/(dashboard)/dashboard/agent-skills/page.js.nft.json +1 -1
  11. package/app/.next-cli-build/server/app/(dashboard)/dashboard/agent-skills/page_client-reference-manifest.js +1 -1
  12. package/app/.next-cli-build/server/app/(dashboard)/dashboard/api-endpoints/page.js.nft.json +1 -1
  13. package/app/.next-cli-build/server/app/(dashboard)/dashboard/api-endpoints/page_client-reference-manifest.js +1 -1
  14. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
  15. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  16. package/app/.next-cli-build/server/app/(dashboard)/dashboard/batch/page.js.nft.json +1 -1
  17. package/app/.next-cli-build/server/app/(dashboard)/dashboard/batch/page_client-reference-manifest.js +1 -1
  18. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cache/page.js.nft.json +1 -1
  19. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cache/page_client-reference-manifest.js +1 -1
  20. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  21. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  22. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js +1 -1
  23. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  24. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  25. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cloud-agents/page.js.nft.json +1 -1
  26. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cloud-agents/page_client-reference-manifest.js +1 -1
  27. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  28. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  29. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
  30. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  31. package/app/.next-cli-build/server/app/(dashboard)/dashboard/costs/page.js.nft.json +1 -1
  32. package/app/.next-cli-build/server/app/(dashboard)/dashboard/costs/page_client-reference-manifest.js +1 -1
  33. package/app/.next-cli-build/server/app/(dashboard)/dashboard/discovery/page.js.nft.json +1 -1
  34. package/app/.next-cli-build/server/app/(dashboard)/dashboard/discovery/page_client-reference-manifest.js +1 -1
  35. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  36. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  37. package/app/.next-cli-build/server/app/(dashboard)/dashboard/free-provider-rankings/page.js.nft.json +1 -1
  38. package/app/.next-cli-build/server/app/(dashboard)/dashboard/free-provider-rankings/page_client-reference-manifest.js +1 -1
  39. package/app/.next-cli-build/server/app/(dashboard)/dashboard/free-tiers/page.js.nft.json +1 -1
  40. package/app/.next-cli-build/server/app/(dashboard)/dashboard/free-tiers/page_client-reference-manifest.js +1 -1
  41. package/app/.next-cli-build/server/app/(dashboard)/dashboard/guardrails/page.js.nft.json +1 -1
  42. package/app/.next-cli-build/server/app/(dashboard)/dashboard/guardrails/page_client-reference-manifest.js +1 -1
  43. package/app/.next-cli-build/server/app/(dashboard)/dashboard/health/page.js.nft.json +1 -1
  44. package/app/.next-cli-build/server/app/(dashboard)/dashboard/health/page_client-reference-manifest.js +1 -1
  45. package/app/.next-cli-build/server/app/(dashboard)/dashboard/logs/page.js.nft.json +1 -1
  46. package/app/.next-cli-build/server/app/(dashboard)/dashboard/logs/page_client-reference-manifest.js +1 -1
  47. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mcp/page.js.nft.json +1 -1
  48. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mcp/page_client-reference-manifest.js +1 -1
  49. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
  50. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  51. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
  52. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  53. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
  54. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  55. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
  56. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  57. package/app/.next-cli-build/server/app/(dashboard)/dashboard/memory/page.js.nft.json +1 -1
  58. package/app/.next-cli-build/server/app/(dashboard)/dashboard/memory/page_client-reference-manifest.js +1 -1
  59. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
  60. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  61. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  62. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  63. package/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page.js.nft.json +1 -1
  64. package/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
  65. package/app/.next-cli-build/server/app/(dashboard)/dashboard/privacy/page.js.nft.json +1 -1
  66. package/app/.next-cli-build/server/app/(dashboard)/dashboard/privacy/page_client-reference-manifest.js +1 -1
  67. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  68. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  69. package/app/.next-cli-build/server/app/(dashboard)/dashboard/provider-stats/page.js.nft.json +1 -1
  70. package/app/.next-cli-build/server/app/(dashboard)/dashboard/provider-stats/page_client-reference-manifest.js +1 -1
  71. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  72. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  73. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  74. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  75. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  76. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  77. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
  78. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  79. package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js.nft.json +1 -1
  80. package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
  81. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  82. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  83. package/app/.next-cli-build/server/app/(dashboard)/dashboard/runtime/page.js.nft.json +1 -1
  84. package/app/.next-cli-build/server/app/(dashboard)/dashboard/runtime/page_client-reference-manifest.js +1 -1
  85. package/app/.next-cli-build/server/app/(dashboard)/dashboard/settings/feature-flags/page.js.nft.json +1 -1
  86. package/app/.next-cli-build/server/app/(dashboard)/dashboard/settings/feature-flags/page_client-reference-manifest.js +1 -1
  87. package/app/.next-cli-build/server/app/(dashboard)/dashboard/settings/pricing/page.js.nft.json +1 -1
  88. package/app/.next-cli-build/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  89. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skill-discovery/page.js.nft.json +1 -1
  90. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skill-discovery/page_client-reference-manifest.js +1 -1
  91. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js.nft.json +1 -1
  92. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  93. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js.nft.json +1 -1
  94. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  95. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  96. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  97. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  98. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  99. package/app/.next-cli-build/server/app/(dashboard)/dashboard/webhooks/page.js.nft.json +1 -1
  100. package/app/.next-cli-build/server/app/(dashboard)/dashboard/webhooks/page_client-reference-manifest.js +1 -1
  101. package/app/.next-cli-build/server/app/.well-known/agent.json/route.js.nft.json +1 -1
  102. package/app/.next-cli-build/server/app/_global-error/page.js.nft.json +1 -1
  103. package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  104. package/app/.next-cli-build/server/app/_global-error.html +1 -1
  105. package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  106. package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  107. package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  108. package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  109. package/app/.next-cli-build/server/app/_not-found/page.js.nft.json +1 -1
  110. package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  111. package/app/.next-cli-build/server/app/_not-found.html +1 -1
  112. package/app/.next-cli-build/server/app/_not-found.rsc +5 -5
  113. package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +5 -5
  114. package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +5 -5
  115. package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  116. package/app/.next-cli-build/server/app/api/a2a/route.js.nft.json +1 -1
  117. package/app/.next-cli-build/server/app/api/a2a/status/route.js.nft.json +1 -1
  118. package/app/.next-cli-build/server/app/api/agents/[id]/actions/route.js +1 -1
  119. package/app/.next-cli-build/server/app/api/agents/[id]/actions/route.js.nft.json +1 -1
  120. package/app/.next-cli-build/server/app/api/agents/route.js +1 -1
  121. package/app/.next-cli-build/server/app/api/agents/route.js.nft.json +1 -1
  122. package/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
  123. package/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
  124. package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
  125. package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
  126. package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
  127. package/app/.next-cli-build/server/app/api/auth/reset-password/route.js.nft.json +1 -1
  128. package/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
  129. package/app/.next-cli-build/server/app/api/batch/[id]/route.js.nft.json +1 -1
  130. package/app/.next-cli-build/server/app/api/batch/route.js.nft.json +1 -1
  131. package/app/.next-cli-build/server/app/api/batches/[id]/cancel/route.js.nft.json +1 -1
  132. package/app/.next-cli-build/server/app/api/batches/[id]/errors/route.js.nft.json +1 -1
  133. package/app/.next-cli-build/server/app/api/batches/[id]/results/route.js.nft.json +1 -1
  134. package/app/.next-cli-build/server/app/api/batches/[id]/retry/route.js.nft.json +1 -1
  135. package/app/.next-cli-build/server/app/api/batches/[id]/route.js.nft.json +1 -1
  136. package/app/.next-cli-build/server/app/api/batches/route.js.nft.json +1 -1
  137. package/app/.next-cli-build/server/app/api/cache/clear/route.js.nft.json +1 -1
  138. package/app/.next-cli-build/server/app/api/cache/stats/route.js.nft.json +1 -1
  139. package/app/.next-cli-build/server/app/api/catalog/opencode/route.js.nft.json +1 -1
  140. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +5 -5
  141. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  142. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
  143. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  144. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  145. package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js +1 -1
  146. package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
  147. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +2 -2
  148. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
  149. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +1 -1
  150. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  151. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js +2 -2
  152. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
  153. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +2 -2
  154. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
  155. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +1 -1
  156. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
  157. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +1 -1
  158. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  159. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +3 -3
  160. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
  161. package/app/.next-cli-build/server/app/api/cli-tools/devin-settings/route.js +1 -1
  162. package/app/.next-cli-build/server/app/api/cli-tools/devin-settings/route.js.nft.json +1 -1
  163. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +1 -1
  164. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
  165. package/app/.next-cli-build/server/app/api/cli-tools/grok-build-settings/route.js +2 -2
  166. package/app/.next-cli-build/server/app/api/cli-tools/grok-build-settings/route.js.nft.json +1 -1
  167. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +2 -2
  168. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
  169. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +2 -2
  170. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
  171. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +2 -2
  172. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
  173. package/app/.next-cli-build/server/app/api/cli-tools/oh-my-pi-settings/route.js +2 -2
  174. package/app/.next-cli-build/server/app/api/cli-tools/oh-my-pi-settings/route.js.nft.json +1 -1
  175. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
  176. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
  177. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +2 -2
  178. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
  179. package/app/.next-cli-build/server/app/api/cli-tools/subagents/route.js +1 -1
  180. package/app/.next-cli-build/server/app/api/cli-tools/subagents/route.js.nft.json +1 -1
  181. package/app/.next-cli-build/server/app/api/cloud-agents/status/route.js +1 -1
  182. package/app/.next-cli-build/server/app/api/cloud-agents/status/route.js.nft.json +1 -1
  183. package/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
  184. package/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
  185. package/app/.next-cli-build/server/app/api/dashboard/chat/completions/route.js.nft.json +1 -1
  186. package/app/.next-cli-build/server/app/api/discovery/endpoints/route.js +1 -1
  187. package/app/.next-cli-build/server/app/api/discovery/endpoints/route.js.nft.json +1 -1
  188. package/app/.next-cli-build/server/app/api/discovery/route.js +1 -1
  189. package/app/.next-cli-build/server/app/api/discovery/route.js.nft.json +1 -1
  190. package/app/.next-cli-build/server/app/api/discovery/skills/route.js +1 -1
  191. package/app/.next-cli-build/server/app/api/discovery/skills/route.js.nft.json +1 -1
  192. package/app/.next-cli-build/server/app/api/events/route.js.nft.json +1 -1
  193. package/app/.next-cli-build/server/app/api/headroom/extras/route.js.nft.json +1 -1
  194. package/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js.nft.json +1 -1
  195. package/app/.next-cli-build/server/app/api/headroom/restart/route.js.nft.json +1 -1
  196. package/app/.next-cli-build/server/app/api/headroom/start/route.js.nft.json +1 -1
  197. package/app/.next-cli-build/server/app/api/headroom/status/route.js.nft.json +1 -1
  198. package/app/.next-cli-build/server/app/api/headroom/stop/route.js.nft.json +1 -1
  199. package/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -1
  200. package/app/.next-cli-build/server/app/api/hermes/autonomy/route.js.nft.json +1 -1
  201. package/app/.next-cli-build/server/app/api/init/route.js.nft.json +1 -1
  202. package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
  203. package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
  204. package/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
  205. package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
  206. package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
  207. package/app/.next-cli-build/server/app/api/mcp/route.js +1 -1
  208. package/app/.next-cli-build/server/app/api/mcp/route.js.nft.json +1 -1
  209. package/app/.next-cli-build/server/app/api/mcp/status/route.js.nft.json +1 -1
  210. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  211. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  212. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  213. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  214. package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
  215. package/app/.next-cli-build/server/app/api/memory/[id]/route.js.nft.json +1 -1
  216. package/app/.next-cli-build/server/app/api/memory/health/route.js.nft.json +1 -1
  217. package/app/.next-cli-build/server/app/api/memory/reindex/route.js.nft.json +1 -1
  218. package/app/.next-cli-build/server/app/api/memory/route.js.nft.json +1 -1
  219. package/app/.next-cli-build/server/app/api/memory/search/route.js.nft.json +1 -1
  220. package/app/.next-cli-build/server/app/api/metrics/route.js.nft.json +1 -1
  221. package/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
  222. package/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
  223. package/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
  224. package/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
  225. package/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
  226. package/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
  227. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  228. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  229. package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js +1 -1
  230. package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js.nft.json +1 -1
  231. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -1
  232. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  233. package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  234. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  235. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  236. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  237. package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js.nft.json +1 -1
  238. package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
  239. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  240. package/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js.nft.json +1 -1
  241. package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
  242. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  243. package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
  244. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  245. package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
  246. package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
  247. package/app/.next-cli-build/server/app/api/providers/[id]/export/route.js.nft.json +1 -1
  248. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  249. package/app/.next-cli-build/server/app/api/providers/[id]/onboard/route.js +1 -1
  250. package/app/.next-cli-build/server/app/api/providers/[id]/onboard/route.js.nft.json +1 -1
  251. package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
  252. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  253. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  254. package/app/.next-cli-build/server/app/api/providers/client/route.js +1 -1
  255. package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
  256. package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
  257. package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
  258. package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
  259. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  260. package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
  261. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
  262. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
  263. package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
  264. package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
  265. package/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
  266. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js +1 -1
  267. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
  268. package/app/.next-cli-build/server/app/api/pxpipe/health/route.js.nft.json +1 -1
  269. package/app/.next-cli-build/server/app/api/pxpipe/install/route.js.nft.json +1 -1
  270. package/app/.next-cli-build/server/app/api/pxpipe/logs/route.js.nft.json +1 -1
  271. package/app/.next-cli-build/server/app/api/pxpipe/restart/route.js.nft.json +1 -1
  272. package/app/.next-cli-build/server/app/api/pxpipe/start/route.js.nft.json +1 -1
  273. package/app/.next-cli-build/server/app/api/pxpipe/stats/route.js.nft.json +1 -1
  274. package/app/.next-cli-build/server/app/api/pxpipe/status/route.js.nft.json +1 -1
  275. package/app/.next-cli-build/server/app/api/pxpipe/stop/route.js.nft.json +1 -1
  276. package/app/.next-cli-build/server/app/api/saver/stats/route.js.nft.json +1 -1
  277. package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
  278. package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
  279. package/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
  280. package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
  281. package/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -1
  282. package/app/.next-cli-build/server/app/api/skill-discovery/[id]/install/route.js.nft.json +1 -1
  283. package/app/.next-cli-build/server/app/api/skill-discovery/[id]/route.js.nft.json +1 -1
  284. package/app/.next-cli-build/server/app/api/skill-discovery/[id]/uninstall/route.js.nft.json +1 -1
  285. package/app/.next-cli-build/server/app/api/skill-discovery/route.js.nft.json +1 -1
  286. package/app/.next-cli-build/server/app/api/skill-discovery/sync/route.js.nft.json +1 -1
  287. package/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
  288. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js.nft.json +1 -1
  289. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
  290. package/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -1
  291. package/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
  292. package/app/.next-cli-build/server/app/api/translator/send/route.js +1 -1
  293. package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
  294. package/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -1
  295. package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
  296. package/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  297. package/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  298. package/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
  299. package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  300. package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  301. package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  302. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js +2 -2
  303. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  304. package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js +1 -1
  305. package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js.nft.json +1 -1
  306. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -1
  307. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  308. package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
  309. package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
  310. package/app/.next-cli-build/server/app/api/usage/local-snapshot/route.js +1 -1
  311. package/app/.next-cli-build/server/app/api/usage/local-snapshot/route.js.nft.json +1 -1
  312. package/app/.next-cli-build/server/app/api/usage/logs/route.js.nft.json +1 -1
  313. package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
  314. package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
  315. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  316. package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
  317. package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
  318. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  319. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  320. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  321. package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
  322. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  323. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
  324. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  325. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js +1 -1
  326. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  327. package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
  328. package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
  329. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  330. package/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -1
  331. package/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
  332. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  333. package/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
  334. package/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
  335. package/app/.next-cli-build/server/app/api/v1/search/route.js +1 -1
  336. package/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
  337. package/app/.next-cli-build/server/app/api/v1/videos/[id]/route.js.nft.json +1 -1
  338. package/app/.next-cli-build/server/app/api/v1/videos/edits/route.js.nft.json +1 -1
  339. package/app/.next-cli-build/server/app/api/v1/videos/extensions/route.js.nft.json +1 -1
  340. package/app/.next-cli-build/server/app/api/v1/videos/generations/route.js.nft.json +1 -1
  341. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
  342. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  343. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +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.nft.json +1 -1
  348. package/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
  349. package/app/.next-cli-build/server/app/api/webhooks/[id]/route.js.nft.json +1 -1
  350. package/app/.next-cli-build/server/app/api/webhooks/events/route.js.nft.json +1 -1
  351. package/app/.next-cli-build/server/app/api/webhooks/route.js.nft.json +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 +5 -5
  356. package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +5 -5
  357. package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +2 -2
  358. package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +5 -5
  359. package/app/.next-cli-build/server/app/dashboard/a2a.html +1 -1
  360. package/app/.next-cli-build/server/app/dashboard/a2a.rsc +7 -7
  361. package/app/.next-cli-build/server/app/dashboard/a2a.segments/!KGRhc2hib2FyZCk/dashboard/a2a/__PAGE__.segment.rsc +7 -7
  362. package/app/.next-cli-build/server/app/dashboard/a2a.segments/_full.segment.rsc +7 -7
  363. package/app/.next-cli-build/server/app/dashboard/a2a.segments/_tree.segment.rsc +2 -2
  364. package/app/.next-cli-build/server/app/dashboard/activity.html +1 -1
  365. package/app/.next-cli-build/server/app/dashboard/activity.rsc +7 -7
  366. package/app/.next-cli-build/server/app/dashboard/activity.segments/!KGRhc2hib2FyZCk/dashboard/activity/__PAGE__.segment.rsc +7 -7
  367. package/app/.next-cli-build/server/app/dashboard/activity.segments/_full.segment.rsc +7 -7
  368. package/app/.next-cli-build/server/app/dashboard/activity.segments/_tree.segment.rsc +2 -2
  369. package/app/.next-cli-build/server/app/dashboard/agent-skills.html +1 -1
  370. package/app/.next-cli-build/server/app/dashboard/agent-skills.rsc +7 -7
  371. package/app/.next-cli-build/server/app/dashboard/agent-skills.segments/!KGRhc2hib2FyZCk/dashboard/agent-skills/__PAGE__.segment.rsc +7 -7
  372. package/app/.next-cli-build/server/app/dashboard/agent-skills.segments/_full.segment.rsc +7 -7
  373. package/app/.next-cli-build/server/app/dashboard/agent-skills.segments/_tree.segment.rsc +2 -2
  374. package/app/.next-cli-build/server/app/dashboard/api-endpoints.html +1 -1
  375. package/app/.next-cli-build/server/app/dashboard/api-endpoints.rsc +7 -7
  376. package/app/.next-cli-build/server/app/dashboard/api-endpoints.segments/!KGRhc2hib2FyZCk/dashboard/api-endpoints/__PAGE__.segment.rsc +7 -7
  377. package/app/.next-cli-build/server/app/dashboard/api-endpoints.segments/_full.segment.rsc +7 -7
  378. package/app/.next-cli-build/server/app/dashboard/api-endpoints.segments/_tree.segment.rsc +2 -2
  379. package/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
  380. package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +7 -7
  381. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +7 -7
  382. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +7 -7
  383. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +2 -2
  384. package/app/.next-cli-build/server/app/dashboard/batch.html +1 -1
  385. package/app/.next-cli-build/server/app/dashboard/batch.rsc +7 -7
  386. package/app/.next-cli-build/server/app/dashboard/batch.segments/!KGRhc2hib2FyZCk/dashboard/batch/__PAGE__.segment.rsc +7 -7
  387. package/app/.next-cli-build/server/app/dashboard/batch.segments/_full.segment.rsc +7 -7
  388. package/app/.next-cli-build/server/app/dashboard/batch.segments/_tree.segment.rsc +2 -2
  389. package/app/.next-cli-build/server/app/dashboard/cache.html +1 -1
  390. package/app/.next-cli-build/server/app/dashboard/cache.rsc +7 -7
  391. package/app/.next-cli-build/server/app/dashboard/cache.segments/!KGRhc2hib2FyZCk/dashboard/cache/__PAGE__.segment.rsc +7 -7
  392. package/app/.next-cli-build/server/app/dashboard/cache.segments/_full.segment.rsc +7 -7
  393. package/app/.next-cli-build/server/app/dashboard/cache.segments/_tree.segment.rsc +2 -2
  394. package/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
  395. package/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +7 -7
  396. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +7 -7
  397. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +7 -7
  398. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
  399. package/app/.next-cli-build/server/app/dashboard/cloud-agents.html +1 -1
  400. package/app/.next-cli-build/server/app/dashboard/cloud-agents.rsc +7 -7
  401. package/app/.next-cli-build/server/app/dashboard/cloud-agents.segments/!KGRhc2hib2FyZCk/dashboard/cloud-agents/__PAGE__.segment.rsc +7 -7
  402. package/app/.next-cli-build/server/app/dashboard/cloud-agents.segments/_full.segment.rsc +7 -7
  403. package/app/.next-cli-build/server/app/dashboard/cloud-agents.segments/_tree.segment.rsc +2 -2
  404. package/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
  405. package/app/.next-cli-build/server/app/dashboard/combos.rsc +7 -7
  406. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +7 -7
  407. package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +7 -7
  408. package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
  409. package/app/.next-cli-build/server/app/dashboard/costs.html +1 -1
  410. package/app/.next-cli-build/server/app/dashboard/costs.rsc +7 -7
  411. package/app/.next-cli-build/server/app/dashboard/costs.segments/!KGRhc2hib2FyZCk/dashboard/costs/__PAGE__.segment.rsc +7 -7
  412. package/app/.next-cli-build/server/app/dashboard/costs.segments/_full.segment.rsc +7 -7
  413. package/app/.next-cli-build/server/app/dashboard/costs.segments/_tree.segment.rsc +2 -2
  414. package/app/.next-cli-build/server/app/dashboard/discovery.html +1 -1
  415. package/app/.next-cli-build/server/app/dashboard/discovery.rsc +7 -7
  416. package/app/.next-cli-build/server/app/dashboard/discovery.segments/!KGRhc2hib2FyZCk/dashboard/discovery/__PAGE__.segment.rsc +7 -7
  417. package/app/.next-cli-build/server/app/dashboard/discovery.segments/_full.segment.rsc +7 -7
  418. package/app/.next-cli-build/server/app/dashboard/discovery.segments/_tree.segment.rsc +2 -2
  419. package/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  420. package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +7 -7
  421. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +7 -7
  422. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +7 -7
  423. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
  424. package/app/.next-cli-build/server/app/dashboard/free-provider-rankings.html +1 -1
  425. package/app/.next-cli-build/server/app/dashboard/free-provider-rankings.rsc +7 -7
  426. package/app/.next-cli-build/server/app/dashboard/free-provider-rankings.segments/!KGRhc2hib2FyZCk/dashboard/free-provider-rankings/__PAGE__.segment.rsc +7 -7
  427. package/app/.next-cli-build/server/app/dashboard/free-provider-rankings.segments/_full.segment.rsc +7 -7
  428. package/app/.next-cli-build/server/app/dashboard/free-provider-rankings.segments/_tree.segment.rsc +2 -2
  429. package/app/.next-cli-build/server/app/dashboard/free-tiers.html +1 -1
  430. package/app/.next-cli-build/server/app/dashboard/free-tiers.rsc +7 -7
  431. package/app/.next-cli-build/server/app/dashboard/free-tiers.segments/!KGRhc2hib2FyZCk/dashboard/free-tiers/__PAGE__.segment.rsc +7 -7
  432. package/app/.next-cli-build/server/app/dashboard/free-tiers.segments/_full.segment.rsc +7 -7
  433. package/app/.next-cli-build/server/app/dashboard/free-tiers.segments/_tree.segment.rsc +2 -2
  434. package/app/.next-cli-build/server/app/dashboard/guardrails.html +1 -1
  435. package/app/.next-cli-build/server/app/dashboard/guardrails.rsc +7 -7
  436. package/app/.next-cli-build/server/app/dashboard/guardrails.segments/!KGRhc2hib2FyZCk/dashboard/guardrails/__PAGE__.segment.rsc +7 -7
  437. package/app/.next-cli-build/server/app/dashboard/guardrails.segments/_full.segment.rsc +7 -7
  438. package/app/.next-cli-build/server/app/dashboard/guardrails.segments/_tree.segment.rsc +2 -2
  439. package/app/.next-cli-build/server/app/dashboard/health.html +1 -1
  440. package/app/.next-cli-build/server/app/dashboard/health.rsc +7 -7
  441. package/app/.next-cli-build/server/app/dashboard/health.segments/!KGRhc2hib2FyZCk/dashboard/health/__PAGE__.segment.rsc +7 -7
  442. package/app/.next-cli-build/server/app/dashboard/health.segments/_full.segment.rsc +7 -7
  443. package/app/.next-cli-build/server/app/dashboard/health.segments/_tree.segment.rsc +2 -2
  444. package/app/.next-cli-build/server/app/dashboard/logs.html +1 -1
  445. package/app/.next-cli-build/server/app/dashboard/logs.rsc +7 -7
  446. package/app/.next-cli-build/server/app/dashboard/logs.segments/!KGRhc2hib2FyZCk/dashboard/logs/__PAGE__.segment.rsc +7 -7
  447. package/app/.next-cli-build/server/app/dashboard/logs.segments/_full.segment.rsc +7 -7
  448. package/app/.next-cli-build/server/app/dashboard/logs.segments/_tree.segment.rsc +2 -2
  449. package/app/.next-cli-build/server/app/dashboard/mcp.html +1 -1
  450. package/app/.next-cli-build/server/app/dashboard/mcp.rsc +7 -7
  451. package/app/.next-cli-build/server/app/dashboard/mcp.segments/!KGRhc2hib2FyZCk/dashboard/mcp/__PAGE__.segment.rsc +7 -7
  452. package/app/.next-cli-build/server/app/dashboard/mcp.segments/_full.segment.rsc +7 -7
  453. package/app/.next-cli-build/server/app/dashboard/mcp.segments/_tree.segment.rsc +2 -2
  454. package/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
  455. package/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +7 -7
  456. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +7 -7
  457. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +7 -7
  458. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +2 -2
  459. package/app/.next-cli-build/server/app/dashboard/memory.html +1 -1
  460. package/app/.next-cli-build/server/app/dashboard/memory.rsc +7 -7
  461. package/app/.next-cli-build/server/app/dashboard/memory.segments/!KGRhc2hib2FyZCk/dashboard/memory/__PAGE__.segment.rsc +7 -7
  462. package/app/.next-cli-build/server/app/dashboard/memory.segments/_full.segment.rsc +7 -7
  463. package/app/.next-cli-build/server/app/dashboard/memory.segments/_tree.segment.rsc +2 -2
  464. package/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
  465. package/app/.next-cli-build/server/app/dashboard/mitm.rsc +7 -7
  466. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +7 -7
  467. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +7 -7
  468. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +2 -2
  469. package/app/.next-cli-build/server/app/dashboard/playground.html +1 -1
  470. package/app/.next-cli-build/server/app/dashboard/playground.rsc +7 -7
  471. package/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground/__PAGE__.segment.rsc +7 -7
  472. package/app/.next-cli-build/server/app/dashboard/playground.segments/_full.segment.rsc +7 -7
  473. package/app/.next-cli-build/server/app/dashboard/playground.segments/_tree.segment.rsc +2 -2
  474. package/app/.next-cli-build/server/app/dashboard/privacy.html +1 -1
  475. package/app/.next-cli-build/server/app/dashboard/privacy.rsc +7 -7
  476. package/app/.next-cli-build/server/app/dashboard/privacy.segments/!KGRhc2hib2FyZCk/dashboard/privacy/__PAGE__.segment.rsc +7 -7
  477. package/app/.next-cli-build/server/app/dashboard/privacy.segments/_full.segment.rsc +7 -7
  478. package/app/.next-cli-build/server/app/dashboard/privacy.segments/_tree.segment.rsc +2 -2
  479. package/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  480. package/app/.next-cli-build/server/app/dashboard/profile.rsc +7 -7
  481. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +7 -7
  482. package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +7 -7
  483. package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
  484. package/app/.next-cli-build/server/app/dashboard/provider-stats.html +1 -1
  485. package/app/.next-cli-build/server/app/dashboard/provider-stats.rsc +7 -7
  486. package/app/.next-cli-build/server/app/dashboard/provider-stats.segments/!KGRhc2hib2FyZCk/dashboard/provider-stats/__PAGE__.segment.rsc +7 -7
  487. package/app/.next-cli-build/server/app/dashboard/provider-stats.segments/_full.segment.rsc +7 -7
  488. package/app/.next-cli-build/server/app/dashboard/provider-stats.segments/_tree.segment.rsc +2 -2
  489. package/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
  490. package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +7 -7
  491. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +7 -7
  492. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +7 -7
  493. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
  494. package/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
  495. package/app/.next-cli-build/server/app/dashboard/providers.rsc +7 -7
  496. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +7 -7
  497. package/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +7 -7
  498. package/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +2 -2
  499. package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
  500. package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +7 -7
  501. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +7 -7
  502. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +7 -7
  503. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +2 -2
  504. package/app/.next-cli-build/server/app/dashboard/pxpipe.html +1 -1
  505. package/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +7 -7
  506. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +7 -7
  507. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +7 -7
  508. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +2 -2
  509. package/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
  510. package/app/.next-cli-build/server/app/dashboard/quota.rsc +8 -8
  511. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +8 -8
  512. package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +8 -8
  513. package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +2 -2
  514. package/app/.next-cli-build/server/app/dashboard/runtime.html +1 -1
  515. package/app/.next-cli-build/server/app/dashboard/runtime.rsc +7 -7
  516. package/app/.next-cli-build/server/app/dashboard/runtime.segments/!KGRhc2hib2FyZCk/dashboard/runtime/__PAGE__.segment.rsc +7 -7
  517. package/app/.next-cli-build/server/app/dashboard/runtime.segments/_full.segment.rsc +7 -7
  518. package/app/.next-cli-build/server/app/dashboard/runtime.segments/_tree.segment.rsc +2 -2
  519. package/app/.next-cli-build/server/app/dashboard/settings/feature-flags.html +1 -1
  520. package/app/.next-cli-build/server/app/dashboard/settings/feature-flags.rsc +7 -7
  521. package/app/.next-cli-build/server/app/dashboard/settings/feature-flags.segments/!KGRhc2hib2FyZCk/dashboard/settings/feature-flags/__PAGE__.segment.rsc +7 -7
  522. package/app/.next-cli-build/server/app/dashboard/settings/feature-flags.segments/_full.segment.rsc +7 -7
  523. package/app/.next-cli-build/server/app/dashboard/settings/feature-flags.segments/_tree.segment.rsc +2 -2
  524. package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  525. package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +7 -7
  526. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings/pricing/__PAGE__.segment.rsc +7 -7
  527. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +7 -7
  528. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
  529. package/app/.next-cli-build/server/app/dashboard/skill-discovery.html +1 -1
  530. package/app/.next-cli-build/server/app/dashboard/skill-discovery.rsc +7 -7
  531. package/app/.next-cli-build/server/app/dashboard/skill-discovery.segments/!KGRhc2hib2FyZCk/dashboard/skill-discovery/__PAGE__.segment.rsc +7 -7
  532. package/app/.next-cli-build/server/app/dashboard/skill-discovery.segments/_full.segment.rsc +7 -7
  533. package/app/.next-cli-build/server/app/dashboard/skill-discovery.segments/_tree.segment.rsc +2 -2
  534. package/app/.next-cli-build/server/app/dashboard/skills.html +1 -1
  535. package/app/.next-cli-build/server/app/dashboard/skills.rsc +7 -7
  536. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +7 -7
  537. package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +7 -7
  538. package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +2 -2
  539. package/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
  540. package/app/.next-cli-build/server/app/dashboard/token-saver.rsc +8 -8
  541. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +8 -8
  542. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +8 -8
  543. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +2 -2
  544. package/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
  545. package/app/.next-cli-build/server/app/dashboard/translator.rsc +7 -7
  546. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +7 -7
  547. package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +7 -7
  548. package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +2 -2
  549. package/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  550. package/app/.next-cli-build/server/app/dashboard/usage.rsc +7 -7
  551. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +7 -7
  552. package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +7 -7
  553. package/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
  554. package/app/.next-cli-build/server/app/dashboard/webhooks.html +1 -1
  555. package/app/.next-cli-build/server/app/dashboard/webhooks.rsc +7 -7
  556. package/app/.next-cli-build/server/app/dashboard/webhooks.segments/!KGRhc2hib2FyZCk/dashboard/webhooks/__PAGE__.segment.rsc +7 -7
  557. package/app/.next-cli-build/server/app/dashboard/webhooks.segments/_full.segment.rsc +7 -7
  558. package/app/.next-cli-build/server/app/dashboard/webhooks.segments/_tree.segment.rsc +2 -2
  559. package/app/.next-cli-build/server/app/dashboard.html +1 -1
  560. package/app/.next-cli-build/server/app/dashboard.rsc +7 -7
  561. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +7 -7
  562. package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +7 -7
  563. package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +2 -2
  564. package/app/.next-cli-build/server/app/favicon.ico/route.js.nft.json +1 -1
  565. package/app/.next-cli-build/server/app/index.html +1 -1
  566. package/app/.next-cli-build/server/app/index.rsc +5 -5
  567. package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +5 -5
  568. package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +5 -5
  569. package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +2 -2
  570. package/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -1
  571. package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  572. package/app/.next-cli-build/server/app/landing.html +1 -1
  573. package/app/.next-cli-build/server/app/landing.rsc +5 -5
  574. package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +5 -5
  575. package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +2 -2
  576. package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +5 -5
  577. package/app/.next-cli-build/server/app/login/page.js.nft.json +1 -1
  578. package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  579. package/app/.next-cli-build/server/app/login.html +1 -1
  580. package/app/.next-cli-build/server/app/login.rsc +6 -6
  581. package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +6 -6
  582. package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +2 -2
  583. package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +6 -6
  584. package/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  585. package/app/.next-cli-build/server/app/page.js.nft.json +1 -1
  586. package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  587. package/app/.next-cli-build/server/app-paths-manifest.json +9 -9
  588. package/app/.next-cli-build/server/chunks/112.js +1 -1
  589. package/app/.next-cli-build/server/chunks/2638.js +1 -1
  590. package/app/.next-cli-build/server/chunks/2813.js +1 -1
  591. package/app/.next-cli-build/server/chunks/2974.js +1 -1
  592. package/app/.next-cli-build/server/chunks/318.js +1 -1
  593. package/app/.next-cli-build/server/chunks/3755.js +1 -1
  594. package/app/.next-cli-build/server/chunks/4037.js +1 -1
  595. package/app/.next-cli-build/server/chunks/4303.js +1 -1
  596. package/app/.next-cli-build/server/chunks/5243.js +1 -1
  597. package/app/.next-cli-build/server/chunks/5731.js +1 -1
  598. package/app/.next-cli-build/server/chunks/6270.js +1 -1
  599. package/app/.next-cli-build/server/chunks/6664.js +1 -1
  600. package/app/.next-cli-build/server/chunks/7403.js +1 -1
  601. package/app/.next-cli-build/server/chunks/772.js +1 -1
  602. package/app/.next-cli-build/server/chunks/{4018.js → 7937.js} +5 -5
  603. package/app/.next-cli-build/server/chunks/8499.js +1 -1
  604. package/app/.next-cli-build/server/chunks/8537.js +1 -1
  605. package/app/.next-cli-build/server/chunks/862.js +1 -1
  606. package/app/.next-cli-build/server/chunks/869.js +1 -1
  607. package/app/.next-cli-build/server/chunks/8750.js +1 -1
  608. package/app/.next-cli-build/server/instrumentation.js.nft.json +1 -1
  609. package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  610. package/app/.next-cli-build/server/middleware.js +4 -4
  611. package/app/.next-cli-build/server/middleware.js.nft.json +1 -1
  612. package/app/.next-cli-build/server/pages/404.html +1 -1
  613. package/app/.next-cli-build/server/pages/500.html +1 -1
  614. package/app/.next-cli-build/server/server-reference-manifest.js +1 -1
  615. package/app/.next-cli-build/server/server-reference-manifest.json +1 -1
  616. package/app/.next-cli-build/static/chunks/{1321-b974e2c6d758f2eb.js → 1321-6b997794bb843da8.js} +1 -1
  617. package/app/.next-cli-build/static/chunks/{7780-8fef40eb7ea5a323.js → 7780-f3508723257e47c1.js} +1 -1
  618. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/{page-8f34a6d3a99ebd37.js → page-f7cbd07558c7b42e.js} +1 -1
  619. package/app/.next-cli-build/static/css/01b1ec05918332c3.css +1 -0
  620. package/app/package.json +79 -78
  621. package/app/src/mitm/server.js +40 -42
  622. package/cli.js +10 -0
  623. package/hooks/opencodeBridgeRuntime.js +77 -0
  624. package/hooks/sqliteRuntime.js +156 -156
  625. package/hooks/trayRuntime.js +107 -107
  626. package/package.json +49 -49
  627. package/vendor/opencode-free-bridge/LICENSE +21 -0
  628. package/vendor/opencode-free-bridge/README.md +762 -0
  629. package/vendor/opencode-free-bridge/THIRD_PARTY_NOTICES.md +33 -0
  630. package/vendor/opencode-free-bridge/UPSTREAM_COMMIT +1 -0
  631. package/vendor/opencode-free-bridge/identity.js +2624 -0
  632. package/vendor/opencode-free-bridge/package.json +54 -0
  633. package/vendor/opencode-free-bridge/panel.js +515 -0
  634. package/vendor/opencode-free-bridge/proxy.js +980 -0
  635. package/vendor/opencode-free-bridge/server.js +3357 -0
  636. package/vendor/opencode-free-bridge/token-budget.js +107 -0
  637. package/vendor/opencode-free-bridge/transport-baseline.json +39 -0
  638. package/app/.next-cli-build/static/css/8ba5c8dbc4e30aa0.css +0 -1
  639. /package/app/.next-cli-build/static/{X4uxXfKI78mMCnlqFsTAr → DryEkcB2pIbzN1YYgNcUS}/_buildManifest.js +0 -0
  640. /package/app/.next-cli-build/static/{X4uxXfKI78mMCnlqFsTAr → DryEkcB2pIbzN1YYgNcUS}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- exports.id=772,exports.ids=[772],exports.modules={16655:(a,b,c)=>{"use strict";c.d(b,{oF:()=>d.oF,tm:()=>d.tm,vF:()=>d.vF});var d=c(8827)},19225:(a,b,c)=>{"use strict";a.exports=c(44870)},30093:(a,b,c)=>{"use strict";c.r(b),c.d(b,{GET:()=>I,OPTIONS:()=>H,buildModelsList:()=>G});var d=c(81329),e=c(40615),f=c(89718),g=c(35695),h=c(80238),i=c(16655),j=c(29679),k=c(52007),l=c(53225),m=c(39609),n=c(75924),o=c(8521);let p=new Map;async function q(a,b){let c=new AbortController,d=setTimeout(()=>c.abort(),1e4);try{let d=await (0,m.proxyAwareFetch)("https://api.githubcopilot.com/models",{method:"GET",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/json","Copilot-Integration-Id":"vscode-chat","editor-version":`vscode/${n.x0.VSCODE_VERSION}`,"editor-plugin-version":`copilot-chat/${n.x0.COPILOT_CHAT_VERSION}`,"user-agent":n.x0.USER_AGENT,"x-github-api-version":n.x0.API_VERSION},cache:"no-store",signal:b||c.signal});if(!d.ok){let a=Error(`Copilot /models returned ${d.status}`);throw a.status=d.status,a}let e=await d.json();return Array.isArray(e?.data)?e.data:[]}finally{clearTimeout(d)}}async function r(a,b={}){let c,d=a?.providerSpecificData?.copilotToken||a?.accessToken;if(!d)return b.log?.debug?.("COPILOT_MODELS","No copilotToken/accessToken; skipping live fetch"),null;let e=a?.providerSpecificData?.copilotToken||a?.accessToken||"copilot-anonymous",f=Date.now();if(!b.forceRefresh){let a=p.get(e);if(a&&a.expiresAt>f)return{models:a.models}}try{c=await q(d,b.signal)}catch(d){if(!d||401!==d.status&&403!==d.status||!a.accessToken)return b.log?.warn?.("COPILOT_MODELS",`Live model fetch failed: ${d?.message||d}`),null;{b.log?.info?.("COPILOT_MODELS",`Got ${d.status}; refreshing Copilot token`);let e=await (0,o.jR)(a.accessToken);if(!e?.token)return b.log?.warn?.("COPILOT_MODELS","Token refresh did not return a token"),null;if("function"==typeof b.onCredentialsRefreshed)try{await b.onCredentialsRefreshed({copilotToken:e.token,copilotTokenExpiresAt:e.expiresAt})}catch(a){b.log?.warn?.("COPILOT_MODELS",`onCredentialsRefreshed failed: ${a?.message||a}`)}try{c=await q(e.token,b.signal)}catch(a){return b.log?.warn?.("COPILOT_MODELS",`Retry after refresh failed: ${a?.message||a}`),null}}}let g=function(a){let b=new Set,c=[];for(let d of a){if(!d||"object"!=typeof d||d.capabilities?.type!=="chat"||d.policy&&"enabled"!==d.policy.state)continue;let a=d.id;!a||b.has(a)||(b.add(a),c.push({id:a,name:d.name||a}))}return c}(c);return g.length?(p.set(e,{expiresAt:f+3e5,models:g}),{models:g}):null}var s=c(52284);async function t(a){let b=!!a?.apiKey,c=b?a.apiKey:a?.accessToken;if(!c)return null;let d=new AbortController,e=setTimeout(()=>d.abort(),5e3);try{let a=b?{Accept:"application/json",Authorization:`Bearer ${c}`}:(0,s.w$)(c,{Accept:"application/json"}),e=await fetch("https://api.cline.bot/api/v1/models",{method:"GET",headers:a,signal:d.signal});if(!e.ok)return null;let f=await e.json(),g=Array.isArray(f)?f:f?.data;if(!Array.isArray(g))return null;let h=g.filter(a=>"string"==typeof a?.id&&a.id.startsWith("cline-pass/")).map(a=>({id:a.id,name:a.name||a.id}));return h.length?{models:h}:null}catch{return null}finally{clearTimeout(e)}}var u=c(38709),v=c(82578),w=c(49804),x=c(67828),y=c(39326),z=c(66306),A=c(93297);let B={kiro:async a=>{let b=await (0,j.cW)({accessToken:a.accessToken,refreshToken:a.refreshToken,providerSpecificData:a.providerSpecificData||{}},{log:console});return b?.models?.length?{models:b.models}:null},qoder:async a=>{let b=await (0,l.EV)({accessToken:a.accessToken,refreshToken:a.refreshToken,email:a.email,displayName:a.displayName,providerSpecificData:a.providerSpecificData||{}});return b?.models?.length?{models:b.models.map(a=>({id:a.id,name:a.name}))}:null},kimchi:async a=>{let b=await (0,k.av)({accessToken:a.accessToken,apiKey:a.apiKey,providerSpecificData:a.providerSpecificData||{}},{log:console});return b?.models?.length?{models:b.models}:null},github:async a=>{let b=await r({accessToken:a.accessToken,refreshToken:a.refreshToken,providerSpecificData:a.providerSpecificData||{}},{log:console,onCredentialsRefreshed:async b=>{await (0,x.vN)(a.id,{copilotToken:b.copilotToken,copilotTokenExpiresAt:b.copilotTokenExpiresAt,existingProviderSpecificData:a.providerSpecificData||{}})}});return b?.models?.length?{models:b.models}:null},clinepass:async a=>{let b=await t({accessToken:a.accessToken,apiKey:a.apiKey});return b?.models?.length?{models:b.models}:null},"grok-cli":async a=>{let b=await (0,y.B)(a.providerSpecificData||{}),c=await (0,u.M)({...a,connectionId:a.id},{log:console,proxyOptions:{connectionProxyEnabled:!0===b.connectionProxyEnabled,connectionProxyUrl:b.connectionProxyUrl||"",connectionNoProxy:b.connectionNoProxy||"",vercelRelayUrl:b.vercelRelayUrl||"",strictProxy:!0===b.strictProxy},onCredentialsRefreshed:async b=>{await (0,x.vN)(a.id,{...b,existingProviderSpecificData:a.providerSpecificData||{}})}});return c?.models?.length?{models:c.models}:null},cursor:async a=>{let b=await (0,v.FD)({accessToken:a.accessToken,providerSpecificData:a.providerSpecificData||{}},{log:console});return b?.models?.length?{models:b.models}:null},zed:async a=>{let b=await (0,w.w9)({accessToken:a.accessToken,providerSpecificData:a.providerSpecificData||{}});return b?.models?.length?{models:b.models.filter(a=>!a.isDisabled).map(a=>({id:a.id,name:a.name,capabilities:a.supportsTools?{tools:!0}:void 0}))}:null},opencode:async()=>{let a=await (0,g.xD)();return a.models?.length?{models:a.freeOnlyEnabled&&a.freeModels.length?a.freeModels:a.models,freeIds:a.freeOnlyEnabled?a.freeIds:null}:null}},C="x-miaw-internal-models-fetch",D={image:"image",tts:"tts",embedding:"embedding",stt:"stt",imageToText:"imageToText",video:"video"};function E(a){let b=a?.kind||a?.type;return b&&D[b]||"llm"}async function F(a){if(!a?.apiKey)return[];let b="string"==typeof a?.providerSpecificData?.baseUrl?a.providerSpecificData.baseUrl.trim().replace(/\/$/,""):"";if(!b)return[];let c=`${b}/models`,d={"Content-Type":"application/json"};if((0,e.mq)(a.provider))d.Authorization=`Bearer ${a.apiKey}`;else{if(!(0,e.gb)(a.provider))return[];c.endsWith("/messages/models")?c=c.slice(0,-9):c.endsWith("/messages")&&(c=`${c.slice(0,-9)}/models`),d["x-api-key"]=a.apiKey,d["anthropic-version"]="2023-06-01",d.Authorization=`Bearer ${a.apiKey}`}try{var f;let a=new AbortController,b=setTimeout(()=>a.abort(),5e3),e=await fetch(c,{method:"GET",headers:{...d,[C]:"1"},cache:"no-store",signal:a.signal});if(clearTimeout(b),!e.ok)return[];let g=(f=await e.json(),Array.isArray(f)?f:f?.data||f?.models||f?.results||[]);return Array.from(new Set(g.map(a=>a?.id||a?.name||a?.model).filter(a=>"string"==typeof a&&""!==a.trim())))}catch{return[]}}async function G(a,b={}){let c=!0===b.skipDynamicFetch,g=[];try{g=(g=await (0,f.getProviderConnections)()).filter(a=>!1!==a.isActive&&[a.apiKey,a.accessToken,a.refreshToken,a.idToken].some(a=>"string"==typeof a&&""!==a.trim()));let a=new Set(g.map(a=>a.provider));g.push(...(function(a=e.AI_PROVIDERS){return Object.values(a||{}).filter(a=>a?.noAuth&&!a?.hidden).map(a=>({id:`noauth-${a.id}`,provider:a.id,isActive:!0,providerSpecificData:{}}))})(e.AI_PROVIDERS).filter(b=>!a.has(b.provider)))}catch(a){console.log("Could not fetch providers, returning no models")}if(0===g.length)return[];let h=[];try{h=await (0,f.Uv)()}catch(a){console.log("Could not fetch combos")}let j=[];try{j=await (0,f.uv)()}catch(a){console.log("Could not fetch custom models")}let k={};try{k=await (0,f.OM)()}catch(a){console.log("Could not fetch model aliases")}let l={};try{l=await (0,i.vF)()}catch(a){console.log("Could not fetch disabled models")}let m=(a,b)=>Array.isArray(l[a])&&l[a].includes(b),n=new Map;for(let a of g)n.has(a.provider)||n.set(a.provider,a);let o=[];for(let b of h){if(!function(a,b){let c=a?.kind||"llm";return b.includes(c)}(b,a))continue;let c={id:b.name,object:"model",owned_by:"combo"};("webSearch"===b.kind||"webFetch"===b.kind)&&(c.kind=b.kind),o.push(c)}for(let[b,f]of n.entries()){if(!function(a,b){let c=e.AI_PROVIDERS[a],d=Array.isArray(c?.serviceKinds)&&c.serviceKinds.length>0?c.serviceKinds:["llm"];return b.some(a=>d.includes(a))}(b,a))continue;let g=d.Xg[b]||b,h=(f?.providerSpecificData?.prefix||(0,e.wG)(b)||g).trim(),i=d.vq[g]||[],l=f?.providerSpecificData?.enabledModels,n=Array.isArray(l)&&l.length>0,p=(0,e.mq)(b)||(0,e.gb)(b),q=new Map(i.map(a=>[a.id,E(a)])),r=new Map,s=new Map,t=new Map,u=n?Array.from(new Set(l.filter(a=>"string"==typeof a&&""!==a.trim()))):i.map(a=>a.id);p&&0===u.length&&!c&&(u=await F(f));let v=B[b],w=null;if(!n&&!c)try{let a=v?await v(f):await (0,A.resolveProviderConnectionModels)(f);if(a?.models?.length){let c="antigravity"===b?[...new Map([...i.map(a=>[a.id,a]),...a.models.filter(a=>a?.id).map(a=>[a.id,a])]).values()]:a.models;u=c.map(a=>a.id),r=new Map(c.filter(a=>a?.id).map(a=>[a.id,E(a)])),s=new Map(c.filter(a=>a?.id&&a.capabilities).map(a=>[a.id,a.capabilities])),t=new Map(c.filter(a=>a?.id).map(a=>[a.id,{free:a.free,data_retention:a.data_retention,retention_warning:a.retention_warning}])),w=a.freeIds&&a.freeIds.size?a.freeIds:null}}catch(a){console.log(`Live model fetch failed for ${b}: ${a?.message||a}`)}let x=u.map(a=>a.startsWith(`${h}/`)?a.slice(h.length+1):a.startsWith(`${g}/`)?a.slice(g.length+1):a.startsWith(`${b}/`)?a.slice(b.length+1):a).filter(a=>"string"==typeof a&&""!==a.trim()),y=new Map,C=Array.from(new Set([...x,...j.filter(c=>{if(!c?.id)return!1;let e=(0,d.CP)(c)||"llm";if(!a.includes(e)&&!("imageToText"===e&&a.includes("llm")))return!1;let f=c.providerAlias;return f===g||f===h||f===b}).map(a=>{let b=String(a.id).trim();return b&&y.set(b,(0,d.CP)(a)||"llm"),b}).filter(a=>""!==a),...Object.values(k||{}).filter(a=>"string"==typeof a&&!!a.includes("/")&&(a.startsWith(`${h}/`)||a.startsWith(`${g}/`)||a.startsWith(`${b}/`))).map(a=>a.startsWith(`${h}/`)?a.slice(h.length+1):a.startsWith(`${g}/`)?a.slice(g.length+1):a.startsWith(`${b}/`)?a.slice(b.length+1):a).filter(a=>"string"==typeof a&&""!==a.trim())]));for(let c of(w&&(C=C.filter(a=>w.has(a))),C)){let d=y.get(c),e=r.get(c),f=d||e||q.get(c)||function(a){let b=String(a).toLowerCase();return/embed/.test(b)?"embedding":/tts|speech|audio|voice/.test(b)?"tts":/image|imagen|dall-?e|flux|sdxl|sd-|stable-diffusion/.test(b)?"image":"llm"}(c),j="imageToText"===f&&a.includes("llm");if(!a.includes(f)&&!j||m(h,c)||m(g,c))continue;let k={id:`${h}/${c}`,object:"model",owned_by:h},l=i.find(a=>a?.id===c),n=l?.name||l?.displayName;n&&(k.name=n);let p=s.get(c)||(0,z.a0)(d||e)||("llm"===f?(0,z.nl)(b,c):null);p&&(k.capabilities=p);let u=t.get(c);u&&(void 0!==u.free&&(k.free=u.free),void 0!==u.data_retention&&(k.data_retention=u.data_retention),void 0!==u.retention_warning&&(k.retention_warning=u.retention_warning)),o.push(k)}let D=e.AI_PROVIDERS[b];a.includes("webSearch")&&D?.searchConfig&&o.push({id:`${h}/search`,object:"model",kind:"webSearch",owned_by:h}),a.includes("webFetch")&&D?.fetchConfig&&o.push({id:`${h}/fetch`,object:"model",kind:"webFetch",owned_by:h})}let p=[],q=new Set;for(let a of o)!a?.id||q.has(a.id)||(q.add(a.id),p.push(a));return p}async function H(){return new Response(null,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET, OPTIONS","Access-Control-Allow-Headers":"*"}})}async function I(a){try{if((await (0,f.mt)()).requireApiKey){let b=(0,h.Tr)(a);if(!b)return Response.json({error:{message:"Missing API key",type:"invalid_request_error"}},{status:401,headers:{"Access-Control-Allow-Origin":"*"}});if(!await (0,h.kI)(b))return Response.json({error:{message:"Invalid API key",type:"invalid_request_error"}},{status:401,headers:{"Access-Control-Allow-Origin":"*"}})}let b=a?.headers?.get(C)==="1",c=await G(["llm"],{skipDynamicFetch:b});return Response.json({object:"list",data:c},{headers:{"Access-Control-Allow-Origin":"*"}})}catch(a){return console.log("Error fetching models:",a),Response.json({error:{message:a.message,type:"server_error"}},{status:500})}}},35695:(a,b,c)=>{"use strict";c.d(b,{DF:()=>e,el:()=>o,mF:()=>k,xD:()=>n});var d=c(89718);let e="https://opencode.ai/zen/v1/models",f=new Set(["big-pickle"]),g="__miaw_opencode_catalog_v1__";function h(){return globalThis[g]||={models:null,lastIds:[],lastDiff:{added:[],removed:[]},fetchedAt:null,lastAttemptAt:0,lastError:null},globalThis[g]}function i(a){if(null==a)return null;if("number"==typeof a)return a;let b=String(a).trim();return""!==b&&Number.isFinite(Number(b))?Number(b):null}function j(a,b){if(b&&"object"==typeof b){if(Array.isArray(b))return!!b.includes(a)||void 0;if(Object.prototype.hasOwnProperty.call(b,a))return b[a]}}function k(a,b=null){let c,d,e,g=a?.id;if(!g)return!1;let h=j(g,b);return void 0!==h?!0===h||"true"===h:!!(String(g).endsWith("-free")||f.has(g))||(d=i((c=a?.pricing||{}).prompt??a?.input_price??a?.input_cost),e=i(c.completion??a?.output_price??a?.output_cost),0===d&&0===e)}async function l(){let a=new AbortController,b=setTimeout(()=>a.abort(),15e3);try{var c;let b=await fetch(e,{headers:{"x-opencode-client":"desktop"},cache:"no-store",signal:a.signal});if(!b.ok)throw Error(`OpenCode Zen models: HTTP ${b.status}`);let d=(c=await b.json(),Array.isArray(c)?c:c?.data??c?.models??[]).filter(a=>a&&"string"==typeof a.id),f=h(),g=d.map(a=>a.id);return f.lastDiff={added:d.filter(a=>!f.lastIds.includes(a.id)),removed:f.lastIds.filter(a=>!g.includes(a))},f.models=d,f.lastIds=g,f.fetchedAt=Date.now(),f.lastAttemptAt=Date.now(),f.lastError=null,f}finally{clearTimeout(b)}}async function m(){let a=h();if(a.models&&a.fetchedAt&&Date.now()-a.fetchedAt<216e5)return{models:a.models,diff:a.lastDiff,fetchedAt:a.fetchedAt,stale:!1,error:null};if(Date.now()-a.lastAttemptAt<6e4)return a.models?{models:a.models,diff:a.lastDiff,fetchedAt:a.fetchedAt,stale:!0,error:a.lastError}:{models:[],diff:{added:[],removed:[]},fetchedAt:null,stale:!0,error:a.lastError||"catalog fetch failed"};try{let a=await l();return{models:a.models,diff:a.lastDiff,fetchedAt:a.fetchedAt,stale:!1,error:null}}catch(c){let b=c?.message||String(c);if(a.lastAttemptAt=Date.now(),a.lastError=b,a.models)return{models:a.models,diff:a.lastDiff,fetchedAt:a.fetchedAt,stale:!0,error:b};return{models:[],diff:{added:[],removed:[]},fetchedAt:null,stale:!0,error:b}}}async function n(a=null){let b=await m(),c=a||await (0,d.mt)(),e=c.zenFreeModelOverrides||{},f=c.zenRetentionOverrides||{},g=(b.models||[]).map(a=>({...a,free:k(a,e),...function(a,b=null){let c=j(a?.id,b);if(void 0!==c){if(!1===c||"false"===c||"none"===c||"no"===c)return{data_retention:"none",retention_warning:!1};if("string"==typeof c&&""!==c.trim())return{data_retention:c.trim(),retention_warning:!1}}return{data_retention:"unknown",retention_warning:!0}}(a,f)})),h=g.filter(a=>a.free),i=new Set(h.map(a=>a.id));return{...b,models:g,freeModels:h,freeIds:i,overrides:e,freeOnlyEnabled:!0===c.zenFreeOnly}}async function o(a,b=null){let c=b||await (0,d.mt)();if(!0!==c.zenFreeOnly)return!0;let e=j(a,c.zenFreeModelOverrides||{});return void 0!==e?!0===e||"true"===e:!!String(a).endsWith("-free")||(await n(c)).freeIds.has(a)}},65745:(a,b,c)=>{"use strict";c.d(b,{Lb:()=>u,Qj:()=>s,syncConnectionModelCatalog:()=>v});var d=c(51455),e=c.n(d),f=c(48161),g=c.n(f),h=c(76760),i=c.n(h),j=c(40615),k=c(72239);let l=["none","minimal","low","medium","high","xhigh","max","ultra"],m=new Set(["llm","image","embedding","tts","stt","imageToText","webSearch","webFetch"]),n=RegExp(`-(${l.join("|")})$`,"i"),o="0.153.4",p={shell_type:"bash",visibility:"public",supported_in_api:!0,priority:1,additional_speed_tiers:[],service_tiers:[],availability_nux:null,upgrade:null,model_messages:null,include_skills_usage_instructions:!0,include_plugin_usage_instructions:!0,include_apps_usage_instructions:!0,default_reasoning_summary:"none",support_verbosity:!0,default_verbosity:"low",apply_patch_tool_type:"freeform",web_search_tool_type:"text_and_image",truncation_policy:{mode:"tokens",limit:1e4},supports_image_detail_original:!0,context_window:1048576,max_context_window:1048576,comp_hash:"3000",effective_context_window_percent:95,experimental_supported_tools:["send_user_message_async","clock"],input_modalities:["text","image"],supports_search_tool:!0,use_responses_lite:!0,node_repl_auto_review_required:!0,node_repl_disabled:!1,tool_mode:"code_mode_only",multi_agent_version:"v2",multi_agent_reasoning_effort:"medium"};function q(a){let b=a?.kind||a?.type;return m.has(b)?b:"llm"}function r(a){let b=String(("string"==typeof a?a:a?.effort)||"").trim().toLowerCase();return l.includes(b)?b:null}function s(a,b){let c=String(a?.provider||""),d=(0,j.wG)(c),e=new Map;for(let a of Array.isArray(b)?b:[]){let b=a?.id||a?.slug||a?.model||a?.name;if(!b)continue;let f=function(a,b,c){for(let d of new Set([b,c]))if(d&&a.startsWith(`${d}/`))return a.slice(d.length+1);return a}(String(b),c,d);if(!f)continue;let g=q(a),h=function(a,b,c){let d,e=Array.isArray(d=c?.supported_reasoning_levels||c?.supportedReasoningLevels)?[...new Set(d.map(r).filter(Boolean))]:[];return e.length?e:"llm"!==q(c)?[]:(0,k.k)(a,b)||[]}(c,f,a),i={...a,id:f,providerAlias:d,type:g,name:a?.name||a?.display_name||a?.displayName||f,source:"live",...h.length?{reasoningLevels:h}:{}};if(e.set(`${f}|${g}`,i),!("codex"!==c||"llm"!==g||f.endsWith("-review")||n.test(f)))for(let b of h)e.set(`${f}-${b}|${g}`,{...i,id:`${f}-${b}`,name:`${i.name} (${"xhigh"===b?"xHigh":b[0].toUpperCase()+b.slice(1)})`,upstreamModelId:a?.upstreamModelId||f,effortPreset:b})}return[...e.values()]}let t=Promise.resolve();function u(a,{codexDir:b=i().join(g().homedir(),".codex")}={}){let c=async()=>{let c=i().join(b,"models_cache.json"),d={fetched_at:new Date().toISOString(),client_version:o,models:[]};try{d=JSON.parse(await e().readFile(c,"utf8"))}catch(a){if(a?.code!=="ENOENT")throw a}let f=function(a,b){let c=a&&"object"==typeof a?{...a}:{},d=new Map((Array.isArray(c.models)?[...c.models]:[]).map((a,b)=>[a?.slug||a?.id||`__entry_${b}`,a]));for(let a of Array.isArray(b)?b:[]){if(!a?.id||a.effortPreset||"image"===a.type||a.id.endsWith("-review"))continue;let b=function(a){let b=a.slug||`${a.providerAlias}/${a.id}`,c=(a.reasoningLevels||a.supportedReasoningLevels||[]).map(r).filter(Boolean),d=Number(a.contextLength||a.contextWindow||a.context_window)||void 0;return{...p,slug:b,display_name:a.name||a.displayName||a.id||b,description:a.description||`Model ${b} via MiawRouter`,default_reasoning_level:c.includes("medium")?"medium":c[0]||"medium",supported_reasoning_levels:c.map(a=>({effort:a,description:`Reasoning effort: ${a}`})),...d?{context_window:d,max_context_window:d}:{}}}(a),c=d.get(b.slug);d.set(b.slug,c?{...b,...c,supported_reasoning_levels:b.supported_reasoning_levels}:b)}return c.models=[...d.values()],c}(d,a);f.fetched_at=new Date().toISOString(),f.client_version||(f.client_version=o),await e().mkdir(b,{recursive:!0});let g=`${c}.tmp`;return await e().writeFile(g,JSON.stringify(f,null,2)),await e().rename(g,c),f};return t=t.then(c,c)}async function v(a,b={}){if(!a||!1===a.isActive)return{synced:0,skipped:!0};let d=b.resolve||(async a=>{let{resolveProviderConnectionModels:b}=await Promise.all([c.e(5592),c.e(8827),c.e(436),c.e(3943),c.e(3225),c.e(2051),c.e(7828),c.e(5243),c.e(6854)]).then(c.bind(c,93297));return b(a)}),e=b.upsert||(async a=>{let{upsertCustomModels:b}=await c.e(9460).then(c.bind(c,9460));return b(a)}),f=b.writeCache||u;try{let c;try{let g=Promise.resolve(d(a)),h=new Promise((a,d)=>{c=setTimeout(()=>d(Error("model catalog timeout")),b.timeoutMs||3e4)}),i=await Promise.race([g,h]);if(!i||i.error||!Array.isArray(i.models)||0===i.models.length)return{synced:0,skipped:!0,error:i?.error};let j=s(a,i.models);if(!j.length)return{synced:0,skipped:!0};return await e(j),"codex"===a.provider&&await f(j.filter(a=>!a.effortPreset&&"llm"===a.type)),{synced:j.length}}finally{c&&clearTimeout(c)}}catch(a){return{synced:0,failed:!0,error:a?.message||String(a)}}}},78335:()=>{},81329:(a,b,c)=>{"use strict";c.d(b,{CP:()=>f,KC:()=>d.KC,Xg:()=>d.Xg,eh:()=>e,vq:()=>d.PROVIDER_MODELS});var d=c(45699);c(41955),Object.entries(c(40615).AI_PROVIDERS).filter(([,a])=>a.passthroughModels).map(([a])=>a);let e=Object.entries(d.PROVIDER_MODELS).flatMap(([a,b])=>b.map(b=>({provider:a,model:b.id,name:b.name}))),f=(a,b=null)=>a?.kind||a?.type||b},92280:(a,b,c)=>{"use strict";Object.defineProperty(b,"I",{enumerable:!0,get:function(){return g}});let d=c(28208),e=c(47617),f=c(62018);async function g(a,b,c,g){if((0,d.isNodeNextResponse)(b)){var h;b.statusCode=c.status,b.statusMessage=c.statusText;let d=["set-cookie","www-authenticate","proxy-authenticate","vary"];null==(h=c.headers)||h.forEach((a,c)=>{if("x-middleware-set-cookie"!==c.toLowerCase())if("set-cookie"===c.toLowerCase())for(let d of(0,f.splitCookiesString)(a))b.appendHeader(c,d);else{let e=void 0!==b.getHeader(c);(d.includes(c.toLowerCase())||!e)&&b.appendHeader(c,a)}});let{originalResponse:i}=b;c.body&&"HEAD"!==a.method?await (0,e.pipeToNodeResponse)(c.body,i,g):i.end()}}},92305:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={isRequestApiAllowedInCurrentPhase:function(){return k},throwForSearchParamsAccessInUseCache:function(){return j},throwWithStaticGenerationBailoutErrorWithDynamicError:function(){return i}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(15693),g=c(19121),h=c(3295);function i(a,b){throw Object.defineProperty(new f.StaticGenBailoutError(`Route ${a} with \`dynamic = "error"\` couldn't be rendered statically because it used ${b}. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E543",enumerable:!1,configurable:!0})}function j(a,b){let c=Object.defineProperty(Error(`Route ${a.route} used \`searchParams\` inside "use cache". Accessing dynamic request data inside a cache scope is not supported. If you need some search params inside a cached function await \`searchParams\` outside of the cached function and pass only the required search params as arguments to the cached function. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`),"__NEXT_ERROR_CODE",{value:"E842",enumerable:!1,configurable:!0});throw Error.captureStackTrace(c,b),a.invalidDynamicUsageError??=c,c}function k(a){switch(a.phase){case"action":case"render":return!0;case"after":{let a=g.actionAsyncStorage.getStore();if(a&&(a.isAppRoute||a.isAction))return!0;let b=h.afterTaskAsyncStorage.getStore();if(b)return"action"===b.rootTaskSpawnPhase;return!1}}}},96487:()=>{}};
1
+ exports.id=772,exports.ids=[772],exports.modules={16655:(a,b,c)=>{"use strict";c.d(b,{oF:()=>d.oF,tm:()=>d.tm,vF:()=>d.vF});var d=c(8827)},19225:(a,b,c)=>{"use strict";a.exports=c(44870)},30093:(a,b,c)=>{"use strict";c.r(b),c.d(b,{GET:()=>I,OPTIONS:()=>H,buildModelsList:()=>G});var d=c(81329),e=c(40615),f=c(89718),g=c(35695),h=c(80238),i=c(16655),j=c(29679),k=c(52007),l=c(53225),m=c(39609),n=c(75924),o=c(8521);let p=new Map;async function q(a,b){let c=new AbortController,d=setTimeout(()=>c.abort(),1e4);try{let d=await (0,m.proxyAwareFetch)("https://api.githubcopilot.com/models",{method:"GET",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/json","Copilot-Integration-Id":"vscode-chat","editor-version":`vscode/${n.x0.VSCODE_VERSION}`,"editor-plugin-version":`copilot-chat/${n.x0.COPILOT_CHAT_VERSION}`,"user-agent":n.x0.USER_AGENT,"x-github-api-version":n.x0.API_VERSION},cache:"no-store",signal:b||c.signal});if(!d.ok){let a=Error(`Copilot /models returned ${d.status}`);throw a.status=d.status,a}let e=await d.json();return Array.isArray(e?.data)?e.data:[]}finally{clearTimeout(d)}}async function r(a,b={}){let c,d=a?.providerSpecificData?.copilotToken||a?.accessToken;if(!d)return b.log?.debug?.("COPILOT_MODELS","No copilotToken/accessToken; skipping live fetch"),null;let e=a?.providerSpecificData?.copilotToken||a?.accessToken||"copilot-anonymous",f=Date.now();if(!b.forceRefresh){let a=p.get(e);if(a&&a.expiresAt>f)return{models:a.models}}try{c=await q(d,b.signal)}catch(d){if(!d||401!==d.status&&403!==d.status||!a.accessToken)return b.log?.warn?.("COPILOT_MODELS",`Live model fetch failed: ${d?.message||d}`),null;{b.log?.info?.("COPILOT_MODELS",`Got ${d.status}; refreshing Copilot token`);let e=await (0,o.jR)(a.accessToken);if(!e?.token)return b.log?.warn?.("COPILOT_MODELS","Token refresh did not return a token"),null;if("function"==typeof b.onCredentialsRefreshed)try{await b.onCredentialsRefreshed({copilotToken:e.token,copilotTokenExpiresAt:e.expiresAt})}catch(a){b.log?.warn?.("COPILOT_MODELS",`onCredentialsRefreshed failed: ${a?.message||a}`)}try{c=await q(e.token,b.signal)}catch(a){return b.log?.warn?.("COPILOT_MODELS",`Retry after refresh failed: ${a?.message||a}`),null}}}let g=function(a){let b=new Set,c=[];for(let d of a){if(!d||"object"!=typeof d||d.capabilities?.type!=="chat"||d.policy&&"enabled"!==d.policy.state)continue;let a=d.id;!a||b.has(a)||(b.add(a),c.push({id:a,name:d.name||a}))}return c}(c);return g.length?(p.set(e,{expiresAt:f+3e5,models:g}),{models:g}):null}var s=c(52284);async function t(a){let b=!!a?.apiKey,c=b?a.apiKey:a?.accessToken;if(!c)return null;let d=new AbortController,e=setTimeout(()=>d.abort(),5e3);try{let a=b?{Accept:"application/json",Authorization:`Bearer ${c}`}:(0,s.w$)(c,{Accept:"application/json"}),e=await fetch("https://api.cline.bot/api/v1/models",{method:"GET",headers:a,signal:d.signal});if(!e.ok)return null;let f=await e.json(),g=Array.isArray(f)?f:f?.data;if(!Array.isArray(g))return null;let h=g.filter(a=>"string"==typeof a?.id&&a.id.startsWith("cline-pass/")).map(a=>({id:a.id,name:a.name||a.id}));return h.length?{models:h}:null}catch{return null}finally{clearTimeout(e)}}var u=c(38709),v=c(82578),w=c(49804),x=c(67828),y=c(39326),z=c(66306),A=c(93297);let B={kiro:async a=>{let b=await (0,j.cW)({accessToken:a.accessToken,refreshToken:a.refreshToken,providerSpecificData:a.providerSpecificData||{}},{log:console});return b?.models?.length?{models:b.models}:null},qoder:async a=>{let b=await (0,l.EV)({accessToken:a.accessToken,refreshToken:a.refreshToken,email:a.email,displayName:a.displayName,providerSpecificData:a.providerSpecificData||{}});return b?.models?.length?{models:b.models.map(a=>({id:a.id,name:a.name}))}:null},kimchi:async a=>{let b=await (0,k.av)({accessToken:a.accessToken,apiKey:a.apiKey,providerSpecificData:a.providerSpecificData||{}},{log:console});return b?.models?.length?{models:b.models}:null},github:async a=>{let b=await r({accessToken:a.accessToken,refreshToken:a.refreshToken,providerSpecificData:a.providerSpecificData||{}},{log:console,onCredentialsRefreshed:async b=>{await (0,x.vN)(a.id,{copilotToken:b.copilotToken,copilotTokenExpiresAt:b.copilotTokenExpiresAt,existingProviderSpecificData:a.providerSpecificData||{}})}});return b?.models?.length?{models:b.models}:null},clinepass:async a=>{let b=await t({accessToken:a.accessToken,apiKey:a.apiKey});return b?.models?.length?{models:b.models}:null},"grok-cli":async a=>{let b=await (0,y.B)(a.providerSpecificData||{}),c=await (0,u.M)({...a,connectionId:a.id},{log:console,proxyOptions:{connectionProxyEnabled:!0===b.connectionProxyEnabled,connectionProxyUrl:b.connectionProxyUrl||"",connectionNoProxy:b.connectionNoProxy||"",vercelRelayUrl:b.vercelRelayUrl||"",strictProxy:!0===b.strictProxy},onCredentialsRefreshed:async b=>{await (0,x.vN)(a.id,{...b,existingProviderSpecificData:a.providerSpecificData||{}})}});return c?.models?.length?{models:c.models}:null},cursor:async a=>{let b=await (0,v.FD)({accessToken:a.accessToken,providerSpecificData:a.providerSpecificData||{}},{log:console});return b?.models?.length?{models:b.models}:null},zed:async a=>{let b=await (0,w.w9)({accessToken:a.accessToken,providerSpecificData:a.providerSpecificData||{}});return b?.models?.length?{models:b.models.filter(a=>!a.isDisabled).map(a=>({id:a.id,name:a.name,capabilities:a.supportsTools?{tools:!0}:void 0}))}:null},opencode:async()=>{let a=await (0,g.xD)();return a.models?.length?{models:a.freeOnlyEnabled&&a.freeModels.length?a.freeModels:a.models,freeIds:a.freeOnlyEnabled?a.freeIds:null}:null}},C="x-miaw-internal-models-fetch",D={image:"image",tts:"tts",embedding:"embedding",stt:"stt",imageToText:"imageToText",video:"video"};function E(a){let b=a?.kind||a?.type;return b&&D[b]||"llm"}async function F(a){if(!a?.apiKey)return[];let b="string"==typeof a?.providerSpecificData?.baseUrl?a.providerSpecificData.baseUrl.trim().replace(/\/$/,""):"";if(!b)return[];let c=`${b}/models`,d={"Content-Type":"application/json"};if((0,e.mq)(a.provider))d.Authorization=`Bearer ${a.apiKey}`;else{if(!(0,e.gb)(a.provider))return[];c.endsWith("/messages/models")?c=c.slice(0,-9):c.endsWith("/messages")&&(c=`${c.slice(0,-9)}/models`),d["x-api-key"]=a.apiKey,d["anthropic-version"]="2023-06-01",d.Authorization=`Bearer ${a.apiKey}`}try{var f;let a=new AbortController,b=setTimeout(()=>a.abort(),5e3),e=await fetch(c,{method:"GET",headers:{...d,[C]:"1"},cache:"no-store",signal:a.signal});if(clearTimeout(b),!e.ok)return[];let g=(f=await e.json(),Array.isArray(f)?f:f?.data||f?.models||f?.results||[]);return Array.from(new Set(g.map(a=>a?.id||a?.name||a?.model).filter(a=>"string"==typeof a&&""!==a.trim())))}catch{return[]}}async function G(a,b={}){let c=!0===b.skipDynamicFetch,g=await (0,f.getProviderConnections)(),h=new Set((g=g.filter(a=>!1!==a.isActive&&[a.apiKey,a.accessToken,a.refreshToken,a.idToken].some(a=>"string"==typeof a&&""!==a.trim()))).map(a=>a.provider));if(g.push(...(function(a=e.AI_PROVIDERS){return Object.values(a||{}).filter(a=>a?.noAuth&&!a?.hidden).map(a=>({id:`noauth-${a.id}`,provider:a.id,isActive:!0,providerSpecificData:{}}))})(e.AI_PROVIDERS).filter(a=>!h.has(a.provider))),0===g.length)return[];let j=[];try{j=await (0,f.Uv)()}catch(a){console.log("Could not fetch combos")}let k=[];try{k=await (0,f.uv)()}catch(a){console.log("Could not fetch custom models")}let l={};try{l=await (0,f.OM)()}catch(a){console.log("Could not fetch model aliases")}let m={};try{m=await (0,i.vF)()}catch(a){console.log("Could not fetch disabled models")}let n=(a,b)=>Array.isArray(m[a])&&m[a].includes(b),o=new Map;for(let a of g)o.has(a.provider)||o.set(a.provider,a);let p=[];for(let b of j){if(!function(a,b){let c=a?.kind||"llm";return b.includes(c)}(b,a))continue;let c={id:b.name,object:"model",owned_by:"combo"};("webSearch"===b.kind||"webFetch"===b.kind)&&(c.kind=b.kind),p.push(c)}for(let[b,f]of o.entries()){if(!function(a,b){let c=e.AI_PROVIDERS[a],d=Array.isArray(c?.serviceKinds)&&c.serviceKinds.length>0?c.serviceKinds:["llm"];return b.some(a=>d.includes(a))}(b,a))continue;let g=d.Xg[b]||b,h=(f?.providerSpecificData?.prefix||(0,e.wG)(b)||g).trim(),i=d.vq[g]||[],j=f?.providerSpecificData?.enabledModels,m=Array.isArray(j)&&j.length>0,o=(0,e.mq)(b)||(0,e.gb)(b),q=new Map(i.map(a=>[a.id,E(a)])),r=new Map,s=new Map,t=new Map,u=m?Array.from(new Set(j.filter(a=>"string"==typeof a&&""!==a.trim()))):i.map(a=>a.id);o&&0===u.length&&!c&&(u=await F(f));let v=B[b],w=null;if(!m&&!c)try{let a=v?await v(f):await (0,A.resolveProviderConnectionModels)(f);if(a?.models?.length){let c="antigravity"===b?[...new Map([...i.map(a=>[a.id,a]),...a.models.filter(a=>a?.id).map(a=>[a.id,a])]).values()]:a.models;u=c.map(a=>a.id),r=new Map(c.filter(a=>a?.id).map(a=>[a.id,E(a)])),s=new Map(c.filter(a=>a?.id&&a.capabilities).map(a=>[a.id,a.capabilities])),t=new Map(c.filter(a=>a?.id).map(a=>[a.id,{free:a.free,data_retention:a.data_retention,retention_warning:a.retention_warning}])),w=a.freeIds&&a.freeIds.size?a.freeIds:null}}catch(a){console.log(`Live model fetch failed for ${b}: ${a?.message||a}`)}let x=u.map(a=>a.startsWith(`${h}/`)?a.slice(h.length+1):a.startsWith(`${g}/`)?a.slice(g.length+1):a.startsWith(`${b}/`)?a.slice(b.length+1):a).filter(a=>"string"==typeof a&&""!==a.trim()),y=new Map,C=Array.from(new Set([...x,...k.filter(c=>{if(!c?.id)return!1;let e=(0,d.CP)(c)||"llm";if(!a.includes(e)&&!("imageToText"===e&&a.includes("llm")))return!1;let f=c.providerAlias;return f===g||f===h||f===b}).map(a=>{let b=String(a.id).trim();return b&&y.set(b,(0,d.CP)(a)||"llm"),b}).filter(a=>""!==a),...Object.values(l||{}).filter(a=>"string"==typeof a&&!!a.includes("/")&&(a.startsWith(`${h}/`)||a.startsWith(`${g}/`)||a.startsWith(`${b}/`))).map(a=>a.startsWith(`${h}/`)?a.slice(h.length+1):a.startsWith(`${g}/`)?a.slice(g.length+1):a.startsWith(`${b}/`)?a.slice(b.length+1):a).filter(a=>"string"==typeof a&&""!==a.trim())]));for(let c of(w&&(C=C.filter(a=>w.has(a))),C)){let d=y.get(c),e=r.get(c),f=d||e||q.get(c)||function(a){let b=String(a).toLowerCase();return/embed/.test(b)?"embedding":/tts|speech|audio|voice/.test(b)?"tts":/image|imagen|dall-?e|flux|sdxl|sd-|stable-diffusion/.test(b)?"image":"llm"}(c),j="imageToText"===f&&a.includes("llm");if(!a.includes(f)&&!j||n(h,c)||n(g,c))continue;let k={id:`${h}/${c}`,object:"model",owned_by:h},l=i.find(a=>a?.id===c),m=l?.name||l?.displayName;m&&(k.name=m);let o=s.get(c)||(0,z.a0)(d||e)||("llm"===f?(0,z.nl)(b,c):null);o&&(k.capabilities=o);let u=t.get(c);u&&(void 0!==u.free&&(k.free=u.free),void 0!==u.data_retention&&(k.data_retention=u.data_retention),void 0!==u.retention_warning&&(k.retention_warning=u.retention_warning)),p.push(k)}let D=e.AI_PROVIDERS[b];a.includes("webSearch")&&D?.searchConfig&&p.push({id:`${h}/search`,object:"model",kind:"webSearch",owned_by:h}),a.includes("webFetch")&&D?.fetchConfig&&p.push({id:`${h}/fetch`,object:"model",kind:"webFetch",owned_by:h})}let q=[],r=new Set;for(let a of p)!a?.id||r.has(a.id)||(r.add(a.id),q.push(a));return q}async function H(){return new Response(null,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET, OPTIONS","Access-Control-Allow-Headers":"*"}})}async function I(a){try{if((await (0,f.mt)()).requireApiKey){let b=(0,h.Tr)(a);if(!b)return Response.json({error:{message:"Missing API key",type:"invalid_request_error"}},{status:401,headers:{"Access-Control-Allow-Origin":"*"}});if(!await (0,h.kI)(b))return Response.json({error:{message:"Invalid API key",type:"invalid_request_error"}},{status:401,headers:{"Access-Control-Allow-Origin":"*"}})}let b=a?.headers?.get(C)==="1",c=await G(["llm"],{skipDynamicFetch:b});return Response.json({object:"list",data:c},{headers:{"Access-Control-Allow-Origin":"*"}})}catch(a){return console.log("Error fetching models:",a),Response.json({error:{message:a.message,type:"server_error"}},{status:500})}}},35695:(a,b,c)=>{"use strict";c.d(b,{DF:()=>e,el:()=>o,mF:()=>k,xD:()=>n});var d=c(89718);let e="https://opencode.ai/zen/v1/models",f=new Set(["big-pickle"]),g="__miaw_opencode_catalog_v1__";function h(){return globalThis[g]||={models:null,lastIds:[],lastDiff:{added:[],removed:[]},fetchedAt:null,lastAttemptAt:0,lastError:null},globalThis[g]}function i(a){if(null==a)return null;if("number"==typeof a)return a;let b=String(a).trim();return""!==b&&Number.isFinite(Number(b))?Number(b):null}function j(a,b){if(b&&"object"==typeof b){if(Array.isArray(b))return!!b.includes(a)||void 0;if(Object.prototype.hasOwnProperty.call(b,a))return b[a]}}function k(a,b=null){let c,d,e,g=a?.id;if(!g)return!1;let h=j(g,b);return void 0!==h?!0===h||"true"===h:!!(String(g).endsWith("-free")||f.has(g))||(d=i((c=a?.pricing||{}).prompt??a?.input_price??a?.input_cost),e=i(c.completion??a?.output_price??a?.output_cost),0===d&&0===e)}async function l(){let a=new AbortController,b=setTimeout(()=>a.abort(),15e3);try{var c;let b=await fetch(e,{headers:{"x-opencode-client":"desktop"},cache:"no-store",signal:a.signal});if(!b.ok)throw Error(`OpenCode Zen models: HTTP ${b.status}`);let d=(c=await b.json(),Array.isArray(c)?c:c?.data??c?.models??[]).filter(a=>a&&"string"==typeof a.id),f=h(),g=d.map(a=>a.id);return f.lastDiff={added:d.filter(a=>!f.lastIds.includes(a.id)),removed:f.lastIds.filter(a=>!g.includes(a))},f.models=d,f.lastIds=g,f.fetchedAt=Date.now(),f.lastAttemptAt=Date.now(),f.lastError=null,f}finally{clearTimeout(b)}}async function m(){let a=h();if(a.models&&a.fetchedAt&&Date.now()-a.fetchedAt<216e5)return{models:a.models,diff:a.lastDiff,fetchedAt:a.fetchedAt,stale:!1,error:null};if(Date.now()-a.lastAttemptAt<6e4)return a.models?{models:a.models,diff:a.lastDiff,fetchedAt:a.fetchedAt,stale:!0,error:a.lastError}:{models:[],diff:{added:[],removed:[]},fetchedAt:null,stale:!0,error:a.lastError||"catalog fetch failed"};try{let a=await l();return{models:a.models,diff:a.lastDiff,fetchedAt:a.fetchedAt,stale:!1,error:null}}catch(c){let b=c?.message||String(c);if(a.lastAttemptAt=Date.now(),a.lastError=b,a.models)return{models:a.models,diff:a.lastDiff,fetchedAt:a.fetchedAt,stale:!0,error:b};return{models:[],diff:{added:[],removed:[]},fetchedAt:null,stale:!0,error:b}}}async function n(a=null){let b=await m(),c=a||await (0,d.mt)(),e=c.zenFreeModelOverrides||{},f=c.zenRetentionOverrides||{},g=(b.models||[]).map(a=>({...a,free:k(a,e),...function(a,b=null){let c=j(a?.id,b);if(void 0!==c){if(!1===c||"false"===c||"none"===c||"no"===c)return{data_retention:"none",retention_warning:!1};if("string"==typeof c&&""!==c.trim())return{data_retention:c.trim(),retention_warning:!1}}return{data_retention:"unknown",retention_warning:!0}}(a,f)})),h=g.filter(a=>a.free),i=new Set(h.map(a=>a.id));return{...b,models:g,freeModels:h,freeIds:i,overrides:e,freeOnlyEnabled:!0===c.zenFreeOnly}}async function o(a,b=null){let c=b||await (0,d.mt)();if(!0!==c.zenFreeOnly)return!0;let e=j(a,c.zenFreeModelOverrides||{});return void 0!==e?!0===e||"true"===e:!!String(a).endsWith("-free")||(await n(c)).freeIds.has(a)}},65745:(a,b,c)=>{"use strict";c.d(b,{Lb:()=>u,Qj:()=>s,syncConnectionModelCatalog:()=>v});var d=c(51455),e=c.n(d),f=c(48161),g=c.n(f),h=c(76760),i=c.n(h),j=c(40615),k=c(72239);let l=["none","minimal","low","medium","high","xhigh","max","ultra"],m=new Set(["llm","image","embedding","tts","stt","imageToText","webSearch","webFetch"]),n=RegExp(`-(${l.join("|")})$`,"i"),o="0.153.4",p={shell_type:"bash",visibility:"public",supported_in_api:!0,priority:1,additional_speed_tiers:[],service_tiers:[],availability_nux:null,upgrade:null,model_messages:null,include_skills_usage_instructions:!0,include_plugin_usage_instructions:!0,include_apps_usage_instructions:!0,default_reasoning_summary:"none",support_verbosity:!0,default_verbosity:"low",apply_patch_tool_type:"freeform",web_search_tool_type:"text_and_image",truncation_policy:{mode:"tokens",limit:1e4},supports_image_detail_original:!0,context_window:1048576,max_context_window:1048576,comp_hash:"3000",effective_context_window_percent:95,experimental_supported_tools:["send_user_message_async","clock"],input_modalities:["text","image"],supports_search_tool:!0,use_responses_lite:!0,node_repl_auto_review_required:!0,node_repl_disabled:!1,tool_mode:"code_mode_only",multi_agent_version:"v2",multi_agent_reasoning_effort:"medium"};function q(a){let b=a?.kind||a?.type;return m.has(b)?b:"llm"}function r(a){let b=String(("string"==typeof a?a:a?.effort)||"").trim().toLowerCase();return l.includes(b)?b:null}function s(a,b){let c=String(a?.provider||""),d=(0,j.wG)(c),e=new Map;for(let a of Array.isArray(b)?b:[]){let b=a?.id||a?.slug||a?.model||a?.name;if(!b)continue;let f=function(a,b,c){for(let d of new Set([b,c]))if(d&&a.startsWith(`${d}/`))return a.slice(d.length+1);return a}(String(b),c,d);if(!f)continue;let g=q(a),h=function(a,b,c){let d,e=Array.isArray(d=c?.supported_reasoning_levels||c?.supportedReasoningLevels)?[...new Set(d.map(r).filter(Boolean))]:[];return e.length?e:"llm"!==q(c)?[]:(0,k.k)(a,b)||[]}(c,f,a),i={...a,id:f,providerAlias:d,type:g,name:a?.name||a?.display_name||a?.displayName||f,source:"live",...h.length?{reasoningLevels:h}:{}};if(e.set(`${f}|${g}`,i),!("codex"!==c||"llm"!==g||f.endsWith("-review")||n.test(f)))for(let b of h)e.set(`${f}-${b}|${g}`,{...i,id:`${f}-${b}`,name:`${i.name} (${"xhigh"===b?"xHigh":b[0].toUpperCase()+b.slice(1)})`,upstreamModelId:a?.upstreamModelId||f,effortPreset:b})}return[...e.values()]}let t=Promise.resolve();function u(a,{codexDir:b=i().join(g().homedir(),".codex")}={}){let c=async()=>{let c=i().join(b,"models_cache.json"),d={fetched_at:new Date().toISOString(),client_version:o,models:[]};try{d=JSON.parse(await e().readFile(c,"utf8"))}catch(a){if(a?.code!=="ENOENT")throw a}let f=function(a,b){let c=a&&"object"==typeof a?{...a}:{},d=new Map((Array.isArray(c.models)?[...c.models]:[]).map((a,b)=>[a?.slug||a?.id||`__entry_${b}`,a]));for(let a of Array.isArray(b)?b:[]){if(!a?.id||a.effortPreset||"image"===a.type||a.id.endsWith("-review"))continue;let b=function(a){let b=a.slug||`${a.providerAlias}/${a.id}`,c=(a.reasoningLevels||a.supportedReasoningLevels||[]).map(r).filter(Boolean),d=Number(a.contextLength||a.contextWindow||a.context_window)||void 0;return{...p,slug:b,display_name:a.name||a.displayName||a.id||b,description:a.description||`Model ${b} via MiawRouter`,default_reasoning_level:c.includes("medium")?"medium":c[0]||"medium",supported_reasoning_levels:c.map(a=>({effort:a,description:`Reasoning effort: ${a}`})),...d?{context_window:d,max_context_window:d}:{}}}(a),c=d.get(b.slug);d.set(b.slug,c?{...b,...c,supported_reasoning_levels:b.supported_reasoning_levels}:b)}return c.models=[...d.values()],c}(d,a);f.fetched_at=new Date().toISOString(),f.client_version||(f.client_version=o),await e().mkdir(b,{recursive:!0});let g=`${c}.tmp`;return await e().writeFile(g,JSON.stringify(f,null,2)),await e().rename(g,c),f};return t=t.then(c,c)}async function v(a,b={}){if(!a||!1===a.isActive)return{synced:0,skipped:!0};let d=b.resolve||(async a=>{let{resolveProviderConnectionModels:b}=await Promise.all([c.e(5592),c.e(8827),c.e(436),c.e(3943),c.e(3225),c.e(2051),c.e(7828),c.e(5243),c.e(6854)]).then(c.bind(c,93297));return b(a)}),e=b.upsert||(async a=>{let{upsertCustomModels:b}=await c.e(9460).then(c.bind(c,9460));return b(a)}),f=b.writeCache||u;try{let c;try{let g=Promise.resolve(d(a)),h=new Promise((a,d)=>{c=setTimeout(()=>d(Error("model catalog timeout")),b.timeoutMs||3e4)}),i=await Promise.race([g,h]);if(!i||i.error||!Array.isArray(i.models)||0===i.models.length)return{synced:0,skipped:!0,error:i?.error};let j=s(a,i.models);if(!j.length)return{synced:0,skipped:!0};return await e(j),"codex"===a.provider&&await f(j.filter(a=>!a.effortPreset&&"llm"===a.type)),{synced:j.length}}finally{c&&clearTimeout(c)}}catch(a){return{synced:0,failed:!0,error:a?.message||String(a)}}}},78335:()=>{},81329:(a,b,c)=>{"use strict";c.d(b,{CP:()=>f,KC:()=>d.KC,Xg:()=>d.Xg,eh:()=>e,vq:()=>d.PROVIDER_MODELS});var d=c(45699);c(41955),Object.entries(c(40615).AI_PROVIDERS).filter(([,a])=>a.passthroughModels).map(([a])=>a);let e=Object.entries(d.PROVIDER_MODELS).flatMap(([a,b])=>b.map(b=>({provider:a,model:b.id,name:b.name}))),f=(a,b=null)=>a?.kind||a?.type||b},92280:(a,b,c)=>{"use strict";Object.defineProperty(b,"I",{enumerable:!0,get:function(){return g}});let d=c(28208),e=c(47617),f=c(62018);async function g(a,b,c,g){if((0,d.isNodeNextResponse)(b)){var h;b.statusCode=c.status,b.statusMessage=c.statusText;let d=["set-cookie","www-authenticate","proxy-authenticate","vary"];null==(h=c.headers)||h.forEach((a,c)=>{if("x-middleware-set-cookie"!==c.toLowerCase())if("set-cookie"===c.toLowerCase())for(let d of(0,f.splitCookiesString)(a))b.appendHeader(c,d);else{let e=void 0!==b.getHeader(c);(d.includes(c.toLowerCase())||!e)&&b.appendHeader(c,a)}});let{originalResponse:i}=b;c.body&&"HEAD"!==a.method?await (0,e.pipeToNodeResponse)(c.body,i,g):i.end()}}},92305:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={isRequestApiAllowedInCurrentPhase:function(){return k},throwForSearchParamsAccessInUseCache:function(){return j},throwWithStaticGenerationBailoutErrorWithDynamicError:function(){return i}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(15693),g=c(19121),h=c(3295);function i(a,b){throw Object.defineProperty(new f.StaticGenBailoutError(`Route ${a} with \`dynamic = "error"\` couldn't be rendered statically because it used ${b}. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E543",enumerable:!1,configurable:!0})}function j(a,b){let c=Object.defineProperty(Error(`Route ${a.route} used \`searchParams\` inside "use cache". Accessing dynamic request data inside a cache scope is not supported. If you need some search params inside a cached function await \`searchParams\` outside of the cached function and pass only the required search params as arguments to the cached function. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`),"__NEXT_ERROR_CODE",{value:"E842",enumerable:!1,configurable:!0});throw Error.captureStackTrace(c,b),a.invalidDynamicUsageError??=c,c}function k(a){switch(a.phase){case"action":case"render":return!0;case"after":{let a=g.actionAsyncStorage.getStore();if(a&&(a.isAppRoute||a.isAction))return!0;let b=h.afterTaskAsyncStorage.getStore();if(b)return"action"===b.rootTaskSpawnPhase;return!1}}}},96487:()=>{}};
@@ -1,4 +1,4 @@
1
- "use strict";exports.id=4018,exports.ids=[4018],exports.modules={4126:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>B,GET:()=>y,POST:()=>A});var d=c(49796),e=c(23211),f=c(79646),g=c(28354),h=c(79748),i=c.n(h),j=c(33873),k=c.n(j),l=c(21820),m=c.n(l),n=c(24424);let o=(0,g.promisify)(f.exec),p="miawrouter",q=a=>`${p}/${a}`,r=a=>"string"==typeof a&&a.startsWith(`${p}/`),s=a=>"string"==typeof a?a:a&&"object"==typeof a?a.primary??"":"",t=()=>k().join(m().homedir(),".openclaw"),u=()=>k().join(t(),"openclaw.json"),v=async()=>{try{let a="win32"===m().platform(),b=a?{...process.env,PATH:`${process.env.APPDATA}\\npm;${process.env.PATH}`}:process.env;return await o(a?"where openclaw":"which openclaw",{windowsHide:!0,env:b}),!0}catch{try{return await i().access(u()),!0}catch{return!1}}},w=async()=>{try{let a=u(),b=(await i().readFile(a,"utf-8")).replace(/,(\s*[}\]])/g,"$1");return JSON.parse(b)}catch(a){return null}},x=async a=>{try{let b=k().join(a,"models.json"),c=await i().readFile(b,"utf-8"),d=JSON.parse(c),e=d?.providers?.[p]?.models;return e?.[0]?.id||null}catch{return null}};async function y(){try{if(!await v())return e.NextResponse.json({installed:!1,settings:null,message:"Open Claw CLI is not installed"});let a=await w(),b=a?.agents?.list||[],c=await Promise.all(b.map(async a=>{let b=a.agentDir?await x(a.agentDir):null;return{...a,model:s(a.model),currentModel:b}}));return e.NextResponse.json({installed:!0,settings:a,agents:c,hasMiawRouter:!!a&&!!a.models&&!!a.models.providers&&!!a.models.providers[p],settingsPath:u()})}catch(a){return console.log("Error checking openclaw settings:",a),e.NextResponse.json({error:"Failed to check openclaw settings"},{status:500})}}let z=async(a,b,c,d)=>{await i().mkdir(a,{recursive:!0});let e=k().join(a,"models.json"),f={};try{let a=await i().readFile(e,"utf-8");f=JSON.parse(a)}catch{}f.providers||(f.providers={}),f.providers[p]={baseUrl:c,apiKey:d||"your_api_key",api:"openai-completions",models:[{id:b,name:b.split("/").pop()||b}]},await i().writeFile(e,JSON.stringify(f,null,2))};async function A(a){try{let{baseUrl:b,apiKey:c,model:d,agentModels:f={}}=await a.json();if(!b||!d)return e.NextResponse.json({error:"baseUrl and model are required"},{status:400});let g=t(),h=u();await i().mkdir(g,{recursive:!0});let j={};try{let a=await i().readFile(h,"utf-8");j=JSON.parse(a)}catch{}j.agents||(j.agents={}),j.agents.defaults||(j.agents.defaults={}),j.agents.defaults.model||(j.agents.defaults.model={}),j.agents.defaults.models||(j.agents.defaults.models={}),j.models||(j.models={}),j.models.providers||(j.models.providers={});let k=b.endsWith("/v1")?b:`${b}/v1`,l=q(d);Object.keys(j.agents.defaults.models).filter(a=>r(a)).forEach(a=>{delete j.agents.defaults.models[a]}),j.agents.defaults.model.primary=l;let m=new Set([d]);return Object.values(f).forEach(a=>{a&&m.add(a)}),m.forEach(a=>{j.agents.defaults.models[q(a)]={}}),j.agents.list&&(j.agents.list=j.agents.list.map(a=>{if(r(s(a.model))){let{model:b,...c}=a;return c}return a})),j.models.providers[p]={baseUrl:k,apiKey:c||"your_api_key",api:"openai-completions",models:[...m].map(a=>({id:a,name:a.split("/").pop()||a}))},j.agents.list&&(j.agents.list=j.agents.list.map(a=>{let b=f[a.id];return b?{...a,model:q(b)}:a}),await Promise.all(j.agents.list.map(async a=>{if(!a.agentDir)return;let b=f[a.id]||d;await z(a.agentDir,b,k,c)}))),await i().writeFile(h,JSON.stringify(j,null,2)),e.NextResponse.json({success:!0,message:"Open Claw settings applied successfully!",settingsPath:h})}catch(a){return console.log("Error updating openclaw settings:",a),e.NextResponse.json({error:"Failed to update openclaw settings"},{status:500})}}async function B(){try{let a=u(),b={};try{let c=await i().readFile(a,"utf-8");b=JSON.parse(c)}catch(a){if("ENOENT"===a.code)return e.NextResponse.json({success:!0,message:"No settings file to reset"});throw a}if(b.models&&b.models.providers&&(delete b.models.providers[p],0===Object.keys(b.models.providers).length&&delete b.models.providers),b.agents?.defaults?.models){for(let a of Object.keys(b.agents.defaults.models).filter(a=>r(a)))delete b.agents.defaults.models[a];0===Object.keys(b.agents.defaults.models).length&&delete b.agents.defaults.models}return r(b.agents?.defaults?.model?.primary)&&delete b.agents.defaults.model.primary,await i().writeFile(a,JSON.stringify(b,null,2)),e.NextResponse.json({success:!0,message:"MiawRouter settings removed successfully"})}catch(a){return console.log("Error resetting openclaw settings:",a),e.NextResponse.json({error:"Failed to reset openclaw settings"},{status:500})}}(0,n.D)([y,A,B]),(0,d.A)(y,"0091e7dba6cf3a6bd8385e877913a6597043743dc1",null),(0,d.A)(A,"403255139e4ab5d365b0285b9f463625206dcfb650",null),(0,d.A)(B,"00194f8d9b0bc7cecb92cb4dc9a1daa2b8133b009f",null)},5592:(a,b,c)=>{c.r(b),c.d(b,{GET:()=>u,POST:()=>v});var d=c(49796),e=c(23211),f=c(79646),g=c(28354),h=c(79748),i=c.n(h),j=c(33873),k=c.n(j),l=c(21820),m=c.n(l);let n=a=>JSON.stringify(String(a??""));var o=c(24424);let p=(0,g.promisify)(f.exec),q=()=>process.env.PI_CODING_AGENT_DIR||k().join(m().homedir(),".omp","agent"),r=async()=>{let a=k().join(q(),"models.yml");try{return await i().access(a),a}catch{let b=k().join(q(),"models.yaml");try{return await i().access(b),b}catch{return a}}},s=async()=>{try{let a="win32"===m().platform()?"where omp":"which omp",{stdout:b}=await p(a,{windowsHide:!0});return{installed:!0,source:b.trim().split(/\r?\n/)[0]||"PATH"}}catch{return{installed:!1,source:null}}},t=async a=>{try{return await i().readFile(a,"utf8")}catch(a){if("ENOENT"===a.code)return"";throw a}};async function u(){try{let[{installed:a,source:b},c]=await Promise.all([s(),r()]),d=await t(c),f=(a=>{let b=String(a||"").replace(/\r\n/g,"\n").split("\n"),c=b.findIndex(a=>/^ miawrouter:\s*$/.test(a));if(-1===c)return{configured:!1,baseUrl:null,model:null};let d=b.length;for(let a=c+1;a<b.length;a+=1)if(/^ [A-Za-z0-9_-]+\s*:/.test(b[a])||/^\S/.test(b[a])){d=a;break}let e=b.slice(c+1,d).join("\n"),f=e.match(/^\s+baseUrl:\s*["']?([^"'\n]+)["']?\s*$/m)?.[1]?.trim()||null,g=e.match(/^\s+- id:\s*["']?([^"'\n]+)["']?\s*$/m)?.[1]?.trim()||null;return{configured:!!(f&&g),baseUrl:f,model:g}})(d);return e.NextResponse.json({installed:a,source:b,configExists:!!d,configPath:c,hasMiawRouter:f.configured,...f})}catch(a){return console.log("Error checking Oh My Pi settings:",a),e.NextResponse.json({error:"Failed to check Oh My Pi settings"},{status:500})}}async function v(a){try{var b;let c,d;try{c=await a.json()}catch{return e.NextResponse.json({error:"Invalid JSON body"},{status:400})}try{d=(a=>{let b=String(a||"").trim();if(!b)return null;let c=new URL(b);return/^https?:$/.test(c.protocol)?b.replace(/\/+$/,"").endsWith("/v1")?b.replace(/\/+$/,""):`${b.replace(/\/+$/,"")}/v1`:null})(c?.baseUrl)}catch{d=null}let f=String(c?.model||"").trim(),g=String(c?.apiKey||"sk_miawrouter").trim();if(!d||!f||/[\r\n]/.test(f)||/[\r\n]/.test(g))return e.NextResponse.json({error:"A valid baseUrl and model are required"},{status:400});let h=await r(),j=await t(h),k=(b=d,` miawrouter:
1
+ "use strict";exports.id=7937,exports.ids=[7937],exports.modules={4126:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>B,GET:()=>y,POST:()=>A});var d=c(49796),e=c(23211),f=c(79646),g=c(28354),h=c(79748),i=c.n(h),j=c(33873),k=c.n(j),l=c(21820),m=c.n(l),n=c(24424);let o=(0,g.promisify)(f.exec),p="miawrouter",q=a=>`${p}/${a}`,r=a=>"string"==typeof a&&a.startsWith(`${p}/`),s=a=>"string"==typeof a?a:a&&"object"==typeof a?a.primary??"":"",t=()=>k().join(m().homedir(),".openclaw"),u=()=>k().join(t(),"openclaw.json"),v=async()=>{try{let a="win32"===m().platform(),b=a?{...process.env,PATH:`${process.env.APPDATA}\\npm;${process.env.PATH}`}:process.env;return await o(a?"where openclaw":"which openclaw",{windowsHide:!0,env:b}),!0}catch{try{return await i().access(u()),!0}catch{return!1}}},w=async()=>{try{let a=u(),b=(await i().readFile(a,"utf-8")).replace(/,(\s*[}\]])/g,"$1");return JSON.parse(b)}catch(a){return null}},x=async a=>{try{let b=k().join(a,"models.json"),c=await i().readFile(b,"utf-8"),d=JSON.parse(c),e=d?.providers?.[p]?.models;return e?.[0]?.id||null}catch{return null}};async function y(){try{if(!await v())return e.NextResponse.json({installed:!1,settings:null,message:"Open Claw CLI is not installed"});let a=await w(),b=a?.agents?.list||[],c=await Promise.all(b.map(async a=>{let b=a.agentDir?await x(a.agentDir):null;return{...a,model:s(a.model),currentModel:b}}));return e.NextResponse.json({installed:!0,settings:a,agents:c,hasMiawRouter:!!a&&!!a.models&&!!a.models.providers&&!!a.models.providers[p],settingsPath:u()})}catch(a){return console.log("Error checking openclaw settings:",a),e.NextResponse.json({error:"Failed to check openclaw settings"},{status:500})}}let z=async(a,b,c,d)=>{await i().mkdir(a,{recursive:!0});let e=k().join(a,"models.json"),f={};try{let a=await i().readFile(e,"utf-8");f=JSON.parse(a)}catch{}f.providers||(f.providers={}),f.providers[p]={baseUrl:c,apiKey:d||"your_api_key",api:"openai-completions",models:[{id:b,name:b.split("/").pop()||b}]},await i().writeFile(e,JSON.stringify(f,null,2))};async function A(a){try{let{baseUrl:b,apiKey:c,model:d,agentModels:f={}}=await a.json();if(!b||!d)return e.NextResponse.json({error:"baseUrl and model are required"},{status:400});let g=t(),h=u();await i().mkdir(g,{recursive:!0});let j={};try{let a=await i().readFile(h,"utf-8");j=JSON.parse(a)}catch{}j.agents||(j.agents={}),j.agents.defaults||(j.agents.defaults={}),j.agents.defaults.model||(j.agents.defaults.model={}),j.agents.defaults.models||(j.agents.defaults.models={}),j.models||(j.models={}),j.models.providers||(j.models.providers={});let k=b.endsWith("/v1")?b:`${b}/v1`,l=q(d);Object.keys(j.agents.defaults.models).filter(a=>r(a)).forEach(a=>{delete j.agents.defaults.models[a]}),j.agents.defaults.model.primary=l;let m=new Set([d]);return Object.values(f).forEach(a=>{a&&m.add(a)}),m.forEach(a=>{j.agents.defaults.models[q(a)]={}}),j.agents.list&&(j.agents.list=j.agents.list.map(a=>{if(r(s(a.model))){let{model:b,...c}=a;return c}return a})),j.models.providers[p]={baseUrl:k,apiKey:c||"your_api_key",api:"openai-completions",models:[...m].map(a=>({id:a,name:a.split("/").pop()||a}))},j.agents.list&&(j.agents.list=j.agents.list.map(a=>{let b=f[a.id];return b?{...a,model:q(b)}:a}),await Promise.all(j.agents.list.map(async a=>{if(!a.agentDir)return;let b=f[a.id]||d;await z(a.agentDir,b,k,c)}))),await i().writeFile(h,JSON.stringify(j,null,2)),e.NextResponse.json({success:!0,message:"Open Claw settings applied successfully!",settingsPath:h})}catch(a){return console.log("Error updating openclaw settings:",a),e.NextResponse.json({error:"Failed to update openclaw settings"},{status:500})}}async function B(){try{let a=u(),b={};try{let c=await i().readFile(a,"utf-8");b=JSON.parse(c)}catch(a){if("ENOENT"===a.code)return e.NextResponse.json({success:!0,message:"No settings file to reset"});throw a}if(b.models&&b.models.providers&&(delete b.models.providers[p],0===Object.keys(b.models.providers).length&&delete b.models.providers),b.agents?.defaults?.models){for(let a of Object.keys(b.agents.defaults.models).filter(a=>r(a)))delete b.agents.defaults.models[a];0===Object.keys(b.agents.defaults.models).length&&delete b.agents.defaults.models}return r(b.agents?.defaults?.model?.primary)&&delete b.agents.defaults.model.primary,await i().writeFile(a,JSON.stringify(b,null,2)),e.NextResponse.json({success:!0,message:"MiawRouter settings removed successfully"})}catch(a){return console.log("Error resetting openclaw settings:",a),e.NextResponse.json({error:"Failed to reset openclaw settings"},{status:500})}}(0,n.D)([y,A,B]),(0,d.A)(y,"00024aa9a07a3cfab75713323cfcfe8b9b3c026a12",null),(0,d.A)(A,"403d028d3410d619cd4df6dd454bc1a0c1ff3be158",null),(0,d.A)(B,"00e2e3b8f4121cf5d33e9c59894767653f19db4a4f",null)},5592:(a,b,c)=>{c.r(b),c.d(b,{GET:()=>u,POST:()=>v});var d=c(49796),e=c(23211),f=c(79646),g=c(28354),h=c(79748),i=c.n(h),j=c(33873),k=c.n(j),l=c(21820),m=c.n(l);let n=a=>JSON.stringify(String(a??""));var o=c(24424);let p=(0,g.promisify)(f.exec),q=()=>process.env.PI_CODING_AGENT_DIR||k().join(m().homedir(),".omp","agent"),r=async()=>{let a=k().join(q(),"models.yml");try{return await i().access(a),a}catch{let b=k().join(q(),"models.yaml");try{return await i().access(b),b}catch{return a}}},s=async()=>{try{let a="win32"===m().platform()?"where omp":"which omp",{stdout:b}=await p(a,{windowsHide:!0});return{installed:!0,source:b.trim().split(/\r?\n/)[0]||"PATH"}}catch{return{installed:!1,source:null}}},t=async a=>{try{return await i().readFile(a,"utf8")}catch(a){if("ENOENT"===a.code)return"";throw a}};async function u(){try{let[{installed:a,source:b},c]=await Promise.all([s(),r()]),d=await t(c),f=(a=>{let b=String(a||"").replace(/\r\n/g,"\n").split("\n"),c=b.findIndex(a=>/^ miawrouter:\s*$/.test(a));if(-1===c)return{configured:!1,baseUrl:null,model:null};let d=b.length;for(let a=c+1;a<b.length;a+=1)if(/^ [A-Za-z0-9_-]+\s*:/.test(b[a])||/^\S/.test(b[a])){d=a;break}let e=b.slice(c+1,d).join("\n"),f=e.match(/^\s+baseUrl:\s*["']?([^"'\n]+)["']?\s*$/m)?.[1]?.trim()||null,g=e.match(/^\s+- id:\s*["']?([^"'\n]+)["']?\s*$/m)?.[1]?.trim()||null;return{configured:!!(f&&g),baseUrl:f,model:g}})(d);return e.NextResponse.json({installed:a,source:b,configExists:!!d,configPath:c,hasMiawRouter:f.configured,...f})}catch(a){return console.log("Error checking Oh My Pi settings:",a),e.NextResponse.json({error:"Failed to check Oh My Pi settings"},{status:500})}}async function v(a){try{var b;let c,d;try{c=await a.json()}catch{return e.NextResponse.json({error:"Invalid JSON body"},{status:400})}try{d=(a=>{let b=String(a||"").trim();if(!b)return null;let c=new URL(b);return/^https?:$/.test(c.protocol)?b.replace(/\/+$/,"").endsWith("/v1")?b.replace(/\/+$/,""):`${b.replace(/\/+$/,"")}/v1`:null})(c?.baseUrl)}catch{d=null}let f=String(c?.model||"").trim(),g=String(c?.apiKey||"sk_miawrouter").trim();if(!d||!f||/[\r\n]/.test(f)||/[\r\n]/.test(g))return e.NextResponse.json({error:"A valid baseUrl and model are required"},{status:400});let h=await r(),j=await t(h),k=(b=d,` miawrouter:
2
2
  baseUrl: ${n(b)}
3
3
  api: openai-completions
4
4
  apiKey: ${n(g)}
@@ -10,15 +10,15 @@
10
10
  maxTokens: 384000`);await i().mkdir(q(),{recursive:!0});let l=j?`${h}.bak`:null;if(l)try{await i().access(l)}catch{await i().copyFile(h,l)}return await i().writeFile(h,function(a,b){let c=String(a||"").replace(/\r\n/g,"\n"),d=c.split("\n"),e=d.findIndex(a=>/^providers:\s*(?:#.*)?$/.test(a));if(-1===e)return`${c.trimEnd()}${c.trim()?"\n\n":""}providers:
11
11
  ${b}
12
12
  `;let f=d.length;for(let a=e+1;a<d.length;a+=1)if(/^\S/.test(d[a])&&!d[a].startsWith("#")){f=a;break}let g=d.findIndex((a,b)=>b>e&&b<f&&/^ miawrouter:\s*(?:#.*)?$/.test(a));if(-1!==g){let a=f;for(let b=g+1;b<f;b+=1)if(/^ [A-Za-z0-9_-]+\s*:/.test(d[b])){a=b;break}d.splice(g,a-g,...b.split("\n"))}else d.splice(f,0,...b.split("\n"));return`${d.join("\n").trimEnd()}
13
- `}(j,k),{mode:384}),await i().chmod(h,384),e.NextResponse.json({success:!0,message:"Oh My Pi settings applied successfully",configPath:h,backupPath:l,hasMiawRouter:!0})}catch(a){return console.log("Error applying Oh My Pi settings:",a),e.NextResponse.json({error:"Failed to apply Oh My Pi settings"},{status:500})}}(0,o.D)([u,v]),(0,d.A)(u,"00c0a16d282eb99a7a5c07f4f74dfda0652b9414c9",null),(0,d.A)(v,"4052e90e9cf795d5c37a50fadc27df9a7a0857ed88",null)},8304:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>w,GET:()=>u,POST:()=>v});var d=c(49796),e=c(23211),f=c(79646),g=c(28354),h=c(79748),i=c.n(h),j=c(33873),k=c.n(j),l=c(21820),m=c.n(l),n=c(24424);let o=(0,g.promisify)(f.exec),p=()=>k().join(m().homedir(),".local","share","kilo"),q=()=>k().join(p(),"auth.json"),r=()=>k().join(m().homedir(),".config","Code","User","settings.json"),s=async()=>{try{let a="win32"===m().platform(),b=a?{...process.env,PATH:`${process.env.APPDATA}\\npm;${process.env.PATH}`}:process.env;return await o(a?"where kilo":"which kilo",{windowsHide:!0,env:b}),!0}catch{try{return await i().access(q()),!0}catch{return!1}}},t=async a=>{try{let b=(await i().readFile(a,"utf-8")).replace(/,(\s*[}\]])/g,"$1");return JSON.parse(b)}catch(a){return null}};async function u(){try{if(!await s())return e.NextResponse.json({installed:!1,settings:null,message:"Kilo Code CLI is not installed"});let a=await t(q());return e.NextResponse.json({installed:!0,settings:{auth:a?Object.keys(a):[]},hasMiawRouter:(a=>{if(!a)return!1;let b=a["openai-compatible"];if(!b)return!1;let c=b.baseUrl||b.baseURL||"";return c.includes("localhost")||c.includes("127.0.0.1")||c.includes("miawrouter")})(a),authPath:q()})}catch(a){return console.log("Error checking kilo settings:",a),e.NextResponse.json({error:"Failed to check kilo settings"},{status:500})}}async function v(a){try{let{baseUrl:b,apiKey:c,model:d}=await a.json();if(!b||!c||!d)return e.NextResponse.json({error:"baseUrl, apiKey and model are required"},{status:400});await i().mkdir(p(),{recursive:!0});let f=b.endsWith("/v1")?b:`${b}/v1`,g=await t(q())||{};g["openai-compatible"]={type:"api-key",apiKey:c,baseUrl:f,model:d},await i().writeFile(q(),JSON.stringify(g,null,2));try{let a=await t(r())||{};a["kilocode.customProvider"]={name:"MiawRouter",baseURL:f,apiKey:c},a["kilocode.defaultModel"]=d,await i().writeFile(r(),JSON.stringify(a,null,2))}catch{}return e.NextResponse.json({success:!0,message:"Kilo Code settings applied successfully!",authPath:q()})}catch(a){return console.log("Error updating kilo settings:",a),e.NextResponse.json({error:"Failed to update kilo settings"},{status:500})}}async function w(){try{let a=await t(q());if(!a)return e.NextResponse.json({success:!0,message:"No settings file to reset"});delete a["openai-compatible"],await i().writeFile(q(),JSON.stringify(a,null,2));try{let a=await t(r());a&&(delete a["kilocode.customProvider"],delete a["kilocode.defaultModel"],await i().writeFile(r(),JSON.stringify(a,null,2)))}catch{}return e.NextResponse.json({success:!0,message:"MiawRouter settings removed from Kilo Code"})}catch(a){return console.log("Error resetting kilo settings:",a),e.NextResponse.json({error:"Failed to reset kilo settings"},{status:500})}}(0,n.D)([u,v,w]),(0,d.A)(u,"00995b98124f3093624c29e0a034fd4785d5eff95f",null),(0,d.A)(v,"40181366017161340c52e19498c39f27d5f143af51",null),(0,d.A)(w,"00ab16dd64bd49d94518a3f0b696efbcbb624c396a",null)},14833:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>C,GET:()=>z,POST:()=>A});var d=c(49796),e=c(23211),f=c(79646),g=c(28354),h=c(79748),i=c.n(h),j=c(33873),k=c.n(j),l=c(21820),m=c.n(l),n=c(28286),o=c(7813),p=c(24424);let q=(0,g.promisify)(f.exec),r=n.DEFAULT_PLUGINS.find(a=>"exa"===a.name),s=()=>{let a=m().homedir();return k().join(a,".claude","settings.json")},t=()=>k().join(m().homedir(),".claude.json"),u=async()=>{try{let a=await i().readFile(t(),"utf-8");return JSON.parse(a.replace(/,(\s*[}\]])/g,"$1"))}catch{return null}},v=async a=>{let b=t(),c={};try{c=JSON.parse(await i().readFile(b,"utf-8"))}catch(a){if("ENOENT"!==a.code)throw a}a&&Object.keys(a).length>0?c.mcpServers={...c.mcpServers||{},...a}:c.mcpServers&&(delete c.mcpServers.exa,0===Object.keys(c.mcpServers).length&&delete c.mcpServers),await i().writeFile(b,JSON.stringify(c,null,2))},w=async()=>{try{let a="win32"===m().platform(),b=a?{...process.env,PATH:`${process.env.APPDATA}\\npm;${process.env.PATH}`}:process.env;return await q(a?"where claude":"which claude",{windowsHide:!0,env:b}),!0}catch{try{return await i().access(s()),!0}catch{return!1}}},x=async()=>{try{let a=s(),b=(await i().readFile(a,"utf-8")).replace(/,(\s*[}\]])/g,"$1");return JSON.parse(b)}catch(a){return null}},y=async()=>{let a=k().join(m().homedir(),".claude","agents"),b={};for(let c of["explorer","reviewer","planner","fast"])try{let d=(await i().readFile(k().join(a,`${c}.md`),"utf8")).match(/^model:\s*["']?([^"'\r\n]+)["']?/m);d&&(b[c]=d[1].trim())}catch{}return b};async function z(){try{if(!await w())return e.NextResponse.json({installed:!1,settings:null,message:"Claude CLI is not installed"});let a=await x(),b=!!a?.env?.ANTHROPIC_BASE_URL,c=await u(),d=await y();return e.NextResponse.json({installed:!0,settings:a,subagents:d,hasMiawRouter:b,exaMcpEnabled:!!c?.mcpServers?.exa,settingsPath:s()})}catch(a){return console.log("Error checking claude settings:",a),e.NextResponse.json({error:"Failed to check claude settings"},{status:500})}}async function A(a){try{let{env:b,exaMcpEnabled:c,maxContextTokens:d,subagents:f}=await a.json();if(!b||"object"!=typeof b)return e.NextResponse.json({error:"Invalid env object"},{status:400});let g=s(),h=k().dirname(g);await i().mkdir(h,{recursive:!0});let j={};try{let a=await i().readFile(g,"utf-8");j=JSON.parse(a)}catch(a){if("ENOENT"!==a.code)throw a}b.ANTHROPIC_BASE_URL&&(b.ANTHROPIC_BASE_URL=b.ANTHROPIC_BASE_URL.endsWith("/v1")?b.ANTHROPIC_BASE_URL:`${b.ANTHROPIC_BASE_URL}/v1`);let l={...j,hasCompletedOnboarding:!0,env:{...j.env||{},...b}};return d?l.env.CLAUDE_CODE_MAX_CONTEXT_TOKENS=String(d):delete l.env.CLAUDE_CODE_MAX_CONTEXT_TOKENS,await i().writeFile(g,JSON.stringify(l,null,2)),r&&await v(c?{exa:{type:r.transport,url:r.url}}:null),f&&"object"==typeof f&&await (0,o.DA)({roles:f}),e.NextResponse.json({success:!0,message:"Settings updated successfully"})}catch(a){return console.log("Error updating claude settings:",a),e.NextResponse.json({error:"Failed to update claude settings"},{status:500})}}let B=["ANTHROPIC_BASE_URL","ANTHROPIC_AUTH_TOKEN","ANTHROPIC_DEFAULT_OPUS_MODEL","ANTHROPIC_DEFAULT_SONNET_MODEL","ANTHROPIC_DEFAULT_HAIKU_MODEL","API_TIMEOUT_MS","CLAUDE_CODE_MAX_CONTEXT_TOKENS"];async function C(){try{let a=s(),b={};try{let c=await i().readFile(a,"utf-8");b=JSON.parse(c)}catch(a){if("ENOENT"===a.code)return e.NextResponse.json({success:!0,message:"No settings file to reset"});throw a}return b.env&&(B.forEach(a=>{delete b.env[a]}),0===Object.keys(b.env).length&&delete b.env),await v(null),await i().writeFile(a,JSON.stringify(b,null,2)),e.NextResponse.json({success:!0,message:"Settings reset successfully"})}catch(a){return console.log("Error resetting claude settings:",a),e.NextResponse.json({error:"Failed to reset claude settings"},{status:500})}}(0,p.D)([z,A,C]),(0,d.A)(z,"00a3ce9d7b3aaaa48726921e803d949e521a83d483",null),(0,d.A)(A,"4072a935b96c2334eb98bbfa963ddd6cbf8da02a03",null),(0,d.A)(C,"006cc9645675a8742bbd834c512b94f084aa82fe7c",null)},14933:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>A,GET:()=>y,POST:()=>z});var d=c(49796),e=c(23211),f=c(79646),g=c(28354),h=c(79748),i=c.n(h),j=c(33873),k=c.n(j),l=c(21820),m=c.n(l),n=c(68658),o=c(66306),p=c(35112),q=c(24424);let r=()=>e.NextResponse.json({error:"Local authentication required"},{status:403}),s=(0,g.promisify)(f.exec),t=()=>k().join(m().homedir(),".grok"),u=()=>k().join(t(),"config.toml"),v=async()=>{try{let a="win32"===m().platform();return await s(a?"where grok":"which grok",{windowsHide:!0}),!0}catch{for(let a of[k().join(t(),"bin","grok"),u()])try{return await i().access(a),!0}catch{}return!1}},w=async()=>{try{return await i().readFile(u(),"utf-8")}catch(a){if("ENOENT"===a.code)return"";throw a}},x=(a,b)=>{let c=Number(a);if(Number.isFinite(c)&&c>0)return Math.floor(c);let d=b.indexOf("/"),e=d>0?b.slice(0,d):null,f=d>0?b.slice(d+1):b;return(0,o.nl)(e,f).contextWindow};async function y(a){if(!await (0,n.Nk)(a))return r();try{if(!await v())return e.NextResponse.json({installed:!1,settings:null,message:"Grok Build is not installed"});let a=(0,p.ZH)(await w());return e.NextResponse.json({installed:!0,settings:a,hasMiawRouter:!!a?.model?.base_url,configPath:u()})}catch(a){return console.log("Error checking grok-build settings:",a),e.NextResponse.json({error:"Failed to check grok-build settings"},{status:500})}}async function z(a){if(!await (0,n.Nk)(a))return r();try{let{baseUrl:b,apiKey:c,model:d,contextWindow:f,subagentModels:g}=await a.json(),h="string"==typeof d?d.trim():"";if(!b||!h)return e.NextResponse.json({error:"baseUrl and model are required"},{status:400});await i().mkdir(t(),{recursive:!0});let j=b.endsWith("/v1")?b:`${b}/v1`,k=(0,p.QQ)(await w(),{baseUrl:j,apiKey:c||"sk_miawrouter",model:h,contextWindow:x(f,h),subagentModels:(a=>{if(void 0===a)return;if(!a||"object"!=typeof a||Array.isArray(a))return{};let b={};for(let c of p.yl){let d=a[c],e="string"==typeof d?d.trim():d?.model?.trim();e&&(b[c]={model:e,contextWindow:x(d?.contextWindow,e)})}return b})(g)});return await i().writeFile(u(),k),e.NextResponse.json({success:!0,message:"Grok Build settings applied successfully!",configPath:u(),modelSlot:p.f7})}catch(a){return console.log("Error updating grok-build settings:",a),e.NextResponse.json({error:"Failed to update grok-build settings"},{status:500})}}async function A(a){if(!await (0,n.Nk)(a))return r();try{let a,b=u();try{a=await i().readFile(b,"utf-8")}catch(a){if("ENOENT"===a.code)return e.NextResponse.json({success:!0,message:"No config file to reset"});throw a}return await i().writeFile(b,(0,p.jk)(a)),e.NextResponse.json({success:!0,message:"MiawRouter model slots removed from Grok Build"})}catch(a){return console.log("Error resetting grok-build settings:",a),e.NextResponse.json({error:"Failed to reset grok-build settings"},{status:500})}}(0,q.D)([y,z,A]),(0,d.A)(y,"401caaca17148d10dd3a7e7f11aed87a51940b0fef",null),(0,d.A)(z,"40ab0f88945cb59a7da03c1ae5563b9b7dab8bc573",null),(0,d.A)(A,"401a768d216303ba65fafa093f2ad03ef100e4be02",null)},20703:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>r,GET:()=>p,POST:()=>q});var d=c(49796),e=c(23211),f=c(79748),g=c.n(f),h=c(33873),i=c.n(h),j=c(21820),k=c.n(j),l=c(24424);let m=()=>{let a=k().homedir(),b=k().platform();return"win32"===b?i().join(process.env.APPDATA||a,"Code","User","chatLanguageModels.json"):"darwin"===b?i().join(a,"Library","Application Support","Code","User","chatLanguageModels.json"):i().join(a,".config","Code","User","chatLanguageModels.json")},n=async()=>{try{let a=(await g().readFile(m(),"utf-8")).replace(/,(\s*[}\]])/g,"$1");return JSON.parse(a)}catch(a){return null}},o="MiawRouter";async function p(){try{let a=await n(),b=Array.isArray(a)&&a.find(a=>a.name===o)||null;return e.NextResponse.json({installed:!0,config:a,hasMiawRouter:!!Array.isArray(a)&&a.some(a=>a.name===o),configPath:m(),currentModel:b?.models?.[0]?.id||null,currentUrl:b?.models?.[0]?.url||null})}catch(a){return console.log("Error checking copilot settings:",a),e.NextResponse.json({error:"Failed to check copilot settings"},{status:500})}}async function q(a){try{let{baseUrl:b,apiKey:c,models:d}=await a.json();if(!b||!d?.length)return e.NextResponse.json({error:"baseUrl and models are required"},{status:400});let f=m();await g().mkdir(i().dirname(f),{recursive:!0});let h=[];try{let a=await g().readFile(f,"utf-8"),b=JSON.parse(a);h=Array.isArray(b)?b:[]}catch{}let j=`${b}/chat/completions#models.ai.azure.com`,k={name:o,vendor:"azure",apiKey:c||"sk_miawrouter",models:d.map(a=>({id:a,name:a,url:j,toolCalling:!0,vision:!1,maxInputTokens:128e3,maxOutputTokens:16e3}))},l=h.findIndex(a=>a.name===o);return l>=0?h[l]=k:h.push(k),await g().writeFile(f,JSON.stringify(h,null,2)),e.NextResponse.json({success:!0,message:"Copilot settings applied! Reload VS Code to take effect.",configPath:f})}catch(a){return console.log("Error updating copilot settings:",a),e.NextResponse.json({error:"Failed to update copilot settings"},{status:500})}}async function r(){try{let a=m(),b=[];try{let c=await g().readFile(a,"utf-8"),d=JSON.parse(c);b=Array.isArray(d)?d:[]}catch(a){if("ENOENT"===a.code)return e.NextResponse.json({success:!0,message:"No config file to reset"});throw a}return b=b.filter(a=>a.name!==o),await g().writeFile(a,JSON.stringify(b,null,2)),e.NextResponse.json({success:!0,message:"MiawRouter removed from Copilot config"})}catch(a){return console.log("Error resetting copilot settings:",a),e.NextResponse.json({error:"Failed to reset copilot settings"},{status:500})}}(0,l.D)([p,q,r]),(0,d.A)(p,"00ef5fc5deaee3c946790bb703ec0ae2c687802fce",null),(0,d.A)(q,"40ad9e111e5874265b6fbbb6322445d34157c10223",null),(0,d.A)(r,"005edccb9e68f907c583747eac648fda94e6a645e0",null)},21757:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>G,GET:()=>E,POST:()=>F});var d=c(49796),e=c(23211),f=c(79646),g=c(28354),h=c(79748),i=c.n(h),j=c(29021),k=c.n(j),l=c(33873),m=c.n(l),n=c(21820),o=c.n(n),p=c(69415),q=c(24424);let r=(0,g.promisify)(f.exec),s=()=>m().join(o().homedir(),".hermes"),t=()=>m().join(s(),"config.yaml"),u=()=>m().join(s(),".env"),v=()=>m().join(s(),"desktop.json"),w=()=>{let a=o().homedir();return"win32"===process.platform?m().join(process.env.APPDATA||m().join(a,"AppData","Roaming"),"Hermes Desktop"):"darwin"===process.platform?m().join(a,"Library","Application Support","Hermes Desktop"):m().join(a,".config","hermes-desktop")},x=()=>m().join(w(),"config.json"),y=async()=>{try{let a="win32"===o().platform();return await r(a?"where hermes":"which hermes",{windowsHide:!0}),!0}catch{try{return await i().access(t()),!0}catch{return!1}}},z=async()=>{try{let a="win32"===o().platform();return await r(a?"where hermes-desktop":"which hermes-desktop",{windowsHide:!0}),{installed:!0,path:"hermes-desktop"}}catch{}let a=o().homedir();for(let b of["/usr/bin/hermes-desktop","/usr/local/bin/hermes-desktop",m().join(a,".local","bin","hermes-desktop"),"/opt/Hermes Desktop/hermes-desktop",m().join(a,".local","share","applications","hermes-desktop.desktop"),"/Applications/Hermes Desktop.app","/Applications/Hermes.app",m().join(a,"Applications","Hermes Desktop.app"),m().join(process.env.LOCALAPPDATA||"","Programs","hermes-desktop","Hermes Desktop.exe")])if(k().existsSync(b))return{installed:!0,path:b};return k().existsSync(x())||k().existsSync(v())?{installed:!0,path:x()}:{installed:!1,path:null}},A=async()=>{try{return await i().readFile(t(),"utf-8")}catch(a){if("ENOENT"===a.code)return"";throw a}},B=async()=>{try{return await i().readFile(u(),"utf-8")}catch(a){if("ENOENT"===a.code)return"";throw a}},C=async()=>{try{let a=x();if(k().existsSync(a))return JSON.parse(await i().readFile(a,"utf-8"))}catch{}try{let a=v();if(k().existsSync(a))return JSON.parse(await i().readFile(a,"utf-8"))}catch{}return null},D=a=>{if(!a?.base_url&&!a?.endpoint&&!a?.baseUrl)return!1;let b=a.base_url||a.endpoint||a.baseUrl;return/localhost|127\.0\.0\.1|0\.0\.0\.0/.test(b)};async function E(){try{let a=await y(),b=await z();if(!(a||b.installed))return e.NextResponse.json({installed:!1,cliInstalled:!1,desktopInstalled:!1,desktopConfigPath:x(),settings:null,message:"Hermes Agent & Desktop not detected"});let c=await A(),d=(0,p.a)(c),f=(0,p.yN)(c),g=await C();return e.NextResponse.json({installed:!0,cliInstalled:a,desktopInstalled:b.installed,desktopPath:b.path,settings:{model:d,subagents:f,desktop:g},hasMiawRouter:D(d)||D(g),configPath:t(),desktopConfigPath:x()})}catch(a){return console.log("Error checking hermes settings:",a),e.NextResponse.json({error:"Failed to check hermes settings"},{status:500})}}async function F(a){try{var b,c;let d,f,{baseUrl:g,apiKey:h,model:j,subagentModels:k={},syncDesktop:l=!0}=await a.json();if(!g||!j)return e.NextResponse.json({error:"baseUrl and model are required"},{status:400});let m=s();await i().mkdir(m,{recursive:!0});let n=g.endsWith("/v1")?g:`${g}/v1`,o=h||"sk_miawrouter",q=await A(),r=(0,p.Em)(q,(0,p.T2)(j,n));r=(0,p.S2)(r,(0,p.nK)(j,k)),r=(0,p.QY)(r,p.P$,(0,p.vv)(j,n,o)),await i().writeFile(t(),r);let y=(b=await B(),c="OPENAI_API_KEY",d=RegExp(`^${c}=.*$`,"m"),f=`${c}=${o}`,d.test(b)?b.replace(d,f):b.length>0&&!b.endsWith("\n")?`${b}
13
+ `}(j,k),{mode:384}),await i().chmod(h,384),e.NextResponse.json({success:!0,message:"Oh My Pi settings applied successfully",configPath:h,backupPath:l,hasMiawRouter:!0})}catch(a){return console.log("Error applying Oh My Pi settings:",a),e.NextResponse.json({error:"Failed to apply Oh My Pi settings"},{status:500})}}(0,o.D)([u,v]),(0,d.A)(u,"0077b023a054c7c72fecf94e215cbc4ea2cea19187",null),(0,d.A)(v,"40fa7269a526e47611856044a6cf6a75532e1a481b",null)},8304:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>w,GET:()=>u,POST:()=>v});var d=c(49796),e=c(23211),f=c(79646),g=c(28354),h=c(79748),i=c.n(h),j=c(33873),k=c.n(j),l=c(21820),m=c.n(l),n=c(24424);let o=(0,g.promisify)(f.exec),p=()=>k().join(m().homedir(),".local","share","kilo"),q=()=>k().join(p(),"auth.json"),r=()=>k().join(m().homedir(),".config","Code","User","settings.json"),s=async()=>{try{let a="win32"===m().platform(),b=a?{...process.env,PATH:`${process.env.APPDATA}\\npm;${process.env.PATH}`}:process.env;return await o(a?"where kilo":"which kilo",{windowsHide:!0,env:b}),!0}catch{try{return await i().access(q()),!0}catch{return!1}}},t=async a=>{try{let b=(await i().readFile(a,"utf-8")).replace(/,(\s*[}\]])/g,"$1");return JSON.parse(b)}catch(a){return null}};async function u(){try{if(!await s())return e.NextResponse.json({installed:!1,settings:null,message:"Kilo Code CLI is not installed"});let a=await t(q());return e.NextResponse.json({installed:!0,settings:{auth:a?Object.keys(a):[]},hasMiawRouter:(a=>{if(!a)return!1;let b=a["openai-compatible"];if(!b)return!1;let c=b.baseUrl||b.baseURL||"";return c.includes("localhost")||c.includes("127.0.0.1")||c.includes("miawrouter")})(a),authPath:q()})}catch(a){return console.log("Error checking kilo settings:",a),e.NextResponse.json({error:"Failed to check kilo settings"},{status:500})}}async function v(a){try{let{baseUrl:b,apiKey:c,model:d}=await a.json();if(!b||!c||!d)return e.NextResponse.json({error:"baseUrl, apiKey and model are required"},{status:400});await i().mkdir(p(),{recursive:!0});let f=b.endsWith("/v1")?b:`${b}/v1`,g=await t(q())||{};g["openai-compatible"]={type:"api-key",apiKey:c,baseUrl:f,model:d},await i().writeFile(q(),JSON.stringify(g,null,2));try{let a=await t(r())||{};a["kilocode.customProvider"]={name:"MiawRouter",baseURL:f,apiKey:c},a["kilocode.defaultModel"]=d,await i().writeFile(r(),JSON.stringify(a,null,2))}catch{}return e.NextResponse.json({success:!0,message:"Kilo Code settings applied successfully!",authPath:q()})}catch(a){return console.log("Error updating kilo settings:",a),e.NextResponse.json({error:"Failed to update kilo settings"},{status:500})}}async function w(){try{let a=await t(q());if(!a)return e.NextResponse.json({success:!0,message:"No settings file to reset"});delete a["openai-compatible"],await i().writeFile(q(),JSON.stringify(a,null,2));try{let a=await t(r());a&&(delete a["kilocode.customProvider"],delete a["kilocode.defaultModel"],await i().writeFile(r(),JSON.stringify(a,null,2)))}catch{}return e.NextResponse.json({success:!0,message:"MiawRouter settings removed from Kilo Code"})}catch(a){return console.log("Error resetting kilo settings:",a),e.NextResponse.json({error:"Failed to reset kilo settings"},{status:500})}}(0,n.D)([u,v,w]),(0,d.A)(u,"002e56aa50f9ec6634a5a67e5b54296c19e05292ef",null),(0,d.A)(v,"40d77484da71b9c4b9cf9c5f17cb4e2196792cd9e5",null),(0,d.A)(w,"00309ff3c43456b657d9fe22d543ff43034d665071",null)},14833:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>C,GET:()=>z,POST:()=>A});var d=c(49796),e=c(23211),f=c(79646),g=c(28354),h=c(79748),i=c.n(h),j=c(33873),k=c.n(j),l=c(21820),m=c.n(l),n=c(28286),o=c(7813),p=c(24424);let q=(0,g.promisify)(f.exec),r=n.DEFAULT_PLUGINS.find(a=>"exa"===a.name),s=()=>{let a=m().homedir();return k().join(a,".claude","settings.json")},t=()=>k().join(m().homedir(),".claude.json"),u=async()=>{try{let a=await i().readFile(t(),"utf-8");return JSON.parse(a.replace(/,(\s*[}\]])/g,"$1"))}catch{return null}},v=async a=>{let b=t(),c={};try{c=JSON.parse(await i().readFile(b,"utf-8"))}catch(a){if("ENOENT"!==a.code)throw a}a&&Object.keys(a).length>0?c.mcpServers={...c.mcpServers||{},...a}:c.mcpServers&&(delete c.mcpServers.exa,0===Object.keys(c.mcpServers).length&&delete c.mcpServers),await i().writeFile(b,JSON.stringify(c,null,2))},w=async()=>{try{let a="win32"===m().platform(),b=a?{...process.env,PATH:`${process.env.APPDATA}\\npm;${process.env.PATH}`}:process.env;return await q(a?"where claude":"which claude",{windowsHide:!0,env:b}),!0}catch{try{return await i().access(s()),!0}catch{return!1}}},x=async()=>{try{let a=s(),b=(await i().readFile(a,"utf-8")).replace(/,(\s*[}\]])/g,"$1");return JSON.parse(b)}catch(a){return null}},y=async()=>{let a=k().join(m().homedir(),".claude","agents"),b={};for(let c of["explorer","reviewer","planner","fast"])try{let d=(await i().readFile(k().join(a,`${c}.md`),"utf8")).match(/^model:\s*["']?([^"'\r\n]+)["']?/m);d&&(b[c]=d[1].trim())}catch{}return b};async function z(){try{if(!await w())return e.NextResponse.json({installed:!1,settings:null,message:"Claude CLI is not installed"});let a=await x(),b=!!a?.env?.ANTHROPIC_BASE_URL,c=await u(),d=await y();return e.NextResponse.json({installed:!0,settings:a,subagents:d,hasMiawRouter:b,exaMcpEnabled:!!c?.mcpServers?.exa,settingsPath:s()})}catch(a){return console.log("Error checking claude settings:",a),e.NextResponse.json({error:"Failed to check claude settings"},{status:500})}}async function A(a){try{let{env:b,exaMcpEnabled:c,maxContextTokens:d,subagents:f}=await a.json();if(!b||"object"!=typeof b)return e.NextResponse.json({error:"Invalid env object"},{status:400});let g=s(),h=k().dirname(g);await i().mkdir(h,{recursive:!0});let j={};try{let a=await i().readFile(g,"utf-8");j=JSON.parse(a)}catch(a){if("ENOENT"!==a.code)throw a}b.ANTHROPIC_BASE_URL&&(b.ANTHROPIC_BASE_URL=b.ANTHROPIC_BASE_URL.endsWith("/v1")?b.ANTHROPIC_BASE_URL:`${b.ANTHROPIC_BASE_URL}/v1`);let l={...j,hasCompletedOnboarding:!0,env:{...j.env||{},...b}};return d?l.env.CLAUDE_CODE_MAX_CONTEXT_TOKENS=String(d):delete l.env.CLAUDE_CODE_MAX_CONTEXT_TOKENS,await i().writeFile(g,JSON.stringify(l,null,2)),r&&await v(c?{exa:{type:r.transport,url:r.url}}:null),f&&"object"==typeof f&&await (0,o.DA)({roles:f}),e.NextResponse.json({success:!0,message:"Settings updated successfully"})}catch(a){return console.log("Error updating claude settings:",a),e.NextResponse.json({error:"Failed to update claude settings"},{status:500})}}let B=["ANTHROPIC_BASE_URL","ANTHROPIC_AUTH_TOKEN","ANTHROPIC_DEFAULT_OPUS_MODEL","ANTHROPIC_DEFAULT_SONNET_MODEL","ANTHROPIC_DEFAULT_HAIKU_MODEL","API_TIMEOUT_MS","CLAUDE_CODE_MAX_CONTEXT_TOKENS"];async function C(){try{let a=s(),b={};try{let c=await i().readFile(a,"utf-8");b=JSON.parse(c)}catch(a){if("ENOENT"===a.code)return e.NextResponse.json({success:!0,message:"No settings file to reset"});throw a}return b.env&&(B.forEach(a=>{delete b.env[a]}),0===Object.keys(b.env).length&&delete b.env),await v(null),await i().writeFile(a,JSON.stringify(b,null,2)),e.NextResponse.json({success:!0,message:"Settings reset successfully"})}catch(a){return console.log("Error resetting claude settings:",a),e.NextResponse.json({error:"Failed to reset claude settings"},{status:500})}}(0,p.D)([z,A,C]),(0,d.A)(z,"0053576354ff3e16f456aa7c285396a8a211f2d491",null),(0,d.A)(A,"408564a250e4dc1a05b38479984c2b752db2174e13",null),(0,d.A)(C,"008aaba0f57c593503e902633b58a6bd0e2e42960c",null)},14933:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>A,GET:()=>y,POST:()=>z});var d=c(49796),e=c(23211),f=c(79646),g=c(28354),h=c(79748),i=c.n(h),j=c(33873),k=c.n(j),l=c(21820),m=c.n(l),n=c(68658),o=c(66306),p=c(35112),q=c(24424);let r=()=>e.NextResponse.json({error:"Local authentication required"},{status:403}),s=(0,g.promisify)(f.exec),t=()=>k().join(m().homedir(),".grok"),u=()=>k().join(t(),"config.toml"),v=async()=>{try{let a="win32"===m().platform();return await s(a?"where grok":"which grok",{windowsHide:!0}),!0}catch{for(let a of[k().join(t(),"bin","grok"),u()])try{return await i().access(a),!0}catch{}return!1}},w=async()=>{try{return await i().readFile(u(),"utf-8")}catch(a){if("ENOENT"===a.code)return"";throw a}},x=(a,b)=>{let c=Number(a);if(Number.isFinite(c)&&c>0)return Math.floor(c);let d=b.indexOf("/"),e=d>0?b.slice(0,d):null,f=d>0?b.slice(d+1):b;return(0,o.nl)(e,f).contextWindow};async function y(a){if(!await (0,n.Nk)(a))return r();try{if(!await v())return e.NextResponse.json({installed:!1,settings:null,message:"Grok Build is not installed"});let a=(0,p.ZH)(await w());return e.NextResponse.json({installed:!0,settings:a,hasMiawRouter:!!a?.model?.base_url,configPath:u()})}catch(a){return console.log("Error checking grok-build settings:",a),e.NextResponse.json({error:"Failed to check grok-build settings"},{status:500})}}async function z(a){if(!await (0,n.Nk)(a))return r();try{let{baseUrl:b,apiKey:c,model:d,contextWindow:f,subagentModels:g}=await a.json(),h="string"==typeof d?d.trim():"";if(!b||!h)return e.NextResponse.json({error:"baseUrl and model are required"},{status:400});await i().mkdir(t(),{recursive:!0});let j=b.endsWith("/v1")?b:`${b}/v1`,k=(0,p.QQ)(await w(),{baseUrl:j,apiKey:c||"sk_miawrouter",model:h,contextWindow:x(f,h),subagentModels:(a=>{if(void 0===a)return;if(!a||"object"!=typeof a||Array.isArray(a))return{};let b={};for(let c of p.yl){let d=a[c],e="string"==typeof d?d.trim():d?.model?.trim();e&&(b[c]={model:e,contextWindow:x(d?.contextWindow,e)})}return b})(g)});return await i().writeFile(u(),k),e.NextResponse.json({success:!0,message:"Grok Build settings applied successfully!",configPath:u(),modelSlot:p.f7})}catch(a){return console.log("Error updating grok-build settings:",a),e.NextResponse.json({error:"Failed to update grok-build settings"},{status:500})}}async function A(a){if(!await (0,n.Nk)(a))return r();try{let a,b=u();try{a=await i().readFile(b,"utf-8")}catch(a){if("ENOENT"===a.code)return e.NextResponse.json({success:!0,message:"No config file to reset"});throw a}return await i().writeFile(b,(0,p.jk)(a)),e.NextResponse.json({success:!0,message:"MiawRouter model slots removed from Grok Build"})}catch(a){return console.log("Error resetting grok-build settings:",a),e.NextResponse.json({error:"Failed to reset grok-build settings"},{status:500})}}(0,q.D)([y,z,A]),(0,d.A)(y,"40bd0407967dca44a109323e31f87219a703ed15f3",null),(0,d.A)(z,"405032604eab29c2b7e7dd2f3a9dc0fed461eebd41",null),(0,d.A)(A,"4020cb264773a1803e92e433dce1ac921568b8dc06",null)},20703:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>r,GET:()=>p,POST:()=>q});var d=c(49796),e=c(23211),f=c(79748),g=c.n(f),h=c(33873),i=c.n(h),j=c(21820),k=c.n(j),l=c(24424);let m=()=>{let a=k().homedir(),b=k().platform();return"win32"===b?i().join(process.env.APPDATA||a,"Code","User","chatLanguageModels.json"):"darwin"===b?i().join(a,"Library","Application Support","Code","User","chatLanguageModels.json"):i().join(a,".config","Code","User","chatLanguageModels.json")},n=async()=>{try{let a=(await g().readFile(m(),"utf-8")).replace(/,(\s*[}\]])/g,"$1");return JSON.parse(a)}catch(a){return null}},o="MiawRouter";async function p(){try{let a=await n(),b=Array.isArray(a)&&a.find(a=>a.name===o)||null;return e.NextResponse.json({installed:!0,config:a,hasMiawRouter:!!Array.isArray(a)&&a.some(a=>a.name===o),configPath:m(),currentModel:b?.models?.[0]?.id||null,currentUrl:b?.models?.[0]?.url||null})}catch(a){return console.log("Error checking copilot settings:",a),e.NextResponse.json({error:"Failed to check copilot settings"},{status:500})}}async function q(a){try{let{baseUrl:b,apiKey:c,models:d}=await a.json();if(!b||!d?.length)return e.NextResponse.json({error:"baseUrl and models are required"},{status:400});let f=m();await g().mkdir(i().dirname(f),{recursive:!0});let h=[];try{let a=await g().readFile(f,"utf-8"),b=JSON.parse(a);h=Array.isArray(b)?b:[]}catch{}let j=`${b}/chat/completions#models.ai.azure.com`,k={name:o,vendor:"azure",apiKey:c||"sk_miawrouter",models:d.map(a=>({id:a,name:a,url:j,toolCalling:!0,vision:!1,maxInputTokens:128e3,maxOutputTokens:16e3}))},l=h.findIndex(a=>a.name===o);return l>=0?h[l]=k:h.push(k),await g().writeFile(f,JSON.stringify(h,null,2)),e.NextResponse.json({success:!0,message:"Copilot settings applied! Reload VS Code to take effect.",configPath:f})}catch(a){return console.log("Error updating copilot settings:",a),e.NextResponse.json({error:"Failed to update copilot settings"},{status:500})}}async function r(){try{let a=m(),b=[];try{let c=await g().readFile(a,"utf-8"),d=JSON.parse(c);b=Array.isArray(d)?d:[]}catch(a){if("ENOENT"===a.code)return e.NextResponse.json({success:!0,message:"No config file to reset"});throw a}return b=b.filter(a=>a.name!==o),await g().writeFile(a,JSON.stringify(b,null,2)),e.NextResponse.json({success:!0,message:"MiawRouter removed from Copilot config"})}catch(a){return console.log("Error resetting copilot settings:",a),e.NextResponse.json({error:"Failed to reset copilot settings"},{status:500})}}(0,l.D)([p,q,r]),(0,d.A)(p,"00267ff010c6287b708765d4a528c6ef07c56fa324",null),(0,d.A)(q,"400d0bbccc802e2bc3de9293adf979691bd00f1f61",null),(0,d.A)(r,"005d6e3fe6fcd498ff6b01e6bdef94f4e73a11a366",null)},21757:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>G,GET:()=>E,POST:()=>F});var d=c(49796),e=c(23211),f=c(79646),g=c(28354),h=c(79748),i=c.n(h),j=c(29021),k=c.n(j),l=c(33873),m=c.n(l),n=c(21820),o=c.n(n),p=c(69415),q=c(24424);let r=(0,g.promisify)(f.exec),s=()=>m().join(o().homedir(),".hermes"),t=()=>m().join(s(),"config.yaml"),u=()=>m().join(s(),".env"),v=()=>m().join(s(),"desktop.json"),w=()=>{let a=o().homedir();return"win32"===process.platform?m().join(process.env.APPDATA||m().join(a,"AppData","Roaming"),"Hermes Desktop"):"darwin"===process.platform?m().join(a,"Library","Application Support","Hermes Desktop"):m().join(a,".config","hermes-desktop")},x=()=>m().join(w(),"config.json"),y=async()=>{try{let a="win32"===o().platform();return await r(a?"where hermes":"which hermes",{windowsHide:!0}),!0}catch{try{return await i().access(t()),!0}catch{return!1}}},z=async()=>{try{let a="win32"===o().platform();return await r(a?"where hermes-desktop":"which hermes-desktop",{windowsHide:!0}),{installed:!0,path:"hermes-desktop"}}catch{}let a=o().homedir();for(let b of["/usr/bin/hermes-desktop","/usr/local/bin/hermes-desktop",m().join(a,".local","bin","hermes-desktop"),"/opt/Hermes Desktop/hermes-desktop",m().join(a,".local","share","applications","hermes-desktop.desktop"),"/Applications/Hermes Desktop.app","/Applications/Hermes.app",m().join(a,"Applications","Hermes Desktop.app"),m().join(process.env.LOCALAPPDATA||"","Programs","hermes-desktop","Hermes Desktop.exe")])if(k().existsSync(b))return{installed:!0,path:b};return k().existsSync(x())||k().existsSync(v())?{installed:!0,path:x()}:{installed:!1,path:null}},A=async()=>{try{return await i().readFile(t(),"utf-8")}catch(a){if("ENOENT"===a.code)return"";throw a}},B=async()=>{try{return await i().readFile(u(),"utf-8")}catch(a){if("ENOENT"===a.code)return"";throw a}},C=async()=>{try{let a=x();if(k().existsSync(a))return JSON.parse(await i().readFile(a,"utf-8"))}catch{}try{let a=v();if(k().existsSync(a))return JSON.parse(await i().readFile(a,"utf-8"))}catch{}return null},D=a=>{if(!a?.base_url&&!a?.endpoint&&!a?.baseUrl)return!1;let b=a.base_url||a.endpoint||a.baseUrl;return/localhost|127\.0\.0\.1|0\.0\.0\.0/.test(b)};async function E(){try{let a=await y(),b=await z();if(!(a||b.installed))return e.NextResponse.json({installed:!1,cliInstalled:!1,desktopInstalled:!1,desktopConfigPath:x(),settings:null,message:"Hermes Agent & Desktop not detected"});let c=await A(),d=(0,p.a)(c),f=(0,p.yN)(c),g=await C();return e.NextResponse.json({installed:!0,cliInstalled:a,desktopInstalled:b.installed,desktopPath:b.path,settings:{model:d,subagents:f,desktop:g},hasMiawRouter:D(d)||D(g),configPath:t(),desktopConfigPath:x()})}catch(a){return console.log("Error checking hermes settings:",a),e.NextResponse.json({error:"Failed to check hermes settings"},{status:500})}}async function F(a){try{var b,c;let d,f,{baseUrl:g,apiKey:h,model:j,subagentModels:k={},syncDesktop:l=!0}=await a.json();if(!g||!j)return e.NextResponse.json({error:"baseUrl and model are required"},{status:400});let m=s();await i().mkdir(m,{recursive:!0});let n=g.endsWith("/v1")?g:`${g}/v1`,o=h||"sk_miawrouter",q=await A(),r=(0,p.Em)(q,(0,p.T2)(j,n));r=(0,p.S2)(r,(0,p.nK)(j,k)),r=(0,p.QY)(r,p.P$,(0,p.vv)(j,n,o)),await i().writeFile(t(),r);let y=(b=await B(),c="OPENAI_API_KEY",d=RegExp(`^${c}=.*$`,"m"),f=`${c}=${o}`,d.test(b)?b.replace(d,f):b.length>0&&!b.endsWith("\n")?`${b}
14
14
  ${f}
15
15
  `:`${b}${f}
16
- `);await i().writeFile(u(),y);let z={endpoint:n,baseUrl:n,apiKey:o,model:j,provider:p.P$,nativeDesktop:!0,subagents:{enabled:!0,default_model:j,models:{explorer:k.explorer||j,reviewer:k.reviewer||j,planner:k.planner||j,fast:k.fast||j}},updatedAt:new Date().toISOString()};if(await i().writeFile(v(),JSON.stringify(z,null,2),"utf-8"),l)try{let a=w();await i().mkdir(a,{recursive:!0}),await i().writeFile(x(),JSON.stringify(z,null,2),"utf-8")}catch(a){console.log("Could not write platform desktop config:",a?.message)}return e.NextResponse.json({success:!0,message:"Hermes Agent & Native Desktop settings applied successfully!",configPath:t(),desktopConfigPath:x()})}catch(a){return console.log("Error updating hermes settings:",a),e.NextResponse.json({error:"Failed to update hermes settings"},{status:500})}}async function G(){try{let a=t(),b="";try{b=await i().readFile(a,"utf-8")}catch(a){if("ENOENT"===a.code)return e.NextResponse.json({success:!0,message:"No config file to reset"});throw a}let c=(0,p.pT)((0,p.aN)(b),p.P$);await i().writeFile(a,c);try{k().existsSync(v())&&await i().unlink(v()),k().existsSync(x())&&await i().unlink(x())}catch{}return e.NextResponse.json({success:!0,message:"MiawRouter Hermes CLI & Desktop settings removed"})}catch(a){return console.log("Error resetting hermes settings:",a),e.NextResponse.json({error:"Failed to reset hermes settings"},{status:500})}}(0,q.D)([E,F,G]),(0,d.A)(E,"0045fa5a64c918ec64a9076a85a2fcefea87595e2f",null),(0,d.A)(F,"40b90f59d1d54c2643ecc0b001d5f43533d42e116c",null),(0,d.A)(G,"00d2a16ca6b7ff7b940cfcd8d872766a8a6801bd95",null)},29657:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>x,GET:()=>v,POST:()=>w});var d=c(49796),e=c(23211),f=c(79646),g=c(28354),h=c(79748),i=c.n(h),j=c(33873),k=c.n(j),l=c(21820),m=c.n(l),n=c(24424);let o=(0,g.promisify)(f.exec),p=()=>k().join(m().homedir(),".factory"),q=()=>k().join(p(),"settings.json"),r=async()=>{try{let a="win32"===m().platform(),b=a?{...process.env,PATH:`${process.env.APPDATA}\\npm;${process.env.PATH}`}:process.env;return await o(a?"where droid":"which droid",{windowsHide:!0,env:b}),!0}catch{try{return await i().access(q()),!0}catch{return!1}}},s=async()=>{try{let a=q(),b=(await i().readFile(a,"utf-8")).replace(/,(\s*[}\]])/g,"$1");return JSON.parse(b)}catch(a){return null}},t="custom:MiawRouter",u=a=>"string"==typeof a&&a.startsWith(t);async function v(){try{if(!await r())return e.NextResponse.json({installed:!1,settings:null,message:"Factory Droid CLI is not installed"});let a=await s();return e.NextResponse.json({installed:!0,settings:a,hasMiawRouter:!!a&&!!a.customModels&&a.customModels.some(a=>u(a.id)),settingsPath:q()})}catch(a){return console.log("Error checking droid settings:",a),e.NextResponse.json({error:"Failed to check droid settings"},{status:500})}}async function w(a){try{let{baseUrl:b,apiKey:c,model:d,models:f,activeModel:g}=await a.json(),h=Array.isArray(f)?f.slice():"string"==typeof d?[d]:[];if(!b||0===h.length)return e.NextResponse.json({error:"baseUrl and at least one model are required"},{status:400});let j=p(),k=q();await i().mkdir(j,{recursive:!0});let l={};try{let a=await i().readFile(k,"utf-8");l=JSON.parse(a)}catch{}l.customModels||(l.customModels=[]),l.customModels=l.customModels.filter(a=>!u(a.id));let m=b.endsWith("/v1")?b:`${b}/v1`,n=c||"your_api_key",o=0;if("string"==typeof g)if(""===g)o=-1;else{let a=h.indexOf(g);o=a>=0?a:0}for(let a=0;a<h.length;a++){let b=h[a];b&&"string"==typeof b&&l.customModels.push({model:b,id:`${t}-${a}`,index:a,baseUrl:m,apiKey:n,displayName:b,maxOutputTokens:131072,noImageSupport:!1,provider:"openai"})}if(o>=0&&l.customModels[o]){let[a]=l.customModels.splice(o,1);l.customModels.unshift({...a,index:0}),l.customModels.forEach((a,b)=>{a.index=b})}return await i().writeFile(k,JSON.stringify(l,null,2)),e.NextResponse.json({success:!0,message:"Factory Droid settings applied successfully!",settingsPath:k})}catch(a){return console.log("Error updating droid settings:",a),e.NextResponse.json({error:"Failed to update droid settings"},{status:500})}}async function x(){try{let a=q(),b={};try{let c=await i().readFile(a,"utf-8");b=JSON.parse(c)}catch(a){if("ENOENT"===a.code)return e.NextResponse.json({success:!0,message:"No settings file to reset"});throw a}return b.customModels&&(b.customModels=b.customModels.filter(a=>!u(a.id)),0===b.customModels.length&&delete b.customModels),await i().writeFile(a,JSON.stringify(b,null,2)),e.NextResponse.json({success:!0,message:"MiawRouter settings removed successfully"})}catch(a){return console.log("Error resetting droid settings:",a),e.NextResponse.json({error:"Failed to reset droid settings"},{status:500})}}(0,n.D)([v,w,x]),(0,d.A)(v,"009acd21f9b134e5ba7d9d2458d8abc9b7481883b0",null),(0,d.A)(w,"40751d29fe61e787daa5d795d829012e558a6f0719",null),(0,d.A)(x,"004308cc47f27dbaf5d5cf7506bec1dc1223e70a47",null)},30926:(a,b,c)=>{c.r(b),c.d(b,{"00194f8d9b0bc7cecb92cb4dc9a1daa2b8133b009f":()=>h.DELETE,"001a929765e2bcd816b5e98ccd8ab3d291d6ff7638":()=>l.DELETE,"00397b34081e1d533343258cd0f60b2565e96b14b8":()=>n.DELETE,"004308cc47f27dbaf5d5cf7506bec1dc1223e70a47":()=>g.DELETE,"0045fa5a64c918ec64a9076a85a2fcefea87595e2f":()=>i.GET,"00574a0881a65073f591e436ee67a0cee55546edb7":()=>j.GET,"005edccb9e68f907c583747eac648fda94e6a645e0":()=>k.DELETE,"0066daad41eb3c45a8fc19dda2420478c1cd7f4fe3":()=>f.GET,"006cc9645675a8742bbd834c512b94f084aa82fe7c":()=>d.DELETE,"0075ec611c44228bafa34c68fcf5df9572f5c0edb1":()=>j.DELETE,"007c278f664db4a53718f793cb0be3ccd356755352":()=>o.DELETE,"0082898eac71524bb193859555b3e796400d990a70":()=>o.GET,"0083dbf8e214e9d98204ee5b045bdda0a8ea4b0deb":()=>e.GET,"0085d616a2258ad5044a7f3059a44bd255e010f49f":()=>n.GET,"0091e7dba6cf3a6bd8385e877913a6597043743dc1":()=>h.GET,"009452eb6b3b0464357ea2e7af045f2469ba803daf":()=>e.DELETE,"00995b98124f3093624c29e0a034fd4785d5eff95f":()=>m.GET,"009acd21f9b134e5ba7d9d2458d8abc9b7481883b0":()=>g.GET,"00a3ce9d7b3aaaa48726921e803d949e521a83d483":()=>d.GET,"00ab16dd64bd49d94518a3f0b696efbcbb624c396a":()=>m.DELETE,"00c0a16d282eb99a7a5c07f4f74dfda0652b9414c9":()=>r.GET,"00cabefbb5174af86d0ebcebdb66cb38c042ab2945":()=>l.GET,"00d2a16ca6b7ff7b940cfcd8d872766a8a6801bd95":()=>i.DELETE,"00ef5fc5deaee3c946790bb703ec0ae2c687802fce":()=>k.GET,"00fbf87b9595d0f931db1f0910ce2514b4a4ffc5ab":()=>q.GET,"400b47b90ddee8124e87fb695b8558bb4dff5c7aee":()=>f.PATCH,"40181366017161340c52e19498c39f27d5f143af51":()=>m.POST,"401a768d216303ba65fafa093f2ad03ef100e4be02":()=>p.DELETE,"401caaca17148d10dd3a7e7f11aed87a51940b0fef":()=>p.GET,"403255139e4ab5d365b0285b9f463625206dcfb650":()=>h.POST,"4052e90e9cf795d5c37a50fadc27df9a7a0857ed88":()=>r.POST,"4064e9a12b5bdedea488f3ebcec36bd89c90bcb7ec":()=>n.POST,"406c4db2ba2d35f2e1cd828f69bbcc076e1174c333":()=>l.POST,"4072a935b96c2334eb98bbfa963ddd6cbf8da02a03":()=>d.POST,"40751d29fe61e787daa5d795d829012e558a6f0719":()=>g.POST,"407e31d679e7ea3828233d7d6c8ec9dfbd7697279e":()=>f.POST,"4094e38e2846b82c5ae3beff64258306e82ec2f9eb":()=>j.POST,"40a374da1b2351d382328a3aa394a4d21839c2df0e":()=>f.DELETE,"40a4130e4c60f28398281a93ddd0ad542468c9d2d0":()=>e.POST,"40ab0f88945cb59a7da03c1ae5563b9b7dab8bc573":()=>p.POST,"40ad9e111e5874265b6fbbb6322445d34157c10223":()=>k.POST,"40b90f59d1d54c2643ecc0b001d5f43533d42e116c":()=>i.POST,"40ebaea7cf4814bfe19051c56387dd712974bd7638":()=>o.POST});var d=c(14833),e=c(58750),f=c(72452),g=c(29657),h=c(4126),i=c(21757),j=c(21350),k=c(20703),l=c(46298),m=c(8304),n=c(67116),o=c(48074),p=c(14933),q=c(32504),r=c(5592)},32504:(a,b,c)=>{c.r(b),c.d(b,{GET:()=>r});var d=c(49796),e=c(23211),f=c(79646),g=c(28354),h=c(79748),i=c.n(h),j=c(33873),k=c.n(j),l=c(21820),m=c.n(l),n=c(24424);let o=(0,g.promisify)(f.exec),p=async()=>{let a,b,c;try{let a="win32"===m().platform();return await o(a?"where devin":"which devin",{windowsHide:!0}),{installed:!0,source:"path"}}catch{}for(let d of(a=m().homedir(),b="win32"===m().platform(),c=process.env.LOCALAPPDATA||k().join(a,"AppData","Local"),b?[k().join(c,"devin","cli","bin","devin.exe"),k().join(a,".local","bin","devin.exe"),k().join(a,"scoop","shims","devin.exe"),k().join(c,"Programs","devin","devin.exe")]:[k().join(a,".local","share","devin","bin","devin"),k().join(a,".devin","bin","devin"),k().join(a,".local","bin","devin"),"/opt/homebrew/bin/devin","/usr/local/bin/devin","/usr/bin/devin"]))try{return await i().access(d),{installed:!0,source:d}}catch{}return{installed:!1,source:null}},q=async()=>{try{let{stdout:a}=await o("devin --version",{windowsHide:!0});return a.trim().split("\n")[0]||null}catch{return null}};async function r(){try{let{installed:a,source:b}=await p();if(!a)return e.NextResponse.json({installed:!1,message:"Devin CLI is not installed. Install it from https://cli.devin.ai and run `devin auth login`.",installUrl:"https://cli.devin.ai"});let c=await q();return e.NextResponse.json({installed:!0,source:b,version:c,message:"Devin CLI detected. Make sure `devin auth login` has been run."})}catch(a){return console.log("Error checking devin settings:",a),e.NextResponse.json({error:"Failed to check devin settings"},{status:500})}}(0,n.D)([r]),(0,d.A)(r,"00fbf87b9595d0f931db1f0910ce2514b4a4ffc5ab",null)},46298:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>w,GET:()=>u,POST:()=>v});var d=c(49796),e=c(23211),f=c(79646),g=c(28354),h=c(79748),i=c.n(h),j=c(33873),k=c.n(j),l=c(21820),m=c.n(l),n=c(24424);let o=(0,g.promisify)(f.exec),p=()=>k().join(m().homedir(),".cline","data"),q=()=>k().join(p(),"globalState.json"),r=()=>k().join(p(),"secrets.json"),s=async()=>{try{let a="win32"===m().platform(),b=a?{...process.env,PATH:`${process.env.APPDATA}\\npm;${process.env.PATH}`}:process.env;return await o(a?"where cline":"which cline",{windowsHide:!0,env:b}),!0}catch{try{return await i().access(q()),!0}catch{return!1}}},t=async a=>{try{let b=(await i().readFile(a,"utf-8")).replace(/,(\s*[}\]])/g,"$1");return JSON.parse(b)}catch(a){return null}};async function u(){try{if(!await s())return e.NextResponse.json({installed:!1,settings:null,message:"Cline CLI is not installed"});let a=await t(q());return e.NextResponse.json({installed:!0,settings:{actModeApiProvider:a?.actModeApiProvider,planModeApiProvider:a?.planModeApiProvider,openAiBaseUrl:a?.openAiBaseUrl,openAiModelId:a?.openAiModelId},hasMiawRouter:(a=>{if(!a)return!1;let b="openai"===a.actModeApiProvider||"openai"===a.planModeApiProvider,c=a.openAiBaseUrl||"";return b&&(c.includes("localhost")||c.includes("127.0.0.1")||c.includes("miawrouter"))})(a),globalStatePath:q()})}catch(a){return console.log("Error checking cline settings:",a),e.NextResponse.json({error:"Failed to check cline settings"},{status:500})}}async function v(a){try{let{baseUrl:b,apiKey:c,model:d}=await a.json();if(!b||!c||!d)return e.NextResponse.json({error:"baseUrl, apiKey and model are required"},{status:400});await i().mkdir(p(),{recursive:!0});let f=b.endsWith("/v1")?b.slice(0,-3):b,g=await t(q())||{};g.actModeApiProvider="openai",g.planModeApiProvider="openai",g.openAiBaseUrl=f,g.openAiModelId=d,g.planModeOpenAiModelId=d,await i().writeFile(q(),JSON.stringify(g,null,2));let h=await t(r())||{};return h.openAiApiKey=c,await i().writeFile(r(),JSON.stringify(h,null,2)),e.NextResponse.json({success:!0,message:"Cline settings applied successfully!",globalStatePath:q()})}catch(a){return console.log("Error updating cline settings:",a),e.NextResponse.json({error:"Failed to update cline settings"},{status:500})}}async function w(){try{let a=await t(q());if(!a)return e.NextResponse.json({success:!0,message:"No settings file to reset"});"openai"===a.actModeApiProvider&&(delete a.openAiBaseUrl,delete a.openAiModelId,delete a.planModeOpenAiModelId,a.actModeApiProvider="cline",a.planModeApiProvider="cline"),await i().writeFile(q(),JSON.stringify(a,null,2));let b=await t(r())||{};return delete b.openAiApiKey,await i().writeFile(r(),JSON.stringify(b,null,2)),e.NextResponse.json({success:!0,message:"MiawRouter settings removed from Cline"})}catch(a){return console.log("Error resetting cline settings:",a),e.NextResponse.json({error:"Failed to reset cline settings"},{status:500})}}(0,n.D)([u,v,w]),(0,d.A)(u,"00cabefbb5174af86d0ebcebdb66cb38c042ab2945",null),(0,d.A)(v,"406c4db2ba2d35f2e1cd828f69bbcc076e1174c333",null),(0,d.A)(w,"001a929765e2bcd816b5e98ccd8ab3d291d6ff7638",null)},48074:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>C,GET:()=>A,POST:()=>B});var d=c(49796),e=c(23211),f=c(79748),g=c.n(f),h=c(33873),i=c.n(h),j=c(21820),k=c.n(j),l=c(79646),m=c(28354),n=c(52750),o=c(24424);let p=(0,m.promisify)(l.exec),q=()=>i().join(k().homedir(),".jcode"),r=()=>i().join(q(),"config.toml"),s="miawrouter",t="JCODE_MIAWROUTER_API_KEY",u=()=>{let a=process.env.XDG_CONFIG_HOME||i().join(k().homedir(),".config");return i().join(a,"jcode","provider-miawrouter.env")},v=async()=>{try{let a="win32"===k().platform();return await p(a?"where jcode":"which jcode",{windowsHide:!0}),!0}catch{try{return await g().access(q()),!0}catch{return!1}}},w=async()=>{try{let a=r(),b=await g().readFile(a,"utf-8");return(0,n.M)(b)}catch(a){return{providers:{}}}},x=async a=>{let b=r(),c=(0,n.q)(a);await g().writeFile(b,c,"utf-8")},y=async()=>{try{let a=u(),b=await g().readFile(a,"utf-8"),c={};for(let a of b.split("\n")){let b=a.trim();if(!b||b.startsWith("#"))continue;let d=b.indexOf("=");if(d>0){let a=b.slice(0,d).trim(),e=b.slice(d+1).trim();(e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'"))&&(e=e.slice(1,-1)),c[a]=e}}return c}catch{return{}}},z=async a=>{let b=u(),c="# jcode provider environment variables\n";for(let[b,d]of Object.entries(a))c+=`${b}="${d}"
17
- `;await g().writeFile(b,c,"utf-8")};async function A(){if(!await v())return e.NextResponse.json({installed:!1,message:"jcode not installed. Install via: curl -fsSL https://raw.githubusercontent.com/1jehuang/jcode/master/scripts/install.sh | bash"});let a=await w(),b=(a=>{if(!a||!a.providers)return!1;let b=a.providers;if(b[s])return!0;for(let[a,c]of Object.entries(b))if(c.base_url&&(c.base_url.includes("localhost:21128")||c.base_url.includes("localhost:20128")))return!0;return!1})(a),c=a?.providers?.[s];return e.NextResponse.json({installed:!0,config:a,hasMiawRouter:b,subagents:c?.subagents||null,configPath:r()})}async function B(a){try{let{baseUrl:b,apiKey:c,models:d,subagents:f}=await a.json();if(!b||!c)return e.NextResponse.json({error:"baseUrl and apiKey are required"},{status:400});let h=b.endsWith("/v1")?b:`${b}/v1`,j=await w();j.providers||(j.providers={});let l=Array.from(new Set([...d||[],...Object.values(f||{})].filter(Boolean)));j.providers[s]={type:"openai-compatible",base_url:h,auth:"bearer",api_key_env:t,env_file:"provider-miawrouter.env",default_model:d&&d.length>0?d[0]:"cc/claude-opus-4-7",requires_api_key:!0,...f?{subagents:f}:{},models:l.map(a=>({id:a}))};let m=q();await g().mkdir(m,{recursive:!0}),await x(j);let n=process.env.XDG_CONFIG_HOME||i().join(k().homedir(),".config"),o=i().join(n,"jcode");await g().mkdir(o,{recursive:!0});let p=await y();return p[t]=c,await z(p),e.NextResponse.json({success:!0,message:"jcode configured successfully. Use: jcode --provider-profile miawrouter",configPath:r()})}catch(a){return console.error("Error configuring jcode:",a),e.NextResponse.json({error:a.message},{status:500})}}async function C(){try{let a=await w();if(!a.providers)return e.NextResponse.json({success:!0,message:"No configuration to remove"});delete a.providers[s],await x(a);let b=await y();return delete b[t],await z(b),e.NextResponse.json({success:!0,message:"Miawrouter configuration removed from jcode"})}catch(a){return console.error("Error removing jcode configuration:",a),e.NextResponse.json({error:a.message},{status:500})}}(0,o.D)([A,B,C]),(0,d.A)(A,"0082898eac71524bb193859555b3e796400d990a70",null),(0,d.A)(B,"40ebaea7cf4814bfe19051c56387dd712974bd7638",null),(0,d.A)(C,"007c278f664db4a53718f793cb0be3ccd356755352",null)},67116:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>w,GET:()=>u,POST:()=>v});var d=c(49796),e=c(23211),f=c(79646),g=c(28354),h=c(79748),i=c.n(h),j=c(33873),k=c.n(j),l=c(21820),m=c.n(l),n=c(24424);let o=(0,g.promisify)(f.exec),p=()=>k().join(m().homedir(),".deepseek"),q=()=>k().join(p(),"config.toml"),r=`provider = "deepseek"
16
+ `);await i().writeFile(u(),y);let z={endpoint:n,baseUrl:n,apiKey:o,model:j,provider:p.P$,nativeDesktop:!0,subagents:{enabled:!0,default_model:j,models:{explorer:k.explorer||j,reviewer:k.reviewer||j,planner:k.planner||j,fast:k.fast||j}},updatedAt:new Date().toISOString()};if(await i().writeFile(v(),JSON.stringify(z,null,2),"utf-8"),l)try{let a=w();await i().mkdir(a,{recursive:!0}),await i().writeFile(x(),JSON.stringify(z,null,2),"utf-8")}catch(a){console.log("Could not write platform desktop config:",a?.message)}return e.NextResponse.json({success:!0,message:"Hermes Agent & Native Desktop settings applied successfully!",configPath:t(),desktopConfigPath:x()})}catch(a){return console.log("Error updating hermes settings:",a),e.NextResponse.json({error:"Failed to update hermes settings"},{status:500})}}async function G(){try{let a=t(),b="";try{b=await i().readFile(a,"utf-8")}catch(a){if("ENOENT"===a.code)return e.NextResponse.json({success:!0,message:"No config file to reset"});throw a}let c=(0,p.pT)((0,p.aN)(b),p.P$);await i().writeFile(a,c);try{k().existsSync(v())&&await i().unlink(v()),k().existsSync(x())&&await i().unlink(x())}catch{}return e.NextResponse.json({success:!0,message:"MiawRouter Hermes CLI & Desktop settings removed"})}catch(a){return console.log("Error resetting hermes settings:",a),e.NextResponse.json({error:"Failed to reset hermes settings"},{status:500})}}(0,q.D)([E,F,G]),(0,d.A)(E,"000bc557d26ee387055accea634e04e43e243edfd4",null),(0,d.A)(F,"405cf5441ff258664c04fb852112f5ba06d23883b2",null),(0,d.A)(G,"0041dfa9e0bd4b2e9b968b249f01771b95a032afec",null)},29657:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>x,GET:()=>v,POST:()=>w});var d=c(49796),e=c(23211),f=c(79646),g=c(28354),h=c(79748),i=c.n(h),j=c(33873),k=c.n(j),l=c(21820),m=c.n(l),n=c(24424);let o=(0,g.promisify)(f.exec),p=()=>k().join(m().homedir(),".factory"),q=()=>k().join(p(),"settings.json"),r=async()=>{try{let a="win32"===m().platform(),b=a?{...process.env,PATH:`${process.env.APPDATA}\\npm;${process.env.PATH}`}:process.env;return await o(a?"where droid":"which droid",{windowsHide:!0,env:b}),!0}catch{try{return await i().access(q()),!0}catch{return!1}}},s=async()=>{try{let a=q(),b=(await i().readFile(a,"utf-8")).replace(/,(\s*[}\]])/g,"$1");return JSON.parse(b)}catch(a){return null}},t="custom:MiawRouter",u=a=>"string"==typeof a&&a.startsWith(t);async function v(){try{if(!await r())return e.NextResponse.json({installed:!1,settings:null,message:"Factory Droid CLI is not installed"});let a=await s();return e.NextResponse.json({installed:!0,settings:a,hasMiawRouter:!!a&&!!a.customModels&&a.customModels.some(a=>u(a.id)),settingsPath:q()})}catch(a){return console.log("Error checking droid settings:",a),e.NextResponse.json({error:"Failed to check droid settings"},{status:500})}}async function w(a){try{let{baseUrl:b,apiKey:c,model:d,models:f,activeModel:g}=await a.json(),h=Array.isArray(f)?f.slice():"string"==typeof d?[d]:[];if(!b||0===h.length)return e.NextResponse.json({error:"baseUrl and at least one model are required"},{status:400});let j=p(),k=q();await i().mkdir(j,{recursive:!0});let l={};try{let a=await i().readFile(k,"utf-8");l=JSON.parse(a)}catch{}l.customModels||(l.customModels=[]),l.customModels=l.customModels.filter(a=>!u(a.id));let m=b.endsWith("/v1")?b:`${b}/v1`,n=c||"your_api_key",o=0;if("string"==typeof g)if(""===g)o=-1;else{let a=h.indexOf(g);o=a>=0?a:0}for(let a=0;a<h.length;a++){let b=h[a];b&&"string"==typeof b&&l.customModels.push({model:b,id:`${t}-${a}`,index:a,baseUrl:m,apiKey:n,displayName:b,maxOutputTokens:131072,noImageSupport:!1,provider:"openai"})}if(o>=0&&l.customModels[o]){let[a]=l.customModels.splice(o,1);l.customModels.unshift({...a,index:0}),l.customModels.forEach((a,b)=>{a.index=b})}return await i().writeFile(k,JSON.stringify(l,null,2)),e.NextResponse.json({success:!0,message:"Factory Droid settings applied successfully!",settingsPath:k})}catch(a){return console.log("Error updating droid settings:",a),e.NextResponse.json({error:"Failed to update droid settings"},{status:500})}}async function x(){try{let a=q(),b={};try{let c=await i().readFile(a,"utf-8");b=JSON.parse(c)}catch(a){if("ENOENT"===a.code)return e.NextResponse.json({success:!0,message:"No settings file to reset"});throw a}return b.customModels&&(b.customModels=b.customModels.filter(a=>!u(a.id)),0===b.customModels.length&&delete b.customModels),await i().writeFile(a,JSON.stringify(b,null,2)),e.NextResponse.json({success:!0,message:"MiawRouter settings removed successfully"})}catch(a){return console.log("Error resetting droid settings:",a),e.NextResponse.json({error:"Failed to reset droid settings"},{status:500})}}(0,n.D)([v,w,x]),(0,d.A)(v,"007369df07ec001735410b492d22d2204afe87d662",null),(0,d.A)(w,"401dc14b917c8f2fa0c5005a6054bc9a013c8f94d2",null),(0,d.A)(x,"00ea8147ae017602283ce4c7faba8cb4fc905aae27",null)},32504:(a,b,c)=>{c.r(b),c.d(b,{GET:()=>r});var d=c(49796),e=c(23211),f=c(79646),g=c(28354),h=c(79748),i=c.n(h),j=c(33873),k=c.n(j),l=c(21820),m=c.n(l),n=c(24424);let o=(0,g.promisify)(f.exec),p=async()=>{let a,b,c;try{let a="win32"===m().platform();return await o(a?"where devin":"which devin",{windowsHide:!0}),{installed:!0,source:"path"}}catch{}for(let d of(a=m().homedir(),b="win32"===m().platform(),c=process.env.LOCALAPPDATA||k().join(a,"AppData","Local"),b?[k().join(c,"devin","cli","bin","devin.exe"),k().join(a,".local","bin","devin.exe"),k().join(a,"scoop","shims","devin.exe"),k().join(c,"Programs","devin","devin.exe")]:[k().join(a,".local","share","devin","bin","devin"),k().join(a,".devin","bin","devin"),k().join(a,".local","bin","devin"),"/opt/homebrew/bin/devin","/usr/local/bin/devin","/usr/bin/devin"]))try{return await i().access(d),{installed:!0,source:d}}catch{}return{installed:!1,source:null}},q=async()=>{try{let{stdout:a}=await o("devin --version",{windowsHide:!0});return a.trim().split("\n")[0]||null}catch{return null}};async function r(){try{let{installed:a,source:b}=await p();if(!a)return e.NextResponse.json({installed:!1,message:"Devin CLI is not installed. Install it from https://cli.devin.ai and run `devin auth login`.",installUrl:"https://cli.devin.ai"});let c=await q();return e.NextResponse.json({installed:!0,source:b,version:c,message:"Devin CLI detected. Make sure `devin auth login` has been run."})}catch(a){return console.log("Error checking devin settings:",a),e.NextResponse.json({error:"Failed to check devin settings"},{status:500})}}(0,n.D)([r]),(0,d.A)(r,"00afef5df08f53ea04d3436da6bb83361db00a658e",null)},46298:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>w,GET:()=>u,POST:()=>v});var d=c(49796),e=c(23211),f=c(79646),g=c(28354),h=c(79748),i=c.n(h),j=c(33873),k=c.n(j),l=c(21820),m=c.n(l),n=c(24424);let o=(0,g.promisify)(f.exec),p=()=>k().join(m().homedir(),".cline","data"),q=()=>k().join(p(),"globalState.json"),r=()=>k().join(p(),"secrets.json"),s=async()=>{try{let a="win32"===m().platform(),b=a?{...process.env,PATH:`${process.env.APPDATA}\\npm;${process.env.PATH}`}:process.env;return await o(a?"where cline":"which cline",{windowsHide:!0,env:b}),!0}catch{try{return await i().access(q()),!0}catch{return!1}}},t=async a=>{try{let b=(await i().readFile(a,"utf-8")).replace(/,(\s*[}\]])/g,"$1");return JSON.parse(b)}catch(a){return null}};async function u(){try{if(!await s())return e.NextResponse.json({installed:!1,settings:null,message:"Cline CLI is not installed"});let a=await t(q());return e.NextResponse.json({installed:!0,settings:{actModeApiProvider:a?.actModeApiProvider,planModeApiProvider:a?.planModeApiProvider,openAiBaseUrl:a?.openAiBaseUrl,openAiModelId:a?.openAiModelId},hasMiawRouter:(a=>{if(!a)return!1;let b="openai"===a.actModeApiProvider||"openai"===a.planModeApiProvider,c=a.openAiBaseUrl||"";return b&&(c.includes("localhost")||c.includes("127.0.0.1")||c.includes("miawrouter"))})(a),globalStatePath:q()})}catch(a){return console.log("Error checking cline settings:",a),e.NextResponse.json({error:"Failed to check cline settings"},{status:500})}}async function v(a){try{let{baseUrl:b,apiKey:c,model:d}=await a.json();if(!b||!c||!d)return e.NextResponse.json({error:"baseUrl, apiKey and model are required"},{status:400});await i().mkdir(p(),{recursive:!0});let f=b.endsWith("/v1")?b.slice(0,-3):b,g=await t(q())||{};g.actModeApiProvider="openai",g.planModeApiProvider="openai",g.openAiBaseUrl=f,g.openAiModelId=d,g.planModeOpenAiModelId=d,await i().writeFile(q(),JSON.stringify(g,null,2));let h=await t(r())||{};return h.openAiApiKey=c,await i().writeFile(r(),JSON.stringify(h,null,2)),e.NextResponse.json({success:!0,message:"Cline settings applied successfully!",globalStatePath:q()})}catch(a){return console.log("Error updating cline settings:",a),e.NextResponse.json({error:"Failed to update cline settings"},{status:500})}}async function w(){try{let a=await t(q());if(!a)return e.NextResponse.json({success:!0,message:"No settings file to reset"});"openai"===a.actModeApiProvider&&(delete a.openAiBaseUrl,delete a.openAiModelId,delete a.planModeOpenAiModelId,a.actModeApiProvider="cline",a.planModeApiProvider="cline"),await i().writeFile(q(),JSON.stringify(a,null,2));let b=await t(r())||{};return delete b.openAiApiKey,await i().writeFile(r(),JSON.stringify(b,null,2)),e.NextResponse.json({success:!0,message:"MiawRouter settings removed from Cline"})}catch(a){return console.log("Error resetting cline settings:",a),e.NextResponse.json({error:"Failed to reset cline settings"},{status:500})}}(0,n.D)([u,v,w]),(0,d.A)(u,"003e5faabe0d341e8b77e18001d4fa10089f8e0c0b",null),(0,d.A)(v,"408c383fa8126674e666845e001e0d2ca929b6d6f1",null),(0,d.A)(w,"00ce682fdc58655768019386064e7a23cb41a9619b",null)},48074:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>C,GET:()=>A,POST:()=>B});var d=c(49796),e=c(23211),f=c(79748),g=c.n(f),h=c(33873),i=c.n(h),j=c(21820),k=c.n(j),l=c(79646),m=c(28354),n=c(52750),o=c(24424);let p=(0,m.promisify)(l.exec),q=()=>i().join(k().homedir(),".jcode"),r=()=>i().join(q(),"config.toml"),s="miawrouter",t="JCODE_MIAWROUTER_API_KEY",u=()=>{let a=process.env.XDG_CONFIG_HOME||i().join(k().homedir(),".config");return i().join(a,"jcode","provider-miawrouter.env")},v=async()=>{try{let a="win32"===k().platform();return await p(a?"where jcode":"which jcode",{windowsHide:!0}),!0}catch{try{return await g().access(q()),!0}catch{return!1}}},w=async()=>{try{let a=r(),b=await g().readFile(a,"utf-8");return(0,n.M)(b)}catch(a){return{providers:{}}}},x=async a=>{let b=r(),c=(0,n.q)(a);await g().writeFile(b,c,"utf-8")},y=async()=>{try{let a=u(),b=await g().readFile(a,"utf-8"),c={};for(let a of b.split("\n")){let b=a.trim();if(!b||b.startsWith("#"))continue;let d=b.indexOf("=");if(d>0){let a=b.slice(0,d).trim(),e=b.slice(d+1).trim();(e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'"))&&(e=e.slice(1,-1)),c[a]=e}}return c}catch{return{}}},z=async a=>{let b=u(),c="# jcode provider environment variables\n";for(let[b,d]of Object.entries(a))c+=`${b}="${d}"
17
+ `;await g().writeFile(b,c,"utf-8")};async function A(){if(!await v())return e.NextResponse.json({installed:!1,message:"jcode not installed. Install via: curl -fsSL https://raw.githubusercontent.com/1jehuang/jcode/master/scripts/install.sh | bash"});let a=await w(),b=(a=>{if(!a||!a.providers)return!1;let b=a.providers;if(b[s])return!0;for(let[a,c]of Object.entries(b))if(c.base_url&&(c.base_url.includes("localhost:21128")||c.base_url.includes("localhost:20128")))return!0;return!1})(a),c=a?.providers?.[s];return e.NextResponse.json({installed:!0,config:a,hasMiawRouter:b,subagents:c?.subagents||null,configPath:r()})}async function B(a){try{let{baseUrl:b,apiKey:c,models:d,subagents:f}=await a.json();if(!b||!c)return e.NextResponse.json({error:"baseUrl and apiKey are required"},{status:400});let h=b.endsWith("/v1")?b:`${b}/v1`,j=await w();j.providers||(j.providers={});let l=Array.from(new Set([...d||[],...Object.values(f||{})].filter(Boolean)));j.providers[s]={type:"openai-compatible",base_url:h,auth:"bearer",api_key_env:t,env_file:"provider-miawrouter.env",default_model:d&&d.length>0?d[0]:"cc/claude-opus-4-7",requires_api_key:!0,...f?{subagents:f}:{},models:l.map(a=>({id:a}))};let m=q();await g().mkdir(m,{recursive:!0}),await x(j);let n=process.env.XDG_CONFIG_HOME||i().join(k().homedir(),".config"),o=i().join(n,"jcode");await g().mkdir(o,{recursive:!0});let p=await y();return p[t]=c,await z(p),e.NextResponse.json({success:!0,message:"jcode configured successfully. Use: jcode --provider-profile miawrouter",configPath:r()})}catch(a){return console.error("Error configuring jcode:",a),e.NextResponse.json({error:a.message},{status:500})}}async function C(){try{let a=await w();if(!a.providers)return e.NextResponse.json({success:!0,message:"No configuration to remove"});delete a.providers[s],await x(a);let b=await y();return delete b[t],await z(b),e.NextResponse.json({success:!0,message:"Miawrouter configuration removed from jcode"})}catch(a){return console.error("Error removing jcode configuration:",a),e.NextResponse.json({error:a.message},{status:500})}}(0,o.D)([A,B,C]),(0,d.A)(A,"00502ecc82cb5697b76306d48ccaa0409891ffa6e0",null),(0,d.A)(B,"408231dd32bd25c11a3f93d26869a3839be196a4d0",null),(0,d.A)(C,"00fb6dedfa7f6aa0aaa35077e39d0bbb813fc74d4c",null)},67116:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>w,GET:()=>u,POST:()=>v});var d=c(49796),e=c(23211),f=c(79646),g=c(28354),h=c(79748),i=c.n(h),j=c(33873),k=c.n(j),l=c(21820),m=c.n(l),n=c(24424);let o=(0,g.promisify)(f.exec),p=()=>k().join(m().homedir(),".deepseek"),q=()=>k().join(p(),"config.toml"),r=`provider = "deepseek"
18
18
  `,s=async()=>{try{let a="win32"===m().platform();return await o(a?"where deepseek":"which deepseek",{windowsHide:!0}),!0}catch{try{return await i().access(q()),!0}catch{return!1}}},t=async()=>{try{return await i().readFile(q(),"utf-8")}catch(a){if("ENOENT"===a.code)return"";throw a}};async function u(){try{if(!await s())return e.NextResponse.json({installed:!1,settings:null,message:"DeepSeek TUI is not installed"});let a=await t(),b=(a=>{let b={},c=b;for(let d of a.split(/\r?\n/)){let a=d.trim();if(!a||a.startsWith("#"))continue;let e=a.match(/^\[([^\]]+)\]$/);if(e){let a=e[1];b[a]||(b[a]={}),c=b[a];continue}let f=a.match(/^(\w+)\s*=\s*"([^"]*)"$/);if(f){c[f[1]]=f[2];continue}let g=a.match(/^(\w+)\s*=\s*(.+)$/);g&&(c[g[1]]=g[2].trim())}return b})(a);return e.NextResponse.json({installed:!0,settings:b,hasMiawRouter:(a=>{if(!a||"openai"!==a.provider)return!1;let b=a["providers.openai"];return!!b?.base_url&&/localhost|127\.0\.0\.1|0\.0\.0\.0/.test(b.base_url)})(b),configPath:q()})}catch(a){return console.log("Error checking deepseek-tui settings:",a),e.NextResponse.json({error:"Failed to check deepseek-tui settings"},{status:500})}}async function v(a){try{var b;let c,{baseUrl:d,apiKey:f,model:g}=await a.json();if(!d||!g)return e.NextResponse.json({error:"baseUrl and model are required"},{status:400});let h=p();await i().mkdir(h,{recursive:!0});let j=(b=f||"sk_miawrouter",c=d.endsWith("/v1")?d:`${d}/v1`,`provider = "openai"
19
19
 
20
20
  [providers.openai]
21
21
  base_url = "${c}"
22
22
  api_key = "${b}"
23
23
  model = "${g}"
24
- `);return await i().writeFile(q(),j),e.NextResponse.json({success:!0,message:"DeepSeek TUI settings applied successfully!",configPath:q()})}catch(a){return console.log("Error updating deepseek-tui settings:",a),e.NextResponse.json({error:"Failed to update deepseek-tui settings"},{status:500})}}async function w(){try{let a=q();try{await i().access(a)}catch{return e.NextResponse.json({success:!0,message:"No config file to reset"})}return await i().writeFile(a,r),e.NextResponse.json({success:!0,message:"MiawRouter config reset to DeepSeek defaults"})}catch(a){return console.log("Error resetting deepseek-tui settings:",a),e.NextResponse.json({error:"Failed to reset deepseek-tui settings"},{status:500})}}(0,n.D)([u,v,w]),(0,d.A)(u,"0085d616a2258ad5044a7f3059a44bd255e010f49f",null),(0,d.A)(v,"4064e9a12b5bdedea488f3ebcec36bd89c90bcb7ec",null),(0,d.A)(w,"00397b34081e1d533343258cd0f60b2565e96b14b8",null)},72452:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>A,GET:()=>x,PATCH:()=>z,POST:()=>y});var d=c(49796),e=c(23211),f=c(79646),g=c(28354),h=c(79748),i=c.n(h),j=c(33873),k=c.n(j),l=c(21820),m=c.n(l),n=c(24424);let o=(0,g.promisify)(f.exec),p=()=>k().join(m().homedir(),".config","opencode"),q=()=>k().join(p(),"opencode.json"),r="miawrouter",s=a=>`${r}/${a}`,t=a=>"string"==typeof a&&a.startsWith(`${r}/`),u=a=>t(a)?a.slice(a.indexOf("/")+1):a,v=async()=>{try{let a="win32"===m().platform(),b=a?{...process.env,PATH:`${process.env.APPDATA}\\npm;${process.env.PATH}`}:process.env;return await o(a?"where opencode":"which opencode",{windowsHide:!0,env:b}),!0}catch{try{return await i().access(q()),!0}catch{return!1}}},w=async()=>{try{let a=(await i().readFile(q(),"utf-8")).replace(/,(\s*[}\]])/g,"$1");return JSON.parse(a)}catch(a){return a.code,null}};async function x(){try{if(!await v())return e.NextResponse.json({installed:!1,config:null,message:"OpenCode CLI is not installed"});let a=await w(),b=a?.provider?.[r],c=b?.models||{},d={explorer:t(a?.agent?.explorer?.model)?u(a.agent.explorer.model):a?.agent?.explorer?.model||"",reviewer:t(a?.agent?.reviewer?.model)?u(a.agent.reviewer.model):a?.agent?.reviewer?.model||"",planner:t(a?.agent?.planner?.model)?u(a.agent.planner.model):a?.agent?.planner?.model||"",fast:t(a?.agent?.fast?.model)?u(a.agent.fast.model):a?.agent?.fast?.model||""};return e.NextResponse.json({installed:!0,config:a,subagents:d,hasMiawRouter:!!a?.provider&&!!a.provider[r],configPath:q(),opencode:{models:Object.keys(c),activeModel:t(a?.model)?u(a.model):null,baseURL:b?.options?.baseURL||null}})}catch(a){return console.log("Error checking opencode settings:",a),e.NextResponse.json({error:"Failed to check opencode settings"},{status:500})}}async function y(a){try{let{baseUrl:b,apiKey:c,model:d,models:f,activeModel:g,subagentModel:h,subagents:j}=await a.json(),k=Array.isArray(f)?f.slice():"string"==typeof d?[d]:[];if(!b||0===k.length)return e.NextResponse.json({error:"baseUrl and at least one model are required"},{status:400});let l=p(),m=q();await i().mkdir(l,{recursive:!0});let n={};try{let a=await i().readFile(m,"utf-8");n=JSON.parse(a)}catch{}let o=b.endsWith("/v1")?b:`${b}/v1`,t={explorer:j?.explorer||h||k[0],reviewer:j?.reviewer||k[0],planner:j?.planner||k[0],fast:j?.fast||h||k[0]};n.provider||(n.provider={});let u=n.provider[r]||{npm:"@ai-sdk/openai-compatible",options:{},models:{}};for(let a of(u.options={...u.options,baseURL:o,apiKey:c||"sk_miawrouter"},u.models=u.models||{},new Set([...k,t.explorer,t.reviewer,t.planner,t.fast])))a&&"string"==typeof a&&(u.models[a]={name:a,modalities:{input:["text","image"],output:["text"]}});if(n.provider[r]=u,""===g)n.model="";else{let a=g||k[0];a&&(n.model=s(a))}return n.agent||(n.agent={}),n.agent.explorer={description:"Fast explorer subagent for codebase exploration",mode:"subagent",model:s(t.explorer)},n.agent.reviewer={description:"Reviewer & auditor for adversarial review and validation",mode:"subagent",model:s(t.reviewer)},n.agent.planner={description:"Architectural planner for task decomposition",mode:"subagent",model:s(t.planner)},n.agent.fast={description:"Fast helper subagent for rapid edits and diffs",mode:"subagent",model:s(t.fast)},await i().writeFile(m,JSON.stringify(n,null,2)),e.NextResponse.json({success:!0,message:"OpenCode settings applied successfully!",configPath:m})}catch(a){return console.log("Error applying opencode settings:",a),e.NextResponse.json({error:"Failed to apply settings"},{status:500})}}async function z(a){try{let{clearActiveModel:b}=await a.json(),c=q(),d={};try{let a=await i().readFile(c,"utf-8");d=JSON.parse(a)}catch(a){if("ENOENT"===a.code)return e.NextResponse.json({success:!0,message:"No config file found"});throw a}return!0===b&&t(d.model)&&(d.model=""),await i().writeFile(c,JSON.stringify(d,null,2)),e.NextResponse.json({success:!0,message:"Settings updated"})}catch(a){return console.log("Error patching opencode settings:",a),e.NextResponse.json({error:"Failed to patch settings"},{status:500})}}async function A(a){try{let{searchParams:b}=new URL(a.url),c=b.get("model"),d=q(),f={};try{let a=await i().readFile(d,"utf-8");f=JSON.parse(a)}catch(a){if("ENOENT"===a.code)return e.NextResponse.json({success:!0,message:"No config file to reset"});throw a}let g=f.provider?.[r];if(c&&g){let a=g.models||{};if(delete a[c],g.models=a,0===Object.keys(a).length)delete f.provider[r],t(f.model)&&delete f.model;else if(t(f.model)&&u(f.model)===c){let b=Object.keys(a);f.model=s(b[0])}}else f.provider&&delete f.provider[r],t(f.model)&&delete f.model;return t(f.agent?.explorer?.model)&&(delete f.agent.explorer,0===Object.keys(f.agent).length&&delete f.agent),await i().writeFile(d,JSON.stringify(f,null,2)),e.NextResponse.json({success:!0,message:c?`Model "${c}" removed`:"MiawRouter settings removed from OpenCode"})}catch(a){return console.log("Error resetting opencode settings:",a),e.NextResponse.json({error:"Failed to reset opencode settings"},{status:500})}}(0,n.D)([x,y,z,A]),(0,d.A)(x,"0066daad41eb3c45a8fc19dda2420478c1cd7f4fe3",null),(0,d.A)(y,"407e31d679e7ea3828233d7d6c8ec9dfbd7697279e",null),(0,d.A)(z,"400b47b90ddee8124e87fb695b8558bb4dff5c7aee",null),(0,d.A)(A,"40a374da1b2351d382328a3aa394a4d21839c2df0e",null)},75569:(a,b,c)=>{c.d(b,{t:()=>y,F:()=>z});var d=c(55511);let e="__miawrouterAgentLifecycle";function f(){return globalThis[e]||(globalThis[e]=[]),globalThis[e]}function g(){return[...f()].reverse()}let h=[["claude","Claude Code","cli",!0],["codex","OpenAI Codex","cli",!0],["opencode","OpenCode","cli",!0],["droid","Factory Droid","cli",!0],["openclaw","OpenClaw","cli",!0],["hermes","Hermes Agent","cli",!0],["cowork","Claude Desktop","desktop",!0],["copilot","GitHub Copilot","desktop",!0],["cline","Cline","desktop",!0],["kilo","Kilo Code","desktop",!0],["deepseek-tui","DeepSeek TUI","cli",!0],["jcode","JCode","cli",!0],["grok-build","Grok Build","cloud-cli",!0],["devin","Devin CLI","cloud-cli",!1]].map(([a,b,c,d])=>Object.freeze({id:a,name:b,kind:c,capabilities:Object.freeze({status:!0,configure:d,launch:!1,adopt:!1})})),i=Object.freeze({state:"error",available:!1,configured:!1,running:!1,error:"Status check failed"});var j=c(14833),k=c(58750),l=c(72452),m=c(29657),n=c(4126),o=c(21757),p=c(21350),q=c(20703),r=c(46298),s=c(8304),t=c(67116),u=c(48074),v=c(14933),w=c(32504),x=c(5592);let y=function(a={}){let b=new Map(h.map(a=>[a.id,a]));return{list:async()=>Promise.all(h.map(async b=>{let c=a[b.id];if(!c)return{...b,status:{...i}};try{return{...b,status:function(a){if(!a||a.error)return{...i};let b=!0===a.running,c=!0===a.configured||!0===a.hasMiawRouter,d=!0===a.installed||c||b;return{state:b?"running":c?"configured":d?"available":"unavailable",available:d,configured:c,running:b,error:null}}(await c())}}catch{return{...b,status:{...i}}}})),async performAction(a,c){if(!b.has(a))return{ok:!1,code:"agent_not_found",error:"Agent integration not found"};let e="adopt"===c?"Adoption":"Launch",g={ok:!1,code:"unsupported_action",error:`${e} is not supported for this integration`};return!function(a){let b={id:a.id||(0,d.randomUUID)(),agentId:a.agentId,action:a.action,status:a.status,createdAt:a.createdAt||Date.now(),error:a.error||null},c=f();for(c.push(b);c.length>100;)c.shift()}({agentId:a,action:c,status:"unsupported",error:g.error}),g},lifecycle:g}}(Object.fromEntries(Object.entries({claude:j.GET,codex:k.GET,opencode:l.GET,droid:m.GET,openclaw:n.GET,hermes:o.GET,cowork:p.GET,copilot:q.GET,cline:r.GET,kilo:s.GET,"deepseek-tui":t.GET,jcode:u.GET,"grok-build":v.GET,devin:w.GET,"oh-my-pi":x.GET}).map(([a,b])=>[a,async()=>{let a=await b(),c=await a.json();if(!a.ok||c?.error)throw Error("Status check failed");return c}]))),z=g}};
24
+ `);return await i().writeFile(q(),j),e.NextResponse.json({success:!0,message:"DeepSeek TUI settings applied successfully!",configPath:q()})}catch(a){return console.log("Error updating deepseek-tui settings:",a),e.NextResponse.json({error:"Failed to update deepseek-tui settings"},{status:500})}}async function w(){try{let a=q();try{await i().access(a)}catch{return e.NextResponse.json({success:!0,message:"No config file to reset"})}return await i().writeFile(a,r),e.NextResponse.json({success:!0,message:"MiawRouter config reset to DeepSeek defaults"})}catch(a){return console.log("Error resetting deepseek-tui settings:",a),e.NextResponse.json({error:"Failed to reset deepseek-tui settings"},{status:500})}}(0,n.D)([u,v,w]),(0,d.A)(u,"000cbaa24bbd9594cba67ef882a645d3b645b2bd39",null),(0,d.A)(v,"403798ba1e587e32c649e281ebd8e81ea8e404d95d",null),(0,d.A)(w,"002d565e62a86c7d86f046cbc445521c2b5dc7253b",null)},72452:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>A,GET:()=>x,PATCH:()=>z,POST:()=>y});var d=c(49796),e=c(23211),f=c(79646),g=c(28354),h=c(79748),i=c.n(h),j=c(33873),k=c.n(j),l=c(21820),m=c.n(l),n=c(24424);let o=(0,g.promisify)(f.exec),p=()=>k().join(m().homedir(),".config","opencode"),q=()=>k().join(p(),"opencode.json"),r="miawrouter",s=a=>`${r}/${a}`,t=a=>"string"==typeof a&&a.startsWith(`${r}/`),u=a=>t(a)?a.slice(a.indexOf("/")+1):a,v=async()=>{try{let a="win32"===m().platform(),b=a?{...process.env,PATH:`${process.env.APPDATA}\\npm;${process.env.PATH}`}:process.env;return await o(a?"where opencode":"which opencode",{windowsHide:!0,env:b}),!0}catch{try{return await i().access(q()),!0}catch{return!1}}},w=async()=>{try{let a=(await i().readFile(q(),"utf-8")).replace(/,(\s*[}\]])/g,"$1");return JSON.parse(a)}catch(a){return a.code,null}};async function x(){try{if(!await v())return e.NextResponse.json({installed:!1,config:null,message:"OpenCode CLI is not installed"});let a=await w(),b=a?.provider?.[r],c=b?.models||{},d={explorer:t(a?.agent?.explorer?.model)?u(a.agent.explorer.model):a?.agent?.explorer?.model||"",reviewer:t(a?.agent?.reviewer?.model)?u(a.agent.reviewer.model):a?.agent?.reviewer?.model||"",planner:t(a?.agent?.planner?.model)?u(a.agent.planner.model):a?.agent?.planner?.model||"",fast:t(a?.agent?.fast?.model)?u(a.agent.fast.model):a?.agent?.fast?.model||""};return e.NextResponse.json({installed:!0,config:a,subagents:d,hasMiawRouter:!!a?.provider&&!!a.provider[r],configPath:q(),opencode:{models:Object.keys(c),activeModel:t(a?.model)?u(a.model):null,baseURL:b?.options?.baseURL||null}})}catch(a){return console.log("Error checking opencode settings:",a),e.NextResponse.json({error:"Failed to check opencode settings"},{status:500})}}async function y(a){try{let{baseUrl:b,apiKey:c,model:d,models:f,activeModel:g,subagentModel:h,subagents:j}=await a.json(),k=Array.isArray(f)?f.slice():"string"==typeof d?[d]:[];if(!b||0===k.length)return e.NextResponse.json({error:"baseUrl and at least one model are required"},{status:400});let l=p(),m=q();await i().mkdir(l,{recursive:!0});let n={};try{let a=await i().readFile(m,"utf-8");n=JSON.parse(a)}catch{}let o=b.endsWith("/v1")?b:`${b}/v1`,t={explorer:j?.explorer||h||k[0],reviewer:j?.reviewer||k[0],planner:j?.planner||k[0],fast:j?.fast||h||k[0]};n.provider||(n.provider={});let u=n.provider[r]||{npm:"@ai-sdk/openai-compatible",options:{},models:{}};for(let a of(u.options={...u.options,baseURL:o,apiKey:c||"sk_miawrouter"},u.models=u.models||{},new Set([...k,t.explorer,t.reviewer,t.planner,t.fast])))a&&"string"==typeof a&&(u.models[a]={name:a,modalities:{input:["text","image"],output:["text"]}});if(n.provider[r]=u,""===g)n.model="";else{let a=g||k[0];a&&(n.model=s(a))}return n.agent||(n.agent={}),n.agent.explorer={description:"Fast explorer subagent for codebase exploration",mode:"subagent",model:s(t.explorer)},n.agent.reviewer={description:"Reviewer & auditor for adversarial review and validation",mode:"subagent",model:s(t.reviewer)},n.agent.planner={description:"Architectural planner for task decomposition",mode:"subagent",model:s(t.planner)},n.agent.fast={description:"Fast helper subagent for rapid edits and diffs",mode:"subagent",model:s(t.fast)},await i().writeFile(m,JSON.stringify(n,null,2)),e.NextResponse.json({success:!0,message:"OpenCode settings applied successfully!",configPath:m})}catch(a){return console.log("Error applying opencode settings:",a),e.NextResponse.json({error:"Failed to apply settings"},{status:500})}}async function z(a){try{let{clearActiveModel:b}=await a.json(),c=q(),d={};try{let a=await i().readFile(c,"utf-8");d=JSON.parse(a)}catch(a){if("ENOENT"===a.code)return e.NextResponse.json({success:!0,message:"No config file found"});throw a}return!0===b&&t(d.model)&&(d.model=""),await i().writeFile(c,JSON.stringify(d,null,2)),e.NextResponse.json({success:!0,message:"Settings updated"})}catch(a){return console.log("Error patching opencode settings:",a),e.NextResponse.json({error:"Failed to patch settings"},{status:500})}}async function A(a){try{let{searchParams:b}=new URL(a.url),c=b.get("model"),d=q(),f={};try{let a=await i().readFile(d,"utf-8");f=JSON.parse(a)}catch(a){if("ENOENT"===a.code)return e.NextResponse.json({success:!0,message:"No config file to reset"});throw a}let g=f.provider?.[r];if(c&&g){let a=g.models||{};if(delete a[c],g.models=a,0===Object.keys(a).length)delete f.provider[r],t(f.model)&&delete f.model;else if(t(f.model)&&u(f.model)===c){let b=Object.keys(a);f.model=s(b[0])}}else f.provider&&delete f.provider[r],t(f.model)&&delete f.model;return t(f.agent?.explorer?.model)&&(delete f.agent.explorer,0===Object.keys(f.agent).length&&delete f.agent),await i().writeFile(d,JSON.stringify(f,null,2)),e.NextResponse.json({success:!0,message:c?`Model "${c}" removed`:"MiawRouter settings removed from OpenCode"})}catch(a){return console.log("Error resetting opencode settings:",a),e.NextResponse.json({error:"Failed to reset opencode settings"},{status:500})}}(0,n.D)([x,y,z,A]),(0,d.A)(x,"004faa0f99b7dd84619c8d0ee13728e84603c19319",null),(0,d.A)(y,"4042f55b3c6587b5ff094b1563667c01825e248916",null),(0,d.A)(z,"40a52e58eadc62f57ecb6795937e61e65bba15b367",null),(0,d.A)(A,"4036ce0c45abc97ed821ffed9a26998a71ff9127ca",null)},75569:(a,b,c)=>{c.d(b,{t:()=>y,F:()=>z});var d=c(55511);let e="__miawrouterAgentLifecycle";function f(){return globalThis[e]||(globalThis[e]=[]),globalThis[e]}function g(){return[...f()].reverse()}let h=[["claude","Claude Code","cli",!0],["codex","OpenAI Codex","cli",!0],["opencode","OpenCode","cli",!0],["droid","Factory Droid","cli",!0],["openclaw","OpenClaw","cli",!0],["hermes","Hermes Agent","cli",!0],["cowork","Claude Desktop","desktop",!0],["copilot","GitHub Copilot","desktop",!0],["cline","Cline","desktop",!0],["kilo","Kilo Code","desktop",!0],["deepseek-tui","DeepSeek TUI","cli",!0],["jcode","JCode","cli",!0],["grok-build","Grok Build","cloud-cli",!0],["devin","Devin CLI","cloud-cli",!1]].map(([a,b,c,d])=>Object.freeze({id:a,name:b,kind:c,capabilities:Object.freeze({status:!0,configure:d,launch:!1,adopt:!1})})),i=Object.freeze({state:"error",available:!1,configured:!1,running:!1,error:"Status check failed"});var j=c(14833),k=c(58750),l=c(72452),m=c(29657),n=c(4126),o=c(21757),p=c(21350),q=c(20703),r=c(46298),s=c(8304),t=c(67116),u=c(48074),v=c(14933),w=c(32504),x=c(5592);let y=function(a={}){let b=new Map(h.map(a=>[a.id,a]));return{list:async()=>Promise.all(h.map(async b=>{let c=a[b.id];if(!c)return{...b,status:{...i}};try{return{...b,status:function(a){if(!a||a.error)return{...i};let b=!0===a.running,c=!0===a.configured||!0===a.hasMiawRouter,d=!0===a.installed||c||b;return{state:b?"running":c?"configured":d?"available":"unavailable",available:d,configured:c,running:b,error:null}}(await c())}}catch{return{...b,status:{...i}}}})),async performAction(a,c){if(!b.has(a))return{ok:!1,code:"agent_not_found",error:"Agent integration not found"};let e="adopt"===c?"Adoption":"Launch",g={ok:!1,code:"unsupported_action",error:`${e} is not supported for this integration`};return!function(a){let b={id:a.id||(0,d.randomUUID)(),agentId:a.agentId,action:a.action,status:a.status,createdAt:a.createdAt||Date.now(),error:a.error||null},c=f();for(c.push(b);c.length>100;)c.shift()}({agentId:a,action:c,status:"unsupported",error:g.error}),g},lifecycle:g}}(Object.fromEntries(Object.entries({claude:j.GET,codex:k.GET,opencode:l.GET,droid:m.GET,openclaw:n.GET,hermes:o.GET,cowork:p.GET,copilot:q.GET,cline:r.GET,kilo:s.GET,"deepseek-tui":t.GET,jcode:u.GET,"grok-build":v.GET,devin:w.GET,"oh-my-pi":x.GET}).map(([a,b])=>[a,async()=>{let a=await b(),c=await a.json();if(!a.ok||c?.error)throw Error("Status check failed");return c}]))),z=g},94625:(a,b,c)=>{c.r(b),c.d(b,{"00024aa9a07a3cfab75713323cfcfe8b9b3c026a12":()=>h.GET,"000bc557d26ee387055accea634e04e43e243edfd4":()=>i.GET,"000cbaa24bbd9594cba67ef882a645d3b645b2bd39":()=>n.GET,"0024b2de844fc9814745ae47e901bda5b6b944e80b":()=>j.DELETE,"00267ff010c6287b708765d4a528c6ef07c56fa324":()=>k.GET,"002d565e62a86c7d86f046cbc445521c2b5dc7253b":()=>n.DELETE,"002e56aa50f9ec6634a5a67e5b54296c19e05292ef":()=>m.GET,"00309ff3c43456b657d9fe22d543ff43034d665071":()=>m.DELETE,"003e5faabe0d341e8b77e18001d4fa10089f8e0c0b":()=>l.GET,"0041dfa9e0bd4b2e9b968b249f01771b95a032afec":()=>i.DELETE,"004faa0f99b7dd84619c8d0ee13728e84603c19319":()=>f.GET,"00502ecc82cb5697b76306d48ccaa0409891ffa6e0":()=>o.GET,"0053576354ff3e16f456aa7c285396a8a211f2d491":()=>d.GET,"005d6e3fe6fcd498ff6b01e6bdef94f4e73a11a366":()=>k.DELETE,"006cd0613bb911818fa8928dbec3e5618689959878":()=>e.DELETE,"007369df07ec001735410b492d22d2204afe87d662":()=>g.GET,"0077b023a054c7c72fecf94e215cbc4ea2cea19187":()=>r.GET,"008aaba0f57c593503e902633b58a6bd0e2e42960c":()=>d.DELETE,"00aa7ecbdbd2491a5416b91d9d0b4b24f127e8277b":()=>e.GET,"00afef5df08f53ea04d3436da6bb83361db00a658e":()=>q.GET,"00ce682fdc58655768019386064e7a23cb41a9619b":()=>l.DELETE,"00de5cfe8ce48df9a65943ecc3d90ad99f23668010":()=>j.GET,"00e2e3b8f4121cf5d33e9c59894767653f19db4a4f":()=>h.DELETE,"00ea8147ae017602283ce4c7faba8cb4fc905aae27":()=>g.DELETE,"00fb6dedfa7f6aa0aaa35077e39d0bbb813fc74d4c":()=>o.DELETE,"400d0bbccc802e2bc3de9293adf979691bd00f1f61":()=>k.POST,"401dc14b917c8f2fa0c5005a6054bc9a013c8f94d2":()=>g.POST,"4020cb264773a1803e92e433dce1ac921568b8dc06":()=>p.DELETE,"403036c5dc746a456f830fb79dd033b5ce467b8f54":()=>e.POST,"4036ce0c45abc97ed821ffed9a26998a71ff9127ca":()=>f.DELETE,"403798ba1e587e32c649e281ebd8e81ea8e404d95d":()=>n.POST,"403d028d3410d619cd4df6dd454bc1a0c1ff3be158":()=>h.POST,"4042f55b3c6587b5ff094b1563667c01825e248916":()=>f.POST,"405032604eab29c2b7e7dd2f3a9dc0fed461eebd41":()=>p.POST,"405cf5441ff258664c04fb852112f5ba06d23883b2":()=>i.POST,"4072bc32ec387a4fbcecb752756e105c184dff159d":()=>j.POST,"408231dd32bd25c11a3f93d26869a3839be196a4d0":()=>o.POST,"408564a250e4dc1a05b38479984c2b752db2174e13":()=>d.POST,"408c383fa8126674e666845e001e0d2ca929b6d6f1":()=>l.POST,"40a52e58eadc62f57ecb6795937e61e65bba15b367":()=>f.PATCH,"40bd0407967dca44a109323e31f87219a703ed15f3":()=>p.GET,"40d77484da71b9c4b9cf9c5f17cb4e2196792cd9e5":()=>m.POST,"40fa7269a526e47611856044a6cf6a75532e1a481b":()=>r.POST});var d=c(14833),e=c(58750),f=c(72452),g=c(29657),h=c(4126),i=c(21757),j=c(21350),k=c(20703),l=c(46298),m=c(8304),n=c(67116),o=c(48074),p=c(14933),q=c(32504),r=c(5592)}};
@@ -2,7 +2,7 @@
2
2
  \`\`\`json
3
3
  ${b}
4
4
  \`\`\`
5
- Respond ONLY with the JSON object, no other text.`)}else"json_object"===a.type&&q.push("You must respond with valid JSON. Respond ONLY with a JSON object, no other text.")}let r={type:k.R4.TEXT,text:f.Co};if(q.length>0&&p.push({type:k.R4.TEXT,text:q.join("\n")}),m.system=[r,...p],b.tools&&Array.isArray(b.tools))for(let a of(m.tools=[],b.tools)){let b=a.type;if(b&&b!==k.x4.FUNCTION){m.tools.push(a);continue}let c=a.function??a,e=c.name,f=""+e;d.set(f,e),m.tools.push({name:f,description:c.description||"",input_schema:c.parameters||c.input_schema||{type:"object",properties:{},required:[]},...a.cache_control&&{cache_control:a.cache_control}})}return b.tool_choice&&(m.tool_choice=function(a){if(!a)return{type:"auto"};if("string"==typeof a)return"required"===a?{type:"any"}:"none"===a?{type:"none"}:{type:"auto"};if("object"==typeof a){if(a.function?.name)return{type:"tool",name:a.function.name};if(o.has(a.type))return a}return{type:"auto"}}(b.tool_choice)),d.size>0&&(m._toolNameMap=d),m}function n(a,b){return a&&a.cache_control?{...b,cache_control:a.cache_control}:b}let o=new Set(["auto","any","tool","none"]);function p(a,b,c){let d=m(a,b,c);return d.system&&Array.isArray(d.system)&&(d.system=d.system.filter(a=>!a.text||!a.text.includes("You are Claude Code")),0===d.system.length&&delete d.system),d.tools&&Array.isArray(d.tools)&&(d.tools=d.tools.map(a=>a.name&&a.name.startsWith("")?{...a,name:a.name.slice(0)}:a)),d.messages&&Array.isArray(d.messages)&&(d.messages=d.messages.map(a=>{if(!a.content||!Array.isArray(a.content))return a;let b=a.content.map(a=>a.type===k.R4.TOOL_USE&&a.name&&a.name.startsWith("")?{...a,name:a.name.slice(0)}:a);return{...a,content:b}})),d}(0,d.kz)(e.h.OPENAI,e.h.CLAUDE,m,null)},29675:(a,b,c)=>{c.d(b,{P:()=>l});var d=c(88499),e=c(14170),f=c(55673),g=c(32271),h=c(34097),i=c(44090),j=c(44236);function k(a,b,c=null){return(0,g.k)({id:`chatcmpl-${a.messageId}`,created:Math.floor(Date.now()/1e3),model:a.model},b,c)}function l(a,b){if(!a)return null;let c=[];switch(a.type){case"message_start":{b.messageId=a.message?.id||`msg_${Date.now()}`,b.model=a.message?.model,b.toolCallIndex=0;let d=a.message?.usage;if(d&&"object"==typeof d){let a="number"==typeof d.input_tokens?d.input_tokens:0,c="number"==typeof d.cache_read_input_tokens?d.cache_read_input_tokens:0,e="number"==typeof d.cache_creation_input_tokens?d.cache_creation_input_tokens:0,f=a+c+e;b.usage={prompt_tokens:f,completion_tokens:0,total_tokens:f,input_tokens:a,output_tokens:0},c>0&&(b.usage.cache_read_input_tokens=c),e>0&&(b.usage.cache_creation_input_tokens=e)}c.push(k(b,{role:f.z7.ASSISTANT}));break}case"content_block_start":{let d=a.content_block;if(d?.type==="server_tool_use"){b.serverToolBlockIndex=a.index;break}if(d?.type===f.R4.TEXT)b.textBlockStarted=!0;else if(d?.type===f.R4.THINKING)b.inThinkingBlock=!0,b.currentBlockIndex=a.index,c.push(k(b,{content:"<think>"}));else if(d?.type===f.R4.TOOL_USE){let e=b.toolCallIndex++,g=b.toolNameMap?.get(d.name)||d.name,h={index:e,id:d.id,type:f.x4.FUNCTION,function:{name:g,arguments:""}};b.toolCalls.set(a.index,h),c.push(k(b,{tool_calls:[h]}))}break}case"content_block_delta":{if(a.index===b.serverToolBlockIndex)break;let d=a.delta;if(d?.type==="text_delta"&&d.text)c.push(k(b,{content:d.text}));else if(d?.type==="thinking_delta"&&d.thinking)c.push(k(b,(0,i.B)(d.thinking)));else if(d?.type==="input_json_delta"&&d.partial_json){let e=b.toolCalls.get(a.index);e&&(e.function.arguments+=d.partial_json,c.push(k(b,{tool_calls:[{index:e.index,id:e.id,function:{arguments:d.partial_json}}]})))}break}case"content_block_stop":if(a.index===b.serverToolBlockIndex){b.serverToolBlockIndex=-1;break}b.inThinkingBlock&&a.index===b.currentBlockIndex&&(c.push(k(b,{content:"</think>"})),b.inThinkingBlock=!1),b.textBlockStarted=!1,b.thinkingBlockStarted=!1;break;case"message_delta":if(a.usage&&"object"==typeof a.usage){let c=b.usage||{},d="number"==typeof a.usage.input_tokens?a.usage.input_tokens:c.input_tokens||0,e="number"==typeof a.usage.output_tokens?a.usage.output_tokens:0,f="number"==typeof a.usage.cache_read_input_tokens?a.usage.cache_read_input_tokens:c.cache_read_input_tokens||0,g="number"==typeof a.usage.cache_creation_input_tokens?a.usage.cache_creation_input_tokens:c.cache_creation_input_tokens||0,h=d+f+g;b.usage={prompt_tokens:h,completion_tokens:e,total_tokens:h+e,input_tokens:d,output_tokens:e},f>0&&(b.usage.cache_read_input_tokens=f),g>0&&(b.usage.cache_creation_input_tokens=g)}if(a.delta?.stop_reason){b.finishReason=m(a.delta.stop_reason);let d=k(b,{},b.finishReason);b.usage&&(d.usage=(0,h.B)({input_tokens:b.usage.input_tokens||0,output_tokens:b.usage.output_tokens||0,cache_read_input_tokens:b.usage.cache_read_input_tokens,cache_creation_input_tokens:b.usage.cache_creation_input_tokens},"claude")),c.push(d),b.finishReasonSent=!0}break;case"message_stop":if(!b.finishReasonSent){let a=b.finishReason||(b.toolCalls?.size>0?f.bC.TOOL_CALLS:f.bC.STOP),d=b.usage&&"object"==typeof b.usage?{usage:{prompt_tokens:b.usage.input_tokens||0,completion_tokens:b.usage.output_tokens||0,total_tokens:(b.usage.input_tokens||0)+(b.usage.output_tokens||0)}}:{};c.push({...k(b,{},a),...d}),b.finishReasonSent=!0}}return c.length>0?c:null}let m=a=>(0,j.F)(a,"claude");(0,d.kz)(e.h.CLAUDE,e.h.OPENAI,null,l)},32271:(a,b,c)=>{c.d(b,{k:()=>d});function d({id:a,created:b,model:c},e,f=null){return{id:a,object:"chat.completion.chunk",created:b,model:c,choices:[{index:0,delta:e,finish_reason:f}]}}},32546:(a,b,c)=>{c.d(b,{o:()=>n});var d=c(88499),e=c(14170),f=c(55673),g=c(32271),h=c(34097),i=c(44090),j=c(71301),k=c(44236);function l(a){return{id:`chatcmpl-${a.messageId}`,created:Math.floor(Date.now()/1e3),model:a.model}}function m(a,b){let c=a.name,d=b.toolNameMap?.get(c)||c,e=a.args||{},h=b.functionIndex++,i={id:`${d}-${Date.now()}-${h}`,index:h,type:f.x4.FUNCTION,function:{name:d,arguments:JSON.stringify(e)}};return b.geminiToolCallCount=(b.geminiToolCallCount||0)+1,(0,g.k)(l(b),{tool_calls:[i]},null)}function n(a,b){if(!a)return null;let c=a.response||a;if(!c||!c.candidates?.[0])return null;let d=[],e=c.candidates[0],n=e.content;if(b.messageId||(b.messageId=c.responseId||`msg_${Date.now()}`,b.model=c.modelVersion||"gemini",b.functionIndex=0,b.geminiToolCallCount=0,d.push((0,g.k)(l(b),{role:f.z7.ASSISTANT},null))),n?.parts)for(let a of n.parts){let c=a.thoughtSignature||a.thought_signature,e=!0===a.thought;if(c){let c=void 0!==a.text&&""!==a.text,f=!!a.functionCall;c&&d.push((0,g.k)(l(b),e?(0,i.B)(a.text):{content:a.text},null)),f&&d.push(m(a.functionCall,b));continue}void 0!==a.text&&""!==a.text&&d.push((0,g.k)(l(b),e?(0,i.B)(a.text):{content:a.text},null)),a.functionCall&&d.push(m(a.functionCall,b));let h=a.inlineData||a.inline_data;if(h?.data){let a=h.mimeType||h.mime_type||f.BY;d.push((0,g.k)(l(b),{images:[{type:f.x4.IMAGE_URL,image_url:{url:(0,j.$q)(a,h.data)}}]},null))}}let o=c.usageMetadata||a.usageMetadata,p=(0,h.B)(o,"gemini");if(p&&(b.usage=p),e.finishReason){let a=(0,k.F)(e.finishReason,"gemini");a===f.bC.STOP&&b.geminiToolCallCount>0&&(a=f.bC.TOOL_CALLS);let c=(0,g.k)(l(b),{},a);b.usage&&(c.usage=b.usage),d.push(c),b.finishReason=a}return d.length>0?d:null}(0,d.kz)(e.h.GEMINI,e.h.OPENAI,null,n),(0,d.kz)(e.h.GEMINI_CLI,e.h.OPENAI,null,n),(0,d.kz)(e.h.ANTIGRAVITY,e.h.OPENAI,null,n),(0,d.kz)(e.h.VERTEX,e.h.OPENAI,null,n)},34097:(a,b,c)=>{function d({promptTokens:a,completionTokens:b,totalTokens:c,cachedTokens:e=0,cacheCreationTokens:f=0,reasoningTokens:g=0}){let h={prompt_tokens:a,completion_tokens:b,total_tokens:c};return(e>0||f>0)&&(h.prompt_tokens_details={},e>0&&(h.prompt_tokens_details.cached_tokens=e),f>0&&(h.prompt_tokens_details.cache_creation_tokens=f)),g>0&&(h.completion_tokens_details={reasoning_tokens:g}),h}c.d(b,{B:()=>g,c:()=>d});let e=a=>"number"==typeof a?a:0,f={claude(a){let b=e(a.input_tokens),c=e(a.output_tokens),d=e(a.cache_read_input_tokens),f=e(a.cache_creation_input_tokens),g=b+d+f;return{promptTokens:g,completionTokens:c,totalTokens:g+c,cachedTokens:d,cacheCreationTokens:f}},gemini(a){let b=e(a.cachedContentTokenCount),c=e(a.promptTokenCount),d=e(a.thoughtsTokenCount),f=e(a.totalTokenCount),g=e(a.candidatesTokenCount);return 0===g&&f>0&&(g=f-c-d)<0&&(g=0),{promptTokens:c,completionTokens:g+d,totalTokens:f,cachedTokens:b,reasoningTokens:d}},kiro(a){let b=e(a.inputTokens),c=e(a.outputTokens),d=e(a.cache_read_input_tokens)||e(a.cachedTokens)||e(a.cached_tokens),f=e(a.cache_creation_input_tokens),g={promptTokens:b,completionTokens:c,totalTokens:b+c};return d>0&&(g.cachedTokens=d),f>0&&(g.cacheCreationTokens=f),g},ollama(a){let b=e(a.prompt_eval_count),c=e(a.eval_count);return{promptTokens:b,completionTokens:c,totalTokens:b+c}},commandcode(a){let b=e(a.inputTokens),c=e(a.outputTokens),d="number"==typeof a.totalTokens?a.totalTokens:b+c;return{promptTokens:b,completionTokens:c,totalTokens:d}}};function g(a,b){let c=f[b];return c&&a&&"object"==typeof a?d(c(a)):null}},37981:(a,b,c)=>{c.d(b,{m:()=>e});var d=c(55673);function e(a){if("string"==typeof a){let b=""===a.trim()?"...":a;return[{type:d.Du.MESSAGE,role:d.z7.USER,content:[{type:d.Du.INPUT_TEXT,text:b}]}]}return Array.isArray(a)?0===a.length?[{type:d.Du.MESSAGE,role:d.z7.USER,content:[{type:d.Du.INPUT_TEXT,text:"..."}]}]:a:null}},39536:(a,b,c)=>{c.d(b,{c:()=>x});var d=c(55511),e=c.n(d),f=c(74957),g=c(35024),h=c(75924),i=c(41004),j=c(80662),k=c(39609),l=c(26922),m=c(96281),n=c(74129);let o=/^agent\/[^/]+\/\d+\/[^/]+\/\d+$/,p=[/high\s+traffic/i,/agent\s+(execution\s+)?terminated\s+due\s+to\s+error/i,/capacity/i,/temporarily\s+unavailable/i,/timeout/i,/stream\s+(ended|closed|terminated|interrupted)/i,/empty\s+response/i],q=new Set([i.gx.SERVER_ERROR,i.gx.BAD_GATEWAY,i.gx.SERVICE_UNAVAILABLE,i.gx.GATEWAY_TIMEOUT]),r=["output_config","thinking","reasoning_effort","reasoning","enable_thinking","thinking_budget","thinkingConfig"],s=a=>{for(let b of r)delete a[b]},t=[/image/i,/imagen/i,/image-generation/i];function u(a){return!!a&&t.some(b=>b.test(a))}function v(a){let b=e().createHash("sha256").update(String(a||"antigravity")).digest().subarray(0,16);b[6]=15&b[6]|80,b[8]=63&b[8]|128;let c=b.toString("hex");return`${c.slice(0,8)}-${c.slice(8,12)}-${c.slice(12,16)}-${c.slice(16,20)}-${c.slice(20)}`}function w({body:a,request:b,credentials:c,model:d,requestType:e}){if(o.test(a?.requestId||""))return a.requestId;let f=b?.sessionId||a?.request?.sessionId||c?._clientSessionId||c?.connectionId||c?.email||"anonymous",g=v(`antigravity:conversation:${f}`),h=v(`antigravity:trajectory:${f}:${d}:${e}`),i=Math.max(1,2*(Array.isArray(b?.contents)?b.contents.length:1)-1);return`agent/${g}/${Date.now()}/${h}/${i}`}class x extends f.H{constructor(){super("antigravity",g.xq.antigravity)}buildUrl(a,b,c=0){let d=this.getBaseUrls(),e=d[c]||d[0],f=u(a);return`${e}/v1internal:${b&&!f?"streamGenerateContent?alt=sse":"generateContent"}`}buildHeaders(a,b=!0,c=null,d=null){return{"Content-Type":"application/json",Authorization:`Bearer ${a.accessToken}`,"User-Agent":d?.startsWith("gemini-4-argon")?n.TC:this.config.headers?.["User-Agent"]||h.K["User-Agent"]}}transformRequest(a,b,c,d){let e=d?.projectId;if(!e){let a=Error("Antigravity requires a real Google Cloud Code project ID; complete account onboarding and retry");throw a.status=422,a}if(!0!==c&&delete b.stream_options,u(a)){let c=function(a){let b={aspectRatio:"1:1"},c=a.match(/(\d+)x(\d+)$/);if(c){let a=parseInt(c[1]),d=parseInt(c[2]);if(a<=16&&d<=16)b.aspectRatio=`${a}:${d}`;else{let c=(a,b)=>b?c(b,a%b):a,e=c(a,d);b.aspectRatio=`${a/e}:${d/e}`}}return b}(a),f=a.replace(/-(\d+)x(\d+)$/,""),g=[];for(let a of b.request?.contents||b.contents||[]){let b=(a.parts||[]).filter(a=>void 0!==a.text).map(a=>({text:a.text}));b.length>0&&g.push({role:a.role||"user",parts:b})}let h=(0,j.oV)({headers:d?.rawHeaders,body:b,connectionId:d?.email||d?.connectionId,scope:"antigravity"});this._lastSessionId=h;let i={contents:g,generationConfig:{temperature:1,topP:.95,topK:40,maxOutputTokens:8192,imageConfig:c},sessionId:h};return{project:e,model:f,userAgent:"antigravity",requestType:"image_gen",requestId:w({body:b,request:i,credentials:d,model:f,requestType:"image_gen"}),request:i}}let f=b.request?.contents?.map(a=>{let b=a.role;a.parts?.some(a=>a.functionResponse)&&(b="user");let c=a.parts?.filter(a=>(!a.thought||!!a.functionCall)&&(!a.thoughtSignature||!!a.functionCall||!!a.text)),d=c?.some(a=>a.functionCall&&!a.thoughtSignature)??!1;return b!==a.role||c?.length!==a.parts?.length||d?{...a,role:b,parts:d?c.map(a=>a.functionCall&&!a.thoughtSignature?{...a,thoughtSignature:m.bf}:a):c}:a}),g=b.request?.tools;if(g&&g.length>0){let a=new Set,b=[];for(let c of g)for(let d of c.functionDeclarations||[]){let c=function(a){if(!a)return"_unknown";let b=a.replace(/[^a-zA-Z0-9_.:\-]/g,"_");return/^[a-zA-Z_]/.test(b)||(b="_"+b),b.substring(0,64)}(d.name);a.has(c)||(a.add(c),b.push({...d,name:c,parameters:d.parameters?(0,l.Yr)(structuredClone(d.parameters)):{type:"object",properties:{reason:{type:"string",description:"Brief explanation"}},required:["reason"]}}))}g=b.length>0?[{functionDeclarations:b}]:[]}let{tools:h,toolConfig:i,...k}=b.request||{};s(k);let n={...k.generationConfig||{}};n.maxOutputTokens>64e3&&(n.maxOutputTokens=64e3);let o={...k,generationConfig:n,...f&&{contents:f},...g&&{tools:g},sessionId:b.request?.sessionId||(0,j.oV)({headers:d?.rawHeaders,body:b,connectionId:d?.email||d?.connectionId,scope:"antigravity"}),safetySettings:void 0,...g?.length>0&&{toolConfig:{functionCallingConfig:{mode:"VALIDATED"}}}};return s(b),this._lastSessionId=o.sessionId,{...b,project:e,model:b.model||a,userAgent:"antigravity",requestType:"agent",requestId:w({body:b,request:o,credentials:d,model:a,requestType:"agent"}),request:o}}async refreshCredentials(a,b,c=null){if(!a.refreshToken)return null;try{let d=await (0,k.proxyAwareFetch)(h.NA.google.token,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"refresh_token",refresh_token:a.refreshToken,client_id:this.config.clientId,client_secret:this.config.clientSecret})},c);if(!d.ok)return null;let e=await d.json();return b?.info?.("TOKEN","Antigravity refreshed"),{accessToken:e.access_token,refreshToken:e.refresh_token||a.refreshToken,expiresIn:e.expires_in,projectId:a.projectId}}catch(a){return b?.error?.("TOKEN",`Antigravity refresh error: ${a.message}`),null}}generateSessionId(){return e().randomUUID()+Date.now().toString()}parseRetryHeaders(a){if(!a?.get)return null;let b=a.get("retry-after");if(b){let a=parseInt(b,10);if(!isNaN(a)&&a>0)return 1e3*a;let c=new Date(b);if(!isNaN(c.getTime())){let a=c.getTime()-Date.now();return a>0?a:null}}let c=a.get("x-ratelimit-reset-after");if(c){let a=parseInt(c,10);if(!isNaN(a)&&a>0)return 1e3*a}let d=a.get("x-ratelimit-reset");if(d){let a=1e3*parseInt(d,10)-Date.now();return a>0?a:null}return null}parseRetryFromErrorMessage(a){if(!a||"string"!=typeof a)return null;let b=a.match(/reset after (\d+h)?(\d+m)?(\d+s)?/i);if(!b)return null;let c=0;return b[1]&&(c+=3600*parseInt(b[1])*1e3),b[2]&&(c+=60*parseInt(b[2])*1e3),b[3]&&(c+=1e3*parseInt(b[3])),c>0?c:null}extractErrorMessage(a,b=""){return[a?.error?.message,a?.message,a?.error,b].filter(Boolean).map(a=>"string"==typeof a?a:JSON.stringify(a)).join("\n")}isTransientAntigravityError(a,b){return!!(a===i.gx.RATE_LIMITED||q.has(a))||p.some(a=>a.test(b||""))}async computeRetryDelay(a,b){let c="",d=null,e=this.parseRetryHeaders(a.headers);try{d=(c=await a.clone().text())?JSON.parse(c):null}catch{}let f=this.extractErrorMessage(d,c);return(e||(e=this.parseRetryFromErrorMessage(f)),e)?e<=1e4&&e:!!this.isTransientAntigravityError(a.status,f)&&Math.min(1e3*2**b,a.status===i.gx.RATE_LIMITED?1e4:15e3)}static cloakTools(a,b=null){let c=a.request?.tools;if(!c||0===c.length)return{cloakedBody:a,toolNameMap:null};let d="github-copilot"===b,e=new Map,f=[],g=new Set(y.map(a=>a.name));for(let a of c)if(a.functionDeclarations)for(let b of a.functionDeclarations){if(d&&h.J5.has(b.name)||d&&g.has(b.name))continue;if(h.J5.has(b.name)){f.push(b);continue}let a=`${b.name}${h.QH}`;e.set(a,b.name),f.push({...b,name:a})}let i=[],j=new Set;for(let a of[...f,...y])!a?.name||j.has(a.name)||(j.add(a.name),i.push(a));let k=a.request?.contents?.map(a=>{if(!a.parts)return a;let b=a.parts.map(a=>a.functionCall&&!h.J5.has(a.functionCall.name)?{...a,functionCall:{...a.functionCall,name:`${a.functionCall.name}${h.QH}`}}:a.functionResponse&&!h.J5.has(a.functionResponse.name)?{...a,functionResponse:{...a.functionResponse,name:`${a.functionResponse.name}${h.QH}`}}:a);return{...a,parts:b}});return{cloakedBody:{...a,request:{...a.request,tools:[{functionDeclarations:i}],contents:k||a.request.contents}},toolNameMap:e}}}let y=[{name:"browser_subagent",description:"This tool is currently unavailable.",parameters:{type:"OBJECT",properties:{},required:[]}},{name:"command_status",description:"This tool is currently unavailable.",parameters:{type:"OBJECT",properties:{},required:[]}},{name:"find_by_name",description:"This tool is currently unavailable.",parameters:{type:"OBJECT",properties:{},required:[]}},{name:"generate_image",description:"This tool is currently unavailable.",parameters:{type:"OBJECT",properties:{},required:[]}},{name:"grep_search",description:"This tool is currently unavailable.",parameters:{type:"OBJECT",properties:{},required:[]}},{name:"list_dir",description:"This tool is currently unavailable.",parameters:{type:"OBJECT",properties:{},required:[]}},{name:"list_resources",description:"This tool is currently unavailable.",parameters:{type:"OBJECT",properties:{},required:[]}},{name:"mcp_sequential-thinking_sequentialthinking",description:"This tool is currently unavailable.",parameters:{type:"OBJECT",properties:{},required:[]}},{name:"multi_replace_file_content",description:"This tool is currently unavailable.",parameters:{type:"OBJECT",properties:{},required:[]}},{name:"notify_user",description:"This tool is currently unavailable.",parameters:{type:"OBJECT",properties:{},required:[]}},{name:"read_resource",description:"This tool is currently unavailable.",parameters:{type:"OBJECT",properties:{},required:[]}},{name:"read_terminal",description:"This tool is currently unavailable.",parameters:{type:"OBJECT",properties:{},required:[]}},{name:"read_url_content",description:"This tool is currently unavailable.",parameters:{type:"OBJECT",properties:{},required:[]}},{name:"replace_file_content",description:"This tool is currently unavailable.",parameters:{type:"OBJECT",properties:{},required:[]}},{name:"run_command",description:"This tool is currently unavailable.",parameters:{type:"OBJECT",properties:{},required:[]}},{name:"search_web",description:"This tool is currently unavailable.",parameters:{type:"OBJECT",properties:{},required:[]}},{name:"send_command_input",description:"This tool is currently unavailable.",parameters:{type:"OBJECT",properties:{},required:[]}},{name:"task_boundary",description:"This tool is currently unavailable.",parameters:{type:"OBJECT",properties:{},required:[]}},{name:"view_content_chunk",description:"This tool is currently unavailable.",parameters:{type:"OBJECT",properties:{},required:[]}},{name:"view_file",description:"This tool is currently unavailable.",parameters:{type:"OBJECT",properties:{},required:[]}},{name:"write_to_file",description:"This tool is currently unavailable.",parameters:{type:"OBJECT",properties:{},required:[]}}]},39551:(a,b,c)=>{c.d(b,{_:()=>m});var d=c(88499),e=c(14170),f=c(55673),g=c(32271),h=c(34097),i=c(17242),j=c(44236);function k(a){return(0,h.B)(a,"ollama")}function l(a){return a.map((a,b)=>({index:a.function?.index??b,id:a.id||(0,i.eG)(b),type:f.x4.FUNCTION,function:{name:a.function?.name||"",arguments:"string"==typeof a.function?.arguments?a.function.arguments:JSON.stringify(a.function?.arguments||{})}}))}function m(a){let b=a.message||{},c=b.content||"",d=b.thinking||"",e=Array.isArray(b.tool_calls)?b.tool_calls:[],g={role:f.z7.ASSISTANT};c&&(g.content=c),d&&(g.reasoning_content=d),e.length>0&&(g.tool_calls=l(e)),g.content||g.tool_calls||(g.content="");let h=(0,j.F)(a.done_reason,"ollama");return e.length>0&&(h=f.bC.TOOL_CALLS),{id:`chatcmpl-${Date.now()}`,object:"chat.completion",created:Math.floor(Date.now()/1e3),model:a.model||"ollama",choices:[{index:0,message:g,finish_reason:h}],usage:k(a)}}(0,d.kz)(e.h.OLLAMA,e.h.OPENAI,null,function(a,b){if(!a||"object"!=typeof a)return null;b.ollama||(b.ollama={id:`chatcmpl-${Date.now()}`,created:Math.floor(Date.now()/1e3),model:a.model||b.model});let{id:c,created:d,model:e}=b.ollama;if(a.done){let h=k(a),i=(0,j.F)(a.done_reason,"ollama");(a.done_reason===f.bC.TOOL_CALLS||b.hadToolCalls)&&(i=f.bC.TOOL_CALLS);let l=(0,g.k)({id:c,created:d,model:e},{},i);return l.usage=h,l}let h=a.message;if(!h)return null;let i="string"==typeof h.content?h.content:"",m="string"==typeof h.thinking?h.thinking:"",n=Array.isArray(h.tool_calls)?h.tool_calls:null;if(!i&&!m&&!n)return null;i&&(b.accumulatedContent=(b.accumulatedContent||"")+i),m&&(b.accumulatedThinking=(b.accumulatedThinking||"")+m);let o={};return i&&(o.content=i),m&&(o.reasoning_content=m),n&&(b.hadToolCalls=!0,o.tool_calls=l(n)),(0,g.k)({id:c,created:d,model:e},o,null)})},44090:(a,b,c)=>{c.d(b,{B:()=>e,V:()=>f});var d=c(55673);function e(a,b=!1){return b?{role:d.z7.ASSISTANT,reasoning_content:a}:{reasoning_content:a}}function f(a){if(!a||"object"!=typeof a)return"";if("string"==typeof a.reasoning_content&&a.reasoning_content)return a.reasoning_content;if("string"==typeof a.reasoning&&a.reasoning)return a.reasoning;let b=a.reasoning_details;return Array.isArray(b)?b.map(a=>"string"==typeof a?a:a?.text||a?.content||"").join(""):""}},44236:(a,b,c)=>{c.d(b,{F:()=>e,Q:()=>f});var d=c(69320);function e(a,b){switch(b){case"claude":switch(a){case d.Ut.END_TURN:return d.bC.STOP;case d.Ut.MAX_TOKENS:return d.bC.LENGTH;case d.Ut.TOOL_USE:return d.bC.TOOL_CALLS;case d.Ut.STOP_SEQUENCE:default:return d.bC.STOP}case"commandcode":switch(a){case"stop":case"error":return d.bC.STOP;case"length":return d.bC.LENGTH;case"tool-calls":case"tool_calls":case"tool-call":case"tool_use":return d.bC.TOOL_CALLS;case"content-filter":return d.bC.CONTENT_FILTER;default:return a||d.bC.STOP}case"gemini":switch(String(a).toUpperCase()){case d.a_.STOP:return d.bC.STOP;case d.a_.MAX_TOKENS:return d.bC.LENGTH;case d.a_.SAFETY:case d.a_.RECITATION:case d.a_.BLOCKLIST:case d.a_.PROHIBITED_CONTENT:return d.bC.CONTENT_FILTER;default:return d.bC.STOP}case"kiro":case"ollama":switch(a){case"tool_calls":case"tool_use":return d.bC.TOOL_CALLS;case"length":case"max_tokens":return d.bC.LENGTH;default:return d.bC.STOP}default:return a||d.bC.STOP}}function f(a,b){if("claude"!==b)return a;switch(a){case d.bC.STOP:return d.Ut.END_TURN;case d.bC.LENGTH:return d.Ut.MAX_TOKENS;case d.bC.TOOL_CALLS:return d.Ut.TOOL_USE;default:return d.Ut.END_TURN}}},47723:(a,b,c)=>{c.d(b,{H:()=>n});var d=c(88499),e=c(14170),f=c(55673),g=c(32271),h=c(34097),i=c(44090),j=c(17242),k=c(44236);function l(a,b,c=null){return(0,g.k)({id:a.responseId,created:a.created,model:a.model},b,c)}let m=a=>(0,k.F)(a,"commandcode");function n(a,b){var c;if(!a)return null;if(a&&"object"==typeof a&&"chat.completion.chunk"===a.object)return a;let d=a;if("string"==typeof a){let b=a.trim();if(!b)return null;let c=b.startsWith("data:")?b.slice(5).trim():b;if(!c||"[DONE]"===c)return null;try{d=JSON.parse(c)}catch{return null}}if(!d||"object"!=typeof d||!d.type)return null;c=d.model,b.responseId||(b.responseId=`chatcmpl-${Date.now()}`,b.created=Math.floor(Date.now()/1e3),b.model=b.model||c||"commandcode",b.chunkIndex=0,b.toolIndex=0,b.toolIndexById=new Map,b.openTools=new Set,b.openText=!1,b.finishReason=null,b.usage=null);let e=[];switch(d.type){case"text-delta":{let a=d.text||d.delta||"";if(!a)break;let c=0===b.chunkIndex?{role:f.z7.ASSISTANT,content:a}:{content:a};b.chunkIndex++,b.openText=!0,e.push(l(b,c));break}case"reasoning-delta":{let a=d.text||"";if(!a)break;let c=(0,i.B)(a,0===b.chunkIndex);b.chunkIndex++,e.push(l(b,c));break}case"tool-input-start":{let a=d.id||d.toolCallId||(0,j.eG)(b.toolIndex),c=b.toolIndexById.get(a);null==c&&(c=b.toolIndex++,b.toolIndexById.set(a,c)),b.openTools.add(a);let g={...0===b.chunkIndex?{role:f.z7.ASSISTANT}:{},tool_calls:[{index:c,id:a,type:f.x4.FUNCTION,function:{name:d.toolName||"",arguments:""}}]};b.chunkIndex++,e.push(l(b,g));break}case"tool-input-delta":{let a=d.id||d.toolCallId,c=b.toolIndexById.get(a);if(null==c)break;let f={tool_calls:[{index:c,function:{arguments:d.delta||d.inputTextDelta||""}}]};e.push(l(b,f));break}case"tool-call":{let a=d.toolCallId;if(b.toolIndexById.has(a))break;let c=b.toolIndex++;b.toolIndexById.set(a,c);let g="string"==typeof d.input?d.input:JSON.stringify(d.input??{}),h={...0===b.chunkIndex?{role:f.z7.ASSISTANT}:{},tool_calls:[{index:c,id:a,type:f.x4.FUNCTION,function:{name:d.toolName||"",arguments:g}}]};b.chunkIndex++,e.push(l(b,h));break}case"finish-step":b.finishReason=m(d.finishReason),d.usage&&(b.usage=d.usage);break;case"finish":{let a=b.finishReason||m(d.finishReason||"stop");(b.openTools?.size>0||b.toolIndex>0)&&(a===f.bC.STOP||!a)&&(a=f.bC.TOOL_CALLS);let c=l(b,{},a),g=d.totalUsage||b.usage,i=(0,h.B)(g,"commandcode");i&&(c.usage=i),e.push(c);break}case"error":{b.finishReason=f.bC.STOP;let a=d.error??d.message??"unknown",c="string"==typeof a?a:JSON.stringify(a);e.push(l(b,{content:`
5
+ Respond ONLY with the JSON object, no other text.`)}else"json_object"===a.type&&q.push("You must respond with valid JSON. Respond ONLY with a JSON object, no other text.")}let r={type:k.R4.TEXT,text:f.Co};if(q.length>0&&p.push({type:k.R4.TEXT,text:q.join("\n")}),m.system=[r,...p],b.tools&&Array.isArray(b.tools))for(let a of(m.tools=[],b.tools)){let b=a.type;if(b&&b!==k.x4.FUNCTION){m.tools.push(a);continue}let c=a.function??a,e=c.name,f=""+e;d.set(f,e),m.tools.push({name:f,description:c.description||"",input_schema:c.parameters||c.input_schema||{type:"object",properties:{},required:[]},...a.cache_control&&{cache_control:a.cache_control}})}return b.tool_choice&&(m.tool_choice=function(a){if(!a)return{type:"auto"};if("string"==typeof a)return"required"===a?{type:"any"}:"none"===a?{type:"none"}:{type:"auto"};if("object"==typeof a){if(a.function?.name)return{type:"tool",name:a.function.name};if(o.has(a.type))return a}return{type:"auto"}}(b.tool_choice)),d.size>0&&(m._toolNameMap=d),m}function n(a,b){return a&&a.cache_control?{...b,cache_control:a.cache_control}:b}let o=new Set(["auto","any","tool","none"]);function p(a,b,c){let d=m(a,b,c);return d.system&&Array.isArray(d.system)&&(d.system=d.system.filter(a=>!a.text||!a.text.includes("You are Claude Code")),0===d.system.length&&delete d.system),d.tools&&Array.isArray(d.tools)&&(d.tools=d.tools.map(a=>a.name&&a.name.startsWith("")?{...a,name:a.name.slice(0)}:a)),d.messages&&Array.isArray(d.messages)&&(d.messages=d.messages.map(a=>{if(!a.content||!Array.isArray(a.content))return a;let b=a.content.map(a=>a.type===k.R4.TOOL_USE&&a.name&&a.name.startsWith("")?{...a,name:a.name.slice(0)}:a);return{...a,content:b}})),d}(0,d.kz)(e.h.OPENAI,e.h.CLAUDE,m,null)},29675:(a,b,c)=>{c.d(b,{P:()=>l});var d=c(88499),e=c(14170),f=c(55673),g=c(32271),h=c(34097),i=c(44090),j=c(44236);function k(a,b,c=null){return(0,g.k)({id:`chatcmpl-${a.messageId}`,created:Math.floor(Date.now()/1e3),model:a.model},b,c)}function l(a,b){if(!a)return null;let c=[];switch(a.type){case"message_start":{b.messageId=a.message?.id||`msg_${Date.now()}`,b.model=a.message?.model,b.toolCallIndex=0;let d=a.message?.usage;if(d&&"object"==typeof d){let a="number"==typeof d.input_tokens?d.input_tokens:0,c="number"==typeof d.cache_read_input_tokens?d.cache_read_input_tokens:0,e="number"==typeof d.cache_creation_input_tokens?d.cache_creation_input_tokens:0,f=a+c+e;b.usage={prompt_tokens:f,completion_tokens:0,total_tokens:f,input_tokens:a,output_tokens:0},c>0&&(b.usage.cache_read_input_tokens=c),e>0&&(b.usage.cache_creation_input_tokens=e)}c.push(k(b,{role:f.z7.ASSISTANT}));break}case"content_block_start":{let d=a.content_block;if(d?.type==="server_tool_use"){b.serverToolBlockIndex=a.index;break}if(d?.type===f.R4.TEXT)b.textBlockStarted=!0;else if(d?.type===f.R4.THINKING)b.inThinkingBlock=!0,b.currentBlockIndex=a.index,c.push(k(b,{content:"<think>"}));else if(d?.type===f.R4.TOOL_USE){let e=b.toolCallIndex++,g=b.toolNameMap?.get(d.name)||d.name,h={index:e,id:d.id,type:f.x4.FUNCTION,function:{name:g,arguments:""}};b.toolCalls.set(a.index,h),c.push(k(b,{tool_calls:[h]}))}break}case"content_block_delta":{if(a.index===b.serverToolBlockIndex)break;let d=a.delta;if(d?.type==="text_delta"&&d.text)c.push(k(b,{content:d.text}));else if(d?.type==="thinking_delta"&&d.thinking)c.push(k(b,(0,i.B)(d.thinking)));else if(d?.type==="input_json_delta"&&d.partial_json){let e=b.toolCalls.get(a.index);e&&(e.function.arguments+=d.partial_json,c.push(k(b,{tool_calls:[{index:e.index,id:e.id,function:{arguments:d.partial_json}}]})))}break}case"content_block_stop":if(a.index===b.serverToolBlockIndex){b.serverToolBlockIndex=-1;break}b.inThinkingBlock&&a.index===b.currentBlockIndex&&(c.push(k(b,{content:"</think>"})),b.inThinkingBlock=!1),b.textBlockStarted=!1,b.thinkingBlockStarted=!1;break;case"message_delta":if(a.usage&&"object"==typeof a.usage){let c=b.usage||{},d="number"==typeof a.usage.input_tokens?a.usage.input_tokens:c.input_tokens||0,e="number"==typeof a.usage.output_tokens?a.usage.output_tokens:0,f="number"==typeof a.usage.cache_read_input_tokens?a.usage.cache_read_input_tokens:c.cache_read_input_tokens||0,g="number"==typeof a.usage.cache_creation_input_tokens?a.usage.cache_creation_input_tokens:c.cache_creation_input_tokens||0,h=d+f+g;b.usage={prompt_tokens:h,completion_tokens:e,total_tokens:h+e,input_tokens:d,output_tokens:e},f>0&&(b.usage.cache_read_input_tokens=f),g>0&&(b.usage.cache_creation_input_tokens=g)}if(a.delta?.stop_reason){b.finishReason=m(a.delta.stop_reason);let d=k(b,{},b.finishReason);b.usage&&(d.usage=(0,h.B)({input_tokens:b.usage.input_tokens||0,output_tokens:b.usage.output_tokens||0,cache_read_input_tokens:b.usage.cache_read_input_tokens,cache_creation_input_tokens:b.usage.cache_creation_input_tokens},"claude")),c.push(d),b.finishReasonSent=!0}break;case"message_stop":if(!b.finishReasonSent){let a=b.finishReason||(b.toolCalls?.size>0?f.bC.TOOL_CALLS:f.bC.STOP),d=b.usage&&"object"==typeof b.usage?{usage:{prompt_tokens:b.usage.input_tokens||0,completion_tokens:b.usage.output_tokens||0,total_tokens:(b.usage.input_tokens||0)+(b.usage.output_tokens||0)}}:{};c.push({...k(b,{},a),...d}),b.finishReasonSent=!0}}return c.length>0?c:null}let m=a=>(0,j.F)(a,"claude");(0,d.kz)(e.h.CLAUDE,e.h.OPENAI,null,l)},32271:(a,b,c)=>{c.d(b,{k:()=>d});function d({id:a,created:b,model:c},e,f=null){return{id:a,object:"chat.completion.chunk",created:b,model:c,choices:[{index:0,delta:e,finish_reason:f}]}}},32546:(a,b,c)=>{c.d(b,{o:()=>n});var d=c(88499),e=c(14170),f=c(55673),g=c(32271),h=c(34097),i=c(44090),j=c(71301),k=c(44236);function l(a){return{id:`chatcmpl-${a.messageId}`,created:Math.floor(Date.now()/1e3),model:a.model}}function m(a,b){let c=a.name,d=b.toolNameMap?.get(c)||c,e=a.args||{},h=b.functionIndex++,i={id:`${d}-${Date.now()}-${h}`,index:h,type:f.x4.FUNCTION,function:{name:d,arguments:JSON.stringify(e)}};return b.geminiToolCallCount=(b.geminiToolCallCount||0)+1,(0,g.k)(l(b),{tool_calls:[i]},null)}function n(a,b){if(!a)return null;let c=a.response||a;if(!c||!c.candidates?.[0])return null;let d=[],e=c.candidates[0],n=e.content;if(b.messageId||(b.messageId=c.responseId||`msg_${Date.now()}`,b.model=c.modelVersion||"gemini",b.functionIndex=0,b.geminiToolCallCount=0,d.push((0,g.k)(l(b),{role:f.z7.ASSISTANT},null))),n?.parts)for(let a of n.parts){let c=a.thoughtSignature||a.thought_signature,e=!0===a.thought;if(c){let c=void 0!==a.text&&""!==a.text,f=!!a.functionCall;c&&d.push((0,g.k)(l(b),e?(0,i.B)(a.text):{content:a.text},null)),f&&d.push(m(a.functionCall,b));continue}void 0!==a.text&&""!==a.text&&d.push((0,g.k)(l(b),e?(0,i.B)(a.text):{content:a.text},null)),a.functionCall&&d.push(m(a.functionCall,b));let h=a.inlineData||a.inline_data;if(h?.data){let a=h.mimeType||h.mime_type||f.BY;d.push((0,g.k)(l(b),{images:[{type:f.x4.IMAGE_URL,image_url:{url:(0,j.$q)(a,h.data)}}]},null))}}let o=c.usageMetadata||a.usageMetadata,p=(0,h.B)(o,"gemini");if(p&&(b.usage=p),e.finishReason){let a=(0,k.F)(e.finishReason,"gemini");a===f.bC.STOP&&b.geminiToolCallCount>0&&(a=f.bC.TOOL_CALLS);let c=(0,g.k)(l(b),{},a);b.usage&&(c.usage=b.usage),d.push(c),b.finishReason=a}return d.length>0?d:null}(0,d.kz)(e.h.GEMINI,e.h.OPENAI,null,n),(0,d.kz)(e.h.GEMINI_CLI,e.h.OPENAI,null,n),(0,d.kz)(e.h.ANTIGRAVITY,e.h.OPENAI,null,n),(0,d.kz)(e.h.VERTEX,e.h.OPENAI,null,n)},34097:(a,b,c)=>{function d({promptTokens:a,completionTokens:b,totalTokens:c,cachedTokens:e=0,cacheCreationTokens:f=0,reasoningTokens:g=0}){let h={prompt_tokens:a,completion_tokens:b,total_tokens:c};return(e>0||f>0)&&(h.prompt_tokens_details={},e>0&&(h.prompt_tokens_details.cached_tokens=e),f>0&&(h.prompt_tokens_details.cache_creation_tokens=f)),g>0&&(h.completion_tokens_details={reasoning_tokens:g}),h}c.d(b,{B:()=>g,c:()=>d});let e=a=>"number"==typeof a?a:0,f={claude(a){let b=e(a.input_tokens),c=e(a.output_tokens),d=e(a.cache_read_input_tokens),f=e(a.cache_creation_input_tokens),g=b+d+f;return{promptTokens:g,completionTokens:c,totalTokens:g+c,cachedTokens:d,cacheCreationTokens:f}},gemini(a){let b=e(a.cachedContentTokenCount),c=e(a.promptTokenCount),d=e(a.thoughtsTokenCount),f=e(a.totalTokenCount),g=e(a.candidatesTokenCount);return 0===g&&f>0&&(g=f-c-d)<0&&(g=0),{promptTokens:c,completionTokens:g+d,totalTokens:f,cachedTokens:b,reasoningTokens:d}},kiro(a){let b=e(a.inputTokens),c=e(a.outputTokens),d=e(a.cache_read_input_tokens)||e(a.cachedTokens)||e(a.cached_tokens),f=e(a.cache_creation_input_tokens),g={promptTokens:b,completionTokens:c,totalTokens:b+c};return d>0&&(g.cachedTokens=d),f>0&&(g.cacheCreationTokens=f),g},ollama(a){let b=e(a.prompt_eval_count),c=e(a.eval_count);return{promptTokens:b,completionTokens:c,totalTokens:b+c}},commandcode(a){let b=e(a.inputTokens),c=e(a.outputTokens),d="number"==typeof a.totalTokens?a.totalTokens:b+c;return{promptTokens:b,completionTokens:c,totalTokens:d}}};function g(a,b){let c=f[b];return c&&a&&"object"==typeof a?d(c(a)):null}},37981:(a,b,c)=>{c.d(b,{m:()=>e});var d=c(55673);function e(a){if("string"==typeof a){let b=""===a.trim()?"...":a;return[{type:d.Du.MESSAGE,role:d.z7.USER,content:[{type:d.Du.INPUT_TEXT,text:b}]}]}return Array.isArray(a)?0===a.length?[{type:d.Du.MESSAGE,role:d.z7.USER,content:[{type:d.Du.INPUT_TEXT,text:"..."}]}]:a:null}},39536:(a,b,c)=>{c.d(b,{c:()=>x});var d=c(55511),e=c.n(d),f=c(74957),g=c(35024),h=c(75924),i=c(41004),j=c(80662),k=c(39609),l=c(26922),m=c(96281),n=c(74129);let o=/^agent\/[^/]+\/\d+\/[^/]+\/\d+$/,p=[/high\s+traffic/i,/agent\s+(execution\s+)?terminated\s+due\s+to\s+error/i,/capacity/i,/temporarily\s+unavailable/i,/timeout/i,/stream\s+(ended|closed|terminated|interrupted)/i,/empty\s+response/i],q=new Set([i.gx.SERVER_ERROR,i.gx.BAD_GATEWAY,i.gx.SERVICE_UNAVAILABLE,i.gx.GATEWAY_TIMEOUT]),r=["output_config","thinking","reasoning_effort","reasoning","enable_thinking","thinking_budget","thinkingConfig"],s=a=>{for(let b of r)delete a[b]},t=[/image/i,/imagen/i,/image-generation/i];function u(a){return!!a&&t.some(b=>b.test(a))}function v(a){let b=e().createHash("sha256").update(String(a||"antigravity")).digest().subarray(0,16);b[6]=15&b[6]|80,b[8]=63&b[8]|128;let c=b.toString("hex");return`${c.slice(0,8)}-${c.slice(8,12)}-${c.slice(12,16)}-${c.slice(16,20)}-${c.slice(20)}`}function w({body:a,request:b,credentials:c,model:d,requestType:e}){if(o.test(a?.requestId||""))return a.requestId;let f=b?.sessionId||a?.request?.sessionId||c?._clientSessionId||c?.connectionId||c?.email||"anonymous",g=v(`antigravity:conversation:${f}`),h=v(`antigravity:trajectory:${f}:${d}:${e}`),i=Math.max(1,2*(Array.isArray(b?.contents)?b.contents.length:1)-1);return`agent/${g}/${Date.now()}/${h}/${i}`}class x extends f.H{constructor(){super("antigravity",g.xq.antigravity)}buildUrl(a,b,c=0){let d=this.getBaseUrls(),e=d[c]||d[0],f=u(a);return`${e}/v1internal:${b&&!f?"streamGenerateContent?alt=sse":"generateContent"}`}buildHeaders(a,b=!0,c=null,d=null){return{"Content-Type":"application/json",Authorization:`Bearer ${a.accessToken}`,"User-Agent":d?.startsWith("gemini-4-argon")?n.TC:this.config.headers?.["User-Agent"]||h.K["User-Agent"]}}transformRequest(a,b,c,d){let e=d?.projectId;if(!e){let a=Error("Antigravity requires a real Google Cloud Code project ID; complete account onboarding and retry");throw a.status=422,a}if(!0!==c&&delete b.stream_options,u(a)){let c=function(a){let b={aspectRatio:"1:1"},c=a.match(/(\d+)x(\d+)$/);if(c){let a=parseInt(c[1]),d=parseInt(c[2]);if(a<=16&&d<=16)b.aspectRatio=`${a}:${d}`;else{let c=(a,b)=>b?c(b,a%b):a,e=c(a,d);b.aspectRatio=`${a/e}:${d/e}`}}return b}(a),f=a.replace(/-(\d+)x(\d+)$/,""),g=[];for(let a of b.request?.contents||b.contents||[]){let b=(a.parts||[]).filter(a=>void 0!==a.text).map(a=>({text:a.text}));b.length>0&&g.push({role:a.role||"user",parts:b})}let h=(0,j.oV)({headers:d?.rawHeaders,body:b,connectionId:d?.email||d?.connectionId,scope:"antigravity"});this._lastSessionId=h;let i={contents:g,generationConfig:{temperature:1,topP:.95,topK:40,maxOutputTokens:8192,imageConfig:c},sessionId:h};return{project:e,model:f,userAgent:"antigravity",requestType:"image_gen",requestId:w({body:b,request:i,credentials:d,model:f,requestType:"image_gen"}),request:i}}let f=b.request?.contents?.map(a=>{let b=a.role;a.parts?.some(a=>a.functionResponse)&&(b="user");let c=a.parts?.filter(a=>(!a.thought||!!a.functionCall)&&(!a.thoughtSignature||!!a.functionCall||!!a.text)),d=c?.some(a=>a.functionCall&&!a.thoughtSignature)??!1;return b!==a.role||c?.length!==a.parts?.length||d?{...a,role:b,parts:d?c.map(a=>a.functionCall&&!a.thoughtSignature?{...a,thoughtSignature:m.bf}:a):c}:a}),g=b.request?.tools;if(g&&g.length>0){let a=new Set,b=[];for(let c of g)for(let d of c.functionDeclarations||[]){let c=function(a){if(!a)return"_unknown";let b=a.replace(/[^a-zA-Z0-9_.:\-]/g,"_");return/^[a-zA-Z_]/.test(b)||(b="_"+b),b.substring(0,64)}(d.name);a.has(c)||(a.add(c),b.push({...d,name:c,parameters:d.parameters?(0,l.Yr)(structuredClone(d.parameters)):{type:"object",properties:{reason:{type:"string",description:"Brief explanation"}},required:["reason"]}}))}g=b.length>0?[{functionDeclarations:b}]:[]}let{tools:h,toolConfig:i,...k}=b.request||{};s(k);let n={...k.generationConfig||{}};n.maxOutputTokens>64e3&&(n.maxOutputTokens=64e3);let o={...k,generationConfig:n,...f&&{contents:f},...g&&{tools:g},sessionId:b.request?.sessionId||(0,j.oV)({headers:d?.rawHeaders,body:b,connectionId:d?.email||d?.connectionId,scope:"antigravity"}),safetySettings:void 0,...g?.length>0&&{toolConfig:{functionCallingConfig:{mode:"VALIDATED"}}}};return s(b),this._lastSessionId=o.sessionId,{...b,project:e,model:b.model||a,userAgent:"antigravity",requestType:"agent",requestId:w({body:b,request:o,credentials:d,model:a,requestType:"agent"}),request:o}}async refreshCredentials(a,b,c=null){if(!a.refreshToken)return null;try{let d=await (0,k.proxyAwareFetch)(h.NA.google.token,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"refresh_token",refresh_token:a.refreshToken,client_id:this.config.clientId,client_secret:this.config.clientSecret})},c);if(!d.ok)return null;let e=await d.json();return b?.info?.("TOKEN","Antigravity refreshed"),{accessToken:e.access_token,refreshToken:e.refresh_token||a.refreshToken,expiresIn:e.expires_in,projectId:a.projectId}}catch(a){return b?.error?.("TOKEN",`Antigravity refresh error: ${a.message}`),null}}generateSessionId(){return e().randomUUID()+Date.now().toString()}parseRetryHeaders(a){if(!a?.get)return null;let b=a.get("retry-after");if(b){let a=parseInt(b,10);if(!isNaN(a)&&a>0)return 1e3*a;let c=new Date(b);if(!isNaN(c.getTime())){let a=c.getTime()-Date.now();return a>0?a:null}}let c=a.get("x-ratelimit-reset-after");if(c){let a=parseInt(c,10);if(!isNaN(a)&&a>0)return 1e3*a}let d=a.get("x-ratelimit-reset");if(d){let a=1e3*parseInt(d,10)-Date.now();return a>0?a:null}return null}parseRetryFromErrorMessage(a){if(!a||"string"!=typeof a)return null;let b=a.match(/reset after (\d+h)?(\d+m)?(\d+s)?/i);if(!b)return null;let c=0;return b[1]&&(c+=3600*parseInt(b[1])*1e3),b[2]&&(c+=60*parseInt(b[2])*1e3),b[3]&&(c+=1e3*parseInt(b[3])),c>0?c:null}extractErrorMessage(a,b=""){return[a?.error?.message,a?.message,a?.error,b].filter(Boolean).map(a=>"string"==typeof a?a:JSON.stringify(a)).join("\n")}isTransientAntigravityError(a,b){return!!(a===i.gx.RATE_LIMITED||q.has(a))||p.some(a=>a.test(b||""))}async computeRetryDelay(a,b){let c="",d=null,e=this.parseRetryHeaders(a.headers);try{d=(c=await a.clone().text())?JSON.parse(c):null}catch{}let f=this.extractErrorMessage(d,c);return!(a.status===i.gx.SERVICE_UNAVAILABLE&&b>1&&/model_capacity_exhausted|no capacity available for model/i.test(f))&&((e||(e=this.parseRetryFromErrorMessage(f)),e)?e<=1e4&&e:!!this.isTransientAntigravityError(a.status,f)&&Math.min(1e3*2**b,a.status===i.gx.RATE_LIMITED?1e4:15e3))}static cloakTools(a,b=null){let c=a.request?.tools;if(!c||0===c.length)return{cloakedBody:a,toolNameMap:null};let d="github-copilot"===b,e=new Map,f=[],g=new Set(y.map(a=>a.name));for(let a of c)if(a.functionDeclarations)for(let b of a.functionDeclarations){if(d&&h.J5.has(b.name)||d&&g.has(b.name))continue;if(h.J5.has(b.name)){f.push(b);continue}let a=`${b.name}${h.QH}`;e.set(a,b.name),f.push({...b,name:a})}let i=[],j=new Set;for(let a of[...f,...y])!a?.name||j.has(a.name)||(j.add(a.name),i.push(a));let k=a.request?.contents?.map(a=>{if(!a.parts)return a;let b=a.parts.map(a=>a.functionCall&&!h.J5.has(a.functionCall.name)?{...a,functionCall:{...a.functionCall,name:`${a.functionCall.name}${h.QH}`}}:a.functionResponse&&!h.J5.has(a.functionResponse.name)?{...a,functionResponse:{...a.functionResponse,name:`${a.functionResponse.name}${h.QH}`}}:a);return{...a,parts:b}});return{cloakedBody:{...a,request:{...a.request,tools:[{functionDeclarations:i}],contents:k||a.request.contents}},toolNameMap:e}}}let y=[{name:"browser_subagent",description:"This tool is currently unavailable.",parameters:{type:"OBJECT",properties:{},required:[]}},{name:"command_status",description:"This tool is currently unavailable.",parameters:{type:"OBJECT",properties:{},required:[]}},{name:"find_by_name",description:"This tool is currently unavailable.",parameters:{type:"OBJECT",properties:{},required:[]}},{name:"generate_image",description:"This tool is currently unavailable.",parameters:{type:"OBJECT",properties:{},required:[]}},{name:"grep_search",description:"This tool is currently unavailable.",parameters:{type:"OBJECT",properties:{},required:[]}},{name:"list_dir",description:"This tool is currently unavailable.",parameters:{type:"OBJECT",properties:{},required:[]}},{name:"list_resources",description:"This tool is currently unavailable.",parameters:{type:"OBJECT",properties:{},required:[]}},{name:"mcp_sequential-thinking_sequentialthinking",description:"This tool is currently unavailable.",parameters:{type:"OBJECT",properties:{},required:[]}},{name:"multi_replace_file_content",description:"This tool is currently unavailable.",parameters:{type:"OBJECT",properties:{},required:[]}},{name:"notify_user",description:"This tool is currently unavailable.",parameters:{type:"OBJECT",properties:{},required:[]}},{name:"read_resource",description:"This tool is currently unavailable.",parameters:{type:"OBJECT",properties:{},required:[]}},{name:"read_terminal",description:"This tool is currently unavailable.",parameters:{type:"OBJECT",properties:{},required:[]}},{name:"read_url_content",description:"This tool is currently unavailable.",parameters:{type:"OBJECT",properties:{},required:[]}},{name:"replace_file_content",description:"This tool is currently unavailable.",parameters:{type:"OBJECT",properties:{},required:[]}},{name:"run_command",description:"This tool is currently unavailable.",parameters:{type:"OBJECT",properties:{},required:[]}},{name:"search_web",description:"This tool is currently unavailable.",parameters:{type:"OBJECT",properties:{},required:[]}},{name:"send_command_input",description:"This tool is currently unavailable.",parameters:{type:"OBJECT",properties:{},required:[]}},{name:"task_boundary",description:"This tool is currently unavailable.",parameters:{type:"OBJECT",properties:{},required:[]}},{name:"view_content_chunk",description:"This tool is currently unavailable.",parameters:{type:"OBJECT",properties:{},required:[]}},{name:"view_file",description:"This tool is currently unavailable.",parameters:{type:"OBJECT",properties:{},required:[]}},{name:"write_to_file",description:"This tool is currently unavailable.",parameters:{type:"OBJECT",properties:{},required:[]}}]},39551:(a,b,c)=>{c.d(b,{_:()=>m});var d=c(88499),e=c(14170),f=c(55673),g=c(32271),h=c(34097),i=c(17242),j=c(44236);function k(a){return(0,h.B)(a,"ollama")}function l(a){return a.map((a,b)=>({index:a.function?.index??b,id:a.id||(0,i.eG)(b),type:f.x4.FUNCTION,function:{name:a.function?.name||"",arguments:"string"==typeof a.function?.arguments?a.function.arguments:JSON.stringify(a.function?.arguments||{})}}))}function m(a){let b=a.message||{},c=b.content||"",d=b.thinking||"",e=Array.isArray(b.tool_calls)?b.tool_calls:[],g={role:f.z7.ASSISTANT};c&&(g.content=c),d&&(g.reasoning_content=d),e.length>0&&(g.tool_calls=l(e)),g.content||g.tool_calls||(g.content="");let h=(0,j.F)(a.done_reason,"ollama");return e.length>0&&(h=f.bC.TOOL_CALLS),{id:`chatcmpl-${Date.now()}`,object:"chat.completion",created:Math.floor(Date.now()/1e3),model:a.model||"ollama",choices:[{index:0,message:g,finish_reason:h}],usage:k(a)}}(0,d.kz)(e.h.OLLAMA,e.h.OPENAI,null,function(a,b){if(!a||"object"!=typeof a)return null;b.ollama||(b.ollama={id:`chatcmpl-${Date.now()}`,created:Math.floor(Date.now()/1e3),model:a.model||b.model});let{id:c,created:d,model:e}=b.ollama;if(a.done){let h=k(a),i=(0,j.F)(a.done_reason,"ollama");(a.done_reason===f.bC.TOOL_CALLS||b.hadToolCalls)&&(i=f.bC.TOOL_CALLS);let l=(0,g.k)({id:c,created:d,model:e},{},i);return l.usage=h,l}let h=a.message;if(!h)return null;let i="string"==typeof h.content?h.content:"",m="string"==typeof h.thinking?h.thinking:"",n=Array.isArray(h.tool_calls)?h.tool_calls:null;if(!i&&!m&&!n)return null;i&&(b.accumulatedContent=(b.accumulatedContent||"")+i),m&&(b.accumulatedThinking=(b.accumulatedThinking||"")+m);let o={};return i&&(o.content=i),m&&(o.reasoning_content=m),n&&(b.hadToolCalls=!0,o.tool_calls=l(n)),(0,g.k)({id:c,created:d,model:e},o,null)})},44090:(a,b,c)=>{c.d(b,{B:()=>e,V:()=>f});var d=c(55673);function e(a,b=!1){return b?{role:d.z7.ASSISTANT,reasoning_content:a}:{reasoning_content:a}}function f(a){if(!a||"object"!=typeof a)return"";if("string"==typeof a.reasoning_content&&a.reasoning_content)return a.reasoning_content;if("string"==typeof a.reasoning&&a.reasoning)return a.reasoning;let b=a.reasoning_details;return Array.isArray(b)?b.map(a=>"string"==typeof a?a:a?.text||a?.content||"").join(""):""}},44236:(a,b,c)=>{c.d(b,{F:()=>e,Q:()=>f});var d=c(69320);function e(a,b){switch(b){case"claude":switch(a){case d.Ut.END_TURN:return d.bC.STOP;case d.Ut.MAX_TOKENS:return d.bC.LENGTH;case d.Ut.TOOL_USE:return d.bC.TOOL_CALLS;case d.Ut.STOP_SEQUENCE:default:return d.bC.STOP}case"commandcode":switch(a){case"stop":case"error":return d.bC.STOP;case"length":return d.bC.LENGTH;case"tool-calls":case"tool_calls":case"tool-call":case"tool_use":return d.bC.TOOL_CALLS;case"content-filter":return d.bC.CONTENT_FILTER;default:return a||d.bC.STOP}case"gemini":switch(String(a).toUpperCase()){case d.a_.STOP:return d.bC.STOP;case d.a_.MAX_TOKENS:return d.bC.LENGTH;case d.a_.SAFETY:case d.a_.RECITATION:case d.a_.BLOCKLIST:case d.a_.PROHIBITED_CONTENT:return d.bC.CONTENT_FILTER;default:return d.bC.STOP}case"kiro":case"ollama":switch(a){case"tool_calls":case"tool_use":return d.bC.TOOL_CALLS;case"length":case"max_tokens":return d.bC.LENGTH;default:return d.bC.STOP}default:return a||d.bC.STOP}}function f(a,b){if("claude"!==b)return a;switch(a){case d.bC.STOP:return d.Ut.END_TURN;case d.bC.LENGTH:return d.Ut.MAX_TOKENS;case d.bC.TOOL_CALLS:return d.Ut.TOOL_USE;default:return d.Ut.END_TURN}}},47723:(a,b,c)=>{c.d(b,{H:()=>n});var d=c(88499),e=c(14170),f=c(55673),g=c(32271),h=c(34097),i=c(44090),j=c(17242),k=c(44236);function l(a,b,c=null){return(0,g.k)({id:a.responseId,created:a.created,model:a.model},b,c)}let m=a=>(0,k.F)(a,"commandcode");function n(a,b){var c;if(!a)return null;if(a&&"object"==typeof a&&"chat.completion.chunk"===a.object)return a;let d=a;if("string"==typeof a){let b=a.trim();if(!b)return null;let c=b.startsWith("data:")?b.slice(5).trim():b;if(!c||"[DONE]"===c)return null;try{d=JSON.parse(c)}catch{return null}}if(!d||"object"!=typeof d||!d.type)return null;c=d.model,b.responseId||(b.responseId=`chatcmpl-${Date.now()}`,b.created=Math.floor(Date.now()/1e3),b.model=b.model||c||"commandcode",b.chunkIndex=0,b.toolIndex=0,b.toolIndexById=new Map,b.openTools=new Set,b.openText=!1,b.finishReason=null,b.usage=null);let e=[];switch(d.type){case"text-delta":{let a=d.text||d.delta||"";if(!a)break;let c=0===b.chunkIndex?{role:f.z7.ASSISTANT,content:a}:{content:a};b.chunkIndex++,b.openText=!0,e.push(l(b,c));break}case"reasoning-delta":{let a=d.text||"";if(!a)break;let c=(0,i.B)(a,0===b.chunkIndex);b.chunkIndex++,e.push(l(b,c));break}case"tool-input-start":{let a=d.id||d.toolCallId||(0,j.eG)(b.toolIndex),c=b.toolIndexById.get(a);null==c&&(c=b.toolIndex++,b.toolIndexById.set(a,c)),b.openTools.add(a);let g={...0===b.chunkIndex?{role:f.z7.ASSISTANT}:{},tool_calls:[{index:c,id:a,type:f.x4.FUNCTION,function:{name:d.toolName||"",arguments:""}}]};b.chunkIndex++,e.push(l(b,g));break}case"tool-input-delta":{let a=d.id||d.toolCallId,c=b.toolIndexById.get(a);if(null==c)break;let f={tool_calls:[{index:c,function:{arguments:d.delta||d.inputTextDelta||""}}]};e.push(l(b,f));break}case"tool-call":{let a=d.toolCallId;if(b.toolIndexById.has(a))break;let c=b.toolIndex++;b.toolIndexById.set(a,c);let g="string"==typeof d.input?d.input:JSON.stringify(d.input??{}),h={...0===b.chunkIndex?{role:f.z7.ASSISTANT}:{},tool_calls:[{index:c,id:a,type:f.x4.FUNCTION,function:{name:d.toolName||"",arguments:g}}]};b.chunkIndex++,e.push(l(b,h));break}case"finish-step":b.finishReason=m(d.finishReason),d.usage&&(b.usage=d.usage);break;case"finish":{let a=b.finishReason||m(d.finishReason||"stop");(b.openTools?.size>0||b.toolIndex>0)&&(a===f.bC.STOP||!a)&&(a=f.bC.TOOL_CALLS);let c=l(b,{},a),g=d.totalUsage||b.usage,i=(0,h.B)(g,"commandcode");i&&(c.usage=i),e.push(c);break}case"error":{b.finishReason=f.bC.STOP;let a=d.error??d.message??"unknown",c="string"==typeof a?a:JSON.stringify(a);e.push(l(b,{content:`
6
6
 
7
7
  [CommandCode error: ${c}]`})),e.push(l(b,{},f.bC.STOP))}}return e.length?e:null}(0,d.kz)(e.h.COMMANDCODE,e.h.OPENAI,null,n)},55399:(a,b,c)=>{c.d(b,{Az:()=>f,fO:()=>i,kR:()=>g});var d=c(55511),e=c(75924);function f(a){let b=a.tools;if(!b||0===b.length)return{body:a,toolNameMap:null};let c=a=>`${a}${e.uR}`,d=new Map,f=new Set,g=[];for(let a of b){if(a.type){g.push(a);continue}let b=c(a.name);d.set(b,a.name),f.add(a.name),g.push({...a,name:b})}let i=[...g,...h],j=a.messages?.map(a=>{if(!Array.isArray(a.content))return a;let b=a.content.map(a=>"tool_use"===a.type?{...a,name:c(a.name)}:a);return{...a,content:b}}),k={...a,tools:i,messages:j||a.messages};return a.tool_choice?.type==="tool"&&f.has(a.tool_choice.name)&&(k.tool_choice={...a.tool_choice,name:c(a.tool_choice.name)}),{body:k,toolNameMap:d.size>0?d:null}}function g(a,b){if(!b?.size||!Array.isArray(a?.content))return a;let c=a.content.map(a=>a?.type==="tool_use"&&b.has(a.name)?{...a,name:b.get(a.name)}:a);return{...a,content:c}}let h=[{name:"Task",description:"This tool is currently unavailable.",input_schema:{type:"object",properties:{}}},{name:"TaskOutput",description:"This tool is currently unavailable.",input_schema:{type:"object",properties:{}}},{name:"TaskStop",description:"This tool is currently unavailable.",input_schema:{type:"object",properties:{}}},{name:"TaskCreate",description:"This tool is currently unavailable.",input_schema:{type:"object",properties:{}}},{name:"TaskGet",description:"This tool is currently unavailable.",input_schema:{type:"object",properties:{}}},{name:"TaskUpdate",description:"This tool is currently unavailable.",input_schema:{type:"object",properties:{}}},{name:"TaskList",description:"This tool is currently unavailable.",input_schema:{type:"object",properties:{}}},{name:"Bash",description:"This tool is currently unavailable.",input_schema:{type:"object",properties:{}}},{name:"Glob",description:"This tool is currently unavailable.",input_schema:{type:"object",properties:{}}},{name:"Grep",description:"This tool is currently unavailable.",input_schema:{type:"object",properties:{}}},{name:"Read",description:"This tool is currently unavailable.",input_schema:{type:"object",properties:{}}},{name:"Edit",description:"This tool is currently unavailable.",input_schema:{type:"object",properties:{}}},{name:"Write",description:"This tool is currently unavailable.",input_schema:{type:"object",properties:{}}},{name:"NotebookEdit",description:"This tool is currently unavailable.",input_schema:{type:"object",properties:{}}},{name:"WebFetch",description:"This tool is currently unavailable.",input_schema:{type:"object",properties:{}}},{name:"WebSearch",description:"This tool is currently unavailable.",input_schema:{type:"object",properties:{}}},{name:"AskUserQuestion",description:"This tool is currently unavailable.",input_schema:{type:"object",properties:{}}},{name:"Skill",description:"This tool is currently unavailable.",input_schema:{type:"object",properties:{}}},{name:"EnterPlanMode",description:"This tool is currently unavailable.",input_schema:{type:"object",properties:{}}},{name:"ExitPlanMode",description:"This tool is currently unavailable.",input_schema:{type:"object",properties:{}}}];function i(a,b,c){var e;let f,g,h,i;if(!b||!b.includes("sk-ant-oat"))return a;let j={...a},k={type:"text",text:function(a,b=""){let c=(0,d.createHash)("sha256").update(JSON.stringify(function(a){if(!a||"object"!=typeof a)return a??null;let{messages:b,...c}=a;return{...c,messages:Array.isArray(b)&&b.length>1?b.slice(0,-1):[]}}(a))).digest("hex").slice(0,5),e=b?(0,d.createHash)("sha256").update(`build:${b}`).digest("hex").slice(0,3):(0,d.createHash)("sha256").update("build:static").digest("hex").slice(0,3);return`x-anthropic-billing-header: cc_version=2.1.92.${e}; cc_entrypoint=sdk-cli; cch=${c};`}(a,b)};return Array.isArray(j.system)?j.system[0]?.text?.startsWith("x-anthropic-billing-header:")||(j.system=[k,...j.system]):"string"==typeof j.system?j.system=[k,{type:"text",text:j.system}]:j.system=[k],j.metadata?.user_id||(j.metadata={...j.metadata,user_id:(f=b?(0,d.createHash)("sha256").update(`device:${b}`).digest("hex"):(0,d.randomBytes)(32).toString("hex"),h=b?(e=`account:${b}`,g=(0,d.createHash)("sha256").update(e).digest("hex"),`${g.slice(0,8)}-${g.slice(8,12)}-4${g.slice(13,16)}-${(3&parseInt(g[16],16)|8).toString(16)}${g.slice(17,20)}-${g.slice(20,32)}`):(0,d.randomUUID)(),i=c||(0,d.randomUUID)(),`{"device_id":"${f}","account_uuid":"${h}","session_id":"${i}"}`)}),j}},60983:(a,b,c)=>{c.d(b,{t:()=>k});var d=c(88499),e=c(14170),f=c(74525),g=c(71301),h=c(55673),i=c(97721);function j(a){return"string"!=typeof a?"":a.replace(/^x-anthropic-billing-header:[^\n]*(?:\r?\n)?/i,"")}function k(a,b,c){let d={model:a,messages:[],stream:c};if(b.max_tokens&&(d.max_tokens=(0,f.M)(b)),void 0!==b.temperature&&(d.temperature=b.temperature),b.system){let a=Array.isArray(b.system)?b.system.map(a=>j(a.text||"")).filter(Boolean).join("\n"):j(b.system);a&&d.messages.push({role:h.z7.SYSTEM,content:a})}if(b.messages&&Array.isArray(b.messages))for(let a=0;a<b.messages.length;a++){let c=function(a){if(a.role===h.z7.SYSTEM){var b;let c,d=(c=(Array.isArray(b=a.content)?b.filter(a=>a?.type===h.R4.TEXT).map(a=>a.text||""):["string"==typeof b?b:""]).filter(Boolean).join("\n")).trim()?`<instructions>
8
8
  ${c}